LoginSignup
1
0

ESP32/Arduino 覚え書き

Last updated at Posted at 2023-04-11

ESP32-S3 についてメモ

S3が技適がついて値段もAliexpressで送料込み1000円くらいで買えるようになってきたので
こちらに重点を移していくつもり。

S3 の オンボードLED(neopixel)について注意

オンボード3色LEDはありがたいが、
だがしかし neopixelWrite() を 間隔開けずに連呼すると、なんと
ESP32が固まる!!??
なんて恐ろしい子
(Espressif正規品じゃないからか??)
10msくらい間空くように使っています(1ms秒でも十分かも)

S3 の BLE について注意

S3 の BLE は後方互換性に乏しく
Apple製品ではつながらない??かもしれない。

Arduino IDE

  • メニューにないupload速度の追加はboards.txtを編集する。
  • boards.txtが反映されないときはユーザーデータを一旦削除する必要がある

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)
  • 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が一瞬わずかに暗くなる?。ならなくても効いてるのか。
  • GPIOピンのうちInput-onlyのピンのうち34より大きい番号のピンは、プルアップ/ダウンがついてない。
    ・ attachInterrupt() は使える。
  • ADコンバータのリファレンス関連 → https://docs.espressif.com/projects/esp-idf/en/release-v3.3/api-reference/peripherals/adc.html
  • 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サイト

バリエーションの説明

フォント生成

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0