工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduinoでアイアンマンを自作:部品・センサー・手順ガイド

必要な部品

必要なツール

使用アプリ

プロジェクト概要

アイアンマンはマーベルコミックの架空キャラクター。実業家トニー・スタークがハイテクアーマーで犯罪と戦う姿を、ドールに再現します。

材料

手順

Arduino Unoで全制御。MP3 DFPlayerライブラリと random() 関数で音声ファイルをランダム再生。音声はトニー・スターク映画から抽出し、001, 002, 003... とリネームしてSDカードに保存。
音声ファイルリポジトリ

人が約1.3m以内に近づくと超音波センサーが検知し、ArduinoがMP3再生コマンドを発行。同時にリレー経由で各部(頭・胸・両腕)のアクチュエーターを駆動。

回路図

Arduinoでアイアンマンを自作:部品・センサー・手順ガイド
Arduinoでアイアンマンを自作:部品・センサー・手順ガイド
Arduinoでアイアンマンを自作:部品・センサー・手順ガイド

ランプ回路

Arduinoでアイアンマンを自作:部品・センサー・手順ガイド
Arduinoでアイアンマンを自作:部品・センサー・手順ガイド

コード

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でアイアンマンを自作:部品・センサー・手順ガイド

製造プロセス

  1. Arduinoデジタルダイス: LCD表示の乱数ジェネレーター自作
  2. ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
  3. Arduino駆動3Dプリントロボットアームの製作:ステップバイステップガイド
  4. DIY Arduino加湿器コントローラー:リレーを用いた安全な高電圧制御
  5. 非接触温度スクリーニングゲート:Arduino MKR1000で迅速・高精度な検温
  6. PiBot:Arduino駆動の精密ピアノ演奏ロボット
  7. Arduino Nanoで作るNeoPixelマトリックス版Pongゲーム
  8. ArduinoとThingSpeakで作るリアルタイム気象モニタリングシステム
  9. ゲーム用カスタムArduinoジョイスティックハンドルの製作
  10. ArduinoとTEA5767で作る高性能FMラジオ受信機
  11. Arduino 101で作る万歩計:DHT11温湿度センサー&LCD表示付き