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