Arduino RS422 sang WiFi

Trong hướng dẫn này, chúng ta sẽ khám phá cách sử dụng Arduino Uno R4 WiFi để xây dựng một bộ chuyển đổi Serial RS422 sang WiFi. Với thiết lập này, Arduino sẽ đọc dữ liệu từ một giao diện RS422 nối tiếp và truyền nó tới một máy chủ TCP, có thể trong cùng một mạng LAN hoặc từ xa qua Internet. Nó cũng có thể nhận dữ liệu từ máy chủ TCP và gửi lại qua giao diện RS422 nối tiếp.

Những bước này sẽ cho phép bạn thiết lập các cầu nối giao tiếp đa năng giữa các thiết bị RS-422 nối tiếp và máy chủ TCP/IP bằng Arduino.

bộ chuyển đổi rs422 sang WiFi cho Arduino

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

1×Arduino UNO R4 WiFi
1×Alternatively, DIYables STEM V4 IoT
1×(Tùy chọn) DIYables STEM V4 IoT
1×USB Cable Type-A to Type-C (for USB-A PC)
1×USB Cable Type-C to Type-C (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 R4
1×(Khuyến nghị) Breadboard Shield for Arduino UNO R4
1×(Khuyến nghị) Enclosure for Arduino UNO R4
1×(Khuyến nghị) Power Splitter for Arduino UNO R4
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

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

Giới thiệu về RS422 và TCP

Nếu bạn chưa biết cách sử dụng RS422 và giao tiếp TCP với Arduino, hãy tìm hiểu chúng trong các bài hướng dẫn sau:

Cách hoạt động của bộ chuyển đổi RS-422 sang WiFi

  • Arduino kết nối với một thiết bị nối tiếp thông qua giao diện RS-422
  • Arduino đóng vai trò là một khách hàng TCP kết nối tới một máy chủ TCP (có thể là một máy chủ TCP chạy dưới dạng phần mềm trên PC của bạn hoặc một Arduino khác được lập trình làm máy chủ TCP)
  • Arduino đọc dữ liệu từ giao diện RS-422 và gửi nó đến máy chủ TCP
  • Arduino đọc dữ liệu từ kết nối TCP và gửi nó về giao diện RS-422

Sơ đồ đấu dây

  • Sơ đồ đấu dây nếu sử dụng giao tiếp nối tiếp phần cứng
sơ đồ nối dây Arduino ttl với rs-422

This image is created using Fritzing. Click to enlarge image

  • Sơ đồ nối dây nếu sử dụng SoftwareSerial
sơ đồ nối dây Arduino từ rs-422 sang ttl

This image is created using Fritzing. Click to enlarge image

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-to-wifi */ #include <WiFiS3.h> const char* WIFI_SSID = "YOUR_WIFI_SSID"; // CHANGE TO YOUR WIFI SSID const char* WIFI_PASSWORD = "YOUR_WIFI_PASSWORD"; // CHANGE TO YOUR WIFI PASSWORD const char* TCP_SERVER_ADDR = "192.168.0.26"; // CHANGE TO TCP SERVER'S IP ADDRESS const int TCP_SERVER_PORT = 1470; WiFiClient TCP_client; void setup() { Serial.begin(9600); Serial.println("Arduino: TCP CLIENT"); // check for the WiFi module: if (WiFi.status() == WL_NO_MODULE) { Serial.println("Communication with WiFi module failed!"); // don't continue while (true) ; } String fv = WiFi.firmwareVersion(); if (fv < WIFI_FIRMWARE_LATEST_VERSION) { Serial.println("Please upgrade the firmware"); } Serial.print("Attempting to connect to SSID: "); Serial.println(WIFI_SSID); // attempt to connect to WiFi network: while (WiFi.begin(WIFI_SSID, WIFI_PASSWORD) != WL_CONNECTED) { delay(10000); // wait 10 seconds for connection: } Serial.print("Connected to WiFi "); Serial.println(WIFI_SSID); // connect to TCP server if (TCP_client.connect(TCP_SERVER_ADDR, TCP_SERVER_PORT)) Serial.println("Connected to TCP server"); else Serial.println("Failed to connect to TCP server"); } void loop() { if (TCP_client.connected()) { // read data from TCP and send them to RS422 interface if (TCP_client.available()) { char c = TCP_client.read(); Serial.write(c); } // read data from RS422 interface and send them to TCP if (Serial.available()) { char c = Serial.read(); TCP_client.write(c); } } else { Serial.println("Connection is disconnected"); TCP_client.stop(); // reconnect to TCP server if (TCP_client.connect(TCP_SERVER_ADDR, TCP_SERVER_PORT)) { Serial.println("Reconnected to TCP server"); } else { Serial.println("Failed to reconnect to TCP server"); delay(1000); } } }

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-to-wifi */ #include <WiFiS3.h> #include <SoftwareSerial.h> // define the SoftwareSerial object and their pins SoftwareSerial rs422(6, 7); // RX: 6, TX: 7 const char* WIFI_SSID = "YOUR_WIFI_SSID"; // CHANGE TO YOUR WIFI SSID const char* WIFI_PASSWORD = "YOUR_WIFI_PASSWORD"; // CHANGE TO YOUR WIFI PASSWORD const char* TCP_SERVER_ADDR = "192.168.0.26"; // CHANGE TO TCP SERVER'S IP ADDRESS const int TCP_SERVER_PORT = 1470; WiFiClient TCP_client; void setup() { Serial.begin(9600); rs422.begin(9600); Serial.println("Arduino: TCP CLIENT"); // check for the WiFi module: if (WiFi.status() == WL_NO_MODULE) { Serial.println("Communication with WiFi module failed!"); // don't continue while (true) ; } String fv = WiFi.firmwareVersion(); if (fv < WIFI_FIRMWARE_LATEST_VERSION) { Serial.println("Please upgrade the firmware"); } Serial.print("Attempting to connect to SSID: "); Serial.println(WIFI_SSID); // attempt to connect to WiFi network: while (WiFi.begin(WIFI_SSID, WIFI_PASSWORD) != WL_CONNECTED) { delay(10000); // wait 10 seconds for connection: } Serial.print("Connected to WiFi "); Serial.println(WIFI_SSID); // connect to TCP server if (TCP_client.connect(TCP_SERVER_ADDR, TCP_SERVER_PORT)) Serial.println("Connected to TCP server"); else Serial.println("Failed to connect to TCP server"); } void loop() { if (TCP_client.connected()) { // read data from TCP and send them to RS422 interface if (TCP_client.available()) { char c = TCP_client.read(); rs422.write(c); } // read data from RS422 interface and send them to TCP if (rs422.available()) { char c = rs422.read(); TCP_client.write(c); } } else { Serial.println("Connection is disconnected"); TCP_client.stop(); // reconnect to TCP server if (TCP_client.connect(TCP_SERVER_ADDR, TCP_SERVER_PORT)) { Serial.println("Reconnected to TCP server"); } else { Serial.println("Failed to reconnect to TCP server"); delay(1000); } } }

Kiểm thử

Bạn có thể thử nghiệm bằng cách gửi dữ liệu qua các luồng sau:

  • Phần mềm Serial (trên PC của bạn) → RS-422 → Arduino → WiFi → Phần mềm máy chủ TCP (trên PC của bạn).
  • Phần mềm máy chủ TCP (trên PC của bạn) → WiFi → Arduino → RS-422 → Phần mềm Serial (trên PC của bạn).
giao tiếp Arduino rs-422 với máy tính

Để làm điều đó, hãy làm theo các bước dưới đây:

  • Nếu đây là lần đầu tiên bạn sử dụng Arduino Uno R4, hãy xem Cách bắt đầu với Arduino UNO R4.
  • Kết nối Arduino Uno R4 WiFi với máy tính của bạn bằng cách sử dụng mô-đun TTL-to-RS422 và cáp RS422-to-USB như sơ đồ kết nối ở trên.
  • Cài đặt một phần mềm Terminal Serial như Tera Term hoặc PuTTY
  • Cài đặt một phần mềm máy chủ TCP như ezTerm
  • Mở chương trình Serial và cấu hình các tham số Serial (cổng COM, tốc độ baud...)
  • Mở chương trình máy chủ TCP và cấu hình nó thành TCP Server, sau đó nhấn nút Listen.
máy chủ tcp ezterm
  • Mở Dấu nhắc lệnh trên máy tính của bạn.
  • Tìm địa chỉ IP của máy tính của bạn bằng cách chạy lệnh dưới đây:
ipconfig
  • Kết quả đầu ra như dưới đây:
Command Prompt
C:\WINDOWS\system32>ipconfig Windows IP Configuration Ethernet adapter: Subnet Mask . . . . . . . . . . . : 255.0.0.0 IPv4 Address. . . . . . . . . . . : 192.168.0.26 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . :
  • Cập nhật địa chỉ IP của máy chủ TCP (máy tính của bạn) trong mã Arduino. Trong ví dụ ở trên: 192.168.0.26
  • Biên dịch và tải mã lên bo mạch Arduino bằng cách nhấp nút Upload trên IDE Arduino
  • Gõ một số dữ liệu từ chương trình Serial để gửi tới Arduino thông qua Serial.
  • Nếu thành công, bạn sẽ thấy dữ liệu phản hồi hiển thị trên phần mềm máy chủ TCP.
  • Gõ một số dữ liệu từ chương trình máy chủ TCP để gửi tới Arduino qua TCP.
  • Nếu thành công, bạn sẽ thấy dữ liệu phản hồi hiển thị trên chương trình Serial.
serial của Arduino sang tcp

Nếu bạn muốn sử dụng một bộ chuyển đổi RS422 sang Ethernet thương mại, bạn có thể mua CSE-H55N2 Serial To Ethernet Converter.

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.