MicroLearner | ESP32-C3 Super Mini รองรับการสื่อสารแบบ UART (Universal Asynchronous Receiver/Transmitter) ซึ่งสามารถใช้สำหรับการดีบักและเชื่อมต่อกับอุปกรณ์ภายนอกได้ โดยมีการกำหนดขา UART ดังนี้
1. UART Debug (pin 20, 21)
UART Debug ใช้สำหรับตรวจสอบและดีบักระบบ ซึ่งสามารถเชื่อมต่อกับคอมพิวเตอร์ผ่าน USB-to-Serial Adapter ได้
- TX (Transmit): Pin 20
- RX (Receive): Pin 21
2. UART Remap (pin 4, 5)
UART Remap สามารถใช้สำหรับเชื่อมต่อกับอุปกรณ์ภายนอก เช่น โมดูล GPS, เซ็นเซอร์ หรืออุปกรณ์ที่รองรับ UART โดยสามารถกำหนดขาใหม่แทนขาดีบักหลักได้
- TX: Pin 4
- RX: Pin 5
ทำไมต้องทำความเข้าใจกับ UART Debug และ UART Remap?
การเชื่อมต่อเซ็นเซอร์เข้ากับ UART Debug (pin 20, 21) ทำให้ข้อมูลที่เซ็นเซอร์ส่งมาปรากฏบน Serial Monitor เสมือนเป็นการดีบักข้อมูลจากเซ็นเซอร์โดยตรง
อย่างไรก็ตาม มีข้อควรระวังที่ต้องคำนึงถึง:
- หากเซ็นเซอร์ส่งข้อมูลตลอดเวลา อาจทำให้ข้อความ debug อื่นๆ อ่านยาก
- หากต้องอัปโหลดโค้ดผ่าน USB-to-Serial อาจเกิดการชนกันระหว่างเซ็นเซอร์กับการสื่อสารของบอร์ด
ดังนั้น หากต้องการใช้ UART Debug กับเซ็นเซอร์ อาจจำเป็นต้องถอดเซ็นเซอร์ออกก่อนอัปโหลดโค้ด หรือเลือกใช้ UART Remap (pin 4, 5) แทน เพื่อให้การทำงานเป็นอิสระและไม่มีปัญหาทับซ้อน
ด้วยเหตุนี้ การทำความเข้าใจกับการใช้งานทั้ง UART Debug และ UART Remap จึงเป็นสิ่งสำคัญ เพื่อให้สามารถเลือกใช้งานได้อย่างเหมาะสมตามความต้องการ
Remap UART
การกำหนดหรือปรับเปลี่ยนขาอินพุตและเอาต์พุตของ UART (Universal Asynchronous Receiver/Transmitter) บนไมโครคอนโทรลเลอร์ไปยังขาอื่นที่ไม่ได้ถูกตั้งค่าเริ่มต้นเพื่อใช้งาน UART เดิม ซึ่งไมโครคอนโทรลเลอร์บางรุ่น เช่น ESP32 มีความสามารถในการรีแมป (remap) ขา UART เพื่อให้ผู้ใช้สามารถเลือกขา GPIO (General Purpose Input/Output) ที่ต้องการใช้งานได้หลากหลายมากขึ้น
การ Remap UART จะเป็นประโยชน์ในสถานการณ์ที่ขา UART เริ่มต้นถูกใช้งานไปกับอุปกรณ์อื่นหรือไม่สะดวกในการเชื่อมต่อ โดยการรีแมปช่วยให้คุณสามารถกำหนดขา GPIO อื่นให้ทำหน้าที่แทนขา TX (Transmit) และ RX (Receive) ของ UART ได้ตามความต้องการ
void setup() {
// เปิดใช้งาน Serial Monitor ที่ 9600 baud
Serial.begin(9600);
while (!Serial) {
// รอให้ Serial Monitor เปิด
}
// กํ หนด UART1 ให้ใช้ TX = GPIO5, RX = GPIO4 ที่ 9600 baud
Serial1.begin(9600, SERIAL_8N1, 4, 5);
Serial.println("UART Test Start");
}
void loop() {
// ส่งข้อมูล "Hello UART" ไปที่ Serial1 (TX)
Serial1.println("Hello UART");
// ตรวจสอบว่ามีข้อมูลเข้ามาที่ RX ของ Serial1 หรือไม่
if (Serial1.available()) {
String data = Serial1.readString();
// แสดงข้อมูลที่รับมาใน Serial Monitor
Serial.print("Received: ");
Serial.println(data);
}
delay(1000); // หน่วงเวลา 1 วินาที
}
ในการทดสอบ UART บน ESP32-C3 โดยใช้ GPIO4 (RX) และ GPIO5 (TX) การต่อสายจะต้องทำตามขั้นตอนดังนี้:
การเชื่อมต่อสาย
- GPIO5 (TX) เชื่อมต่อกับ GPIO4 (RX):
- สายจากขา TX (GPIO5) ของ ESP32-C3 ต่อเข้ากับขา RX (GPIO4) ของ ESP32-C3
- ในกรณีที่คุณต้องการทดสอบการส่งข้อมูลและรับข้อมูล (loopback) ให้ใช้สายจัมเปอร์เชื่อมต่อจาก TX ไปยัง RX
- ต่อพอร์ต USB ของ ESP32-C3:
- เชื่อมต่อ ESP32-C3 กับคอมพิวเตอร์ผ่านสาย USB เพื่อเปิด Serial Monitor และดูข้อมูล
- การทดสอบ Loopback: หากคุณเชื่อมต่อ TX ไปยัง RX ของบอร์ดเดียวกัน (loopback) คุณจะสามารถส่งข้อมูลจาก TX ไปยัง RX โดยตรงและอ่านค่าที่ส่งผ่าน Serial Monitor
- การทดสอบกับอุปกรณ์อื่น: หากคุณต้องการเชื่อมต่อ ESP32-C3 กับอุปกรณ์อื่น เช่น โมดูล UART หรือเซนเซอร์ ให้เชื่อมต่อ TX ของ ESP32 ไปยัง RX ของอุปกรณ์นั้น และ RX ของ ESP32 ไปยัง TX ของอุปกรณ์
สรุป
- ต่อสายจาก GPIO5 (TX) ไปยัง GPIO4 (RX) เพื่อทำการ loopback
- เชื่อมต่อกับ USB เพื่อให้สามารถดูข้อมูลใน Serial Monitor ได้
เมื่อคุณต่อสายเรียบร้อยแล้ว คุณสามารถอัปโหลดโค้ดที่เราได้พูดถึงไปที่ ESP32-C3 แล้วเปิด Serial Monitor เพื่อดูผลลัพธ์ได้เลย!