NodeMCU 開發板刷入 MicroPython 固件並通過 Atom 進行編程

MicroPython 是對 Python 3 語言的一種精簡的實現,主要是爲了在微控制器這種硬件資源受限的環境中可以高效地運行,因此做了很多針對性的優化。
它類似於一個小型的 Python 操作系統,可以通過串口與內置的 Python 解釋器直接交互,也可以上傳程序文件在開機上電後自動運行。
MicroPython 支持多種開發板,包括價格很實惠的基於 ESP8266 芯片的 NodeMCU

一、刷入固件

我這裏使用的開發板是從網上購買的 NodeMCU ,出廠時預先刷好了基於 Lua 語言編程的固件。
爲了使用 MicroPython ,需要先對該開發板重新刷寫固件。


1. 準備工作

首先進入 MicroPython 官方的下載頁面,下載最新版的針對 ESP8266 硬件的固件包。
我這裏使用的是 esp8266-20180511-v1.9.4.bin

刷寫軟件可以使用支持多種操作系統的命令行工具 esptool。對於已經裝好 Python 環境的電腦,直接使用 pip 命令安裝即可:
pip install esptool

2. 刷入固件

首先將 NodeMCU 開發板連接至電腦,Mac 系統可以使用 ls /dev/tty.usbserial* 命令查看當前系統已經檢測到的 USB 串口:

$ ls /dev/tty.usbserial*
/dev/tty.usbserial-14110

使用 esptool.py -p <SerialPort> flash_id 命令確認該串口是否能成功檢測到 ESP8266 設備:

$  esptool.py -p /dev/tty.usbserial-14110 flash_id
esptool.py v2.5.1
Serial port /dev/tty.usbserial-14110
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
MAC: 2c:3a:e8:06:aa:7e
Uploading stub...
Running stub...
Stub running...
Manufacturer: c8
Device: 4016
Detected flash size: 4MB
Hard resetting via RTS pin...

使用 esptool.py -p <SerialPort> erase_flash 命令對開發板進行擦除操作(以防萬一):

$  esptool.py -p /dev/tty.usbserial-14110 erase_flash
esptool.py v2.5.1
Serial port /dev/tty.usbserial-14110
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
MAC: 2c:3a:e8:06:aa:7e
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 2.5s
Hard resetting via RTS pin...

擦除完成後即可使用 esptool 工具的 write_flash 命令將 MicroPython 固件刷入開發板。
(完整命令爲:esptool.py -p <SerialPort> --baud 460800 write_flash --flash_size=detect -fm dio 0 <FirmwareFile>

$ esptool.py -p /dev/tty.usbserial-14110 --baud 460800 write_flash --flash_size=detect -fm dio 0  ~/Downloads/esp8266-20180511-v1.9.4.bin
esptool.py v2.5.1
Serial port /dev/tty.usbserial-14110
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
MAC: 2c:3a:e8:06:aa:7e
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0240
Compressed 604872 bytes to 394893...
Wrote 604872 bytes (394893 compressed) at 0x00000000 in 9.9 seconds (effective 490.0 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

二、固件測試

刷寫固件的操作完成後,可以使用 Mac 系統自帶的串口調試工具 cu 連接 USB 串口,對剛刷好的開發版進行測試:
sudo cu -l <SerialPort> -s <BaudRateSpeed>
效果如下:

$ sudo cu -l /dev/tty.usbserial-14110 -s 115200
Connected.

終端窗口提示 Connected 之後,按下 NodeMCU 板子上的 RST (Reset) 按鈕。
如固件刷寫成功,則終端在輸出部分亂碼後會立即進入 Python 解釋器界面:

MicroPython v1.9.4-8-ga9a3caad0 on 2018-05-11; ESP module with ESP8266
Type "help()" for more information.
>>>

在解釋器界面下,輸入 help() 命令獲取基本的幫助信息:

MicroPython v1.9.4-8-ga9a3caad0 on 2018-05-11; ESP module with ESP8266
Type "help()" for more information.
>>> help()
Welcome to MicroPython!

For online docs please visit http://docs.micropython.org/en/latest/esp8266/ .
For diagnostic information to include in bug reports execute 'import port_diag'.

Basic WiFi configuration:

import network
sta_if = network.WLAN(network.STA_IF); sta_if.active(True)
sta_if.scan()                             # Scan for available access points
sta_if.connect("<AP_name>", "<password>") # Connect to an AP
sta_if.isconnected()                      # Check for successful connection
# Change name/password of ESP8266's AP:
ap_if = network.WLAN(network.AP_IF)
ap_if.config(essid="<AP_NAME>", authmode=network.AUTH_WPA_WPA2_PSK, password="<password>")

Control commands:
  CTRL-A        -- on a blank line, enter raw REPL mode
  CTRL-B        -- on a blank line, enter normal REPL mode
  CTRL-C        -- interrupt a running program
  CTRL-D        -- on a blank line, do a soft reset of the board
  CTRL-E        -- on a blank line, enter paste mode

For further help on a specific object, type help(obj)
>>>

更多的交互命令和詳細的指導手冊可以參考官方文檔

使用如下的命令,能夠讓 GPIO2 上連接的 LED(即 ESP8266 模塊內置的藍色 LED)以 1s 的頻率閃爍:

>>> from machine import Pin
>>> import time
>>> p=Pin(2,Pin.OUT)
>>> while True:
...     p.on()
...     time.sleep(1)
...     p.off()
...     time.sleep(1)
...
...
...

三、配置 Atom 編程環境

當前可以使用多種軟件作爲簡單的 IDE 對 MicroPython 開發板進行編程。主要是提供連接串口的終端,可以交互地執行 Python 命令,以及程序文件的上傳和下載。

我個人比較喜歡 Atom 編輯器搭配上 pymakr-atom 插件。

Atom 的配置較簡單,主要步驟如下:

  • 從 Atom 官網下載對應系統版本的安裝程序並安裝
  • 通過 Atom 內置的插件管理器搜索安裝 pymakr 插件,安裝完成後重啓編輯器
  • 編輯器重啓後底部自動出現 pymakr 的終端窗口,點擊終端右上角設置 - 全局設置,找到設備地址並改爲開發板連接的端口號
  • 直接點擊終端頂部的連接按鈕即可完成串口連接

此時的 Atom 編輯器,可以通過底部的終端窗口直接輸入 Python 命令。
也可以在編輯器中新建項目目錄,並創建 main.py 源文件。編輯好 Python 代碼後,點擊執行按鈕即可直接運行,或者點擊上傳按鈕將代碼文件上傳至開發板。

參考資料

MicroPython documentation

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章