[ MicroPython ] 在 ESP8266上使用 MicroPyhton
前陣子工作繁忙加上 Arduino玩得有點挫折,好不容易稍微有一點時間,嘗試一下自己比較熟悉的語言。
首先安裝燒錄的套件 Esptool
接著下載 MicroPython,我下載的是 esp8266-20180511-v1.9.4.bin。
接著對 ESP8266進行燒錄。
燒錄成功後 MacOS和 Ubuntu的用戶可以透過 screen指令透過 serial對設備進行操作。
順便就利用 MicroPython幫 ESP8266連上網吧。
因此需要安裝上傳代碼的套件 ampy。
若透過 serial連線後,Terminal上就會顯示 IP位置。
最後透過 ampy將代碼上傳。
connWiFi.py是電腦中的文件,main.py是上傳後文件的檔名。main.py才是MicroPython會主動執行的代碼。
也可以利用 "ls"指令,來查看目前 ESP8266內的文件。
文章參考 MicroPython Docs.
首先安裝燒錄的套件 Esptool
pip install esptool接著清除 ESP8266中的 flash
esptool.py --port /dev/tty.usbserial-1420 erase_flash/dev/tty.usbserial-1420是我連接中的 USB設備,不知道怎麼查看的朋友可以參考之前分享的 "檢查 Serial設備"。
接著下載 MicroPython,我下載的是 esp8266-20180511-v1.9.4.bin。
接著對 ESP8266進行燒錄。
$ esptool.py --port /dev/tty.usbserial-1420 --baud 460800 write_flash --flash_size=detect 0 esp8266-20180511-v1.9.4.bin $ $ esptool.py --port /dev/tty.usbserial-1420 --baud 460800 write_flash --flash_size=detect 0 esp8266-20180511-v1.9.4.bin -fm dio第二行燒錄指令中添加了 "-fm dio" ,因為我的 ESP8266開發版是 NodeMCU的某種變體,需要加入額外指令才能燒錄成功。
燒錄成功後 MacOS和 Ubuntu的用戶可以透過 screen指令透過 serial對設備進行操作。
$ screen /dev/tty.usbserial-1420 115200Windows的用戶則可以透過 PuTTY對 COM port來操作。
順便就利用 MicroPython幫 ESP8266連上網吧。
>>> import network >>> sta_if = network.WLAN(network.STA_IF) >>> sta_if.active(True) # 啟動 WiFi設備 #6 ets_task(4020f474, 28, 3fffa018, 10) >>> sta_if.connect('<SSID>', '<PASSWORD>') # WiFi帳號與密碼 >>> sta_if.isconnected() # 確認連線狀態 True >>> sta_if.ifconfig() # 取得 IP位址 ('10.1.26.22', '255.255.255.0', '10.1.26.1', '192.168.1.1')若要讓 ESP8266自動執行文件,就需要將檔案放在 ESP8266中。
因此需要安裝上傳代碼的套件 ampy。
pip install adafruit-ampy寫一個連線的程式命名 connWiFi.py。
import network import time from machine import Pin def connWiFi(ssid, password): sta_if = network.WLAN(network.STA_IF) sta_if.active(True) while not sta_if.isconnected(): sta_if.connect(ssid, password) time.sleep(5) ip = sta_if.ifconfig()[0] return ip, True def blinkLed(): Pin(2, Pin.OUT) time.sleep(0.2) Pin(2, Pin.IN) time.sleep(0.2) if __name__ == '__main__': ip, is_conn = connWiFi('<SSID>', '<PASSWORD>') while is_conn: print('IP address: '+ip) blinkLed()連線成功後,ESP8266上的 LED就會閃爍。
若透過 serial連線後,Terminal上就會顯示 IP位置。
最後透過 ampy將代碼上傳。
ampy -p /dev/tty.usbserial-1420 put connWiFi.py main.py利用 ampy的 "put"指令將檔案上傳。
connWiFi.py是電腦中的文件,main.py是上傳後文件的檔名。main.py才是MicroPython會主動執行的代碼。
也可以利用 "ls"指令,來查看目前 ESP8266內的文件。
$ ampy -p /dev/tty.usbserial-1420 ls /boot.py /main.pyAmpy還有很多功能,可以透過下列指令查詢。
$ ampy --help
文章參考 MicroPython Docs.
留言
張貼留言