【NodeMCU MicroPython】使用ampy把程式寫在NodeMCU中

在前面的MicroPython的開發方式中,我們使用PuTTY以REPL的方式在NodeMCU上直接編寫程式,這樣的好處是所有的指令都是在按下Enter之後直接執行,可以馬上看到結果,但問題是,如果不小心打錯字了,就要再重來一次。此外,所有的程式在重新開機就都不見了,要再重新輸入一次,這對於要編寫稍微大一點的程式的我們來說,使用上會非常不方便,所幸,有另外一個作法可以克服這個問題。

在MicroPython中,系統下有兩個程式是NodeMCU在一接上電源的時候就會馬上被執行的程式,依序是boot.py以及main.py。所以,有一個簡單的方式就是,如果我們在NodeMCU的板子上上傳一個main.py的程式,那麼每次NodeMCU一被啟動的時候,就會在執行完boot.py之後,立即前往執行main.py,就可以達到讓NodeMCU脫離電腦,只要接上電源就可以運作的模式了。

那麼我們應該如何把main.py上傳,寫在NodeMCU的板子上呢?回想一下,之前我們使用的REPL連線方式,都是透過Shell一步一步執行程式,該程式並不會被寫在板子上,所以,如果想要使用上傳程式檔案的功能,需要再安裝另外一個套件才行,這個套件就叫做ampy,請使用以下的方式安裝:

[code]
pip install adafruit-ampy
[/code]

順利安裝完畢之後,就可以執行ampy,看看能夠得到什麼訊息:

[code]
(base) C:\Users\USER>ampy
Usage: ampy [OPTIONS] COMMAND [ARGS]…

ampy – Adafruit MicroPython Tool

Ampy is a tool to control MicroPython boards over a serial connection.
Using ampy you can manipulate files on the board’s internal filesystem and
even run scripts.

Options:
-p, –port PORT Name of serial port for connected board. Can optionally
specify with AMPY_PORT environment variable. [required]
-b, –baud BAUD Baud rate for the serial connection (default 115200).
Can optionally specify with AMPY_BAUD environment
variable.
-d, –delay DELAY Delay in seconds before entering RAW MODE (default 0).
Can optionally specify with AMPY_DELAY environment
variable.
–version Show the version and exit.
–help Show this message and exit.

Commands:
get Retrieve a file from the board.
ls List contents of a directory on the board.
mkdir Create a directory on the board.
put Put a file or folder and its contents on the…
reset Perform soft reset/reboot of the board.
rm Remove a file from the board.
rmdir Forcefully remove a folder and all its…
run Run a script and print its output.
[/code]

從上面的教學訊息可以看出,命令put就是上傳檔案的意思。所以,接下來的步驟就是在自己的電腦中透過程式碼編輯器編輯main.py這個檔案,存檔之後,使用ampy –port COM3 put main.py就可以把檔案上傳了。程式內容如下:

[code language=”python”]
from machine import Pin
import time

led = Pin(2, Pin.OUT)
while True:
led.on()
time.sleep(0.5)
led.off()
time.sleep(0.5)
[/code]

執行的過程如下所示:

[code]
ampy –port COM3 put main.py
[/code]

上傳完畢如果沒有出現任何錯誤訊息的話,把NodeMCU重新啟動,就可以看到板子上的LED在閃爍囉!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *