ESP32でメインCPUの時間を消費せずに音を鳴らす技
ESP32
Published: 2019-04-16

This Sound Driver Runs on the ESP32’s ULP Coprocessor から発見。画像もここから転載。

ESP32はパワフルで便利ですが、音を鳴らしながら何かする、ということを実現するためには、貴重なCPUコアの1つを消費してしまうことになります。ESP32はCPUが2コアあるものの、なるべくそれらを音の再生のために使いたくないでしょう。

そこでこの記事ではESP32についている省電力プロセッサ通称ULPを使って音を鳴らす方法を紹介しています。ULPはEspressif独自の機械語でプログラミングをする必要があるため、活用している事例はとても珍しいです。

ソースコードは公開されているので、気になる人は手元で実行してみると良いでしょう。

追記: 少しソースコードを読んでみたところ、メインCPUでオーディオのストリームをバッファに詰め込みULPがそれを読み込んで音を鳴らすようです。タイマ割り込みに比べてメインCPUの処理時間が少なくなる、ということのようです。ソースコードのこのへんを見ると、泥臭くULPの機械語を書いているのがわかります。これはデバッグが大変そう・・

実際にM5Stackで動作を確認した方もいるようです↓

← 前の記事 - 効率の良いLiPo充電モジュール「PGCPSU」
次の記事 - 3Dプリンタでゼロから作る「スピーカー」 →

関連記事

VoIPで通話できるポータブル電話ガジェットWiPhone
ESP32にSPIRAMを足す方法
このエントリーをはてなブックマークに追加