用 Windows 來刷 ESP8266 固件有很多中文教程,來試試直接用 BBB 刷吧。目標是 NodeMCU,ESP-01 可用,就是我買的那個。 接線方式在上一篇。當 echo ‘BB-UART2’ > /sys/devices/bone ….. 之後,ttyO2 可用,測試能連接後可以動手(...
用 Windows 來刷 ESP8266 固件有很多中文教程,來試試直接用 BBB 刷吧。目標是 NodeMCU,ESP-01 可用,就是我買的那個。
接線方式在上一篇。當 echo ‘BB-UART2’ > /sys/devices/bone ….. 之後,ttyO2 可用,測試能連接後可以動手(比如用我上一篇博文那愚蠢的做法,或者下載個 minicom。註:minicom 是按 AT 然後回車再按 ctrl-J,它回答 OK 就是正常連接了)。其實這隻是確保我,或者你,沒插錯引腳。
固件工具
首先需要刷固件的軟體,esptool,git clone 它下來。
git clone https://github.com/themadinventor/esptool.git
進去 esptool 文件夾,偉大的作者已經做好了安裝腳本,setup.py,這樣用:
python setup.py install
它會自動完成必須的動作。
固件檔
搞定了工具,還要下載固件。NodeMCU 的固件發佈在 github,可以在這裡查看:https://github.com/nodemcu/nodemcu-firmware/releases/
下載可以用你電腦下,然後 scp (windows 的話 pscp,putty 帶有的 copy 命令),又或者,直接在 BBB 下載。我選後者,這樣操作:
wget https://github.com/nodemcu/nodemcu-firmware/releases/download/0.9.6-dev_20150704/nodemcu_float_0.9.6-dev_20150704.bin
接線與刷新操作
萬事俱備,只欠GPIO0 接 GND。Flash ROM 需要把 GPIO 0 拉低,接 GND。接上後重啟(BBB 和 ESP8266,關掉再打開,BBB中需要再次 echo ‘BB-UART2’ > /sys/devices/bone…..)。
然後 ./esptool.py -p /dev/ttyO2 -b 115200 write_flash 0x00 ~/nodemcu_float_0.9.6-dev_20150704.bin
一分鐘搞定。然後再次關機,兩者都關掉。GPIO 0 剛纔拉低的,取消,GPIO 0 線拔掉。再度開機。再度 echo ‘BB-UART2’ > ……
測試效果
這次 NodeMCU 了,該用合適的終端了。我用 minicom 。記得,NodeMCU 固件預設 baud 是 9600,minicom –s 調好再進去。
沒顯示該有的輸入 prompt,唉,那好吧,我主動點跟它打聲招呼,hi,然後 >> 輸入 prompt 就出現了…. 請無視我隨後輸入的 wif,我原意是打 wtf …。(註:這一段只是開個玩笑而已…)
上圖我拿些只有 NodeMCU 才有的函數來試試,反應正常了。上圖屏蔽了的是 SSID 和密碼。print 所顯示的是我無線路由 DHCP 分配的 IP、掩碼、和當前網關地址。
刷 ROM 到此為止,成功。
從 WiFi 模塊的 GPIO 直接輸出
不夠,用 ESP8266 不止為了接個 WiFi。按照測試慣例,上 LED 燈,用 ESP8266 本身的 GPIO 2 引腳(下圖橙色線接著的),接 450Ω電阻,和 LED 燈。
BBB 只是負責給我 TTY 進去 ESP8266,不參與控制不參與電路。
代碼:
gpio.mode(4,gpio.OUTPUT)
gpio.write(4,gpio.HIGH)
gpio.write(4,gpio.LOW)
說好的 GPIO 2 呢?明明是接著 GPIO 2 引腳為何現在代碼是 4 呢?是 PIN 4 代表 GPIO 2 麽?不知道,我可是從 0 一個個測試才發現是 4 的… 很無語,但是還好,能用了。
滿足了。實驗到此為止。後面,就是寫代碼,讓它接受到特定數據包,再直接控制 gpio 信號。再強調一遍,有 ESP8266 ,單純控制開關不需要 arduino。
重要參考
esptool | https://github.com/themadinventor/esptool |
NodeMCU 官網 | http://www.nodemcu.com/index_cn.html |
NodeMCU 論壇 | http://bbs.nodemcu.com/ |
wget | https://en.wikipedia.org/wiki/Wget |
minicom | http://linux.die.net/man/1/minicom |
ESP8266 刷固件教程 | https://ukhas.net/wiki/esp8266_firmware_update |
NodeMCU 固件 git | https://github.com/nodemcu/nodemcu-firmware/releases/ |
NodeMCU API 說明 | https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_cn |