今回は、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以外の足は切り取りました。
配線が終わったところです。コンパクトにまとまりました。
外装は後頭部を接着して合わせ目を消します。パテは使わず、瞬間接着剤を盛り付けてやすりがけしました。
ひけている部分もあるので、全体的にやすりがけをして塗装します。
塗装したものに、発光ユニットを組み込んでいきます。完成したものが次の動画です。
以上、ここまでご覧いただきありがとうございました。皆様の電子工作などの参考になれば幸いです。