ESP32のI2S+DAC出力成功

ESP32_MP3_Decoderのプログラムを調べ、遂にはESP32のI2S+DACから、音声を出力することができた。嬉しい。

Tw_Mhageさんの記事:ESP32でBluetoothイヤホンを作ってみた – Qiitaに刺激を受け、ESP-IDF添付のサンプルプログラムを改造し、Bluetooth Speakerのデモプログラムを作成、公開している。Bluetoothの中身に疎いので、最初苦戦したが、iPhoneに接続し音が出せるようになった。回路は、ものすごく簡単なので、ESP32のモジュールを持っている人には、一度試してもらいたい。

ESP32_MP3_Decorderを動かしてみた。

ESP32のI2Sで音声出力の実験をしているが、なかなかうまくいかない。サンプルプログラムを元にプログラミング・ガイドを見ながらDACに音声を出力させようとしているのだが、うまくいかない。部分的にちゃんと波形は出力されているのだが、うまくつながらない。周期も変。

資料も少ないし、動いたという例も無いと思っていたところESP32_MP3_Decoderの存在を知る。試してみると、いろいろ問題は、ありながら、断続的に音が出た。MP3のデコードも自前でやっているらしい。


続きを読む… »

秋月のESP32-DevKitC購入

ESP32の実験を少しづつやっている。最初に買った。昨年末に買ったdoitのESP32開発ボードは、eepromに変なデータが書き込まれてしまったのか、WiFi.hをincludeしただけでabortするようになってしまった。それで自作ボードで8bitパラレル接続のLCDの実験を行ったのだが、他のデバイス用の配線が間違っていることが判明。それなら秋月のESP32-DevKitCを使った方が実験しやすそうだということで購入した。

doitの基板と比べると端子が多い。SDIO系の端子もでているのだろう。あと秋月の基板の抵抗の小ささに驚く。最初みたとき、実装されていないのかと思ってしまった。

ESP32開発ボード比較 ( ←秋月、doit→ )

ESP32で動画表示

ESP32に接続した320×240のTFT LCDにネットワーク経由でデータを転送し動画を表示することができた。表示速度は、240×160だと10fps, 240×135で15fps, 120×90なら30fps以上が可能。あと2倍ぐらい高速化の余地はありそう。

ESP32側のプログラムはArduino環境で開発。udpパケットを受信し、データをそのままLCDに書き込む。簡単なフロー制御も実装している。tcpではなく、udpを使用したのは、フロー制御を自前でやりたかったから。通信エラーでパケット欠落が起きても再送などして欲しくなかったから。あとudpだと自然にパケット単位で処理することになり、プログラムがわかりやすい。tcpのストリームにパケットの切り出し処理が面倒。やってみた結果,フロー制御でいろいろ実験できて面白かった半面、いろんな通信環境にちゃんと対応できているかどうか不安。そのうちtcpでも試してみたい。

動画データは、既存の動画ファイルをffmpegで専用フォーマットに変換したものを使用。ファイルの中には RGB各5,6,5bitづつの16bit/pixelのTFT LCDのフォーマットで画像データが収められている。これをpythonのプログラムでudpパケットで送信している。


続きを読む… »

ESP32のGPIOのバグ

ESP32でパラレル接続のTFT LCDに表示を行おうと、既存のライブラリを参考にプログラムを書き、大体動くようになったのだが、なんか変。変な点が描画される。(右上の写真参照)

怪しいところはたくさんある。自分のコードも怪しいし、LCDは使用実績はあるものの、結構古いものなので怪しいし、esp32-arduinoもesp-idfも日々更新されていて怪しい。電源ラインも怪しい。オシロスコープを駆使し、しつこく調べると WRパルスが出ているタイミングでCSがHighになっている状況を発見。WR信号もCS信号もGPIOで操作している。これは、プログラムのミスではありえない。
続きを読む… »

ESP32を試す(2)

実験用の部品が届いたので、ESP32の実験を続ける。で、わかってきたのは、Arduinoのライブラリが開発途上であること。例えばWebServerが無い。WiFiServerは、あるが、これはtcpのサーバーで、ESP8266WebServerにある便利な機能(arg()とか?)が無い。OTAも無い。

arduino-esp32のgithubを見ると頻繁に更新されている。機能が充実し安定するには時間がかかりそうだ。

ESP32は、プログラム書込みは通信速度が921600baudで、なかなか高速。しかし書込みモードへの切り替えがうまくいかないことが多い。数回試してやっと成功する感じ。最初、電源環境でも悪いのかと思っていたが、やっぱり書き込み回路が悪いのではないかと対策を試みたところ、失敗がなくなった。対策は EN(Reset)端子とGND間に0.1μFのコンデンサを追加するだけ。理由については、Qiitaに書いた。

ESP-WROOM-32を試す

秋月電子でESP-WROOM-32モジュールが発売されたのに刺激を受け、昨年末購入したdoit ESP32開発ボードを動かしてみる。これにはESP-WROOM-32が搭載されている。

いろいろ情報を集めると、Arduinoが楽そうなのでarduino-esp32のページのとおり、インストール作業をすすめると順調に完了。
開発ボードにUSBケーブルを接続しても電源は入るがシリアルポートとして認識されなくて焦るが、USBケーブルの不良のようで、交換したら認識された。

まず、ライブラリのサンプルからWiFiScanを試すと、あっさり動いた。これだけでは、何なので開発ボード上のLEDを点滅させてやろうとするが、どのポートに接続されているかわからない。回路図を探すが見つからない。虱潰しに試してIO2に接続されていることが判明、やっとLチカできた。

これから先は、もうちょっと回路が無いと試せないので、今日はここで終わり。ESP-WROOM-32は-02から150円しか高くなっていない。でも増えたIO端子の活用方法のアイデアが、まだ無い。でも増えたROM(500K->1M),RAM(50k->300k)だけでも魅力的かもしれない。 

謹賀新年 2017

あけましておめでとうございます。今年もよろしくお願いいたします。

昨年は、記事数が少なかったと反省しています。今年は、内容が薄くなっても記事数を増やそうと考えております。

続きを読む… »