Arduino RS-422

Trong hướng dẫn này, chúng ta sẽ đi sâu vào cách thiết lập giao tiếp RS422 với Arduino. Chúng ta sẽ đi qua các bước sau một cách kỹ lưỡng:

Hướng dẫn cũng cung cấp chỉ dẫn cho cả Serial phần cứng và SoftwareSerial.

Phần cứng cần chuẩn bị

1×Arduino Uno R3
1×USB 2.0 cable type A/B (for USB-A PC)
1×USB 2.0 cable type C/B (for USB-C PC)
1×TTL to RS422 Module
1×dây jumper
1×(Tùy chọn) RS422 to USB Cable
1×(Khuyến nghị) Screw Terminal Block Shield for Arduino Uno
1×(Khuyến nghị) Breadboard Shield for Arduino Uno
1×(Khuyến nghị) Enclosure for Arduino Uno
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về Mô-đun TTL sang RS422

Khi sử dụng giao tiếp nối tiếp trên Arduino thông qua các hàm như Serial.print(), Serial.read(), và Serial.write(), Arduino truyền dữ liệu qua chân TX và nhận dữ liệu qua chân RX. Các chân này hoạt động ở mức TTL, có nghĩa là tín hiệu mà chúng xử lý có phạm vi giới hạn. Do đó, để giao tiếp nối tiếp ở khoảng cách dài hơn, cần chuyển đổi tín hiệu TTL sang các chuẩn tín hiệu RS232, RS422, hoặc RS422.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu việc sử dụng RS422 (còn được gọi là RS-422) với Arduino bằng cách sử dụng một mô-đun TTL sang RS422. Mô-đun này hỗ trợ chuyển đổi tín hiệu TTL sang tín hiệu RS422 và ngược lại.

Bố trí chân

Mô-đun RS422 sang TTL có hai giao diện:

  • Giao diện TTL (kết nối với Arduino) gồm 4 chân
    • Chân VCC: chân nguồn, cần được kết nối với VCC (5V hoặc 3.3V)
    • Chân GND: chân nguồn, cần được kết nối với GND (0V)
    • Chân RXD: chân dữ liệu, cần được kết nối với chân TX của Arduino
    • Chân TXD: chân dữ liệu, cần được kết nối với chân RX của Arduino
  • Giao diện RS422 bao gồm các chân sau:
    • Chân A (R+): chân RX+ của module, kết nối chân này với chân TX+ (T+ hoặc Y) của thiết bị RS422 khác.
    • Chân B (R-): chân RX- của module, kết nối chân này với chân TX- (T- hoặc Z) của thiết bị RS422 khác.
    • Chân Y (T+): chân TX+ của module, kết nối chân này với chân RX+ (R+ hoặc A) của thiết bị RS422 khác.
    • Chân Z (T-): chân TX- của module, kết nối chân này với chân RX- (R- hoặc B) của thiết bị RS422 khác.
    bố trí chân của mô-đun rs-422
    image source: diyables.io

Sơ đồ đấu dây

  • Sơ đồ nối dây nếu sử dụng serial phần cứng
sơ đồ nối dây Arduino ttl sang rs422

This image is created using Fritzing. Click to enlarge image

  • Sơ đồ nối dây nếu sử dụng Serial bằng phần mềm
sơ đồ kết nối Arduino rs-422 sang ttl

This image is created using Fritzing. Click to enlarge image

Cách lập trình Arduino để sử dụng mô-đun RS422

  • Khởi tạo giao diện Serial:
Serial.begin(9600);
  • Nếu bạn sử dụng SoftwareSerial, bạn cần bao gồm thư viện và khai báo một đối tượng SoftwareSerial:
#include <SoftwareSerial.h> // Define the SoftwareSerial objects and their pins SoftwareSerial rs422(6, 7); // RX: 6, TX: 7

Mã Arduino cho Serial phần cứng

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-rs422 */ void setup() { // start communication with baud rate 9600 Serial.begin(9600); // wait a moment to allow serial ports to initialize delay(100); } void loop() { // Check if there's data available on Serial if (Serial.available()) { char data = Serial.read(); // read the received character Serial.print(data); // echo back to data to the sender } }

Mã Arduino cho Software Serial

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-rs422 */ #include <SoftwareSerial.h> // define the SoftwareSerial object and their pins SoftwareSerial rs422(6, 7); // RX: 6, TX: 7 void setup() { // start communication with baud rate 9600 rs422.begin(9600); // wait a moment to allow serial ports to initialize delay(100); } void loop() { // Check if there's data available on rs422 if (rs422.available()) { char data = rs422.read(); // read the received character rs422.print(data); // echo back to data to the sender } }

Kiểm tra

Bạn có thể thử nghiệm bằng cách gửi dữ liệu từ PC của bạn đến Arduino thông qua RS-422 và ngược lại. Để thực hiện điều này, hãy làm theo các bước dưới đây:

  • Kết nối Arduino với máy tính của bạn bằng cáp RS422 sang USB như dưới đây:
giao tiếp rs422 từ Arduino đến pc
  • Cài đặt một chương trình Terminal nối tiếp như Tera Term hoặc PuTTY
  • Mở chương trình Terminal nối tiếp và cấu hình các tham số nối tiếp (cổng COM, tốc độ baud...)
  • Gõ một số dữ liệu từ Terminal nối tiếp để gửi cho Arduino.
  • Nếu thành công, bạn sẽ thấy dữ liệu phản hồi trên Terminal nối tiếp.

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.