結論
M5Stack Core2でRS232C通信を行う際は、「M5Stack RS232Fモジュール」を使用すると簡単にできます。
本記事では「M5Stack RS232Fモジュール」の使い方を記載します。
はじめに
この記事では、「M5Stack RS232Fモジュール」の使用方法をまとめます。
商品ページにはサンプルプログラムがあるのですが、M5Stack Core用のものです。
記事を書いている現在はM5Stack Core2が一般的かと思いますので、こちらで動作させる方法を記載します。
また、開発環境はArduino IDEです。
コード
と言っても、特に難しいことはありません。
M5Stack Core2からモジュールへシリアル通信でデータを送信しており、データを受け取ったモジュールはRS232Cプロトコルで出力しています。
(RS232C通信の受信時は上記と逆の経路でM5Stack Core2へデータを取り込んでいます。)
M5Stack CoreとCore2の違いは色々ありますが、今回関係する差異はシリアル通信用のピンアサインが変更されている点です。
ということで、ピンアサインの変更をコードに反映させるのみで問題ありません。
以下に変更をまとめます。
M5Stack Core
RX: GPIO 16
TX: GPIO 17
M5Stack Core2
RX: GPIO 13
TX: GPIO 14
上記の変更を反映したサンプルコードです。
※元のサンプルコードはMITライセンスです。変更点は以下です。
- ハードウェアの変更に伴い、RXピンとTXピンの定義を変更
- インクルードするライブラリをM5StackからM5Core2に変更
- M5.Power.begin()の行をコメントアウト(Core2では不要)
/*
* SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
*
* SPDX-License-Identifier: MIT
*/
/*
* @Hardwares: M5Core2 + Module13.2 RS232F/M
* @Platform Version: Arduino M5Stack Board Manager v2.1.4
* @Dependent Library:
* M5Core2@^0.2.0: https://github.com/m5stack/M5Core2
*/
#include <M5Core2.h>
/* Define your pin here */
/* And should be the same as you module setup */
#define RX_PIN 13 // M5Stack Core2のRXピン
#define TX_PIN 14 // M5Stack Core2のTXピン
void setup()
{
M5.begin();
// M5.Power.begin();
M5.Lcd.setTextSize(1);
M5.Lcd.drawString("Module RS232 test", 75, 3, 4);
Serial2.begin(115200, SERIAL_8N1, RX_PIN, TX_PIN); // シリアルポート2のボーレートを115200、データビットを8、パリティビットなし、ストップビットを1に設定し、RXを13、TXを14に設定します。
}
void loop()
{
Serial2.write("Hello\n");
if (Serial2.available()) {
M5.Lcd.print(char(Serial2.read()));
}
delay(100);
}
DIPスイッチの設定
RXD、TXDともに2番のみONにしてください。
どの端子で通信を行うかの設定となります。
モジュールは刺さるようにしか刺さらないので、そのまま接続してください。
(ここに画像を挿入する)
動作確認
動作確認用のPCにRS232Cポートが無いため、USB-RS232C変換ケーブルを使って確認しています。
つまり、
M5Stack Core2 --[シリアル通信]--> モジュール --[RS232C]--> 変換ケーブル --[シリアル通信]--> PC
となります。(何故こんな遠回りな確認をしなくてはならないのか意味が分からない...)
TeraTermなどでシリアルポートに接続し、連続で「Hello」と表示されれば上手くいっています。
注意点
少しだけ注意点です。RS232CはRxとTxで分かれているため、例えばメス同士を繋げる場合はクロスケーブルを用いる必要があります。
私はストレートケーブルで繋いでしまい、少し詰まりました...。
まとめ
そもそも、デバイスがRS232Cにしか対応していないのが間違いです。
早急にUSB対応してください。