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拡張ボード接続
tip

このプロジェクトでは、XIAO ESP32C3はD4(GPIO6)とD5(GPIO7)を使用して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をLOWに設定し、RS485モジュールを受信モードに設定します。
  • loop():

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

RS485伝送結果

リソース

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

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

Loading Comments...