WebREPL

แนะนำการใช้งานไมโครไพธอนผ่านทาง WebREPL สำหรับบอร์ดไมโครคอนโทรลเลอร์ ESP8266 / ESP32 ซึ่งมีข้อดีคือ ผู้ใช้สามารถเชื่อมต่อกับอุปกรณ์ไมโครไพธอนในระบบเครือข่าย และอยู่ห่างออกไปได้

การใช้งาน WebREPL สำหรับ ESP8266 / ESP32

ในการเชื่อมต่อกับไมโครไพธอน หรือการทำงานของ MicroPython-REPL (Interactive Prompt) โดยทั่วไป เราก็จะใช้วิธีเชื่อมต่อผ่าน USB-to-Serial ด้วยสาย USB แต่ถ้าเลือกใช้ไมโครคอนโทรลเลอร์ อย่างเช่น ESP8266 หรือ ESP32 ของบริษัท Espressif ยังมีอีกหนึ่งช่องทางคือ WebREPL (Web-based REPL) เนื่องจากชิป SoC ประเภทนี้ มีวงจรสื่อสาร Wi-Fi (2.4GHz) อยู่ในตัวแล้ว

WebREPL ใช้รูปแบบการสื่อสารกับ REPL ของไมโครไพธอน ผ่านระบบเครือข่ายไร้สาย และใช้โพรโตคอล WebSocket ในการรับส่งข้อมูลกันระหว่างเว็บเบราว์เซอร์สำหรับคอมพิวเตอร์ของผู้ใช้งานกับอุปกรณ์ไมโครไพธอน

ขั้นตอนการเปิดใช้งาน WebREPL

การเปิดใช้งาน WebREPL สำหรับ ESP8266 / ESP32 ที่ได้ลงเฟิร์มแวร์ไว้ใช้งานแล้ว ก็ทำได้ไม่ยาก และมีขั้นตอนดังนี้

  1. เชื่อมต่อกับ REPL โดยใช้โปรแกรม เช่น Thonny IDE ผ่าน USB-to-Serial

  2. ทำคำสั่งเพื่อตั้งค่าการใช้งานเพื่อให้อุปกรณ์ทำงานในโหมด Wi-Fi Station (STA) เชื่อมต่อกับ Wi-Fi Access Point / Router และอยู่ในเครือข่ายเดียวกับคอมพิวเตอร์ของผู้ใช้ จากนั้นเมื่อเชื่อมต่อได้แล้ว อุปกรณ์ จะได้รับหมายเลข IP Address (IPv4) จาก DHCP Server

  3. ทำคำสั่งใน REPL Shell เพื่อเปิดใช้งาน WebREPL

  4. ทำคำสั่งเพื่อรีบูทการทำงานของไมโครไพธอนแบบ Soft Reset โดยกดคีย์ Ctrl+D

  5. เปิดเว็บเบราว์เซอร์ ไปยัง http://micropython.org/webrepl/#

  6. เชื่อมต่อโดยใช้ WebSocket (ws://) ระบุหมายเลข IP Address ของบอร์ด และพอร์ต 8266

ถ้าจะใช้งาน WebREPL ต้องทำให้อุปกรณ์เชื่อมต่อผ่าน Wi-Fi ไปยังระบบเครือข่ายและอินเทอร์เน็ตได้ให้ก่อน

โค้ดไมโครไพธอนต่อไปนี้ ใช้เพื่อคำสั่งในการตั้งค่าการใช้งาน Wi-Fi ของ ESP8266 / ESP32 ในโหมด STA สำหรับ ESP8266 / ESP32 และมีการตรวจสอบดูว่า สามารถเชื่อมต่อกับ Wi-Fi ได้สำเร็จหรือไม่ ถ้าได้ ให้แสดงข้อความระบุ หมายเลข IP Address ของอุปกรณ์ เป็นต้น

ให้นำโค้ดส่วนนี้ไปใส่ลงในไฟล์ boot.py ที่มีอยู่ใน Flash File Storage ของอุปกรณ์ไมโครไพธอน

import time
import network

WIFI_SSID   = 'YOUR_WIFI_SSID'
WIFI_PASSWD = 'YOUR_WIFI_PASSWORD'

wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect( WIFI_SSID, WIFI_PASSWD )
retry_count = 0
while retry_count < 20:
    time.sleep_ms(500)
    if wifi.isconnected():
        print( wifi.ifconfig() )
        break
    retry_count += 1

อย่าลืมเปลี่ยนข้อความเพื่อระบุชื่อของ SSID และรหัสผ่านของ Wi-Fi สำหรับการทำคำสั่ง wifi.connect(…) ให้ตรงกับอุปกรณ์ที่จะใช้งานจริง

บันทึกการแก้ไขลงไฟล์ boot.py จากนั้นกดปุ่ม Ctrl+D เพื่อทำขั้นตอน Soft Reset

เมื่อเชื่อมต่อได้แล้ว ถัดไปให้ทำคำสั่งใน REPL Shell เพื่อเปิดใช้งาน WebREPL

import webrepl_setup

จากนั้นจะต้องเลือก Enable (E) และตั้งค่ารหัสผ่าน (ความยาว 4-9 ตัวอักขระ) ที่จะใช้สำหรับเชื่อมต่อกับ WebREPL แล้วจึงรีเซตระบบให้เริ่มต้นทำงานใหม่ และในกรณีที่เปิดใช้งาน Thonny IDE อยู่ในขณะนั้น ให้เปิดการเชื่อมต่อผ่านทาง USB-to-Serial

ข้อสังเกต: การทำคำสั่งดังกล่าว เป็นการเพิ่มคำสั่ง 2 บรรทัดต่อไปนี้ ลงในไฟล์ boot.py เพื่อเปิดใช้งาน WebREPL (daemon) โดยอัตโนมัติหลังจากเปิดหรือบูทระบบทุกครั้ง

import webrepl
webrepl.start()

เปิดเว็บเบราว์เซอร์ ไปยัง http://micropython.org/webrepl/# และบนหน้าเว็บดังกล่าว ในช่อง ws:// ให้ใส่หมายเลข IP และพอร์ต 8266 ของอุปกรณ์ไมโครไพธอนที่เปิดใช้งาน WebREPL และเชื่อมต่อกับ Wi-Fi และอินเทอร์เน็ตได้แล้ว

จากนั้นกดปุ่ม Connect และใส่รหัสผ่านสำหรับ WebREPL ที่ได้ตั้งค่าไว้ ถ้าเชื่อมต่อได้สำเร็จ จะเห็นสัญลักษณ์ >>> ให้ลองทำคำสั่งของไมโครไพธอน

ข้อสังเกต: ถ้าพบว่า หลังจากที่เชื่อมต่อกับ WebREPL ได้แล้ว แต่ไม่สามารถพิมพ์คำสั่งใด ๆ ในช่องรับ >>> ในกรณีนี้ ให้กดปุ่ม Reset ของบอร์ด แล้วทำการเชื่อมต่อใหม่อีกครั้ง

นอกจากนั้นบนหน้าเว็บ (ทางด้านขวามือ) มีช่องให้เลือกทำคำสั่ง เพื่อจะสำเนาไฟล์ระหว่างคอมพิวเตอร์ของผู้ใช้กับอุปกรณ์ไมโครไพธอนผ่านทาง WebREPL

การใช้งาน WebSocket Client เชื่อมต่อกับ WebREPL

ก่อนหน้านี้เราได้ใช้เว็บเบราว์เซอร์ เชื่อมต่อไปยัง WebREPL ของไมโครไพธอนสำหรับอุปกรณ์ ESP8266 / ESP32 ในระบบเครือข่าย ถัดไปเป็นตัวอย่างการใช้โค้ดภาษาไพธอน เชื่อมต่อกับ WebREPL โดยใช้โพรโตคอล WebSocket ในลักษณะ Interactive Shell

ก่อนอื่นจะต้องติดตั้งไลบรารีสำหรับ Python 3 ดังนี้ (ทดลองใช้กับ Raspbian OS สำหรับบอร์ด Raspberry Pi 4B)

$ sudo python3 -m pip install -U websocket websocket_client

จากนั้นให้ดาวน์โหลดไฟล์ webrepl_client.py ที่มีผู้พัฒนาและแชร์ไว้ใน Github

$ wget https://github.com/Hermann-SW/webrepl/raw/master/webrepl_client.py

เมื่อดาวน์โหลดไฟล์ดังกล่าวมายังคอมพิวเตอร์ของผู้ใช้แล้ว ให้ทำคำสั่งดังนี้

$ python3 ./webrepl_client.py 192.168.1.176 -p 1234

ในกรณีตัวอย่างนี้ เป็นการเชื่อมต่อไปยังอุปกรณ์ตามหมายเลข IP 192.168.1.176 และรหัสผ่าน 1234 (อย่าลืมเปลี่ยนการตั้งค่าให้ตรงกับที่ใช้งานจริง)

เมื่อเชื่อมต่อได้แล้วและมีสัญลักษณ์ >>> ปรากฏขึ้น ก็ลองทำคำสั่งผ่านทาง REPL และถ้าต้องจบการทำงาน ก็พิมพ์คำสั่ง exit() หรือพิมพ์ตัวอักขระ D เพียงตัวเดียวในหนึ่งบรรทัด (ซึ่งหมายถึง Ctrl+D) แล้วกด Enter

กล่าวสรุป

การใช้งาน WebREPL สำหรับไมโครไพธอน ก็เป็นอีกหนึ่งช่องทางเพื่อเชื่อมต่อไปยังอุปกรณ์ไมโครคอนโทรลเลอร์ในระบบเครือข่าย นอกเหนือจากการเชื่อมต่อด้วยสาย USB ผ่านทาง USB-to-Serial

Last updated