TL;DR
- ESP32-WROOM-32EのTXDピンは駆動能力に劣る
- UART使うなら別のピンを指定するとトラブルを避けられる
GPIO1として
SSD1306なOLEDディスプレイの電源を物理的な位置の関係からTX==GPIO1から取った
まともな動作が困難な程度には電流不足
別のピンを使うことで解決した
UARTのTXとして
Ender3にESP3Dを導入した時の話
ESP3DはESP32/8266のファームウェア
これを導入するとほぼ全ての3DプリンタをWiFiから制御できるようになる
プリンタ本体のファームウェアの書き換えは必要ない
cpuに繋がるUARTを引き出してESPに繋げて半ば乗っ取るような形で通信させる
(USB OTG付きのESP32ならUSBにさすだけで済むので引き出す必要ない?)
マザーボードv4.2.2のcpu(gd32f303)とUSBシリアル(ch340g)の間からUARTの線を引き出してESP32に繋げた
ESP32は正常に動いているがプリンタは完全にESP32を無視
コマンドを送っても反応がない
- 引き出した線がダメなのでは
→手持ちのシリアル変換と引き出した線で操作できる事を確認
- ESP32のピンが死んでいるのでは
→別の板に変えても動かなかった
→pcでコンソールを見るとちゃんとコマンド吐いてる
→書き込みができるのでそんなはずがない
ESP32とPCが繋がっている状態に引き出した線を繋ぐとPCからもESP32の吐くコマンドが見えなくなった
電流不足を疑ってお城を繋げた
TXはプルアップされているもの
他の機器の通信に割り込んで乗っ取るには、乗っ取られる側のTXのプルアップをも処理できる駆動能力が必要
別のピン(0)を使うことで解決した
どうして
データシートの最後の方に表IO_MUXがある
esp32にはpower domainという概念がある
power domainは3つあり
全てのピンはいずれか1つのpower domainに繋がれていて
同じpower domainに繋がれているピンは電流を共有している模様
問題のTXピンはVDD_3P3_CPUに繋がっていて
これが原因なのかそうでないのかは確かめていないので分からない
HIGHが40mAに対してLOWは28mAと書いてあるが絶対うそ
何か分かったら追記します