0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

M5GOで赤外線リモコンWAVプレーヤーを作ってみた

Posted at

目的

家庭にあるような赤外線リモコンを使って、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 ポータブル版
        • バージョン:1.8.9

動作イメージ

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ファイルを作成します。

  1. 音声合成: VOICEVOX を使って、各ボタンに対応するセリフの音声ファイルを作成します。
    音声作成
  2. フォーマット変換: Audacity を使って、WAVEファイルを、マイコンでの再生に適した形式へ変換します
    • 再サンプリング: メニューの トラック > 再サンプリング8000 Hz を選択します
    • エクスポート: メニューの ファイル > オーディオをエクスポート で以下の形式で保存します
      • フォーマット: WAV (Microsoft)
      • エンコーディング: Unsigned 8-bit PCM
  3. 保存: 変換した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版) のダウンロード

  1. Arduino公式サイトのソフトウェアページにアクセスします
  2. ページ下部の「Legacy releases」セクションを探します
  3. 「Arduino IDE 1.8.19」の「Windows ZIP file」をクリックしてダウンロードします

ステップ2: ZIPファイルの展開

  1. 任意の場所(例: C:\)に Arduino-1.8.19 という名前でフォルダを新規作成します
  2. ダウンロードしたZIPファイルの中身を、すべてこのフォルダに展開します

ステップ3: ポータブルモードの有効化

  1. 展開先のフォルダ(例: C:\Arduino-1.8.19)の中に、portable という名前のフォルダを新規作成します。
    • これにより、このIDEに関する設定やライブラリがすべてこのフォルダ内に保存され、他のIDE環境から完全に独立します。

ステップ4: 開発環境セットアップ

  1. C:\Arduino-1.8.19 内の arduino.exe を起動します
  2. ボード定義の追加:
    • ファイル > 環境設定 を開きます
    • 「追加のボードマネージャのURL」に以下のURLを貼り付け、OKをクリックします
      https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
      
    • ツール > ボード > ボードマネージャ を開き、「M5Stack」で検索してバージョン2.1.0をインストールします
  3. ライブラリのインストール:
    • ツール > ライブラリを管理 から、以下のライブラリを検索してインストールします
      • M5StickCPlus2
      • IRremoteESP8266 (ver 2.8.6)
      • ESP8266Audio
  4. 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. 音声データのアップロード

  1. Arduino IDE 1.8.19 を起動します
  2. ツール > Board で、それぞれ使用するマイコンに合わせて以下を選択します
    • M5StickC Plus2:「M5StickC Plus2」
    • M5GO:「M5Core」
  3. ツール メニューから ESP32 Sketch Data Upload を選択します
  4. ダイアログが表示されたら SPIFFS を選び、OKをクリックしてアップロードを開始します

5. スケッチの書き込み

  1. Arduino IDE 2.x を起動します
  2. m5stickc-plus2-ir-wav-player.ino を開き、M5GOに書き込みます

使い方

  1. セットアップが完了したM5GOを起動(リセット)します
  2. IRセンサーに向かってリモコンのボタンを押すと、対応する動作が実行されます

参考

使用したリモコンの信号

本プロジェクトでは、タカラスタンダード製レンジフード用リモコンの信号を使用しました。
IRrecvDemo.ino スケッチを使えば、お使いのリモコンの信号を調べることができます。

リモコンボタンコード
リモコン

ボタン 受信信号 (16進数)
415F01FE
415F817E
タイマー 415FA15E
415F41BE
ランプ 415F21DE
415FC13E

おわりに

AIを活用して、半日のコーディングでメインプログラム(約300行)は作れました。
音が出なくて、その後2週間ほど試行錯誤しましたが、そういう部分を除けばプログラミングは簡単になったなと思いました。また、何かチャレンジしたいです。

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?