M5Stackとmicro:bitを合体させてみる – その2 (M5Stack側で動かしているプログラム)

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とかの別の名前に書き換える必要がある。




コメントを残す

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

Time limit is exhausted. Please reload CAPTCHA.

× 9 = 27