2017/2/4

ESP8266 ESP-01s測試(01)利用USB 轉TTL模組

ESP8266 ESP-01s測試(01)利用USB 轉TTL模組

最近ESP8266晶片模組非常熱門,除了可當WiFi通訊模組外亦可當為簡單的節點的微程序控制器(Microprogrammed Control Unit) (NodeMCU),透過GPIO和外界溝通,此晶片經由很多公司利用PCB板加工成各種不同的模組,如ESP-01, ESP-02等十幾種模組。想玩玩這個模組,前幾天網購 了一組入門套件,包括一個內含ESP8266晶片的電路板ESP-01s模組、一個USB  TTL 模組 (或稱USB-Serial轉接模組)和一個可插上830孔麵包板的電源模組(YwRobot),接下來就開始來測試ESP-01s的功能。依賣家提供的規格,這模組的韌體比ESP-01版更新,韌體版本為:AT v1.2.0.0 based on SDK v1.5.4.1,這應是網上看到最新的版本,所以韌體版本就不需更新,首先規劃要測試的項目包括:
1. 利用USB TTL模組將ESP-01s接上電腦的USB埠,並利用終端機軟體(我是用realterm)測試ESP-01sAT命令操作的功能。AT命令有點像早期DOS時代的指令,利用指令來設定模組內微晶片的各項功能。
2.  不用USB TTL改用arduino uno 板,將ESP-01s接上arduino 的數位I/O 接腳(非pin0 pin1),並將arduino板以USB接上電腦,利用Software Serial 功能測試ESP-01s的功能。這部份很重要,因為arduino uno板只有一組serial port (pin0 pin1),利用software serial才能利用arduino板的序列埠下指令制ESP-01s,況且在使用wifi通訊時我們也希望模組不要佔用arduino uno的序列埠,把此埠留供除錯與上載程式用。
3.  測試由ESP-01sTCP server,於區網內用手機或電腦下指令控制arduino I/O埠。此模式ESP-01s的角色是WiFi通訊模組,相當於利用arduino uno+ESP8266組成組成和內建WiFi模組板如arduino yun 板一樣的功能,因arduino yun板的價格是uno板的好幾倍。
4.  測試由ESP-01sTCP client,連上網路並把感測的資料(如溫度、濕度等)上傳到網路IoT平台,如Thinkspeak網站。此模式ESP-01s的角色也是WiFi通訊模組。
5. ESP-01sNodeMCU,不用arduino板,只利用ESP-01s連上網路並把感測的資料(如溫度、濕度等)上傳到網路IoT平台,如Thinkspeak網站。此模式ESP-01s的角色是微控器兼WiFi通訊模組。
如果以上都測試成功那就可隨心所欲應用ESP8266晶片當NodeMCU,執行特定功能完成IoT節點的任務,如在MQTT中當一個client角色,執行publish subscribe 的功能。以下就依序說明各項測試。

ESP8266 ESP-01s測試(一)利用USB TTL模組
首先要先了解ESP-01s及各接腳的功能。之前說明過這模組較新,所以不需執行更新,其韌體應是可用的最新版。依下圖將ESP-01sUSB-TTL接好並接好USB線至電腦,win7作業系統可自動偵測到USB-TTL轉接器晶片並自動安裝驅動程式,等驅動程式安裝好就可進行下一步動作。要注意的是USB-TTL的電源是由接至電腦的USB線供應,其 +3v3+5接腳都不要接。ESP-01s的電源由電源供應器供應,注意電壓是+3.3 v,不要接到5vRST接腳可不要接,此接腳是由正到負的下緣觸發晶片重置(reset),所以可以先接出一條下,若需要重置時此線去碰一下GND,之後拿開便可執行重置,此時會見ESP-01s的綠色LED閃一下。另外IO0IO2兩根接腳也先不要接。

在電腦上測試ESP-01sAT 命令要先安裝終端機軟體,我是建議安裝realterm,很適合這項測試工作。在Google搜一下並安裝,安裝好後打開,有三個地方要注意一下,首先到display標籤,改選第二項ansi,如下圖。


接下來選port標籤,因ESP-01s 預設baud rate115200,所以baud rate 選項改成115200


port旁箭號下拉,選到USB-TTLCOM的編號,另外其旁的open按鈕很重要,下壓時表示電腦和USB-TTL建立了連接,再按一下彈開時表示未連接,而每次更改好baud rate後要按此鈕,並看到右下角顯示目前的連線狀況,包括baud rate, parity check, flow control等,要設定ESP-01s要知道如何設定這些參數,稍後會提到。

接下來到send標籤,此項下有兩個輸入框,兩個都可輸入,realterm並會記下已輸入的命令字串,要再用到可以下拉選取,另外有五個check box可勾選EOL,一般勾選前兩個就可以了。這樣就完成realterm的設定,接下來就是進行測試囉!



首先到port標籤把baud rate 改成115200,按下port之後再按一下,見右下角有115200連線的訊息,再到send輸入框,輸入AT,下SendASCII,如果一切順利應可見realterm上部螢幕回應ok,這樣表示一切正常,可進行進一步測試了,如果按送出後沒有反應,請檢查一下兩元件的配線及電源供應是否正確。
常見有人說baud rate設成9600比較穩定,所以我是把baud rate設成9600,如果下AT後有見到回應ok後便可下指令把baud rate 改成9600。以前舊版的指令是AT+UART=<>,<>,<>,<>,<>,等號右邊<>內表示指令的參數,所有AT指令都需是英文大寫,但這指令已被指定成 @deprecated,也就是不建議使用,因不久的下個版本可能此項指令被刪除不再能使用了。新版有關設baud rate 的指令是AT+UART_CUR AT+UART_DEF,兩者的不同在於_CUR只改變目前的狀況,晶片斷電後回復成原來的值,而_DEF則是會將指令寫入使用者定義的韌體區,晶片斷電後重啟設定值依然不變,此版的很多AT指令設定的值可存入韌體,如連接wifi的網路及密碼或是晶片wifi的操作模式是Station (站台)或是softAP(軟體基地台)等,設我們要固定設定要存入韌體,則可下如:
AT+UART_DEF=9600,8,1,0,0
之指令,等號右邊參數,第一項指的baud rate,第二項data bit的數目是幾位元,一般是8位元,第三項是停止位元,一般是設1位元,第四項是配位檢查位元,0表示不檢查,1是奇配位而2是偶位,一般設成0就可以,最後一項是使用CTSRTS的流量控制,一般設成0表示不使用就可以了。執行上述指令後正常的話模組會回ok表示設定成功,這時realterm和模組因baud rate不對所以會斷線,連線速率修改成9600後,再重新按port鈕啟動連接後便可依新速率連線。然後輸入AT+GMR可查看此模組的韌體版本,如下圖



可見是如前述AT version 1.2.0 為Dec 2, 2016,所以算是很新的版本了。
AT 命令很多,請google下列字串便可找到中文簡體字的參考文件,若要找英文版將cn改成en搜索便可。
4a-esp8266_at_instruction_set_cn_v1.5.4_0.pdf

最後說明一下YwRobot電源模組,此模組套在830麵包板上如下圖所示。


網上查到的資料是如下:
麵包板專用電源模組,兼容 5V、3.3V
適用於 MB102 麵包板
輸入電壓:6.5 ~ 12V(直流)或 USB 供電
輸出電壓:3.3V、5V 可切換
最大輸出電流:<700ma
上下兩路兩路獨立控制,可切換為 0V、3.3V、5V
板載兩組3.3V、5V直流輸出插針
一開如就找來外接硬碟盒的電源(12v)接頭插上電源輸入孔,量一下兩組電壓輸出都正常,可是過了幾天在試DHT11溫濕度時,怎麼試都讀不到輸出,最後量電源5v輸出的電壓,我嚇一跳,竟然量到10v的電壓,這樣DHT11應該是燒掉了。那會按呢?再量另一組輸出,設到5v時一樣得到10v,但兩組設到3v時都正常,真奇怪,最後拔掉電源孔的輸入,改接USB輸入,量輸出,3v 5v都正常,看來這個模組是不能用12v的直流當輸入,只能改用5v USB當輸入了。

沒有留言:

張貼留言