M5ATOMIC TFでログすることに決めてあるのですが、1BASE2ROVERシステム用では
1BOXに全基板納めるので、マイコンも1個で全データ引き受けないとBOXサイズに収まりません。M5AtomicTF1個で2ROVER分のデータをシリアル受信してSDログしないといけません。
今までの倍の処理をM5Atomliteにさせないといけないので、基礎実験から始めました。
※2021/7/21 ESP32DevKitCでSerial1使えるピン探し、拡張性は元祖が一番です。
ESP32DevkitCのシリアル1,2で使えるGPIO_PIN表作った<12ピン使える>
●M5 ATOMIC TFは、SDカード用でGPIO 19,23,33を使ってしまっている。
https://docs.m5stack.com/en/atom/atomictf
1BASE2ROVERから受け取るデータは、MovingBaseの172バイト 2Rover分の受信
BASEのNORTK信号をAD変換する信号線1本です。つまり最低限RX2本とADC1本のピン空いて
ないと成り立たないシステムとなってます。
●M5シリーズのUART
M5Atom、M5StickCは、ESP32 PicoD4を使ってますが、出ているピンが違うので、同じようには使えません。ただし、シリアルは3個使えるのはM5StickC,M5Atomとも共通です。
0:Serial はUSBシリアル用
1:Serial1としてピンに定義して使えます。
2:Serial2としてピンに定義して使えます。
●M5ATOM liteのUARTが使えるピン
ESP32は、全部自由に使えるとうたっているが、仕様書を見ても
何がなんだかわかりにくくて、実験したほうが早いです。
■やり方:
M5Atom 2個母艦、子機間でLOOP BACKして、能率的にピンのテストを行います。幸い、RXとTXは独立しているので、RX-TXの組み合わせを試さなくいいので、5-6回BACK実験すれば全ピンの結果がます。
■材料
ブレッドボード2枚横づけ、Groveコネクタ線2本加工
M5Atom基板(なくてもできる)
■結線ルール
①母艦でデータを作って送信して、子機が受信して、子機が返信して母艦が受信
する LOOP BACK動作
②結線は、母艦、子機間で同じピン番号を結線する。
③ 母艦がSerial1.begin(115200, SERIAL_8N1, 33, 32);ならRX=33,TX32
子機は、Serial1.begin(115200, SERIAL_8N1, 32, 33);RX=32,TX=33
■プログラム
母艦用https://gist.github.com/dj1711572002/efb4a649689ded10d55478acea58e75c
子機用
https://gist.github.com/dj1711572002/2055ecfb90618a692a133c2ece1cb799
●実験結果
同じピン番号で同時にTXRXするのをLOOPBACKで2ピンずつ片付けていくので、5回の測定でできました。何とUARTに使えないGPIOが21,25でした。
そんなことどこにも書いてないのがESP32の怖いところです。
MATRIX指定でピンを自由に設定できるらしいので、指定のやり方がわかれば、使えるかもしれませんが、私のような素人がデフォルト設定以外に設定する手間とリスクを考えるとこのような実験をして、使えるピンだけで何とかするほうが効率的です。
●以後
1BASE2ROVERシステムで実際に使えるか実装とプログラムを
作ってみます。