M5StackでWIFI接続で取得したCQ出版のNTRIPサーバーからのRTCMデータをF9Pに送信するプログラム作りました。
単純な話しなので、慣れているmbedだったら10分以内に完了するのですがM5Stackでは半日かかってしまいました。
●M5Stack複数シリアルを使う場合の注意
Arduinoだとハードシリアルは1個しかないので悩まずのソフトシリアルになるのですが、ESP32ベースのM5Stackは、3個シリアルがついています。
しかし、自由に使えるのは、1個しかありませんでした。これを知るのに
2時間くらい浪費しました。ドキュメンテーションがきちんと整備されてないM5Stackの悪さがもろでてきました。これでは、メジャーにはなれません。知らないで終われば、M5Stackは使えないと捨ててしまうところでした。
参考にさせていただいた記事は複数あります。
QIITAの記事:https://qiita.com/zasshyu6/items/ce6afd3efe71a60ac15c
M5Stackのシリアル1はない:https://boiledorange73.hatenablog.com/entry/2018/11/08/181752
上記記事を理解して備忘録残しておきます。
①M5STACKのシリアル接続の備忘録
CPU 名称 |
Pgm 名称 |
GPIO名称 | コメント | ArduinoIDEでの定義 |
UART0 | Serial0 | RX:GPIO01 TX:GPIO03 |
USBシリアルで使われているので、 USBシリアルを使わない場合は使える |
Serial.begin(baurate) |
UART1 | Serial1 | ー | 内部SDフラッシュに接続されていて使えないので指定しないこと | ー |
UART2 | Serial2 | RX:GPIO16 TX:GPIO17 |
唯一自由に使えるシリアルポート | Serial2.begin(baurate,SERIAL_8N1,16,17) config条件とGPIO番号を付け加える |
これで結線します。
※Xbeeコネクタの場合は、XbeeのTXはF9PのRXとなります。XbeeのRXがF9PのTXとなるので注意です。
体に装着するには、未だいろいろ工夫しないとダメなので12月いっぱいかかりそうです
➁シリアル2の動作確認プログラム
シリアル2動作確認のみのプログラムです。USBに接続したTeratermでキーボードから入力した文字をM5.stackとSerial2用のTeratermに表示します。
#include <M5Stack.h>
#define BUFFER_SIZE 256 #define LCDHIGH 240 void setup() { // initialize the M5Stack object //serial Setup //serial default setting,8 data bit,No parity,1 stop bit. // Lcd display setup M5.Lcd.setTextSize(3); void errorEnd(){ void loop() { } |
●移動局 NTRIPサーバー受信用プログラムにSERIAL2を追加して動作させました。
左がUSBから出力されているNMEA GPGGAとGPRMCの2個のセンテンスを出力します。
右がSerial2へは、M5StackからのRTCM3受信データが入てきます。
●以後
これで移動機がcm精度で動作するかFIELDで確認しないとわかりませんのでやってみます。
●M5シリーズ(M5Stack,M5StickC,M5ATOM,SPISFFS,ESP-NOW)の記事全部はここにあります
●2020年お盆休み
M5シリーズでSPIFFSの使い方を学習しました。
すでにご存知かもしれませんが、Serial1も、Serial1.begin( 0, SERIAL_8N1, 26, 13);の形式でピンを設定すれば、自由に使えます。
小林様コメントありがとうございます。USBを使わない場合は使えますが、多くの使い方がUSBシリアルでモニターデバッグなどしながらなので、1個しか使えないという表現をしてます。ご指導宜しくお願いいたします。