ปัญหาหนึ่งในการใช้ Serial port ของ Node MCU ESP8266 นั่นก็คือเมื่อเราต้องการใช้ Hardware serial port (UART0) ในการเชื่อมต่อกับอุปกรณ์เพื่อสื่อสาร(Communication) หรือส่งคำสั่งควบคุม(Control) ตัวอย่างเช่นอุปกรณ์ GPS, GPRS Module หรือ ใช้แปลงเป็น Port RS-485 เพื่อใช้ควบคุมอุปกรณ์ต่างเป็นต้น เราก็จะใช้ Serial port ในการพิมพ์ข้อความ Debug เหมือนปกติไม่ได้ เพราะเมื่อเราส่งข้อความ Debug ไปยัง Serial port ถึงแม้ข้อความเหล่านี้จะสามารถแสดงออกทาง Serial Monitor ได้ แต่ขณะเดียวกันข้อความเหล่านี้ก็ถูกส่งไปให้กับอุปกรณ์ที่เราเชื่อมต่ออยู่ทาง Serial Port ด้วย ซึ่งมีโอกาสที่อุปกรณ์จะทำงานผิดพลาดได้
รูปการทำงานของ Serial Port ของ ESP8266 (Node MCU) ในสภาวะปกติ
ดังนั้นจึงต้องทำการ Redirect Serial port ให้ไปใช้ขาอื่น โดยการใช้คำสั่ง Serial.swap() หลังคำสั่ง Serial.begin ซึ่งจะทำให้ขา Tx ของ Serial port ซึ่งเดิมจะเป็นขา GPIO1(D10) ไปใช้งานขา GPIO15(D8) แทน และขา Rx เดิมเป็นขาGPIO3(D9) ไปใช้งานที่ขา GPIO13(D7)
และเมื่อต้องการที่จะส่งข้อความ Debug ออกไปทาง Serial Monitor เราก็ต้องมาใช้ Serial1 แทน โดยปกติแล้ว Serial1 เราจะสามารถใช้งานสำหรับส่งข้อมูลออกได้อย่างเดียวไม่สามารถใช้รับข้อมูลได้ ซึงจะมีขา Tx อยู่ที่ GPIO2 (D4) ให้เราทำการต่อ(Hardwire) ขา GPIO2 (D4) เข้ากับขา GPIO1(D10) เพื่อให้ Serial monitor (USB Serial Chip) ซึ่งต่ออยู่กับขานี้สามารถนำข้อมูลแสดงบนจอได้
รูปตัวอย่าง Code ที่ใช้งาน Swap และ Serial1 ในการ Monitor
รูปการ Redirect ของ Serial Port ESP8266 (Node MCU) หลังจากใช้คำสั่ง Serial.swap()
ข้อดีของการใช้ Hardware Serial port ในการรับส่งข้อมูลก็คือจะไม่ไปรบกวนการทำงานของ ฟังก์ชั่น WiFi ซึงเป็นข้อเสียของการใช้ Software Serial นั้นเองครับ ...



ไม่มีความคิดเห็น:
แสดงความคิดเห็น