Bộ chuyển đổi Arduino từ Serial sang WiFi

Trong hướng dẫn này, chúng ta sẽ học cách sử dụng Arduino Uno R4 WiFi để tạo bộ chuyển đổi từ Serial sang WiFi. Arduino đọc dữ liệu từ cổng Serial và gửi nó đến một máy chủ TCP nằm cùng mạng LAN hoặc từ xa trên Internet, và ngược lại. Ngoài ra, bằng cách kết nối các mô-đun RS232, RS485 hoặc RS422 với Arduino, chúng ta có thể tạo các bộ chuyển đổi RS232 sang WiFi, RS485 sang WiFi và RS422 sang WiFi.

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

Trong bài hướng dẫn này, chúng ta sẽ tìm hiểu cách tạo bộ chuyển đổi từ Serial sang WiFi nói chung. Đối với các loại giao diện Serial cụ thể, chúng ta sẽ học trong các bài hướng dẫn khác ở dưới đây:

Những 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ị nối tiếp và mạng WiFi bằng 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×(Tùy chọn) Jumper Wires
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)

Cách hoạt động

  • Arduino kết nối với một thiết bị serial thông qua giao diện serial (TTL, RS232, RS485, hoặc RS422)
  • Arduino hoạt động như một khách hàng TCP kết nối tới một máy chủ TCP (có thể là phần mềm máy chủ TCP trên PC của bạn hoặc một máy chủ TCP trên Arduino khác)
  • Arduino đọc dữ liệu từ giao diện serial và gửi nó tới máy chủ TCP
  • Arduino đọc dữ liệu từ kết nối TCP và gửi nó tới giao diện serial

Mã Arduino

/* * 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-serial-to-wifi-converter */ #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 Serial interface if (TCP_client.available()) { char c = TCP_client.read(); Serial.write(c); } // read data from Serial 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); } } }

Kiểm tra

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

  • Serial Monitor (trên máy tính của bạn) → Serial → Arduino → WiFi → 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) → WiFi → Arduino → Serial → Serial Monitor (trên máy tính của bạn).
giao tiếp nối tiếp giữa Arduino và pc

Để thực hiện điều đó, 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 USB Type-C
  • Cài đặt một phần mềm máy chủ TCP như ezTerm
  • Mở Serial Monitor
  • 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ở 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
  • Kết quả đầ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 . . . . . . . . . :
  • Thay đổi đị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, nó được hiển thị là 192.168.0.26.
  • Biên dịch và tải lên mã vào bảng Arduino bằng cách nhấp vào nút Tải lên trong Arduino IDE.
  • Nhập một số dữ liệu vào Trình theo dõi Serial để gửi nó đến Arduino thông qua Serial.
  • Nếu mọi thứ hoạt động đúng, bạn sẽ thấy dữ liệu trên phần mềm máy chủ TCP.
  • Nhập một số dữ liệu vào chương trình máy chủ TCP để gửi nó tới Arduino thông qua TCP.
  • Nếu thành công, bạn sẽ thấy dữ liệu trong Trình theo dõi Serial.
Arduino giao tiếp nối tiếp sang tcp

Nếu bạn muốn sử dụng một bộ chuyển đổi Serial sang Ethernet thương mại, bạn có thể mua các sản phẩm thương mại sau: