ESP8266 RS-485

Trong bài hướng dẫn này, chúng ta sẽ khám phá cách triển khai giao tiếp RS485 với ESP8266. Cụ thể, chúng ta sẽ đề cập chi tiết các khía cạnh sau:

Hướng dẫn cũng cung cấp các chỉ dẫn cho cả phần cứng SerialSoftwareSerial.

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

1×ESP8266 NodeMCU ESP-12E
1×Recommended: ESP8266 NodeMCU ESP-12E (Uno-form)
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 RS485 Module
1×dây jumper
1×(Tùy chọn) USB to RS485 Converter
1×(Tùy chọn) USB to RS485 Cable
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP8266
1×(Khuyến nghị) Power Splitter for ESP8266 Type-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về mô-đun TTL sang RS-485

Khi sử dụng giao tiếp nối tiếp trên ESP8266 thông qua các hàm như Serial.print(), Serial.read(), và Serial.write(), ESP8266 sẽ 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 đó, đối với giao tiếp nối tiếp ở khoảng cách xa hơn, cần chuyển đổi tín hiệu TTL sang các chuẩn tín hiệu RS232, RS485 hoặc RS422.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách sử dụng RS-485 với ESP8266 bằng một module TTL sang RS-485. Module này hỗ trợ chuyển đổi tín hiệu TTL sang tín hiệu RS-485 và ngược lại.

Bố trí chân

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

  • Giao diện TTL (kết nối với ESP8266) bao 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 một chân TX của ESP8266
    • Chân TXD: chân dữ liệu, cần được kết nối với một chân RX của ESP8266
  • Giao diện RS485 gồm các chân sau:
    • Chân D+ (A hoặc TR+): Chân này hỗ trợ truyền nhận dữ liệu.
    • Chân D- (B hoặc TR-): Chân này dùng cho truyền dữ liệu.
    • Chân GND: Mặc dù tùy chọn, nhưng nên bổ sung chân này để giảm nhiễu, đảm bảo hiệu suất tối ưu.
    bố trí chân của mô-đun rs-485
    image source: diyables.io

Sơ đồ đấu dây

  • Sơ đồ nối dây nếu sử dụng serial phần cứng
sơ đồ đấu nối ESP8266 NodeMCU ttl sang rs-485

This image is created using Fritzing. Click to enlarge image

Xem thêm Sơ đồ chân ESP8266Cách cấp nguồn cho ESP8266.

  • Sơ đồ nối dây nếu sử dụng giao tiếp nối tiếp bằng phần mềm
sơ đồ nối dây ESP8266 NodeMCU rs-485 sang ttl

This image is created using Fritzing. Click to enlarge image

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

Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:

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 RX_PIN D6 #define TX_PIN D7 // Define the SoftwareSerial objects and their pins SoftwareSerial rs485(RX_PIN, TX_PIN);

ESP8266 Mã cho Serial phần cứng

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU 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/esp8266/esp8266-rs485 */ 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ã ESP8266 cho Serial phần mềm

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU 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/esp8266/esp8266-rs485 */ #include <SoftwareSerial.h> #define RX_PIN D6 #define TX_PIN D7 // define the SoftwareSerial object and their pins SoftwareSerial rs422(RX_PIN, TX_PIN); void setup() { // start communication with baud rate 9600 rs485.begin(9600); // wait a moment to allow serial ports to initialize delay(100); } void loop() { // Check if there's data available on rs485 if (rs485.available()) { char data = rs485.read(); // read the received character rs485.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 ESP8266 qua RS-485 và ngược lại. Để thực hiện, hãy làm theo các bước dưới đây:

  • Kết nối ESP8266 với PC của bạn qua cáp RS485-to-USB như dưới đây:
giao tiếp rs485 từ ESP8266 NodeMCU đế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...)
  • Nhập dữ liệu vào Terminal nối tiếp để gửi tới ESP8266.
  • Nếu thành công, bạn sẽ thấy dữ liệu echo 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.

Bài hướng dẫn liên quan