2015年9月21日 星期一

ESP8266 wifi 通訊模組韌體燒錄簡介


ESP8266 wifi 通訊模組韌體燒錄簡介

ESP8266是一款UART轉WiFi的SoC晶片,被拿來組合成各種五花八門的擴充板,其中最常見也最容易買到的模組型號就 ESP-01,尺寸迷你價格便宜。
此篇文章進行燒錄 ESP模組是使用mac os x 平台,但是如果是使用Linux平台的話做法應該是一樣。

pin 腳定義

買到手的時候會發現,模組上有八根沒有標示的 pin 腳。上網查了一下,可以知道pin 腳配置如下:


UART介面的 wifi 模組

ESP8266模組到手的時候,就可以透過模組上的 Tx/Rx (UART 介面)的 pin腳來下AT command 進行簡單的 WiFi 連線。本身支援AP模式(無線網路基地台)和一般模式。通訊協定上支援 TCP 和 UDP,可在無線區域網路中扮演伺服器(Server)等候連入,或扮演客戶端(Client)去與Server連線。
我一般使用可以簡單買到的 USB-UART 轉接線和ESP模組連接。而接法如下:
ESP8266 pin:
GND
UTxD ----> RxD (USB-UART 轉接線)
GPIO_2 --> 不用接
CH_PD ---> 3.3V (電源,不能接5V!會燒掉)
GPIO_0 --> 不要接!!
RST -----> 不用接
URxD ----> TxD (USB-UART 轉接線)
VCC -----> 3.3V (電源,不能接5V!會燒掉)

電流需求 : 200 ~ 300 mA
ESP8266對於電源電流供應會有一些要求,如果電源不夠力的話,會導致模組運作不穩定。
使用UART 做通訊的時候記得要設定連線設定如下: (115200 8N1)
  • Baudrate:115200
  • byte size: 8
  • Parity: None
  • Stop Bit: 1
UART連線下指令的時候換行符號是 "\r\n" ,換行符號要下對指令才會被接受,不然是不會動的。連線之後可以先傳送指令 "AT\r\n" 看看 ESP 模組是否會回傳 "OK" 的訊息。如果成功了就表示模組可正常運作。

使用UART 介面進行韌體更新

ESP8266是可程式化的通用微控制器(具有WiFi功能),具有少數的 GPIO。ESP-01模組上只拉出兩根。而從拍賣網站上買到手的時候,裡面其實已經燒好最新版本的韌體來支援 AT command。網路上也流傳著許多其他版本的韌體來支援其他功能,像是較為知名的支援可在模組上執行 Lua 程式語言的韌體(nodeMCU),其原始碼就放在github上。不過要自行編譯原始碼的話會是一項大工程,所幸的是,有網站提供客製化的 nodeMCU 韌體線上編譯的免費服務,網址為
http://frightanic.com/nodemcu-custom-build/
編譯好的韌體會傳送到網頁上要求輸入的 email 位址,筆者收到了兩個檔案:
nodemcu-master-7-modules-2015-09-18-02-26-58-float.bin
nodemcu-master-7-modules-2015-09-18-02-26-58-integer.bin
燒錄的時候,我是選檔案大小比較小的那個。拿到韌體之後,我們還需要一個燒錄程式,在這邊我是使用 esptool.py 這個指令工具,下載安裝之後。就可以準備開始燒錄韌體了。
進行燒錄時使用下面所示的接線配置,可以使ESP模組進入燒錄模式,
  • CH_PD --> 3.3v
  • VCC --> 3.3V
  • UTXD --> RXD (USB-UART 轉接線)
  • URXD --> TXD (USB-UART 轉接線)
  • GPIO0 --> GND <重點>
  • GND --> GND
接好線之,把 USB-UART 轉接線接上mac os x 系統會自動跳出裝置檔檔名
/dev/tty.usbserial
如果是 Linux 系統的話則是出現
/dev/ttyUSB0
然後打開 command-line ,然後使用esptool.py指令:
esptool.py --port /dev/tty.usbserial write_flash 0x000000 nodemcu-master-7-modules-2015-09-18-02-26-58-integer.bin
如果是 Linux 系統的話則是
esptool.py --port /dev/ttyUSB0 write_flash 0x000000 nodemcu-master-7-modules-2015-09-18-02-26-58-integer.bin
接著就會出現燒錄中的訊息,等到燒錄完成後畫面是如下所示
onionys$ esptool.py --port /dev/tty.usbserial write_flash 0x000000 nodemcu-master-7-modules-2015-09-18-02-26-58-integer.bin
Connecting...
Erasing flash...
Wrote 354304 bytes at 0x00000000 in 34.6 seconds (82.0 kbit/s)...

Leaving...
onionys$
如此一來,就完成燒錄的工作了。重新接線後,會發現AT command 已經不能使用了。之後,我們會再介紹如何在 nodeMCU 的韌體下使用 Lua 語言控制 ESP8266 模組。


沒有留言 :

張貼留言