Bangun Iron Man Arduino: Komponen, Sensor, dan Panduan Langkah demi Langkah
Komponen dan perlengkapan
Arduino UNO × 1
Kabel jumper (umum) × 1
Sensor Ultrasonik - HC-SR04 (Umum) × 1
MP3 MODULE ARDUINO DFPLAYER MIN × 1
4 CHANNEL RELAY × 1
Alat dan mesin yang diperlukan
Pistol lem panas (umum)
Pengelot (umum)
Tip Tinner/Cleaner, Tanpa Timbal
Aplikasi dan layanan online
Arduino IDE
Tentang proyek ini
Iron Man adalah karakter komik fiksi yang diterbitkan oleh Marvel Comics. Identitas aslinya adalah pemilik bisnis dan milyuner Tony Stark, yang menggunakan bercahaya teknologi tinggi dalam perjuangan melawan kejahatan.
Bahan
Arduino Uno
Papan relai 4 saluran
Modul ultrasonik
Resistor 330 ohm
Modulo pemutar MP3 mini
Kabel p2
Langkah-langkah
Tujuan proyek ini adalah untuk menghidupkan boneka Iron Man. Kami menggunakan Ardudino Uno untuk mengontrol semuanya. Saat memprogram, kami menggunakan pustaka MP3 DFPlayer dan memanggil fungsi random () untuk membuat pilihan file audio Iron Man.
Audio diambil dari film pemisimis Tony Stark, dan diubah nama dengan angka (001, 002, 003) untuk diputar oleh modul MP3. Tautan beberapa file audio: https://github.com/Sandromesquita/audioIronMan
Saat seseorang mendekat (sekitar 1,3 m), modul ultrasonik mengidentifikasi dan memerintahkan Arduino untuk memanggil perintah BURF (perintah play MP3).
Rangkaian
Rangkaian lampu
Kode
Homem_de_FerroV5.ino
Homem_de_FerroV5.inoArduino
#include <Ultrasonic.h> #include "Arduino.h" #include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h" //Inicia a serial por software nos pinos 10 e 11 SoftwareSerial mySoftwareSerial(6,7); // RX, TX //Objeto responsvel pela comunicao com o mdulo MP3 (DFPlayer Mini) DFRobotDFPlayerMini myDFPlayer; //varivel responsvel por armazenar os comandos enviados para controlar o player String buf; //varivel responsvel por armazenar o estado do player (0: tocando ; 1: pausado) int pausa = 0; //varivel responsvel por armazenar o estado da equalizao //varia de 0 a 5 int equalizacao = 0; //varivel responsvel por armazenar o total de msicas presentes no SD card. int maxSongs = 0; #define Gnd 5 // Preto #define Echo 4 // Laranja com fita preta #define Trig 3 // Preto com fita preta #define Vcc 2 // Laranja Ultrasonic ultra(Trig,Echo); int distancia; /* * Rel 1 Cabea * Rel 2 Peito * Rel 3 Brao esquerdo * Rel 4 Brao direito */ #define Cabeca 13 #define Peito 12 #define Esquerda 11 #define Direito 10 int x=3; void setup() { //Comunicacao serial com o modulo mySoftwareSerial.begin(9600); //Inicializa a serial do Arduino Serial.begin(115200); //Verifica se o modulo esta respondendo e se o //cartao SD foi encontrado Serial.println(); Serial.println("DFRobot DFPlayer Mini"); Serial.println("Inicializando modulo DFPlayer... (3~5 segundos)"); if (!myDFPlayer.begin(mySoftwareSerial)) { Serial.println("Nao inicializado:"); Serial.println("1.Cheque as conexoes do DFPlayer Mini"); Serial.println("2.Insira um cartao SD"); while (true); } Serial.println(); Serial.println("Modulo DFPlayer Mini inicializado!"); //Definicoes iniciais myDFPlayer.setTimeOut(500); //Timeout serial 500ms myDFPlayer.volume(30); //Volume 10 myDFPlayer.EQ(0); //Equalizacao normal //recupera o numero de Msicas encontradas no SD. maxSongs = myDFPlayer.readFileCounts(DFPLAYER_DEVICE_SD); Serial.println(); Serial.print("Numero de arquivos no cartao SD: "); Serial.println(maxSongs); pinMode(Cabeca,OUTPUT); pinMode(Peito,OUTPUT); pinMode(Esquerda,OUTPUT); pinMode(Direito,OUTPUT); pinMode(Vcc,OUTPUT); pinMode(Gnd,OUTPUT); digitalWrite(Gnd,LOW ); digitalWrite(Vcc,HIGH); digitalWrite(Cabeca,HIGH); digitalWrite(Peito,HIGH); digitalWrite(Esquerda,HIGH); distancia=ultra.Ranging(CM); } void loop() { Serial.println(String(ultra.Ranging(CM))+" Lendo fora"); distancia=ultra.Ranging(CM); if((distancia<=150)&&(x==3)) { buf = random(1, 19); play(); delay(3000); Serial.println("voltei"); delay(100); while(ultra.Ranging(CM)<=150) { digitalWrite(Esquerda,HIGH); x=2; delay(1200); } } else { digitalWrite(Direito,LOW); Serial.println("Nd indentificado"); x=3; } } void play() { digitalWrite(Direito,HIGH); Serial.println("POU"); delay(300); digitalWrite(Direito,LOW); delay(300); digitalWrite(Direito,HIGH); Serial.println("POU"); delay(300); digitalWrite(Direito,LOW); delay(300); //Aguarda a entrada de dados pela serial while (Serial.available() >= 0) { //Reproducao if ((buf.toInt() >= 1) && (buf.toInt() <= maxSongs)) { Serial.print("Reproduzindo musica: "); Serial.println(buf.toInt()); // buf = buf - 48; myDFPlayer.play(buf.toInt()); buf=-1; break; } } }