
Arduino入門
PowerHub の RS485 通信に関連する API とサンプルプログラムです。
#include <Arduino.h>
HardwareSerial& RS485 = Serial2;
const int MCU_485_DIR = 18;
const int MCU_485_TXD = 8;
const int MCU_485_RXD = 17;
void setup() {
Serial.begin(115200);
pinMode(MCU_485_DIR, OUTPUT);
digitalWrite(MCU_485_DIR, LOW);
RS485.begin(115200, SERIAL_8N1, MCU_485_RXD, MCU_485_TXD);
Serial.println("\nRS485 ready. ");
}
void loop() {
// transmit
const char* tx_msg = "Hello RS485\r\n"; // change it on another device
digitalWrite(MCU_485_DIR, HIGH);
delay(10);
RS485.print(tx_msg);
RS485.flush();
Serial.println("TX OK");
digitalWrite(MCU_485_DIR, LOW);
// receive (non-blocking)
while (RS485.available()) {
int rx = RS485.read();
Serial.write(rx);
}
delay(2000);
}2 台の PowerHub を用意し、上記のコードを書き込みます(メッセージ内容を変更して区別しても構いません)。両方のデバイスで 120 Ω の終端抵抗スイッチを ON にし、VH3.96-4P コネクタケーブル(例:Shielded Twisted Pair Cable)を使用して 2 台の RS485 インターフェースを接続します:
接続後、2 台の PowerHub は RS485 通信を通じて互いにメッセージを送信します。そのうち 1 台をパソコンに接続し、シリアルモニター(Serial Monitor)の出力を確認します:
PowerHub の RS485 通信ドライバ部分は、Arduino 標準の HardwareSerial を使用したハードウェアシリアル通信によって実装されています。関連する API の詳細については、以下のドキュメントを参照してください: