การเรียกใช้ MicroPython บน ESP8266
หลังจากอัพโหลดแล้ว MicroPython firmware บน ESP8266 เราสามารถใช้มันในการรันสคริปต์ MicroPython ได้
1. Run the script directly
เราสามารถดำเนินการรันสคริปต์ MicroPython ได้โดยตรงในตัวแปร interpreter ของ MicroPython
# Simple script:
print("Hello MicroPython")
2. Use the .py file to run the script
คุณสามารถเขียนสคริปต์ Python ง่าย ๆ เพื่อสั่งให้ไฟ LED สีแดงกระพริบได้ดังนี้:
from machine import Pin
import time
# GPIO LED IO2
def blink():
led = machine.Pin(2, machine.Pin.OUT) # Pin 2 ,Output mode
while(True): # loop
led.on() # light on LED
time.sleep(1) # delay 1s
led.off() # light off LED
time.sleep(1) # delay 1s
if __name__ == "__main__":
blink()

กดปุ่มเริ่มต้นสีเขียวบนแถบเครื่องมือ แล้วสคริปต์จะถูกส่งไปยังโมดูล WiFi ผ่านพอร์ตซีเรียล แล้วจึงรันหลังจากถูกตีความโดยตัวแปล MicroPython ซึ่งถูกติดตั้งไว้บน ESP8266 ในกรณีที่สคริปต์เป็นลูปไม่สิ้นสุด เมื่อต้องการหยุดการทำงาน ให้กดปุ่มหยุดสีแดงเพื่อหยุดการแบ่งเบาะแสและรีเซ็ตระบบ
3. Upload the .py file to the ESP8266
เราสามารถคลิกที่ View -> File เพื่อเปิดแถบเครื่องมือไฟล์ และไฟล์จะปรากฏทางด้านซ้ายของ Thonny โดยส่วนบนคือไดเรกทอรีของเครื่องมือจำลองและส่วนล่างคือไฟล์ที่เก็บอยู่ในอุปกรณ์ MicroPython โดยค่าเริ่มต้นจะมีไฟล์ boot.py เพียงไฟล์เดียว โปรดอย่าลบไฟล์นี้ เพราะเป็นไฟล์เริ่มต้นของอุปกรณ์ MicroPython
เราบันทึกสคริปต์เป็นชื่อ blink.py และบันทึกไว้บนเครื่องคอมพิวเตอร์ จากนั้นคลิกขวาที่ไฟล์และเลือก Upload to /
:

เลือก MicroPython device
ในหน้าต่าง:

มีไฟล์blink.py
อยู่บนอุปกรณ์แล้ว ดังนั้นไฟล์ได้ถูกบันทึกบนอุปกรณ์แล้ว

4. Write a script to let robot perform actions sequentially
ESP8266 สามารถส่งคำสั่งไปยัง NyBoard ผ่านพอร์ตซีเรียลได้ โดยเราเพียงแค่เขียนสคริปต์ส่งพอร์ตซีเรียลง่าย ๆ เพื่อส่งคำสั่งพอร์ตซีเรียลไปยัง NyBoard แล้วหุ่นยนต์ก็สามารถดำเนินการทำตามคำสั่งตามลำดับได้
from machine import UART
import time
uart = UART(0, baudrate=115200,timeout=5)
# walk
def walk(time_ms):
print("walk")
uart.write("kwkF") # walk cmd
time.sleep_ms(time_ms) # keep time
uart.write("d") # stop
time.sleep_ms(1500)
# backward
def back(time_ms):
print("back")
uart.write("kbk")
time.sleep_ms(time_ms)
uart.write("d")
time.sleep_ms(1500)
# stop
def stop():
uart.write("d")
def initConnection():
connected = False
while True:
uart.write("d")
for t in range(30):
uos.dupterm(None, 1) # disable REPL on UART(0), detach the REPL from UART0
time.sleep_ms(5) #delay is a must
result = uart.read(1)
uos.dupterm(uart, 1) # enable REPL on UART(0), reattach REPL
if result != None:
# uart.write(result) # for debug
if result == b"d":
connected = True
break
time.sleep_ms(10)
if connected:
break
uart.write("b22 4 24 4 26 4")
def actSeq():
initConnection()
time.sleep_ms(2000)
walk(3000)
back(3000)
uart.write("m0 90")
time.sleep_ms(3000)
uart.write("i8 -20 9 -60")
time.sleep_ms(2000)
uart.write("b26 4 24 4 20 4")
time.sleep_ms(1000)
uart.write("d")
uos.dupterm(None, 1) # disable REPL on UART(0), detach the REPL from UART0
if __name__ == "__main__":
actSeq()
เมื่อฟังก์ชั่น actSeq() ถูกเรียกใช้งาน มันจะส่งออกชุดคำสั่งผ่านพอร์ตซีเรียลไปยัง NyBoard ผ่านบอร์ด WiFi และใช้ serial monitor เพื่อดูผลลัพธ์ ดังนี้ (สำหรับความสะดวกในการอ่าน โปรดใช้การตั้งค่า automatic frame break ของตัวดีบักเกอร์พอร์ตซีเรียล เพื่อให้มีการขึ้นบรรทัดใหม่อัตโนมัติ)

5. Power on and run automatically
หลังจากที่เราได้ debug การทำงานของ sequence action เรียบร้อยแล้ว โดยการเชื่อมต่อ ESP8266 กับ NyBoard แล้วโปรแกรมดังกล่าวจะไม่สามารถรันได้เนื่องจากฟังก์ชั่น actSeq() ไม่ได้ทำงาน ดังนั้นเราต้องการให้โปรแกรมรันโดยอัตโนมัติหลังจากมีการเปิดเครื่อง ซึ่งมีวิธีการได้แก่ 2 วิธีดังนี้:
กรุณาเปลี่ยนชื่อไฟล์เป็น "
main.py
" และบันทึกลงบนอุปกรณ์ (แนะนำ)แก้ไข Boot.py
Last updated
Was this helpful?