ESP32の味見
想定難易度はちょっと電子工作に興味のある情報科の学生レベルです
プロの人からマサカリが飛んでくるかもしれませんがお手柔らかにお願いします
また詳細は割愛することが多いのでくわしくは参考サイトをみてください
まずはじめに: ESP32とは
非常に安価にもかかわらずWi-Fi/Bluetoothが利用できるマイコンボード(クロック周波数も最大240MHzと高速)として有名
ESP32-WROOM-32Eの場合:フラッシュメモリーは4MB, SRAMは520KB, コアはXtensa LX6 x2 32bit
姉妹ChipにESP-02(ESP8832EX)がある
またWROOM/WROVER+(後ろに英数字がついているモデル)といった細かいバリエーションがあり搭載メモリー量や価格に若干の差異はあるが基本は同じである (なかにはRISC-Vのものもあるようだ)
まとめているページがあった
ESP32シリーズ(無印, S2, S3, C3, …)比較 2022年1月
機材
おすすめのボードは以下
ESP32単体を購入してもよいがUSBの5Vから3.3VへのレギュレーターとBoot向けのスイッチが搭載されているためすぐに開発が可能になる (単体はやや難易度が高く一敗)
シリアル変換は以下がおすすめ
もっと安価なものでも構わないが高速かつ小型でピンも余計なものがついていないため今回の開発にぴったり
接続はmicro-B
4Pがまとまったメス-メスのケーブルも買っておく
こちらでもいい
ブレッドボード・ジャンパー延長ワイヤ(メス-メス) 15cm青
接続は以下の通り
5VとGNDはケーブルをねじって接続する必要がある
ESP32-dev | USB-Serial |
---|---|
GND | GND |
5V | 5V |
RX | TxD |
TX | RxD |
買って帰ったら早めに半田付けすること (情熱が枯れる前に)
Platform IOについて
Platform IO拡張機能をインストールしたら左のアイコンからHomeへ飛び, New projectでEspressif ESP32 Dev Moduleをボードに指定してArdiunoを選択する (今回のケースはこの設定で行うがボードややりたいことによっては変えるべし)
Buildと書き込み, シリアルモニターは下部のステータスバーにある
なおこのプロジェクトはVSCodeが開いているフォルダーではなく別の場所に保存されているようである
コードは参考サイトの簡単なシリアル通信のものを使った
参考
Get started with Arduino and ESP32-DevKitC: debugging and unit testing
ESP32でのPlatformIO IDEの使い方と環境構築
書き込み
Bootを押しながらENをプッシュしてリセットすると書き込みモードに移行する
Bootを押さずにENをプッシュすると普通に起動する
シーケンス図
Boot | EN |
---|---|
1 | 1 |
0 | 1 |
0 | 0 |
0 | 1 |
1 | 1 |
通信速度をあげることもできる
platformio.ini
monitor_speed = 115200
upload_speed = 512000
自分の環境ではボーレート38400でも安定して通信できた (115200は配線が悪いのかノイズが多いのかわからないがだめだった)
追記
再度試したところ512000でも動作しました
参考
Advanced: Nostr client
Segmentさんの記事を参考にしてみる
Arduino(ESP32)から次世代SNSプロトコル Nostrにアクセスしてみる
ライブラリーはPlatform IOのPIO Home > Librariesから追加できる
途中で追加するプロジェクトを聞かれるので現在製作中のプロジェクトを選択する
5GHzのWi-Fiではうまくいかない(非対応)ので2.4GHzのものを利用する
コードはほぼ同じものをつかったので割愛
Future: debug(まだ未検証)
FT232HLをつかえばOpenOCDをつかったdebugが出来るらしい
FT232Hの方が最強かもしれない(2) – シリアルデバッグ編
ESP32 を FT232H でつないで OpenOCD+GDBでデバッグ
ただの/dev/ttyUSB0としてではなくBit-bangをつかうにはmodprobeでftdi_sioを消して専用のdriverをインストールする必要があるかもしれない (あるいは/etc/modprobe.d/でblacklistに登録する必要があるかもしれない)