EXCEED MODEL ドムヘッドのモノアイを点灯して効果音もつけました

模型

今回は、HGUC078 アッガイへ組み込むための切手サイズマイコンとMP3プレイヤーを入手しましたので、その前哨戦としてEXCEED MODEL ドムヘッドでモノアイの点灯と、「ぐぽーん」という効果音も同時再生させようという企画をします。

Arduinoの開発環境は整っている前提で進めていきます。(Arduino IDEをインストールしてボードを設定すれば大丈夫です。)

まずは普通のArduinoと接続して、MP3プレイヤーのDFPlayer Miniを再生したいと思います。下準備として、下図のように接続します。

次に、ライブラリマネージャを開いてDFRobotDFPlayerMiniとAltSoftSerialをインストールします。

スケッチは公式ページのものをそのまま使用します。(Volumeは30にしました。)

#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;

void setup()
{
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);

  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));

  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while(true);
  }
  Serial.println(F("DFPlayer Mini online."));

  myDFPlayer.volume(30);  //Set volume value. From 0 to 30
  myDFPlayer.play(1);  //Play the first mp3
}

void loop()
{
  static unsigned long timer = millis();

  if (millis() - timer > 3000) {
    timer = millis();
    myDFPlayer.next();  //Play next mp3 every 3 second.
  }

  if (myDFPlayer.available()) {
    printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states.
  }
}

電源を入れると、無事音が再生されました。

今度は本命のSeeeduino Xiaoを使用します。ボードをインストールする必要があるので、「ファイル」→「環境設定」から「追加のボードマネージャのURL」に下記のURLを入力します。https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json
そして、「ツール」→「ボード」→「ボードマネージャ」からSeeeduino Xiaoをインストールします。

次に、下図のように配線します。

そして、Seeeduino Xiao側のRX、TXピンを9番、10番と変更したのでスケッチを書き換えます。

#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(9, 10); // RX, TX
DFRobotDFPlayerMini myDFPlayer;

void setup()
{
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);

  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));

  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while(true);
  }
  Serial.println(F("DFPlayer Mini online."));

  myDFPlayer.volume(30);  //Set volume value. From 0 to 30
  myDFPlayer.play(1);  //Play the first mp3
}

void loop()
{
  static unsigned long timer = millis();

  if (millis() - timer > 3000) {
    timer = millis();
    myDFPlayer.next();  //Play next mp3 every 3 second.
  }

  if (myDFPlayer.available()) {
    printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states.
  }
}

スケッチをボードに書き込む前に、ボードの設定をSeeeduino Xiaoへ変更するのを忘れないで下さい。

以上の手順をふむと、こちらも無事再生されました。

次はLED一つとMP3プレイヤーの動作テストです。Seeeduino Xiaoの1番ピンにLEDと抵抗を接続し、下記のスケッチを書き込みます。

#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(9, 10); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
long randNumber;

void setup()
{
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);
  
  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
  
  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while(true){
      delay(0); // Code to compatible with ESP8266 watch dog.
    }
  }
  Serial.println(F("DFPlayer Mini online."));
  
  myDFPlayer.volume(30);  //Set volume value. From 0 to 30
}

void loop()
{
        for(int i=0; i<256; i=i+1) {
          analogWrite(1, i);
          delay(2);
        }
        for(int i=255; i>128; i=i-1) {
          analogWrite(1, i);
          delay(2);
        }
        delay(1000);
        for(int i=127; i>0; i=i-1) {
          analogWrite(1, i);
          delay(2);
        }
        analogWrite(1, 0);
        delay(1000);
        myDFPlayer.play(2);
}

上手くいけば、次の動画のようになります。

今度はLEDを四つまで増やします。組み込んだ時に正面にくるLED以外はランダムに点灯させます。LEDは1番ピン~4番ピンを使用します。

#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(9, 10); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
long randNumber;

void setup()
{
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);
  
  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
  
  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while(true){
      delay(0); // Code to compatible with ESP8266 watch dog.
    }
  }
  Serial.println(F("DFPlayer Mini online."));
  
  myDFPlayer.volume(30);  //Set volume value. From 0 to 30
}

void loop()
{
   center();
   randNumber = random(2,5);
        for(int i=0; i<256; i=i+1) {
          analogWrite(randNumber, i);
          delay(2);
        }
        for(int i=255; i>128; i=i-1) {
          analogWrite(randNumber, i);
          delay(2);
        }
        delay(1000);
        for(int i=127; i>0; i=i-1) {
          analogWrite(randNumber, i);
          delay(2);
        }
        analogWrite(randNumber, 0);
        delay(1000);
        myDFPlayer.play(2);
}

void center() {
        for(int i=0; i<256; i=i+1) {
          analogWrite(1, i);
          delay(2);
        }
        for(int i=255; i>128; i=i-1) {
          analogWrite(1, i);
          delay(2);
        }
        delay(1000);
        for(int i=127; i>0; i=i-1) {
          analogWrite(1, i);
          delay(2);
        }
        analogWrite(1, 0);
        delay(1000);
        myDFPlayer.play(2);
}

上手くいけば、次の動画のようになります。これでテストは完了です。

材料を揃えて配線していきます。

配線途中のところです。DFPlayer Miniは+5VとGND以外の足は切り取りました。

配線が終わったところです。コンパクトにまとまりました。

外装は後頭部を接着して合わせ目を消します。パテは使わず、瞬間接着剤を盛り付けてやすりがけしました。

ひけている部分もあるので、全体的にやすりがけをして塗装します。

塗装したものに、発光ユニットを組み込んでいきます。完成したものが次の動画です。

以上、ここまでご覧いただきありがとうございました。皆様の電子工作などの参考になれば幸いです。

Copied title and URL