« デスクトップPCの故障(i7-4790S y Z97Deluxe) | トップページ | トランジスタ技術スペシャル「プリント基板設計&製作入門」 »

2019年9月20日 (金)

ESP32で44.1k/16bit WAV再生

2016年の暮れにESP32というマイコンが発表され、安いしwifiもblueToothも使えるし、ADCもDACもI2CもSPIも使えてしかもArduinoで開発ができるので、当時からおもしろがって実験したり、仕事の試作に使ったりしていた。

SPIが使えるのでSDカードからWAVデータを読み出してI2Sで出してDACにつなげばシンプルなプレーヤーが作れるし、wifiが使えることを考えると、いろいろおもしろい実験ができそうだと考えていたら、誰も考えることは同じようで、ネット上にもESP32をつかったWAVプレーヤーの実験記事が散見された。

ところが実際にやってみると、Arduinoのライブラリにバグがあるのか、どうしても44.1K/16bit(CDと同じフォーマット)のI2Sが出せなかった。製作記事もよく見るとビットレートを32khzで妥協したりしていた。

しばらく試行錯誤を繰り返していたが、どうやらライブラリのバグが改善されないと解決できないらしい、ということで保留にしていた。

ところが、先程別件で調べ物をしていたら、Gitに44.1/16bitを明記したプレーヤーが載っているのを見つけた。

https://github.com/MhageGH/esp32_MusicPlayer

早速ArduinoでESP32ボードに書き込んでI2S波形を見てみると、どうやらちゃんと出ているっぽい。

I2s

このI2Sの波形を見てわかるとおり、これは松田聖子さんの「Rock'n Rouge」だ。(うそです。I2S波形をみても曲はわかりません)

一応音を聞いて確認したいので、部品箱にあったPCM5102をつかって、バラック配線で急ごしらえしてみた。

Esp32_wav

SDを直接ハンダ付けしているように見えるが、実はmicroSDカードのアダプタをmicroSDのホルダ替わりに使っている。microSDアダプタはAliで安く買えるので、microSDのホルダ基板なんかよりも気軽に使える。

PCM5102は使いやすいデバイスで、内部PLLを使えばMCLKがいらないし、しかも内部に負電圧を発生するレギュレータを積んでいるので、+3.3Vの単一電源の供給で、出力は0V中心で信号が出てくるので直結可能だ。接続はESP32から+3.3V、GND、BCLK、LRCLK、DATA。おおもとの電源はUSBの充電ケーブルでESP32に供給する。

ちょっと乱暴だが、直接ヘッドホンをつないで音を聞いてみた。ちゃんと鳴っている。

2016年の秋ごろ、PICの勉強も兼ねて、PIC32MXとPCM1795でSDカードのWAVプレーヤーを作ったが、それはもう大変な労力で、PICもC言語も初めてだったのできちんと音が鳴るまで4ヶ月もかかった。(今思うとPICの練習用に最初に着手するには無謀な課題ではある。)

きょうは記事を見つけてから3時間で音が聞けた。どんどん楽になるなあ。

 

|

« デスクトップPCの故障(i7-4790S y Z97Deluxe) | トップページ | トランジスタ技術スペシャル「プリント基板設計&製作入門」 »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« デスクトップPCの故障(i7-4790S y Z97Deluxe) | トップページ | トランジスタ技術スペシャル「プリント基板設計&製作入門」 »