(S2はS3の下です)
ESP32-S3 についてメモ
S3に技適がついて値段もAliexpressで送料込み1000円くらいで買えるようになってきたので
無印からS3に重点を移していくつもり。
S3 の オンボードLED(neopixel)について注意
オンボード3色LEDはありがたいが、
だがしかし neopixelWrite() を 間隔開けずに連呼すると、なんと
ESP32本体が固まる!!??
なんて恐ろしいコ
(Espressif正規品じゃないからか??)
10msくらい間空くように使っています(1ms秒でも十分かも)
S3 の BLE について注意
S3 の BLE は、後方互換性に乏しく
Apple製品ではつながらない??かもしれない。(2023年)
Arduino IDE
- メニューにないupload速度の追加はboards.txtを編集する。
- boards.txtが反映されないときはユーザーデータを一旦削除する必要がある
- こちらを参照→ https://github.com/arduino/arduino-ide/issues/1030
- Windowsの場合は C:\Users<user name>\AppData\Roaming\arduino-ide\ を空にしてArduinoIDE再起動とのこと。
ESP32 についてメモ
(コメント欄に補足情報頂いてます。ご覧ください)
※筆者の手元にあるのはESP32-DevKitC-32D(WROOM32Dが乗った38ピンのボード)
Espressif公式 → https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/index.html
- ピン特性はここがまとまりいいかも → https://www.upesy.com/blogs/tutorials/esp32-pinout-reference-gpio-pins-ultimate-guide
- Serial.printf() はESP32独自。Arduino全般には不存在。移植性配慮するなら使わないが吉。
- Macはドライバインストール必須(CH34xVCPDriver_signed.pkg)
- クロック落として使う際、
- 40MHzが駄目で26MHzならいけるときがあった。(ArduinoIDE)
- 消費電力測定例
- 240MHz(フルスピード):ADC6基使うスケッチで40~70mAとか
- 13MHz : 30~60mA そんなに劇的には変わらない。
※ 破損したESP32は消費電力600mAに達してるときがあった。(USB電圧も4.5Vくらいまで落ちる)
触ってられないほど熱くなる。こういうトラブルもあるのでUSB電力計はあったほうが吉
ArduinoIDEとは相性悪いらしい- 2023年4月現在、BLEは問題が生じてる?
。Advertizingできるけど接続失敗する。使い物にならない状況。
・ 標準BLEが動かない時は NimBLE by h2zero を使うとよい。 - WiFi使用時のGPIOの干渉
- WiFi使用中はADC2が使えなくなるとのこと
- 36ピンも使えないような??
- EN(Enable)ボタンはリセットみたいなもの(RST/RESETに相当と考えてよいらしい?)
- ENピンがHiに上がっていないと効かない?そんなことない?
- 電源投入またはPCとの接続の時にENピンがHiに上がっていないと不正なのかも。
- 正常であればENピンをGNDに落とすと(ENボタン押すのと同様)リスタートする。
- ENボタンが効くと隣の赤LEDが一瞬わずかに暗くなる?。ならなくても効いてるのか。
- ENピンがHiに上がっていないと効かない?そんなことない?
- GPIOピンのうちInput-onlyのピンのうち34より大きい番号のピンは、プルアップ/ダウンがついてない。
・ attachInterrupt() は使える。 - ADコンバータのリファレンス関連 → https://docs.espressif.com/projects/esp-idf/en/release-v3.3/api-reference/peripherals/adc.html
- ESP32のADコンバータは無駄に遅くなっているらしいです。参考→http://radiopench.blog96.fc2.com/blog-entry-1185.html
- うちの環境esp32 by Espressif 2.0.14では23ksps程度でした。
- HID.h が不存在。故に"Keyboard.h"も使えない。"USBHIDMouse.h" "USBHIDKeyboard.h" はあるけど使えない(?)。
- ESP32-S2 / ESP32-S3 は、USB-OTG 対応なのでUSB機器構成できる。他は無理模様。
- Lチカに使えるオンボードLEDはWROOMにはついてないみたい。
- USBHostShield mini について https://chome.nerpa.tech/usb-host-shield-hardware-manual/
- 使ってるのは互換機。正規品のように電源ルーティングのパッド(ハンダ盛るやつ)は無い
- そのままだとUSB子機への給電電圧は3.3Vくらいになる。
- ELECOMのキーボードは正常作動した。
- SANWA SUPPLY のトラックボールは正常。
- 百均(キャンドゥ)マウスは駄目だった。ESP32の5V(実質4V)をUSBHSを迂回して供給したら動いた。
Upload失敗の対処
-
GPIOの接続不良とかで接続失敗(Upload失敗)に陥ることがたまにある。
- 筆者は安価なブレッドボードを多用しているせいかも。
- 電池やモーターを(変なやり方で)繋いじゃったりするからかも。
-
リセットで駄目な時は電源切ってしばらく(数分)放置してみる。これ重要。
-
少々乱暴ですがGNDに繋いだ線をGPIOすべて順繰りに触らせる(ただし電源の端子には触れない)
-
ENポートのコンデンサはつけといたほうがよい。
-
接続エラーでコンパイルも通らなくなったことがありました。
- ESP32側がおかしくなっていたような印象。ENボタンを押しても再起動しなかった(気がする)。
- IDEを再起動やUSBの挿し直しでは変化なし。PCの再起動は試していない。
- ネット情報ではArduinoIDEのバージョン依存のバグ的な意見がある
- 一旦PlatformIOでコンパイルアップロードを実施た後ArduinoIDEに戻ったところ、正常にもどりました。
- どうやらArduinoIDEがESP32になにかを仕込んでしまってそれが原因で接続エラーを起こす。のかなあ。
- 関係あるかわからないがデバマネ上の名称が「USB-Enhanced-SERIAL CH9102」で、いつのまにか変わったような(?)
-
PlatformIOで駄目でArduinoIDEは正常というケースもありました。
- ArduinoIDEを落とさないとPlatformIOのUploadできないときがある。
-
GPIO 0,2,5,12はbootに干渉するポート。とはいえ他のポートの接触不良(?)が原因で起動失敗することもあったので気にする必要はないのか。
スケッチのUploadで成功したり失敗したりと不安定な時に疑うこと
・電流過大
・グランドされてないピン
・Upload時に繋いであるとまずいピン(ブートやSPI関連)
- GPIO0、2 あたりBootに影響する。Upload時には繋いであるとまずい。
Portおよびデバマネに表示されないときの対処:
・ENピンを3.3Vにつないどく。Bootボタンを長く押す。ENボタンを押す。→何度か繰り返すとPort番号出現。
・デバマネ上のポート(COMとLPT)の項目の下に「Silicon Labs CP210x USB to UART Bridge (COM5)」みたいに出る。
(警告マークついてるときはやり直す)
・ENピンを開放 → デバマネとPort一覧は変化しない
・ArduinoIDEでなにかのスケッチをUpload → 成功すれば次からはEN操作不要の状態に戻る。はず。
バリエーションについて
ESP32 本体
(筆者にとって)よく見るのは ESP32無印とESP32-S3
-
無印
- アリエクで500円くらいで買える。
- USB機能はない。USB機器を構成するにはシールドが必要。
-
S2
- 無印のLX6より後発のLX7コアだがシングルコア。
- USB-OTGがある。
- Bluetoothが無い。
- 有線LAN廃止
-
S3
- LX7の2コア
- USB-OTG/JTAG(USB端子が2つ載ってるボードが標準的)
- 有線LANなし、アナログ出力(DAC)が廃止
技適取得がまだ。- 標準でPSRAM搭載(?)
- 「N16R8」といった接尾辞が付いている。「フラッシュメモリが16MB、PSRAMが8MB」といった意味らしい。
-
WROOM-32
- -32D -32E っていう末尾の文字はバージョンらしくEが最新でバグが解消されており、32無印と32Dはすでに非推奨とのこと。
- -32U はアンテナ外付け版
-
WROOM-03
- WROOM32のベータ版とのこと。
ボード
- WROVER
- 8MBのPSRAMが増設されている。
- 各種カメラ付きボード
- カメラ付きの製品にはWROVER同様にPSRAM増設製品の場合がある。
- ESP32S
- シングルコアのESP32らしい。
-
NodeMCU-32S(ESP32-NodeMCU)
- シルク無しでピン列間隔とボード横幅が(ブレッドボード1列分)細い
- プログラマブル、つまりLチカに使える、オンボードLED搭載。
- NodeMCUとはファームウェアの名前だとか、使用方法には大差ない模様。
-
DevKitC
- WROOM-32を乗せたボード
- 秋月が取り扱って日本で最もメジャーらしい
電池駆動(10MHz稼働)
試したesp32は正規品ではないかも。
消費電流(テスターで測った。大雑把ですよ。)
10MHz : 起動時38mA弱、loop関数中は20mA
※小さなOLEDやLEDアレイ、I2Cの磁気センサ(AS5600)を使用。
※WiFiやBLEは動いてないはず。
CR2032
- CR2032は定格3Vのコイン電池です。容量は225mAhとかその程度。
- この電池の大抵の製品で、使用開始直後の無負荷電圧が3.Vをはるかに上回るので、esp32の3.3Vに接続して起動できる。
- 電圧が3V以下に落ちた後は、2個を直列にして5V端子に入れて起動する。※ただし他の5V機器にダメージがありうる。
- 起動はするのだけど数十秒から数分で落ちます。
- 上述の消費電流20mAは、コイン電池には強すぎるようです。2直で3.V強(定格の1/2)までじわじわと電圧が落ちていってしまう。
- コイン電池でのESP32の稼働は、スリープモードを駆使しない限りは無理でしょう。
USB<->シリアル
- CP210()、CH9102()、CH340(*) とバリエがある。通信速度がそれぞれ12、4、2MHzらしい。
- 筆者の手元にある製品はCH9102X
- Upload speed
- ArduinoIDEは最高921600
- Upload speed の追記先の例↓
C:\Users\username\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.14\boards.txt
Bluetooth/BLE
2023年4月現在、BLEは問題が生じてる?。Advertizingできるけど接続失敗する。使い物にならない状況。
・ 標準BLEが動かない時は NimBLE by h2zero を使うとよい。
3sp32S3はBT5.0のみ対応で
BT-Serial(SPP)は非対応だそうです。
https://github.com/espressif/arduino-esp32/issues/6882
関連記事
マルチスレッドとSPI : https://qiita.com/emuai/items/01ee1770a59b864d3a08
ありがたいWebサイト
バリエーションの説明
フォント生成
- GFX(for TFT panel) : https://rop.nl/truetype2gfx/