こんにちは!呼び込み君ミニを最近触ってますがNT金沢2023の会場に持参したところ、 音がだいぶ小さいということに気づきました。
(NT金沢参加した皆さん土日お疲れ様でした!)
"呼び込み君ミニ"音小さい問題に気付けなかった
色んな人がいて、音を出している人もいて、オフィスで試すのとはだいぶ差があるのが現地。
本家呼び込み君がちゃんとアンプが付いてるのも(やっと)納得です。
呼び込みくん、ミニだと音小さい!ってことにこういう場所で気づく #NT金沢 #iotlt pic.twitter.com/64ZOSAhFyC
— 菅原のびすけ (プロトアウト9期募集中) (@n0bisuke) June 17, 2023
"頭をひらいて"スピーカーなど変えてみた
こんな感じで頭が開くぬいぐるみがあったので、開いた頭にスピーカー入れて再生させてみました。
実際の様子はこちら。シュール。
頭にスピーカー組み込まれた #呼び込み君 #iotlt #NT金沢 pic.twitter.com/t5nDKFg6Le
— 菅原のびすけ (プロトアウト9期募集中) (@n0bisuke) June 17, 2023
とはいっても元の基板との配線をブチって切って入れかえるのを現地でやるのは怖かったので、再生はDFPlayerMini+M5ATOM Liteでやっています。
ATOM Lite + DFPlayerMiniで音声再生
実装解説的な部分です。UART接続で制御できます。
配線
こちらの記事をもとに配線をしました。
こちらの記事だとESP32のDevBoardを利用していますが、手元にあったのがATOM LiteだったのでATOM Liteに繋げています。
UARTを使うためにATOM Liteだと23と33番のポートを利用して、電源とGNDに接続させます。
とりあえず再生させるコード
コードはこちらの記事のものを参考にさせてもらいました。
ATOM Liteでやる場合はTXを23、RXを33番のGPIOで指定して動かせました。
#include "HardwareSerial.h"
#include "DFRobotDFPlayerMini.h"
#define RXD2 33 // Connects to module's RX
#define TXD2 23 // Connects to module's TX
HardwareSerial dfSD(1); // Use UART channel 1
DFRobotDFPlayerMini player;
void setup() {
Serial.begin(115200);
dfSD.begin(9600, SERIAL_8N1, RXD2, TXD2);
delay(5000);
if (player.begin(dfSD)) {
Serial.println("OK");
player.volume(17); //0~30で音量指定
}
else {
Serial.println("Connecting to DFPlayer Mini failed!");
}
}
void loop() {
Serial.println("Playing #1");
player.play(1);
Serial.println("play start");
delay(5000);
Serial.println("played");
delay(1000);
Serial.println("Playing #2");
player.play(2);
Serial.println("play start");
delay(10000);
Serial.println("played");
delay(1000);
}
SDカードには適当に音源を入れてましたが、一旦順番に再生されます。
ファイル名あたりはいまいち分かってないですが、01.mp3
、02.mp3
みたいな連番数字にしておくとplayer.play(1)
で01.mp3が再生される... みたいなイメージらしいです。
ここちゃんと調べてなく、なぜかplay(2)で01.mp3が再生されるみたいな挙動があったので、配列みたいに0スタートだったのかもしれません。調べたら仕様は公開されてると思うので、ちゃんとやる人はちゃんと調べましょう笑
PlatformIOで実装してますが、設定やライブラリはこんな感じです。
[env:m5stack-atom]
platform = espressif32
board = m5stack-atom
framework = arduino
lib_deps = dfrobot/DFRobotDFPlayerMini@^1.0.5
monitor_speed = 115200
dfrobot/DFRobotDFPlayerMini
のライブラリだけで動きました。
スピーカー2個ぎとボリューム調整
手持ちの限界がありましたが、物理的に二つのスピーカーを繋ぎつつ、.volume()
の関数で音量を最大にしておきました。
player.volume(30);
0~30の値で設定できる模様なので最大値の30にしています。
ぽぽぽぽぽーぽ以外のBGMもたまに流す
ずっと同じぽぽぽぽぽーぽの音声を流すと近くにいる人が狂っていくらしいので、たまに別の音源も流すようにしてました。
#include "HardwareSerial.h"
#include "DFRobotDFPlayerMini.h"
#define RXD2 33 // Connects to module's RX
#define TXD2 23 // Connects to module's TX
HardwareSerial dfSD(1); // Use UART channel 1
DFRobotDFPlayerMini player;
void setup() {
Serial.begin(115200);
dfSD.begin(9600, SERIAL_8N1, RXD2, TXD2);
delay(5000);
if (player.begin(dfSD)){
Serial.println("OK");
player.volume(15);
}
else {
Serial.println("Connecting to DFPlayer Mini failed!");
}
}
void popopo(){
Serial.println("Playing #2");
player.volume(30); //呼び込み君のBGM流すときだけ音を最大
player.play(2);
Serial.println("play start");
delay(51 * 1000);
Serial.println("played");
delay(1000);
}
void loop() {
//4回ぽぽぽぽぽーぽ
popopo();
popopo();
popopo();
popopo();
//5回目は別の何かを流す。これをループ
Serial.println("Playing #1");
player.play(1);
Serial.println("play start");
delay(5000);
Serial.println("played");
delay(1000);
}
終わりに
会場で聞きました(教えてくれる人が多くてありがたい)が、市場に出回っているDFPlayerには色々なタイプが存在するらしく、購入時と調べるときに注意が必要とのことです。
IoTLT vol100もNT金沢2023の二日目にステージ上で実施していましたが、色々な人がいてカオスで楽しかったですね!
IoTLT vol.100 をトゥギャリました!https://t.co/bIs2R4aDKz
— 野良ハック(ざっきー) (@Zakkiea) June 18, 2023
#IoTLT #NT金沢
色々な人の制作物に触れて僕またモチベが爆上がりする会でした。
まだ参加したことない方はIoTLTもNT金沢も遊びに行ってみて下さい。
情報収集には#IoTLT
や#NT金沢
のツイッターハッシュタグやからあげ帝国というDiscordがオススメらしいです。
またこんな感じでわちゃわちゃモノづくりしていきます。
ではまた :)