Arduino RS232 sang WiFi

Trong bài hướng dẫn này, chúng ta sẽ tìm hiểu cách sử dụng Arduino Uno R4 WiFi để tạo một bộ chuyển đổi kết nối các thiết bị RS-232 với WiFi. Với thiết lập này, Arduino sẽ đọc dữ liệu từ giao diện RS-232 và gửi nó đến một máy chủ TCP, có thể ở cùng mạng cục bộ hoặc qua Internet. Nó cũng có thể nhận dữ liệu từ máy chủ TCP và gửi trả lại thông qua giao diện RS-232.

Việc làm theo các bước này sẽ giúp bạn thiết lập các cầu nối giao tiếp linh hoạt giữa các thiết bị RS-232 nối tiếp và các máy chủ TCP/IP bằng Arduino.

bộ chuyển đổi rs232 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 RS232 Module
1×dây jumper
1×(Tùy chọn) USB to RS232 Cable
1×(Tùy chọn) USB to RS232 Converter
1×(Tùy chọn) RS232 Gender Changer
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)

Về RS232 và TCP

Nếu bạn chưa biết cách sử dụng RS232 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 RS232 sang WiFi

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

Sơ đồ đấu dây

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

This image is created using Fritzing. Click to enlarge image

  • Sơ đồ nối dây khi sử dụng Serial mềm
sơ đồ nối dây Arduino rs-232 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-rs232-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 RS232 interface if (TCP_client.available()) { char c = TCP_client.read(); Serial.write(c); } // read data from RS232 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 SoftwareSerial

/* * 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-rs232-to-wifi */ #include <WiFiS3.h> #include <SoftwareSerial.h> SoftwareSerial rs232(7, 6); // RX: 7, TX: 6 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); rs232.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 RS232 interface if (TCP_client.available()) { char c = TCP_client.read(); rs232.write(c); } // read data from RS232 interface and send them to TCP if (rs232.available()) { char c = rs232.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 nối tiếp (trên máy tính của bạn) → RS-232 → Arduino → Wi-Fi → Phần mềm máy chủ TCP (trên máy tính của bạn).
  • Phần mềm máy chủ TCP (trên máy tính của bạn) → Wi-Fi → Arduino → RS-232 → Phần mềm nối tiếp (trên máy tính của bạn).
giao tiếp Arduino rs232 với pc

Để 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-RS232 và cáp RS232-to-USB như sơ đồ đấu nối ở trên.
  • Cài đặt một chương trình 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 Máy chủ TCP, sau đó nhấn nút Lắng nghe.
máy chủ tcp ezterm
  • Mở Command Prompt 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
  • Đầu ra trông 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 TCP Server (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 board Arduino bằng cách nhấn nút Upload trên Arduino IDE
  • Nhập 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 trên phần mềm máy chủ TCP.
  • Nhập một số dữ liệu từ chương trình máy chủ TCP để gửi tới Arduino thông qua TCP.
  • Nếu thành công, bạn sẽ thấy dữ liệu phản hồi trên chương trình Serial.
Arduino serial sang tcp

Nếu bạn muốn sử dụng một bộ chuyển đổi RS232 sang Ethernet thương mại, bạn có thể mua CSE-H53N 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.