ESP8266-Arduino殺手?
Arduino之所以流行可能是因為它的學習曲線比較平緩,另外是支援它的第三方程式庫非常多,無論在什麼平臺上都比較容易入門。多年前我曾和一些搞嵌入開發多年的朋友請教,他們更建議我多點嘗試STM的開發,Arduino只能在實驗室中玩玩很難產品化的,主要原因是由於晶片生產授權和Arduino嵌入到產品時很多時候都需要新增外圍電路而導致生產成本很高。而對於我這種一直從事高階語言開發的人確在很難回退到STM那種讓人難受的面向程序式程式設計方式,而魚與熊掌是否真能兼得?
後來玩了IoT好幾年了大多數時間都耗在搞4軸上,通訊方式一直也就用著2.4G (nrf2401),以前一直認為這是一種最廉價的組合,用Arduino 做一個應用也是手到拈來。然,當我無意地發現被我扔到角落上的ESP8266時,我在IoT中形成的世界觀徹底地改變了,因為終於找到了比Arduino 和STM更好的板子和開發方法。魚與熊掌真能兼得!
以下是ESP8266的開發板,是用ESP12E的 NodeMCU
ESP8266的特點:
- 用於快速原型的開發板,售價也就在10人民幣左右 (Arudino + WIFI 可不止這個數)
- ESP8266系列是中國公司生產的,在晶片授權上要比Arduino容易多了
- 完全相容Arduino上的庫(絕大多數都相容),這樣可以將Arduino上的很多開發經驗平滑過渡其上
- 提供硬體的高階介面,如果採用NodeMCU的韌體還可以使用micropython或者lua進行高階語言程式設計
ESP產品家族
ESP8266家族有很多個系列的產品,比較常見的是 ESP01, ESP12E, ESP07等。這些系列我們都可以在淘寶上輕鬆買到,價格都很低。做為開發人員的話可能開發板會更適合我們多一些,例如 NodeMCU, WeMos , ESP01。他們的晶片都是一樣的,只是引腳和外圍的配置有些差異。
近年ESP系列也在不斷的改進,可能是銷量推動了他們的進步吧。樂鑫相繼推出了ESP32和ESP8285等的系列,有興趣瞭解更多關於晶片的資訊可以訪問他們的官網:https://www.espressif.com/zh-hans。 至於ESP32系列貌似已經失去了他們的原有的價格優勢雖然說是32位然後加上藍芽但實際運用起來對於下位機而言意義並不是很大吧(這僅是我個人想法)
ESP8266開發環境準備
接下來會以ESP01為例,並且使用NodeMCU對ESP8266進行初探。下圖為ESP01的實物產品圖:
[ESP8266 針位]](https://img2018.cnblogs.com/blog/645016/201810/645016-20181014163643238-1540080383.png
解決無法在Mac連線ESP8266的問題
CP210x USB to UART Bridge VCP Driver 安裝後當接上ESP8266的測試板後死活無法找到該USB轉串列埠的驅動,經過一番折騰終於在 https://blog.sengotta.net/signed-mac-os-driver-for-winchiphead-ch340-serial-bridge/ 上找到答案,這是由於CP210X驅動在Serial上沒有合法的簽名而導致載入失敗( Sierra - macOS 10.12 的安全性被提高了),所以只能下載安裝另一個驅動加以取代:CH304 就是一取代方案。
安裝後連以前一直無法連線上的Arduino Nano 也被成功驅動了,確實是功夫不負有心人!
如何在macOS上刷NodeMCU的韌體
首先按照下圖所示的跳線方式將FTDI轉串列埠的板子與ESP8266連線:
下表為跳線的具體對應
ESP8266 (esp-01) | FTDI Basic interface |
---|---|
RX | TX |
TX | RX |
VCC | VCC 3.3V |
GND | GND |
RESET | 懸空 |
CH_PD | VCC 3.3v |
GPIO-0 | GND |
GPIO-2 | 懸空 |
刷韌體時GPIO必須接地
接著按node-emcu-devkit在"Geting Started on OSX"一文的推薦,在Mac下可以用Python的esptool工具來刷ESP8266的韌體,在終端用pip來安裝esptool:
$ pip install esptool
以下是esptool的具體用法幫助:
安裝成功esptool.py後接上ESP8266並在終端裡讀取一下串列埠的資訊
$ esptool.py --port /dev/tty.wchusbserial1430 --baud 115200 read_mac
以上的指令是從序列口的驅動中讀取物理的MAC地址(/dev/tty.wchusbserialXXX
就是ESP8266的掛載點) 它將會返回這樣的結果:
esptool.py v1.3
Connecting....
MAC: a0:20:a6:14:37:e2
接下來就需要將韌體包刷到ESP8266上了,先從node-flasher 下載韌體包:
本來有兩個的,我只將常用的這個放上來,其它的你可以到GitHub上下載
最後,在終端輸入以下指令進行韌體更新:
$ esptool.py --port /dev/tty.wchusbserial1430 --baud 115200 write_flash 0x0 ./nodemcu-master-10-modules-2015-08-29-11-33-14-float.bin
使用Arduino IDE程式設計
刷完韌體之後就可以開始著手程式設計了,由於這麼多年一直在玩Arduino和樹莓,一切硬體開發最終都是採用純C,所以說開發環境一定是可以通用的,帶著這種想法一入手NodeMCU立馬想到的就是用Arduino IDE。在下一篇文字中我將會介紹如何用Arduino IDE進行ESP8266的程式設計。