Skip to main content

Seeed Studio XIAO-RS485-拡張ボード入門

ハードウェア概要

準備材料

Seeed Studio XIAO RS485-拡張ボードSeeed Studio XIAO ESP32-C3

ピン配置図

XIAO RS485 拡張ボード表示図
  • 5V OUT/IN SWITCH : 5Vポートの入力と出力の切り替えです。スレーブ側ではINファイルに設定して入力として使用し、ホスト側ではOUTファイルに設定してこのポートを外部に放電し、センサーに接続してセンサーの電源供給に使用できます。

  • 120R SWITCH : 120Rスイッチは120オーム抵抗器がアクセス可能かどうかを決定するために使用されます。485は長い配線環境の始端と終端に120オーム抵抗器を追加してマッチングを行い、通信を確保する必要があります。

  • INT : 予約済み割り込みポート。

tip

入力モードとして使用する場合は、スイッチをINに切り替える必要があり、出力モードとして使用する場合は、焼損を防ぐためにスイッチをOUTに切り替える必要があります。

接続回路図

2つのRS485拡張ボードの接続

ソフトウェア概要

送信側コード

#include <HardwareSerial.h>

HardwareSerial mySerial(1);


#define enable_pin D2 // Define the enable pin as D2

void setup() {
Serial.begin(115200); // Initialize the hardware serial with a baud rate of 115200
mySerial.begin(115200, SERIAL_8N1, 7, 6); // RX=D4(GPIO6), TX=D5(GPIO7)


// Wait for the hardware serial to be ready
while(!mySerial);
// Wait for the hardware serial to be ready
while(!Serial);

pinMode(enable_pin, OUTPUT); // Set the enable pin as an output
digitalWrite(enable_pin, HIGH); // Set the enable pin to high
}

void loop() {
if (Serial.available()) {
String receivedData = Serial.readStringUntil('\n'); // Read the data from the hardware serial until a newline character

// If the received data is not empty
if (receivedData.length() > 0) {
Serial.println("Send successfully"); // Print a success message
mySerial.print("Master send information is: "); // Send a prompt message to the hardware serial
mySerial.println(receivedData); // Send the received data to the hardware serial
}
}
}

  • HardwareSerial ライブラリ: ESP32上で追加のシリアルポートの作成を可能にし、通常はデバイス(センサーやモジュールなど)との通信に使用されます。

  • HardwareSerial mySerial(1);: mySerialという名前のHardwareSerialオブジェクトを定義し、D5とD4を受信および送信ピンとして使用します。

  • #define enable_pin D2: RS485モジュールの送受信状態を制御するために使用されるイネーブルピンを定義します。

  • setup():

    • Serial.begin(115200: ハードウェアシリアルポートをボーレート115200で初期化します。
    • mySerial.begin(115200, SERIAL_8N1, 7, 6);: RX=D4(GPIO4), TX=D5(GPIO5)。
    • while(!mySerial): ハードウェアシリアルが通信準備完了まで待機します。
    • while(!Serial): ハードウェアシリアルが通信準備完了まで待機します。
    • pinMode(enable_pin, OUTPUT): enable_pinを出力ピンとして設定し、RS485モジュールを制御します。
    • digitalWrite(enable_pin, HIGH): enable_pinをHIGHに設定し、RS485モジュールを送信モードに設定します。
  • loop():

    • if (receivedData.length() > 0): ハードウェアシリアルポートから読み取り可能なデータがあるかどうかを確認します。
    • String receivedData = Serial.readStringUntil('\n'); : 改行文字まで、ハードウェアシリアルからデータを読み取ります
    • Serial.println("Send successfully"): 成功メッセージを出力します。
    • mySerial.print("Master send information is: "): ハードウェアシリアルにプロンプトメッセージを送信します。
    • mySerial.println(receivedData) :必要なデータをRS485拡張ボードに送信します。

受信側コード

#include <HardwareSerial.h>

HardwareSerial mySerial(1); // Use UART2
#define enable_pin D2 // Define the enable pin as D2

void setup() {
Serial.begin(115200); // Initialize the hardware serial with a baud rate of 115200
mySerial.begin(115200, SERIAL_8N1, 7, 6); // RX=D4(GPIO4), TX=D5(GPIO5)

// Wait for the hardware serial to be ready
while(!Serial);
// Wait for the hardware serial to be ready
while(!mySerial);

pinMode(enable_pin, OUTPUT); // Set the enable pin as an output
digitalWrite(enable_pin, LOW); // Set the enable pin to low
}

void loop() {
// Check if there is data available from the hardware serial
if (mySerial.available()) {
String receivedData = mySerial.readStringUntil('\n'); // Read strings based on newlines
Serial.print("Received data: ");
Serial.println(receivedData); // Direct printing of received data
}
}

  • HardwareSerial ライブラリ: ESP32上で追加のシリアルポートを作成することができ、通常はデバイス(センサーやモジュールなど)との通信に使用されます。

  • HardwareSerial mySerial(1);: mySerialという名前のHardwareSerialオブジェクトを定義し、D5をRX、D4をTXとして使用します。

  • define enable_pin D2: RS485モジュールの送信と受信状態を制御するために使用されるイネーブルピンを定義します。

  • setup():

    • Serial.begin(115200: ハードウェアシリアルポートをボーレート115200で初期化します。
    • mySerial.begin(115200, SERIAL_8N1, 7, 6);RX=D4(GPIO4), TX=D5(GPIO5)。
    • while(!Serial): ハードウェアシリアルポートが通信の準備ができるまで待機します。
    • while(!mySerial): ハードウェアシリアルポートが通信の準備ができるまで待機します。
    • pinMode(enable_pin, OUTPUT): enable_pinを出力ピンとして設定し、RS485モジュールを制御します。
    • digitalWrite(enable_pin, LOW): enable_pinをローに設定し、RS485モジュールを受信モードに設定します。
  • loop():

    • if (mySerial.available()): ハードウェアシリアルポートから読み取り可能なデータがあるかどうかを確認します。
    • String receivedData = mySerial.readStringUntil('\n');: 改行文字に基づいて文字列を読み取ります
    • Serial.print("Received data: ");: データが受信されたことを示すメッセージをハードウェアシリアルに出力します。
    • Serial.println(receivedData);: 受信側RS485に送信されたデータを出力します。

RS485送信結果

リソース

技術サポート & 製品ディスカッション

私たちの製品をお選びいただき、ありがとうございます!私たちは、お客様の製品体験ができるだけスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、複数のコミュニケーションチャンネルを提供しています。

Loading Comments...