ติดตั้ง WebREPL
การทำให้สามารถดีบั๊กและอัพโหลดสคริปต์ได้จากระยะไกล
Last updated
การทำให้สามารถดีบั๊กและอัพโหลดสคริปต์ได้จากระยะไกล
Last updated
การสอนที่ผ่านมาช่วยให้หุ่นยนต์สามารถดำเนินการแบบเป็นลำดับได้โดยการแก้ไขโค้ด Python แบบออฟไลน์ แต่วิธีนี้ไม่สะดวกเพราะเมื่อต้องการแก้ไขโค้ด เราจะต้องถอด WiFi module ออกและแก้ไขในโหมดออฟไลน์ และเราไม่สามารถหยุดโปรแกรมและแก้ไขพารามิเตอร์ได้โดยยืดหยุ่น สาเหตุเพราะ ESP8266 มีพอร์ตซีเรียลเพียงตัวเดียว และเราต้องใช้มันในการสื่อสารกับ NyBoard โดยดีอีกฝั่ง MicroPython ใช้ฟังก์ชั่น WiFi ที่ ESP มีให้เพื่อให้สามารถทำการดีบั๊กโค้ด Python แบบไร้สายได้ผ่าน WebREPL
ด้วยเอกลักษณ์ของ ESP8266 และเอกสารอย่างเป็นทางการ ทางเราได้เขียนคู่มือต่อไปนี้:
หลังจากเชื่อมต่ออุปกรณ์แล้ว ให้เข้าสู่อินเตอร์เฟสของ MicroPython แล้วพิมพ์คำสั่งimport webrepl_setup
webrepl_setup และทำตามขั้นตอนตามคำแนะนำ:
การเปิดใช้งาน WebREPL เมื่อเปิดเครื่อง: E
ตั้งค่ารหัสผ่านสำหรับ WebREPL โดยใช้คำสั่ง "Set password for it" และกรอกรหัสผ่านที่ต้องการ (เช่น 1234)
การตั้งค่าเรียบร้อยแล้ว ให้ปิด shell โดยการพิมพ์ exit() แล้วกด Enter เพื่อออกจากโหมด shell และกลับไปยังหน้าจอคำสั่ง Thonny
รีบูทโดยการพิมพ์y reboot the ESP8266: y
2. The script to setup webREPL
เราใช้สคริปต์ตัวอย่างด้านล่างนี้ เพื่อแทนที่ SSID และรหัสผ่านด้วยข้อมูลเครือข่ายของคุณในบริเวณใกล้เคียง:
หลังจากเรียกใช้งานสคริปต์ มันจะพยายามเชื่อมต่อกับเครือข่าย WiFi อยู่เสมอ และเมื่อเชื่อมต่อสำเร็จแล้ว มันจะเริ่มต้น WebREPL service ของอุปกรณ์โดยอัตโนมัติ
IP address นี้จะถูกกำหนดโดย DHCP ของเร้าเตอร์ ดังนั้นอาจจะเปลี่ยนไปตามเครือข่ายและการกำหนดค่าของเร้าเตอร์ กรุณาจำ IP address นี้เพื่อนำไปใช้ในการตั้งค่า WebREPL ต่อไป
ขณะนี้เรากำลังดีบักสคริปต์ Python ผ่าน WebREPL และพอร์ตซีเรียลก่อนหน้านั้นถูกใช้สื่อสารกับ NyBoard ดังนั้นในตัวเลือก ให้เปลี่ยนพอร์ต USB-COMx ก่อนหน้านี้เป็น WebREPL
จากนั้นให้กรอกที่อยู่ IP, พอร์ต และรหัสผ่านของ WebREPL แล้วคลิก OK.
When WebREPL Connected
is displayed, the connection is successful.
คุณสามารถทดสอบตัวอย่างอย่างง่ายได้ที่ blink.py
.
WebREPL เป็นการบันทึกพอร์ตซีเรียลและรองรับการ Debug ไร้สาย ข้อเสียคือความเร็วช้า (เนื่องจากการล่าช้าของเครือข่าย) และเวลารอการรีเซ็ตซอฟต์แวร์ยาว ๆ
ตอนนี้เราสามารถใช้ webREPL ในการดีบั๊กสคริปต์ได้แล้ว แต่เมื่อเราเปิดโปรแกรมตรวจสอบพอร์ตซีเรียล เราจะพบว่าเมื่อเรารันสคริปต์ พอร์ตซีเรียลจะส่งเนื้อหาในการดีบั๊กออกมาเป็นจำนวนมาก จำนวนนี้จะทำให้ NyBoard ตอบสนองช้าลงและล่มเหลว ดังรูปด้านล่าง:
เราหวังว่าเมื่อดีบั๊กโปรแกรม ซีเรียลพอร์ตจะแสดงเฉพาะคำสั่งที่เราต้องการ ไม่ใช่ข้อมูล Debug ที่ไม่จำเป็น เปิดไฟล์ boot.py
บนอุปกรณ์ แก้ไขหมายเลขบรรทัด uos.dupterm(None, 1)
และบันทึก ให้ยกเลิกการผูกพอร์ตซีเรียลและ REPL debug รีสตาร์ทโมดูล และจะไม่มีข้อมูลดีบั๊กถูกแสดงบนซีเรียลพอร์ต ดังตัวอย่าง:
เพื่อเพิ่มความสมบูรณ์ เราสามารถแสดงข้อมูล debug ผ่าน print() statement ซึ่งจะถูกแสดงใน Shell ผ่าน WiFi
ด้วยการใช้ ESP8266 และ webREPL คุณสามารถแก้ไขลำดับการทำงานของหุ่นยนต์ด้วย MicroPython ได้อย่างสะดวกด้วยครับ