ESP8266-Arduino殺手?

Arduino之因此流行多是由於它的學習曲線比較平緩,另外是支持它的第三方程序庫很是多,不管在什麼平臺上都比較容易入門。多年前我曾和一些搞嵌入開發多年的朋友請教,他們更建議我多點嘗試STM的開發,Arduino只能在實驗室中玩玩很難產品化的,主要緣由是因爲芯片生產受權和Arduino嵌入到產品時不少時候都須要添加外圍電路而致使生產成本很高。而對於我這種一直從事高級語言開發的人確在很難回退到STM那種讓人難受的面向過程式編程方式,而魚與熊掌是否真能兼得?php

後來玩了IoT好幾年了大多數時間都耗在搞4軸上,通訊方式一直也就用着2.4G (nrf2401),之前一直認爲這是一種最廉價的組合,用Arduino 作一個應用也是手到拈來。然,當我無心地發現被我扔到角落上的ESP8266時,我在IoT中造成的世界觀完全地改變了,由於終於找到了比Arduino 和STM更好的板子和開發方法。魚與熊掌真能兼得!html

如下是ESP8266的開發板,是用ESP12E的 NodeMCUnode

nodemcu

ESP8266的特色:python

  • 用於快速原型的開發板,售價也就在10人民幣左右 (Arudino + WIFI 可不止這個數)
  • ESP8266系列是中國公司生產的,在芯片受權上要比Arduino容易多了
  • 徹底兼容Arduino上的庫(絕大多數都兼容),這樣能夠將Arduino上的不少開發經驗平滑過渡其上
  • 提供硬件的高級接口,若是採用NodeMCU的固件還可使用micropython或者lua進行高級語言編程

ESP產品家族

ESP8266家族有不少個系列的產品,比較常見的是 ESP01, ESP12E, ESP07等。這些系列咱們均可以在淘寶上輕鬆買到,價格都很低。作爲開發人員的話可能開發板會更適合咱們多一些,例如 NodeMCU, WeMos , ESP01。他們的芯片都是同樣的,只是引腳和外圍的配置有些差別。git

近年ESP系列也在不斷的改進,多是銷量推進了他們的進步吧。樂鑫相繼推出了ESP32和ESP8285等的系列,有興趣瞭解更多關於芯片的信息能夠訪問他們的官網:https://www.espressif.com/zh-hans。 至於ESP32系列貌似已經失去了他們的原有的價格優點雖說是32位而後加上藍牙但實際運用起來對於下位機而言意義並非很大吧(這僅是我我的想法)github

ESP8266開發環境準備

接下來會以ESP01爲例,而且使用NodeMCU對ESP8266進行初探。下圖爲ESP01的實物產品圖:macos

[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 也被成功驅動了,確實是功夫不負有心人!ide

如何在macOS上刷NodeMCU的固件

首先按照下圖所示的跳線方式將FTDI轉串口的板子與ESP8266鏈接:

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 用法

安裝成功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的編程。

相關資源

相關文章
相關標籤/搜索