【M5】M5Stick2個間でSerial1-Serial2通信実験<全シリアル網羅>

M5StackBasicは、シリアルはSerial2しか自由に使えないのですが、M5StickCからはSerial1,2とも自由に使えるようになってました。
=>後日M5Atomもやってみます。多分同じだと思います。
今までM5シリーズは全部同じかと思っていたけどどんどん改善されているようで良かったです。

12月再開した、RTK-MovingBaseシステム開発でM5Atomを5個使って無線と有線通信する構成になりました。無線はESP-NOWで実績があるのですが、有線でM5同士で通信し合うの初めてなので基礎実験しました。
=>Serial(USBType-C)+Serail1(EXTピン)+Serial2(Groveコネクタ)と全部使って実験しましたので、将来にわたって、保存版となります。

■学習の師匠は、おなじみLANGSHIP様の解説です。いつも感謝してます。
https://lang-ship.com/blog/work/m5stickc-uartserial/
初めての方はこちらのページが丁寧に解説されてますので、こちらで学習されてください。

■M5StickC2個間でSeria1-Serial2を使った実験1~4の条件
①結線
EXTピン同士はクロス結線になってます。Groveはストレートです。
これによってプログラム内のシリアル定義が違ってきます。

②実験条件表

③実験に使ったプログラム
簡単なシリアルですが、ピン定義とSerial番号を混同してしまいそうです。
条件表を見ながらプログラムを組むと間違いにくいです。
GISTに置いてあります。

母艦用 子機用
実験1 M5StickC_Serial1-2_JIkken1-EXT_-Seria1_COM5 M5StickC_Serial1-2_JIkken1-EXT_Seial2_COM4
実験2 M5StickC_Serial1-2_JIkken2_COM5 M5StickC_Serial1-2_JIkken2_COM4
実験3  M5StickC_Serial1-2_JIkken1-EXT_-Seria1_COM5 M5StickC_Serial1-2_JIkken2_COM4
実験4 M5StickC_Serial1-2_JIkken4-Grove-EXT_-Seria1-2_COM5 M5StickC_Serial1-2_JIkken4-EXT-Grove_Seial1-2_COM4

例:実験4の母艦用
Serialの宣言文が注意です。Serial(USB)です。Serial1とSerial2は任意のGPIOピンに割り付けできます。
ここでは、BYTE通信なのでSerial.write,Serial.readを使ってますが、SerialのAPI仕様にはいろいろな受信命令があります。Arduinoが基本ですので
Arduinoの命令をやってみて、動作しなかったら、ググって探す以外にないです。Arduinoの正式なシリアル解説ページは下記です。
https://www.arduino.cc/reference/en/language/functions/communication/serial/

 

//M5StickC_Serial1-2_JIkken4-EXT-Grove_Seial1-2_COM4.ino
#include <M5StickC.h>
int i;
// COM5=>COM4=>COM5 LoopBackvoid setup() {
M5.begin();Serial1.begin(115200, SERIAL_8N1,0,26); // RX06 TX26 EXT_IO
Serial2.begin(115200, SERIAL_8N1, 33, 32);// RX32 TX33 Grove
}

void loop() {//COM5からGrove-Serial2受信する
if (Serial2.available())
{
int inByte = Serial2.read();
Serial.print(“Grove-Serial2_Receive from COM5:”);
Serial.println(inByte);
//EXT-Serial1からCOM5へ返信
Serial1.write(inByte);
}
}

 

■接続実験結果
実験1:


②実験2

③実験3

④実験4

 

●以後
  M5Atomで実験してみた、同じことを確認したらRTK MovingBaseシステムへ組み込みます。
  ソフトバンク系ALESのNTRIP接続サービスを使うためには、VRS接続をしなければならないのですがMovingbaseモードを使っているとF9PからNMEAデータが出力されないので、VRSができなくなりましす。
  そこで、工夫して、MovingBaseの出力データのNAV-PVTのバイナリから緯度経度データを抽出してNTRIPを担当しているM5Atomへシリアル接続して流して、GGAに加工してソフトバンクALESのNTRIPサーバーへ
 流すことで、VRS接続ができるようになると思います。このやり方がよいかどうか、ALES社のご指導もいただきながら確認して2021年1月中には完成させたいと思ってます。本記事は、その一番最初の基礎実験です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です