目的
家庭にあるような赤外線リモコンを使って、M5GOを制御し、WAV形式の音声ファイルを再生します。
背景
社内ハッカソンイベントで制作した、こちらのM5StickC Plus2版の赤外線WAVプレーヤーですが、M5StickC Plus2ではどうしてもちゃんとした音声再生にならず、ノイズ再生にしかならなかったので、今回M5GOを使って再生できることを確認しました。
ただし、原因不明ですが、音声ファイルの書き込み具合によって、再生して音が出る場合と、出ない場合がありました。
環境
- Windows11 バージョン25H2(OSビルド26200.6584)
- メインプログラム書き込み用
- Arduino IDE
- バージョン:2.3.6
- 日付:2025-04-09T11:26:55.498Z
- CLIバージョン:1.2.0
- ESP8266Audio:2.0.0
- IRremoteESP8266:2.8.6
- M5GFX:0.2.9
- M5Unified:0.2.7
- Arduino IDE
- 音声ファイル書き込み用
- Arduino IDE ポータブル版
- バージョン:1.8.9
- Arduino IDE ポータブル版
- メインプログラム書き込み用
動作イメージ
IR(赤外線)センサーに向かってリモコンのボタンを押すと、対応する音声が再生されます。
| ボタン | 動作内容 | 発言内容 | ファイル名 |
|---|---|---|---|
| 切 | 「切れた」旨の発言をします | you tubeきんしー |
415F01FE.wav |
| 弱 | 弱そうな発言をします | とってもたのしいねー |
415F817E.wav |
| タイマー | 15時になったら伝えたい内容を発言します | おやつたべてもいいよ |
415FA15E.wav |
| 中 | 普通な発言をします | (音声なし) | 415F41BE.wav |
| ランプ | 明るくなる発言をします | せんり ひの なかよくして |
415F21DE.wav |
| 強 | 強そうな発言をします | ちゃんとはなしをききなさい |
415FC13E.wav |
※「使用したリモコンの信号」の「受信信号(16進数)」をファイル名にしました。
必要なもの
ハードウェア
- マイコン: M5StickC Plus2 または M5GO
-
IRセンサー: M5GOキットなどに付属のIRユニット
- M5StickC Plus2の場合は、Groveポート (G33) に接続します
- M5GOの場合は、Groveポート (G36) に接続します
- リモコン: タカラスタンダード製レンジフード用リモコン (または任意のIRリモコン)
ソフトウェア
-
Arduino IDE:
- バージョン 2.x (例: 2.3.2): スケッチのコンパイル・書き込み用
- バージョン 1.8.19: 音声データ(SPIFFS)のアップロード用
-
ライブラリ:
M5StickCPlus2-
IRremoteESP8266(ver 2.8.6) ESP8266Audio
- 音声関連ツール:
セットアップ手順
1. ハードウェアの接続
- IRセンサー接続先
- M5StickC Plus2の場合は、Groveポート(G33)にIRセンサーを接続します
- M5GOの場合は、Groveポート(G36)にIRセンサーを接続します
2. 音声ファイルの準備
マイコンで再生するためのWAVファイルを作成します。
-
音声合成: VOICEVOX を使って、各ボタンに対応するセリフの音声ファイルを作成します。
-
フォーマット変換: Audacity を使って、WAVEファイルを、マイコンでの再生に適した形式へ変換します
-
再サンプリング: メニューの
トラック>再サンプリングで8000Hz を選択します -
エクスポート: メニューの
ファイル>オーディオをエクスポートで以下の形式で保存します- フォーマット: WAV (Microsoft)
- エンコーディング: Unsigned 8-bit PCM
-
再サンプリング: メニューの
-
保存: 変換したWAVファイルを、スケッチフォルダ内の
dataフォルダに保存します
3. 開発環境の構築
Arduino IDEのセットアップとライブラリのインストールを行います。
2.x系と1.8.19系を共存させるため、1.8.19はポータブル版を使用することを強く推奨します。
詳細: Arduino IDE 1.8.19 (ポータブル版) のインストールと設定手順
ステップ1: Arduino IDE 1.8.19 (ZIP版) のダウンロード
- Arduino公式サイトのソフトウェアページにアクセスします
- ページ下部の「Legacy releases」セクションを探します
- 「Arduino IDE 1.8.19」の「Windows ZIP file」をクリックしてダウンロードします
ステップ2: ZIPファイルの展開
- 任意の場所(例:
C:\)にArduino-1.8.19という名前でフォルダを新規作成します - ダウンロードしたZIPファイルの中身を、すべてこのフォルダに展開します
ステップ3: ポータブルモードの有効化
- 展開先のフォルダ(例:
C:\Arduino-1.8.19)の中に、portableという名前のフォルダを新規作成します。- これにより、このIDEに関する設定やライブラリがすべてこのフォルダ内に保存され、他のIDE環境から完全に独立します。
ステップ4: 開発環境セットアップ
-
C:\Arduino-1.8.19内のarduino.exeを起動します -
ボード定義の追加:
-
ファイル>環境設定を開きます - 「追加のボードマネージャのURL」に以下のURLを貼り付け、OKをクリックします
https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json -
ツール>ボード>ボードマネージャを開き、「M5Stack」で検索してバージョン2.1.0をインストールします
-
-
ライブラリのインストール:
-
ツール>ライブラリを管理から、以下のライブラリを検索してインストールしますM5StickCPlus2-
IRremoteESP8266(ver 2.8.6) ESP8266Audio
-
-
SPIFFSアップロードツールの導入:
- arduino-esp32fs-pluginのReleasesページから最新版のZIPファイルをダウンロードします
- IDEのスケッチブックの場所(例:
C:\Arduino-1.8.19\portable\sketchbook)にtoolsフォルダを新規作成します - ダウンロードしたZIPを解凍し、中にある
ESP32FSフォルダを、作成したtoolsフォルダ内にコピーします- 最終的なパス:
...\sketchbook\tools\ESP32FS\tool\esp32fs.jar
- 最終的なパス:
- Arduino IDEを再起動します
-
ツールメニューに「ESP32 Sketch Data Upload」が表示されていれば成功です
4. 音声データのアップロード
- Arduino IDE 1.8.19 を起動します
-
ツール>Boardで、それぞれ使用するマイコンに合わせて以下を選択します- M5StickC Plus2:「M5StickC Plus2」
- M5GO:「M5Core」
-
ツールメニューからESP32 Sketch Data Uploadを選択します - ダイアログが表示されたら
SPIFFSを選び、OKをクリックしてアップロードを開始します
5. スケッチの書き込み
- Arduino IDE 2.x を起動します
-
m5stickc-plus2-ir-wav-player.inoを開き、M5GOに書き込みます
使い方
- セットアップが完了したM5GOを起動(リセット)します
- IRセンサーに向かってリモコンのボタンを押すと、対応する動作が実行されます
参考
使用したリモコンの信号
本プロジェクトでは、タカラスタンダード製レンジフード用リモコンの信号を使用しました。
IRrecvDemo.ino スケッチを使えば、お使いのリモコンの信号を調べることができます。
| ボタン | 受信信号 (16進数) |
|---|---|
| 切 | 415F01FE |
| 弱 | 415F817E |
| タイマー | 415FA15E |
| 中 | 415F41BE |
| ランプ | 415F21DE |
| 強 | 415FC13E |
おわりに
AIを活用して、半日のコーディングでメインプログラム(約300行)は作れました。
音が出なくて、その後2週間ほど試行錯誤しましたが、そういう部分を除けばプログラミングは簡単になったなと思いました。また、何かチャレンジしたいです。
