Chào các bạn, bài viết này mình xin giới thiệu về Truyền thông nối tiếp không đồng bộ UART trên module wifi ESP32 và hướng dẫn cách sử dụng để giao tiếp với máy tính.
UART là một kiểu truyền thông không đồng bộ phổ biến được dùng trong vi điều khiển, có thể dùng để giao tiếp giữa hai vi điều khiển, giữa vi điều khiển với các module như module bluetooth, module Sim, module wifi, … hoặc giữa vi điều khiển với máy tính.
Do các máy tính hiện đại không có cổng COM, nên để vi điều khiển giao tiếp được với máy tình thì cần thông qua một module chuyển đổi giữa cổng USB của máy tính và cổng COM. Một số chip thường được sử dụng là: CH340, FT232, CP2102,…
Về phía máy tính thì cần phải có driver phù hợp cho module chuyển đổi USB to COM và một phần mềm để hiển thị và gửi dữ liệu thông qua cổng COM, một số phần mềm dễ dùng và phổ biến là: Hercules, Serial Monitor,…
Hôm nay mình sẽ hướng dẫn các bạn lập trình cho ESP32 sử dụng UART để giao tiếp giữa ESP32 với máy tính.
Module USB to COM mình sử dụng là PL2303. Gửi dữ liệu và hiển thị dữ liệu bằng Serial Monitor của Arduino IDE.
*Chuẩn bị:
– Module Esp32
– Module PL2303
– Led báo, trở 220, dây nối.
Những bạn nào chưa biết cách cài driver hoặc Arduino thì đọc các bài viết này nữa nhé:
+ Cài driver PL2303 cho máy tính:
+ Cài đặt Arduino IDE lập trình cho ESP 32:
+ Cách upload code cho ESP32.
*Nối dây:
Các bạn nối dây như hình vẽ:
- Chân 3v3 và chân EN của module esp nối với chân 3v3 của PL2303
- Chân GND nối với GND
- Chân TX của esp nối với chân RX của PL2303
- Chân RX của esp nối với chân TX của PL2303
- Chân IO13 nối qua trở 330 rồi qua LED xuống GND
*Viết code:
Mình sẽ hướng dẫn viết code chương trình với chức năng như sau:
Tín hiệu gửi xuống là ký tự nhập từ bàn phím, nếu kí tự là ‘b’ sẽ bật led ở chân 13 và thông báo ngược lại cho máy tính là đã bật led, nếu là ‘t’ thì sẽ tắt led.
Ở đây mình sử dụng thư viện Serial có sẵn của Arduino IDE.
Đầu tiên các bạn phải khai báo lệnh Serial.begin(115200) tức là mở UART0 trên module với baudrate 115200.
Để giao tiếp với máy tính, mình dùng hàm Serial.read() để đọc dữ liệu gửi xuống từ máy tính từng byte một và hàm Serial.println() để truyền dữ liệu lại máy tính và dữ liệu đó được in ra màn hình.
Các bạn tham khảo code sau:
*Lưu ý: khi upload code các bạn nên nhớ các chú ý về các chế độ hoạt động của Module esp32 mà mình đã viết ở bài viết Hướng dẫn nạp code để tránh bị lỗi nhé.
Các bạn upload code, sau đó mở Serial Monitor của Arduino IDE lên, chọn baudrate là 115200, nhập một kí tự và nhấn enter để gửi đi.
Chúc các bạn thành công.