RS485 and SoftwareSerial

Vichagorn Lupponglung
2 min readDec 26, 2019

--

สวัสดีครับในหัวข้อนี้เป็นการใช้งาน arduino สื่อสาร ละหว่าง 2 protocol คือ UART และ RS485 โดยข้อมูลเริ่มแรกจะส่งแบบ UART แปลงเป็น RS485 แล้วแปลงกลับมาเป็น UART อีกทีครับ ซึ่งตัว Arduino Uno R3 มี Harware Serial มาให้แค่ชุดเดียว (RX0,TX0) เนื่องจากต้องใช้ 2 Serial port จากการแปลง UART 2 รอบ ดังนั้นอีก Serial port นึงจึงต้องใช้เป็น Software Serial แทนครับ

อุปกรณ์ที่ใช้

1.Arduino Uno R3

2.TTL to RS485 Level Serial UART Module

3.USB to RS485 Converter Module

ลักษณะวงจร

Code

#include <SoftwareSerial.h>SoftwareSerial mySerial(8,9);   // (RX,TX)void setup() {
Serial.begin(9600);
mySerial.begin(9600);
Serial.setTimeout(50);
mySerial.setTimeout(50);
}
void loop() {
if(Serial.available()){
String str = Serial.readString();
mySerial.println(str);
}
if(mySerial.available()){
String str = mySerial.readString();
Serial.println(str);
}
}

ทดสอบ

ในการทดสอบการรับส่งข้อมูลนั้นเราจะใช้ Software ที่ชื่อว่า Hercules มาใช้ open serial port ซึ้งจะทำให้เราสามารถพิมพ์ส่งผ่าน UART >> RS485 >> UART ค่าระหว่างกันได้ง่ายขึ้นครับ เนื่องจากเราต่อ 2 Serial port ไปที่ computer เราจะเห็น COM port 2 port ครับโดยจะมีอันนึงเป็นของ arduino uno และอีกอันเป็นของ USB to RS485 Converter Module จากรูปด้านบน arduino uno เป็น COM8 และ USB to RS485 Converter Module เป็น COM12 ครับ

UART >> RS485 >> UART

เท่านี้เราก็สามารถส่งข้อผ่าน Serial port โดยไม่ต้องใช้ Hardware Serial แล้วครับซึ้งมันช่วยแก้ปัญหาในกรณีที่เราต้องใช้ protocol Modbus RTU ที่ตัว libraly บังคับให้ใช้ Hardware Serial เราก็สามารถใช้ Arduino Uno ได้ โดยยังสามารถ รับส่งข้อมูลกับ arduino ได้อยู่ผ่าน Software Serial ครับ

--

--