Skip to main content

TEST RS485

#include <HardwareSerial.h>

#define MAX485_CTRL  39  
#define RS485_RX     38    
#define RS485_TX     40   

HardwareSerial Serial_RS485(1);  

unsigned long lastSendTime = 0;
const unsigned long sendInterval = 1000; 

void setup() {
  pinMode(MAX485_CTRL, OUTPUT);
  setReceiveMode();  // Alway in sending mode

  Serial_RS485.begin(115200, SERIAL_8N1, RS485_RX, RS485_TX);  
  Serial.begin(115200);  
  Serial.println("RS485 node started. Sending TDLOGY every 1s...");
}

void loop() {
  
  if (Serial_RS485.available()) {
    String incoming = Serial_RS485.readStringUntil('\n');
    incoming.trim();
    if (incoming.length() > 0) {
      Serial.print("[RECEIVED]: ");
      Serial.println(incoming);
    }
  }

  // Send "TDLOGY" every 1 second
  if (millis() - lastSendTime >= sendInterval) {
    sendMessage("TDLOGY");
    lastSendTime = millis();
  }
}

void sendMessage(const String& message) {
  setTransmitMode();
  Serial_RS485.println(message);
  delay(2);  
  setReceiveMode();
  Serial.print("[SENT]: ");
  Serial.println(message);
}

void setTransmitMode() {
  digitalWrite(MAX485_CTRL, HIGH);  
}

void setReceiveMode() {
  digitalWrite(MAX485_CTRL, LOW); 
}

 

Màn hình sau khi nạp code. Mở hai trang Arduino một page chọn port của bo một page chọn port của uart-rs485 để test truyền nhận data. Như test COM22 là port của board COM10 là port của USB RS485.

image.png