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


こんにちは！呼び込み君ミニを最近触ってますが[NT金沢2023](https://wiki.nicotech.jp/nico_tech/?NT%E9%87%91%E6%B2%A22023)の会場に持参したところ、 **音がだいぶ小さい**ということに気づきました。

（NT金沢参加した皆さん土日お疲れ様でした！）

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

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

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">呼び込みくん、ミニだと音小さい！ってことにこういう場所で気づく <a href="https://twitter.com/hashtag/NT%E9%87%91%E6%B2%A2?src=hash&amp;ref_src=twsrc%5Etfw">#NT金沢</a> <a href="https://twitter.com/hashtag/iotlt?src=hash&amp;ref_src=twsrc%5Etfw">#iotlt</a> <a href="https://t.co/64ZOSAhFyC">pic.twitter.com/64ZOSAhFyC</a></p>&mdash; 菅原のびすけ （プロトアウト9期募集中) (@n0bisuke) <a href="https://twitter.com/n0bisuke/status/1669932161770881024?ref_src=twsrc%5Etfw">June 17, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

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

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

>    \Oh my Gosh! /
> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/db679bcf-aff2-eef5-4d6d-ea5eafeeede6.png" width="400px" /> 

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

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">頭にスピーカー組み込まれた <a href="https://twitter.com/hashtag/%E5%91%BC%E3%81%B3%E8%BE%BC%E3%81%BF%E5%90%9B?src=hash&amp;ref_src=twsrc%5Etfw">#呼び込み君</a> <a href="https://twitter.com/hashtag/iotlt?src=hash&amp;ref_src=twsrc%5Etfw">#iotlt</a> <a href="https://twitter.com/hashtag/NT%E9%87%91%E6%B2%A2?src=hash&amp;ref_src=twsrc%5Etfw">#NT金沢</a> <a href="https://t.co/t5nDKFg6Le">pic.twitter.com/t5nDKFg6Le</a></p>&mdash; 菅原のびすけ （プロトアウト9期募集中) (@n0bisuke) <a href="https://twitter.com/n0bisuke/status/1669956974501576706?ref_src=twsrc%5Etfw">June 17, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

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

## ATOM Lite + DFPlayerMiniで音声再生

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

### 配線

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

> 引用元: https://blog.hrendoh.com/how-to-use-dfplayer-mini/
> ![](https://i.gyazo.com/f625b88bcb36845221b1f917721d194a.png)


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

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

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

コードは[こちらの記事](https://kghr.blog.fc2.com/blog-entry-127.html)のものを参考にさせてもらいました。

https://kghr.blog.fc2.com/blog-entry-127.html

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.mp3`、`02.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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/d8540737-90b4-f88c-ffba-3ab127cb32dc.png "スクリーンショット 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には色々なタイプが存在する](https://programresource.net/2021/09/24/3402.html)らしく、購入時と調べるときに注意が必要とのことです。

[IoTLT vol100](https://togetter.com/li/2169788)もNT金沢2023の二日目にステージ上で実施していましたが、色々な人がいてカオスで楽しかったですね！

https://iotlt.connpass.com/event/285035/

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">IoTLT vol.100 をトゥギャリました！<a href="https://t.co/bIs2R4aDKz">https://t.co/bIs2R4aDKz</a><br><br> <a href="https://twitter.com/hashtag/IoTLT?src=hash&amp;ref_src=twsrc%5Etfw">#IoTLT</a> <a href="https://twitter.com/hashtag/NT%E9%87%91%E6%B2%A2?src=hash&amp;ref_src=twsrc%5Etfw">#NT金沢</a></p>&mdash; 野良ハック(ざっきー) (@Zakkiea) <a href="https://twitter.com/Zakkiea/status/1670380717992448003?ref_src=twsrc%5Etfw">June 18, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

色々な人の制作物に触れて僕またモチベが爆上がりする会でした。

まだ参加したことない方はIoTLTもNT金沢も遊びに行ってみて下さい。

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

https://karaage.hatenadiary.jp/entry/2022/11/30/073000

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

ではまた :)