pdf-icon

Arduino入門

2. デバイス&サンプル

6. アプリケーション

Tough RS485 通信

Tough RS485 通信のサンプルプログラム。

サンプルプログラム

コンパイル要件

  • M5Stack ボードマネージャーバージョン >= 2.1.4
  • 開発ボードオプション = M5Tough
  • M5Unified ライブラリバージョン >= 0.2.5
  • M5GFX ライブラリバージョン >= 0.2.7
cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
#include <M5Unified.h>
#include <M5GFX.h>

static int cnt = 0;          // Counter for RS485 sent messages (increments per transmission)
String recvBuffer;           // Buffer to store received RS485 data

void setup() {
    M5.begin();           
    M5.Display.clear();  
    M5.Display.setFont(&fonts::FreeMonoBold9pt7b); 
    M5.Display.drawString("Send :", 5, 5);     
    M5.Display.drawString("Receive :", 5, 125);  
    
    Serial.begin(115200);   
    
    // Parameters: baud rate=115200, config=8N1 (8 data bits, 1 stop bit, no parity), RX pin=27, TX pin=19
    Serial2.begin(115200, SERIAL_8N1, 27, 19);
}

void loop() {
    M5.update();         

    // --- Send Data ---
    String msg = "RS485 #" + String(++cnt); 
    Serial2.println(msg);          
    Serial.printf("Send: %s\n", msg.c_str());

    // Display sent message on screen
    M5.Display.fillRect(0, 25, 320, 30, TFT_BLACK); 
    M5.Display.setTextColor(GREEN);   
    M5.Display.setCursor(20, 25);             
    M5.Display.printf("%s\n", msg.c_str());       

    // --- Receive Data ---
    recvBuffer = "";                  
    while (Serial2.available()) {         
        char ch = Serial2.read();            
        recvBuffer += ch;                       
    }

    // If valid data is received
    if (recvBuffer.length() > 0) {
        Serial.print("Recv: ");                  
        Serial.print(recvBuffer);
        
        // Display received message on screen
        M5.Display.setTextColor(YELLOW);       
        M5.Display.fillRect(0, 145, 320, 30, TFT_BLACK); 
        M5.Display.setCursor(20, 145);            
        M5.Display.printf("%s", recvBuffer.c_str()); 
    }

    delay(2000); 
}

该プログラムの主な機能は、RS485 インターフェースを通じて 2 秒ごとにデータパケットを送信し、同時に RS485 インターフェース経由で送信されるデータを監視・受信することです。ユーザーはシリアルモニターおよびメインコントローラの画面で送受信したデータ内容を確認できます。プログラムでは Serial2 オブジェクトを使用して RS485 インターフェースの設定と操作を行い、ボーレートを 115200、データビットを 8、ストップビットを 1、パリティなしに設定しています。ユーザーは必要に応じて送信データの内容や送信周期を変更できます。

Tough の RS485 インターフェースは Tough Ext Board 上にあり、ポートの色は緑です。具体的位置は下図の通りです:

サンプル実行結果は次の通りです:

On This Page