最近在看nodemcu相關的一些東西,對于我這樣不會C的人來講似乎天生就跟硬件有一道障礙,索性現在基于esp8266的nodemcu可以被Lua和Micropython很好地支持,我且來試著刷一下micropython的固件,廢話不多說,進入正題,注意本文中的nodemcu是以安信可公司產品為樣件,其他公司產品僅供參考。
一、原材料
1.基于esp8266的nodemcu一片
2.安卓手機數據線一根
3.Python 2.7或Python2.7+,下載地址詳見https://www.python.org/downloads/mac-osx/
4.Brew
5.pip或pip3,視python版本而定
6.Esptool
7.Micropyton最新穩定版固件一枚http://www.micropython.org/download#esp8266
8.WebREPLhttps://github.com/micropython/webrepl
9.CP2102驅動https://www.silabs.com/documents/public/software/Mac_OSX_VCP_Driver.zip
注意其他品牌的板子驅動會有所不同請自行下載安裝
關于python,brew,pip和驅動的安裝,請自行搜索相關教程,這里不再贅言
二、步驟
1.安裝Esptool
切換到MAC的終端,執行如下命令
pip install esptool
2.在終端下運行
ls /dev/tty*或者ls /dev/cu*,會得到如下結果,篇幅所限只拷貝片段(以本機為例)
3.用安卓數據線連接Nodemcu和MAC,期間Nodemcu上藍燈閃爍,說明連接正常
4.再次在終端運行如下命令和步驟二的結果對比找出Nodemcu使用的端口
ls /dev/tty*或者ls /dev/cu*,連接Nodemcu的時候這兩個端口都可使用(見紅框部分)
5.運行esptool.py --port /dev/cu.SLAB_USBtoUART erase_flash或esptool.py --port /dev/tty.SLAB_USBtoUART erase_flash擦除原廠固件
6.來到最關鍵的一步,運行esptool.py --port /dev/tty.SLAB_USBtoUART --baud 460800 write_flash --flash_size=detect -fm dio 0 esp8266-20170823-v1.9.2.bin燒錄Micropython固件,其中esp8266-20170823-v1.9.2.bin是Micropython官網下載的固件,注意此處--baud參數值必須為460800,不要被寫在板子上9600的波特率誤導了,估摸著是給Lua固件準備的,一笑.另外如果是Nodemcu則-fm dio 0參數需要帶上,單獨的esp8266模塊可省略該參數。
7.運行screen /dev/tty.SLAB_USBtoUART 115200連接Nodemcu,出現光標之后按Nodemcu上的RST鍵加載固件
出現如上界面說明固件已經刷好,但其中有一個OSError:[Errno 2] ENOENT錯誤,是因缺少main.py文件引起的,先不用管它。首先來看一下Nodemcu內部的文件清單
8.再通過help()命令來查看Nodemcu的網絡初始化配置
可以看到Nodemcu有兩種網絡模式配置STA_IF和AP_IF,STA_IF客戶端模式即正常的網絡訪問模式,AP_IF即Access Point模式,建議配置它,因為用WEBREPL上傳文件需要用到。
9.啟用WEBREPL服務,輸入import webrepl_setup,會要求你確認是否啟用,輸入E啟用,輸入D禁用
輸入E,會要求你輸入訪問密碼
輸入密碼并確認之后,會要求重新加載固件,輸入y回車,后面我們將看看如何使用WEBREPL上傳文件到Nodemcu,敬請關注..........