いやー、久しぶりに(?)どハマりした。
前から気にはなっていたESP32というマイコンを使ってみようと秋月電子で売っている一番安いやつwを買ってみた。
ESP32-WROOM-32E
ESP32-WROOM-32Eマイコンボード: 開発ツール・ボード 秋月電子通商-電子部品・ネット通販
これね。
ケチったためにUSBもなくてUSB-シリアル変換をかます必要がある。
その代わり余分な電気を食わないので実は省エネ。ESP32はそもそも省エネらしいので、これは方向性としては間違ってはいない。
うちには随分前に同じく秋月で買ったFTDIのチップを使ったAE-UM232Rという型番のUSB-シリアル変換基板があったのでこれを使う。
という寸法。
で、まずAE-UM232Rを引っ張り出してきて、ESP32-WROOM-32Eのいかにも書き込みに使ってね、と言わんばかりに並んでいるピンヘッダに合うように中継基板を作成してみた。
あまり深く考えず、このときはAE-UM232RのTxDとRxDをESP32-WROOM-32EのRxDとTxDにそれぞれつながるように配線した。普通はこうだよな、ってことで
さくっとできたのでESP32-WROOM-32EにつないでArduino-IDEからなにか書き込んでみようとした。
IDEにESP32を使うためのライブラリをまず入れる。
ESP32、ESP-WROOM-32搭載製品の設定とプログラム書き込み方法 – Indoor Corgi
こちらの記事を参考に。
するとTX-TX,RX-RXでつなぐ、という記載があったので中継基板の配線をそのように変更しておく。
そしておもむろに適当なプログラムを書き込んでみる。
返事がない。ただの屍のようだ・・・。
なんかおかしい。
SW2を押したままSW1を押して離す。それからSW2を離すと書き込みモードになります。ってSW1ってどっちよ。うちの基板にはENとBOOTというものしかないんだが。両パターンを試してみるも応答なし。書き込みが始まった時点でシリアルポートが相手を見つけられないと言って止まる。
まず疑ったのは買ってから10年ほど肥しにしていたAE-UM232Rが死んでるんじゃないかということ。一応/devには出てくるのでチップは生きているようだが。とりあえず他のArduinoのtx,rxに配線してArduinoと通信ができるか試してみると、通信できてない。こりゃAE-UM232Rが死んでるのか?別の変換基板を買うか?しばらくあーでもないこーでもないといじっていて気がついたことはこのAE-UM232Rとピンソケットの接続がなんかゆるい。AE-UM232Rにもとから付いていたピンヘッダはなんか上等そうな丸ピンのちょっと細めのピンヘッダで、たしかにブレッドボードに挿して使うならこのピンのほうが刺しやすいのだが。試しにブレッドボードに刺して、Arduinoとの通信を試してみたところ、ちゃんと通信できた。ピンの接触かよー、ってことでピンヘッダを安いカクカクっとしたものに付け替えることにした。そのさい、一部パターンを破損することに・・・ああ、どうしてキットじゃなくて完成品の方を買ってたんだ・・・
ということで気を取り直してESP32-WROOM-32Eへのプログラム書き換えに挑む。
イマイチボタンの使い方が要領を得ないので他のページを探す。
ESP32-WROOM-32
コチラのページがやけに詳しいぞ。
ボタンの押し方もこれまでのやり方だけではだめっぽい。
BOOTをおしたままENを押して離す。BOOTはおしたままARDUINO-IDEの書き込みをクリック。コンパイルが完了して転送が始まるタイミングでBOOTを離す。書き込みが終わったらENをワンプッシュ。
らしい。
でもー、やっぱりー、書き込めませんー
できることはやってみようと、TX,RXを入れ替えてみた。すると、なんと書き込みが始まったよ。ちゃんと書き込みができたし、その後もちゃんとプログラムが走るし、シリアル通信もできる。
ということでポイントを整理すると
AE-UM232Rのピンヘッダはブレッドボード、もしくは丸ピン用ソケットでないと接触が悪い。
秋月のESP32-WROOM-32EのTX、RXはAE-UM232RのRX、TXと繋がなければならない。
ボタンの押し、離しのタイミングはなかなか複雑。
という感じだわ。