1. 程式人生 > >NodeMCU 刷韌體上手筆記

NodeMCU 刷韌體上手筆記

刷韌體

韌體從哪裡來?

有三種途徑獲取韌體:

  1. 使用雲編譯服務定製自己所需的韌體
  2. 搭建Linux環境並編譯專案原始碼
  3. 使用Docker編譯

其中,方法1最簡單, 點選這裡 進入定製頁面,在該頁面下需要填寫如下資訊:

  1. 填寫自己的郵箱,開始編譯和完成編譯時會發來郵件,完成時,郵件正文中帶有韌體的下載地址
  2. 選擇分支,預設選擇master分支即可
  3. 選擇自己需要的功能模組,第一次接觸,使用預設的選擇即可

大概幾分鐘內就能收到編譯完成的郵件,郵件正文如圖所示:

這裡寫圖片描述

如圖所示,同時提供了integer和float版本的韌體,這兩個版本的大概區別為:integer中不支援浮點運算,float中支援浮點運算。對於初次使用,二選一均可。

用什麼工具刷韌體?

刷韌體的工具有三個,如下:

  1. esptool.py:用python寫的一個命令列工具,由樂鑫(即ESP8266晶片的廠家)開發的官方工具,在安裝有python執行環境的機子上都可以執行,所以是跨平臺的;
  2. NodeMCU PyFlasher:是esptool.py的GUI版本,由第三方開發,同樣是跨平臺的,方便易用。
  3. NodeMCU Flasher:由NodeMCU 韌體的初始團隊建立的工具,僅能執行在Windows系統。自2015年來,就不再被維護了,因此,用來刷較舊的韌體尚可,但刷較新的韌體是存在問題的。親測,刷雲編譯的最新的韌體,在刷時沒有提示錯誤,但是刷後不能用,刷該工具的專案原始碼中提供的韌體是成功的。

綜上所述,在本人分別用過如上三個工具,踩了一圈坑後,來強烈建議大家使用esptool.py這個工具。

獲取esptool.py
該工具需要Python 2.7 或 Python 3.4或者更新的Python環境,各個系統安裝Python環境的方法請自行百度 or Google。在安裝了Python後,使用命令:

pip install esptool

即可安裝最新版本的esptoop.py。

如何刷韌體

  1. 安裝串列埠驅動:先安裝串列埠驅動,我買到的NodeMCU開發板中,使用的串列埠晶片是CP2102,因此,點選這裡下載對應系統的驅動,親測該驅動可以很好地用在Windows 10 64位系統和mac OS 10.12.6中。
  2. 檢視該串列埠裝置路徑:在Windows系統中,可以從裝置管理器的“埠“這一項中看到新增的串列埠裝置,例如“COM3“,如果看不到這樣的裝置,說明串列埠驅動存在異常。在mac系統中,可以在/dev下看到以cn.開頭的幾個裝置,其中cn.SLAB_USBtoUART就是該串列埠裝置,即該裝置完整的路徑為:/dev/cn.SLAB_USBtoUART。
  3. 使用命令刷韌體 在將NodeMCU開發板通過資料線連線到電腦,並可以看到對應的串列埠裝置後,刷韌體的準備工作即準備完畢。假設下載到的韌體名為:nodemcu-master.bin,此時,先按下RST鍵,然後按下FLASH鍵,隨後放開FLASH鍵,最後放開RST鍵,此時執行如下最簡單的命令:
    $ esptool.py -p /dev/cu.SLAB_USBtoUART write_flash 0x0 nodemcu-master.bin
    注意,在執行命令前,要按照如下順序按下按鍵以讓其進入Flash模式:
  4. 如果出錯:如果在刷了韌體,按了RST復位後,板子右上角的藍色燈頻繁閃爍,說明韌體刷出錯了,這很可能是因為沒有完全擦除原來的殘留資料所致,因此,使用如下的命令擦出後再刷即可:
    $ esptool.py -p /dev/cu.SLAB_USBtoUART erase_flash

初次體驗

在刷了韌體後,使用ESPlorer這個IDE,右側上部分選擇該串列埠裝置,波特率選用74880,這是ESP8266晶片列印boot log時預設的波特率。點選“Open“按鈕開啟該裝置,按下RST鍵,即可看到boot log,可能存在部分亂碼,但這是正常的,具體如下圖所示:
這裡寫圖片描述

然後在右下方的輸入框中輸入:print(“Hello”),即可看到該句Lua指令碼的執行結果,在剛開始時可能存在亂碼,推測這是由於波特率不一致所致,多發幾次,會恢復正常,如下圖所示:
這裡寫圖片描述