M5Stackとmicro:bitを合体させてみるという話の続き。
M5Stack側に入れるプログラムを書く方法としては主なものは3つある。
(1) Arduino開発環境で、ESP32ライブラリ+M5Stack用ライブラリを使う方法で、言語はほぼC++。
(2) Espressifの開発環境ESP-IDFとSDKを使う方法で、言語は原則C言語。
(3) microPython
micro:bit側はmicroPythonを使っているので、M5Stack側もmicroPythonを使ってみたいのだが、自分はまだPythonを使うのが得意でないので出来ていない。
結局、一番簡単なArduinoで開発している。
とりあえずSerial2というM5Stack用のexampleをちょっとだけ改変して、画面に受信した文字列を表示するプログラムを作った。
インターフェース誌2018年9月号などを参考にしている。
Interface(インターフェース) 2018年 09 月号(Amazon)
#include <M5Stack.h> HardwareSerial Serial2(2); void setup() { M5.begin(); // LCD display M5.Lcd.print("serial test\r\n"); Serial.begin(9600); // Serial2.begin(unsigned long baud, uint32_t config, int8_t rxPin, int8_t txPin, bool invert) Serial2.begin(9600, SERIAL_8N1, 16, 17); } void loop() { if(Serial.available()) { int ch = Serial.read(); Serial2.write(ch); M5.Lcd.setTextColor(GREEN); } if(Serial2.available()) { int ch = Serial2.read(); Serial.write(ch); M5.Lcd.setTextColor(WHITE); M5.Lcd.printf("%c",ch); } }USB-UARTのシリアルポートと、ハードウェアのUARTピンTX2/RX2のシリアルポートとの2つのポートを開いて、それぞれで受信した内容をもう一方へと送信し、その通信内容を液晶画面に書き出している。
簡単なシリアル通信のモニター表示ソフトのようなものだ。micro:bitが無線で受信した内容は、シリアルポートでM5Stackに送られて、M5StackではUSB-UART側に送信され、同時に画面にもその内容が表示される。
逆方向は、micro:bitにUSB-UART側からのデータを送信しているのだが、micro:bitの受信側の処理を書いていないので無視される。と、このようになっている。
USB-UARTでPCと繋いで、無線側で計測して送信されてきたデータのログを取ったりできる。
次は、この部分を有線ではなくWiFiでPCとかクラウドにデータを記録するようにしてみたいと考えている。—
追記上記のコードはM5Stack用のライブラリの新しいバージョンではビルドが通らなくなってしまっている。
Serial2というのがM5Stackのライブラリ内で使われるようになり、衝突してしまった。
対策としては、先頭のほうでHardwareSerialと定義しているのを削除すればよい。
あるいは、Serial2と書いてあるのを、mySerial2とかの別の名前に書き換える必要がある。