LoginSignup
8
0

呼び込み君の音量が小さかったので #NT金沢 #iotlt

Last updated at Posted at 2023-06-20

こんにちは!呼び込み君ミニを最近触ってますがNT金沢2023の会場に持参したところ、 音がだいぶ小さいということに気づきました。

(NT金沢参加した皆さん土日お疲れ様でした!)

"呼び込み君ミニ"音小さい問題に気付けなかった

色んな人がいて、音を出している人もいて、オフィスで試すのとはだいぶ差があるのが現地。
本家呼び込み君がちゃんとアンプが付いてるのも(やっと)納得です。

"頭をひらいて"スピーカーなど変えてみた

こんな感じで頭が開くぬいぐるみがあったので、開いた頭にスピーカー入れて再生させてみました。

\Oh my Gosh! /

実際の様子はこちら。シュール。

とはいっても元の基板との配線をブチって切って入れかえるのを現地でやるのは怖かったので、再生はDFPlayerMini+M5ATOM Liteでやっています。

ATOM Lite + DFPlayerMiniで音声再生

実装解説的な部分です。UART接続で制御できます。

配線

こちらの記事をもとに配線をしました。

引用元: https://blog.hrendoh.com/how-to-use-dfplayer-mini/

こちらの記事だとESP32のDevBoardを利用していますが、手元にあったのがATOM LiteだったのでATOM Liteに繋げています。

UARTを使うためにATOM Liteだと23と33番のポートを利用して、電源とGNDに接続させます。

とりあえず再生させるコード

コードはこちらの記事のものを参考にさせてもらいました。

ATOM Liteでやる場合はTXを23、RXを33番のGPIOで指定して動かせました。

main.cpp
#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.mp302.mp3みたいな連番数字にしておくとplayer.play(1)で01.mp3が再生される... みたいなイメージらしいです。

ここちゃんと調べてなく、なぜかplay(2)で01.mp3が再生されるみたいな挙動があったので、配列みたいに0スタートだったのかもしれません。調べたら仕様は公開されてると思うので、ちゃんとやる人はちゃんと調べましょう笑

PlatformIOで実装してますが、設定やライブラリはこんな感じです。

platformio.ini
[env:m5stack-atom]
platform = espressif32
board = m5stack-atom
framework = arduino
lib_deps = dfrobot/DFRobotDFPlayerMini@^1.0.5
monitor_speed = 115200

dfrobot/DFRobotDFPlayerMiniのライブラリだけで動きました。

スクリーンショット 2023-06-20 13.02.40.png

スピーカー2個ぎとボリューム調整

手持ちの限界がありましたが、物理的に二つのスピーカーを繋ぎつつ、.volume()の関数で音量を最大にしておきました。

main.cpp
player.volume(30);

0~30の値で設定できる模様なので最大値の30にしています。

ぽぽぽぽぽーぽ以外のBGMもたまに流す

ずっと同じぽぽぽぽぽーぽの音声を流すと近くにいる人が狂っていくらしいので、たまに別の音源も流すようにしてました。

main.cpp
#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もNT金沢も遊びに行ってみて下さい。

情報収集には#IoTLT#NT金沢のツイッターハッシュタグやからあげ帝国というDiscordがオススメらしいです。

またこんな感じでわちゃわちゃモノづくりしていきます。

ではまた :)

8
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
0