Skip to content

Hard UART với NodeMcu  

  RSS

(@lehoanglong)
Trusted Member Admin
Joined:3 years  ago
Posts: 59
18/01/2017 3:42 am  

 

  • NodeMcu có 2 cổng UART (hard UART - cổng UART tích hợp sẵn trong phần cứng) là 0; 1 như hình trên (mặc dù có chân TXD2 và RXD2 nhưng NodeMcu không có UART2).
  • UART1 chỉ có thể gửi dữ liệu đi thông qua chân TXD1, không có chân nhận dữ liệu "RXD1".
  • Các chân RXD và TXD của các cổng UART có thể hoán đổi cho nhau (chi tiết sẽ nói sau). Các chân TXD0-1-2 có thể hoán đổi cho nhau. Tương tự như vậy các chân RXD0-2 có thể hoán đổi cho nhau.
  • UART0 (mặc định gán với RXD0 và TXD0) được nối sẵn với IC giao tiếp CP2102 (tạo COM ảo trên máy tính) và giao tiếp ngay với máy tính mà không cần thêm thiết bị gì cả (tất nhiên là phải có cái cáp USB) 
  • Muốn kết nối UART1 với máy tính (để debug chẳng hạn) thì cần sử dụng một cáp/mạch tạo COM ảo như PL2303; FT232... và nối vào TXD1.

Truyền dữ liệu từ NodeMcu qua UART:
void setup() {
Serial.begin(115200); //Kích hoạt giao tiếp UART0 ở tốc độ (BaudRate) 115200
Serial1.begin(115200); //Kích hoạt giao tiếp UART1 ở tốc độ (BaudRate) 115200
}
void loop() {
Serial.println("Day la UART0 =)"); //Gửi chuỗi ký tự qua UART0
delay(200); 
Serial1.println("Day la UART1 =)"); //Gửi chuỗi ký tự qua UART1
delay(200);
}

Chương trình trên sẽ truyền dữ liệu qua cả UART0 và UART1.
Vì UART0 được nối sẵn với COM ảo của NodeMcu nên dùng Terminal trên máy tính (đại tiện nhất là CTRL+SHIFT+M trên Arduino IDE) sẽ nhận được các chuỗi "Day la UART0 =)" liên tiếp.
Với UART1 thì phải dùng thêm cáp chuyển đổi UART <-> COM. 
Truyền/nhận dữ liệu từ NodeMcu qua UART:
char data;
void setup() {
Serial.begin(115200); //Kích hoạt giao tiếp UART0 ở tốc độ (BaudRate) 115200
}
void loop() {
if (Serial.available() > 0) //Kiểm tra nếu có ký tự vừa nhận được
{
data = Serial.read(); //Đọc ký tự vừa nhận được
Serial.println(data); //Gửi ký tự vừa nhận được trở về máy tính qua UART0
}
}

Chương trình trên sẽ kiểm tra và đọc 1 ký tự được gửi từ máy tính tới NodeMcu (hoặc từ một thiết bị có thể giao tiếp qua chuẩn UART nào đó khác). Sau khi đọc xong sẽ gửi ngược ký tự vừa đọc được về máy tính thông qua UART0.


ReplyQuote
  
Working

Please Login or Register