前提
ESP32同士でデータのやり取りをSerialで行いたいが正常に動かない
実現したいこと
"ESP32同士でシリアル複数接続をして不定期なデータを渡したい"
・ESP32[A]はデータなどを1秒ごとにSerialで機器へ送信している
・ESP32[B]は不定期にデータを[A]にシリアル送信する(Aからは受信はしない)
・ESP32[A]は[B]からのデータをserial2で受け取りserialから機器にデータを流す
・送られるデータは改行コードなど余計な部分を切り捨てる為に文字列で受け取り.substringで切り出してる
※尚、ESP32[B]は別の機器とBluetooth接続で接続されています(今回の通信のやり取りには直接関与しません)
またESP32[A]はWiFi接続でデータをやり取りしている為ESP-NOWなどが使用できないので物理接続で通信させてる
・各シリアルは115200で接続
発生している問題・エラーメッセージ
正常にESP32[A]で[B]からのデータは受信は出来ているが[A]で正常にコードが走らない
コンパイルや動作中のエラーは出ていないがserial2側にデータが出てこない
String A; void setup() { Serial.begin(115200); while(!Serial); Serial2.begin(115200); while(!Serial2); } void loop() { if(Serial2.available()>0) { String rx = Serial2.readStringUntil('¥n'); A = rx.substring(0, 8); } ~~省略~~ delay(100); Serial2.print(A); }
試したこと
時計関係(NTPサーバー接続や現在時刻取得)などを一切合切コメントアウトさせ、
単純にserial2からの受信データをSerial2.printでコールバックさせたが不定期かつ大量に送信されてくる状態
お聞きしたいこと
ESP32に於いて複数のシリアルポートを使用しての処理は果たして可能なのでしょうか?
GPIOに余裕があるのでパラレルで送った方が良いのか悩んでおります…。
回答2件
あなたの回答
tips
プレビュー