半年ほど前からESP32を触り始めた初心者の備忘録です。
Amazonなどで見かけるESP32-WROOM-Dev_Moduleにはフラッシュメモリが組み込まれていてサイズは4MBが主流らしい。Web上で目にするアプリケーションプログラムもフラッシュサイズ4MBを前提にしているものがほとんどのようです。一方、秋月で2021年7月から発売されているESP32-WROOM-32Eはフラッシュサイズ16MBで一般的なものより大きい。となると、またしても貧乏人根性がふつふつと頭をもたげてきました。16MBのうち4MBしか使わず残り12MBをみすみす無駄にしてしまうのはもったいない、と。12MBあれば再生時間10分位の音楽ファイル(CDクラス)を保存できます。
1.ESP32_Dev_Moduleのフラッシュメモリ・サイズを確認
こちらのサイト1)にあるスケッチを利用させていただきました。これを秋月ESP32-WROOM-32Eに書き込んで実行するとシリアルモニタに以下のメッセージが表示され、フラッシュサイズが16MBであることを確認できました。
-> Flash Chip Size = 16777216 byte
フラッシュサイズのほか、Mac Addressなども教えてくれる便利なツールです。
2.フラッシュメモリのファイルシステム
Webにあがっている過去数年のESP32用スケッチをみるとSPIFFSを使っているものが多く、サイズの小さなデータファイルであればわざわざSDカードを外付けすることなく保存できるので便利です。また、ボードのフラッシュサイズに適合したpartition_schemeの作成法も紹介されています2)。フラッシュメモリにデータファイルを書き込むためのESP32_Sketch_Data_Uploaderなるツールも紹介されています3)。しかしSPIFFSは原始的なファイルシステムなのだそうでLittleFSへの移行が進められているようです。また、FatFSも使えるようになってます。SPIFFSに比べLittleFSや FatFSは動作が高速、かつディレクトリ構造を持つことが特徴です。メモリのブロックサイズが大きくなりメモリ使用量が多少増えてしまうというデメリットがあるにしても利点のほうがはるかに大きいのでしょう。、
3.Arduino_ IDEのバージョン
Arduino 1.x.xでは(2.で述べたように)ESP32開発ボードに搭載されているフラッシュメモリ容量、および使途に合わせたpartition_schemeをつくることができるのですが、Arduino 2.x.xでは同じ手法を適用できなくなりました。そのため私はいまだにArduino 1.8.19を使い続けています。Arduino 2.x.xについてはしばらく様子見を決め込んでいます。
4.Arduino core for ESP32のバージョン
Arduino_IDEのボードマネージャでインストールする"esp32 by Espressif System"のバージョンですが、基本的には最新のものを使用するのが良さそうです。v1.0.6で作成したSketchがv2.0.9ではコンパイルエラーを起こすこともありましたが、ファイル操作に関してはv2.xx以降はLittleFSがcore内に埋め込まれたことでv1xxでの"LITTLEFS"という表記を”LittleFS”に変更する4)ことでコンパイルエラーを回避できることを確認してます。
5.ESP32内蔵DACと外付けDACの使い勝手
WebRadioに内蔵DACを使った場合と外付けDAC(MAX98357A)を使った場合とを比較しました。内蔵DACは分解能8ビットですが聴いた感じは普通のAMラジオと比べてそん色なく音楽も楽しめるレベルかと思います。(もちろん高価なオーディオ装置につなぐには役不足ではありますが。)外付けDACを使った場合との大きな違いは通信速度が極端に低下し再生が途切れるときにプツプツという雑音がでることです。これはかなり耳障りです。一方、外付けDACを使った場合はこのプツプツ音は発生しません。ネットサーチで"内蔵DACを使ったWebRadio"の記事がなかなか見つからなかった理由もこのへんにあったのかなと勘ぐったりしています。
16MBメモリ搭載のESP32開発ボードを有効活用すべく、小鳥の鳴き声をいろいろ集めたmp3_playerを作ってみました。別のタブレットからWiFi経由で再生ファイルを選択できるようにしたものです。ここでは内蔵DACを使いましたが再生ファイルを切替えるときにやはりプツプツ音が発生します。この”プツ音”を切替え音とわりきってそのまま使っています。
References
1) mgo-tec電子工作:ESP32-WROOM-32 チップ・メモリ・MACアドレス情報取得方法、
https://www.mgo-tec.com/blog-entry-chip-info-esp-wroom-32-esp32.html
2) ohacraftのblog:16MBフラッシュのESP32-WROVERでSPIFFSを最大限使えるようにする設定方法、
https://kohacraft.com/archives/202012051149.html
3) フラフラBLOG:ESP32 FAT対応 ファイルアップローダープラグイン、
https://blog.goo.ne.jp/msk610/e/2aa5d88089b051628cdbf8e2abb2ae9f
4) LittleFS library for arduino-esp32
https://github.com/lorol/LITTLEFS