M5StackでWIFI接続で取得したCQ出版のNTRIPサーバーからのRTCMデータをF9Pに送信するプログラム作りました。慣れているmbedだったら10分以内に完了するのですがM5Stackでは半日かかってしまいました。
要するに、M5Stackは、Serial2しか使えないということです。
=>M5StickCやM5Atomなら、Serial1,Serial2使えます
=>不便を覚悟なら、USBシリアルをやめてSerial1として使う手段もありますが、非常に面倒な作業になります。
●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となるので注意です。
2021年1月25日追記
しばらくぶりでM5StackのSDカード使っていたら、WEBサーバーへデータをアップロードしてファイル保存する方法のプログラム見つけたので試してみたら結構速くて使えました。M5系からデータをPCへ渡すのにWEBサーバー保管はPCからでもスマホからでもアクセスの汎用性があるので将来性があると思います。まずは、M5StackでWEBサーバーのアップロードする基礎実験して速度を測定してみました。
※2020年12月追記
M5StickCでは、Serial1とSrial2も自由に使える仕様になっていることを確認いたしました。M5Stackの出番が減ってきてます。今一番使っているのはM5Atom liteでESP-NOWとシリアル接続です。参考記事保存版作りました。
カテゴリーはM5_ESP32です。
※2020年12月19日追記 この1年半で、M5シリーズStack1個+StickC5個+Atomlite5個で合計11個所有となりました。
シリアル接続とESP-NOWを組み合わる使い方です。最新の接続例をRTK2021カテゴリーに掲載しました。図が判り易いと思います。
F9P RTK始めて1年経過して2シーズン目となりました。SimpleRTK2B heading Kitをもう1セット購入して、F9P4個
体制となりました。スキーの両足でheading測定をするためです。アンテナ2個をスキーの前後のとりつけて、BOXを体にとりつけて、合計アンテナ4個、BOX2個のシステムとなるのでコンパクト化が大きな課題となります。1月からスキー場でフィールドテストを繰り返して両足MovingBase測定でよいデータと動画がとれるかトライしていく予定です。新システムにマイコンは、M5Atomを4個M5Stack1個を使いたいと構想してます。NTRIP接続Wifi用に1個、MovingBase無線出力用に1個で1BOXに2個、合計4個に2BOXから発信されるMovingBaseデータをまとめて受信ログするためのM5Stack1個でマイクロSDにログします。
無線規格はESP-NOWを使いますが、BlueTooth、Xbeeよりエラー率が一桁少なく安定した無線規格です。今回、フィールドで使うのは初めてですが、短距離なので、大丈夫だと思います。接続作業の備忘録です。
体に装着するには、未だいろいろ工夫しないとダメなので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個しか使えないという表現をしてます。ご指導宜しくお願いいたします。