Arduinoでアイアンマンを自作:部品・センサー・手順ガイド
必要な部品
- Arduino UNO ×1
- ジャンパーワイヤー(汎用) ×1
- 超音波センサー HC-SR04 ×1
- MP3モジュール DFPlayer Mini ×1
- 4チャネルリレーモジュール ×1
必要なツール
- グルーガン
- はんだごて
- こて先クリーナー/ティナー(鉛フリー)
使用アプリ
- Arduino IDE
プロジェクト概要
アイアンマンはマーベルコミックの架空キャラクター。実業家トニー・スタークがハイテクアーマーで犯罪と戦う姿を、ドールに再現します。
材料
- Arduino Uno
- 4チャネルリレーボード
- 超音波モジュール
- 330Ω 抵抗
- MP3モジュール(DFPlayer Mini)
- P2ケーブル
手順
Arduino Unoで全制御。MP3 DFPlayerライブラリと random() 関数で音声ファイルをランダム再生。音声はトニー・スターク映画から抽出し、001, 002, 003... とリネームしてSDカードに保存。
音声ファイルリポジトリ
人が約1.3m以内に近づくと超音波センサーが検知し、ArduinoがMP3再生コマンドを発行。同時にリレー経由で各部(頭・胸・両腕)のアクチュエーターを駆動。
回路図
_jiEBVSHqr3.jpeg?auto=compress%2Cformat&w=680&h=510&fit=max)
_yc4M2xlz7r.jpeg?auto=compress%2Cformat&w=680&h=510&fit=max)
_dA4bksBRXe.jpeg?auto=compress%2Cformat&w=680&h=510&fit=max)
ランプ回路
_apvdtLHAVp.jpeg?auto=compress%2Cformat&w=680&h=510&fit=max)

コード
Homem_de_FerroV5.ino
#include
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(6, 7); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
String buf;
int pausa = 0;
int equalizacao = 0;
int maxSongs = 0;
#define Gnd 5
#define Echo 4
#define Trig 3
#define Vcc 2
Ultrasonic ultra(Trig, Echo);
int distancia;
#define Cabeca 13
#define Peito 12
#define Esquerda 11
#define Direito 10
int x = 3;
void setup() {
mySoftwareSerial.begin(9600);
Serial.begin(115200);
Serial.println("DFRobot DFPlayer Mini");
Serial.println("Initializing... (3-5 sec)");
if (!myDFPlayer.begin(mySoftwareSerial)) {
Serial.println("Failed: check connections / insert SD card");
while (true);
}
Serial.println("DFPlayer Mini ready!");
myDFPlayer.setTimeOut(500);
myDFPlayer.volume(30);
myDFPlayer.EQ(0);
maxSongs = myDFPlayer.readFileCounts(DFPLAYER_DEVICE_SD);
Serial.print("Files on 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)) + " Reading");
distancia = ultra.Ranging(CM);
if ((distancia <= 150) && (x == 3)) {
buf = String(random(1, 19));
play();
delay(3000);
Serial.println("Returned");
delay(100);
while (ultra.Ranging(CM) <= 150) {
digitalWrite(Esquerda, HIGH);
x = 2;
delay(1200);
}
} else {
digitalWrite(Direito, LOW);
Serial.println("Not detected");
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);
while (Serial.available() >= 0) {
int track = buf.toInt();
if (track >= 1 && track <= maxSongs) {
Serial.print("Playing track: "); Serial.println(track);
myDFPlayer.play(track);
buf = "-1";
break;
}
}
}
回路図
製造プロセス
- Arduinoデジタルダイス: LCD表示の乱数ジェネレーター自作
- ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
- Arduino駆動3Dプリントロボットアームの製作:ステップバイステップガイド
- DIY Arduino加湿器コントローラー:リレーを用いた安全な高電圧制御
- 非接触温度スクリーニングゲート:Arduino MKR1000で迅速・高精度な検温
- PiBot:Arduino駆動の精密ピアノ演奏ロボット
- Arduino Nanoで作るNeoPixelマトリックス版Pongゲーム
- ArduinoとThingSpeakで作るリアルタイム気象モニタリングシステム
- ゲーム用カスタムArduinoジョイスティックハンドルの製作
- ArduinoとTEA5767で作る高性能FMラジオ受信機
- Arduino 101で作る万歩計:DHT11温湿度センサー&LCD表示付き