[ 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.
留言
張貼留言