13-ESP8266
ESP8266 是一個超便宜的 wifi 晶片
ESP8266 有分成一大堆 ESP01 ~ ESP12..,晶片是樂鑫出的,這些不同型號是由 ai-thinker 製造的,依照不同用途有不同的規格
且不一樣的型號還有不同的 flash size,可以看板子上面的 flash 晶片有寫(看到脫窗就會看到上面的字了),為什麼要注意 flash size 呢?會影響韌體可以更新的版本,ESP01 黑色的(上)是新版 flash size 會比較大喔!我的是藍色的是舊版的
ESP01接腳
圖中的GND代表 Ground,即電源負極接腳。VCC則代表電源正極接腳。ESP8266需要 3.3V (可接受範圍1.7~3.6V)的電源輸入,若使用 5V電源會把它燒毀!要特別注意的是,ESP8266的電流消耗可達200~300mA,電源必須能提供足夠的電流,以確保它正常運作。圖中的UTXD 和 URXD,是主要用來與電腦連接通訊的兩個接腳,TX表示它是用來發送訊號,RX則表示它是用來接收訊號。
要特別注意的是,你所買到的 ESP8266中所安裝的韌體是哪一個版本的。對於較舊的版本,他們的 Baud Rate一般是設置為 115200 或 57600,只有最新版(通常需要手動更新)的韌體(版本0018000902)的預設 Baud Rate才會是9600。所以,我們就必須拿這幾個數值去嘗試,看看能否與 ESP8266通訊。
打造居家空氣監測系統(Part 1)---刷 ESP8266 韌體 (AT V1.5.4)
https://wayworkshop.blogspot.com/2016/06/part-1-esp8266-at-v154.html
(2017/01/21測試新購買esp-01
第一次使用的相關資訊,_
參考資料
http://lets-make-games.blogspot.tw/2015/04/wifi-esp8266-wifi.html
http://ruten-proteus.blogspot.tw/2014/12/esp8266-at-command.html
http://ruten-proteus.blogspot.tw/2014/12/esp8266-firmware-burning.html
以下資料取自http://lets-make-games.blogspot.tw/2015/04/wifi-esp8266-wifi.html
(三)透過指令(AT Command)去操作 ESP8266
如我前面所述,當 ESP8266完成韌體更新之後,它的 Baud Rate就會自動變成 9600。因此接下來我們要重新與 ESP8266連接時,就需要使用 9600的 Baud Rate設定去與它連接。
我們一樣可以先使用 Realterm軟體,輸入「AT」與「AT+GMR」這兩個基本指令去測試它。
測試成功後,我們可以繼續用其他指令,來測試 ESP8266的核心網路功能。
以下會先把 ESP8266進行網路連線的流程和概念介紹一遍。實際的操作範例會放在最後面。
Wifi連線
首先,我們必須想辦法讓 ESP8266連進行 Wifi連線。
ESP8266的Wifi連線有三種模式:
Station模式:扮演連線到現有Wifi的裝置。
AP模式:扮演無線基地台,提供Wifi環境供連線。
Station+AP混合模式:允許同時使用以上兩種模式的特有功能。
透過以下的指令,我們就可以設定或取得目前Wifi連線模式:
指令「AT+CWMODE」
「AT+CWMODE?」查詢當前模式
「AT+CWMODE=2」將模式設定為第2種(AP模式)。
我們最好先把 ESP8266設定到我們想要的模式,再使用其他的指令來連線。因為,有些指令只能在特定的模式中使用,使用指令時必須特別注意。
首先,我把模式設定成「1. Station模式」。讓 ESP8266去連接現有的 Wifi網路。那麼,我們要怎麼知道有哪些現有的網路可供連線呢?
這時我們就要使用以下指令:
指令「AT+CWLAP」
顯示可連線的Wifi網路清單。
知道有哪些網路之後,我們就可以選一個 Wifi網路來連線了。要進行連線必須使用以下指令:
指令「AT+CWJAP」
「AT+CWJAP=<SSID>,<Password>」連線到已存在的無線網路。
「AT+CWJAP?」查詢已連線到的無線網路。
<SSID>:無線網路的識別名稱(要加雙引號)。
<Password>:無線網路的密碼(要加雙引號)。
如果需要切斷 Wifi連線,我們可以也可使用這個指令:
指令「AT+CWQAP」
切斷已連線的無線網路。
與目標裝置連線
雖然 ESP8266 已經連線到 Wifi,但是如果 ESP8266要跟同一個 Wifi中的其他裝置通訊,就必須要再跟該裝置建立 Socket連線。
ESP8266有兩種跟裝置建立 Socket連線的方式:
由 ESP8266扮演伺服器,等候其他裝置(客戶端)來與自己連接。
由其他裝置扮演伺服器,由 ESP8266(扮演客戶端)去主動連接該伺服器。
這兩種不同的方式,適合不同的情況,各有利弊。
一般來說,伺服器扮演的是類似店家的角色,必須經常保持待命,不可以隨便從Wifi中離線,否則客戶端就會找不到伺服器。所以我們必須評估連線的兩端,誰比較適合當伺服器或客戶端。或者連線的兩方都扮演客戶端,而讓第三方扮演伺服器,作為兩客戶端之間的橋梁,為他們轉送資訊。
當然,如果你只是要做個自己玩的玩具,想讓手機和遙控車一對一連線,那其實選哪個都可以,丟銅板隨便選一個就好。
要特別注意的是,如果要讓 ESP8266進入伺服器模式,必須先進行「多重連線」的設定。這個設定會影響 ESP8266是否能夠進行一對多的連線。而只有當「多重連線」被設定為開啟,ESP8266才能夠進入伺服器模式。
指令「AT+CIPMUX」
「AT+CIPMUX?」查詢目前的設定值
「AT+CIPMUX=1」允許一對多的多重連線。
「AT+CIPMUX=0」關閉多重連線,只能一對一連線。此時無法進入伺服器模式。
現在,我們可以來決定要讓 ESP8266扮演伺服器或客戶端了。
如果要讓 ESP8266扮演伺服器,等候客戶端的連線,我們需要使用以下指令:
※注意:這裡的 Port和文章前半段所說的 Port是不同的東西。前面提到的 Port是「序列埠」(Serial Prot 或 COM Port),而此處的 Prot是「網路連接埠」(TCP/UDP Port)。
如果要讓 ESP8266扮演客戶端,對伺服器進行連線,我們需要使用以下指令:
指令「AT+CIPSTART」
「AT+CIPSTART=?」查詢目前已經建立的連線資訊。
「AT+CIPSTART =<type>,<addr>,<port>」建立連線,只適用於CIPMUX=0的情況。
「AT+CIPSTART=<id>,<type>,<addr>,<port>」建立連線,只適用於CIPMUX=1的情況。
<id>:範圍 0~4。推測最多可以連線到5台伺服器,這是用來代表此連線的代號。
<type>:連線類型,可為"TCP"或"UDP"(要加引號)。
<addr>:連線的 IP位址,如"192.168.43.31"(要加引號)。
<port>:伺服器接受連線的連接埠(Port)號碼(這個不用加引號)。
如果我們讓 ESP8266扮演伺服器,那麼我們必須知道 ESP8266的 IP位址,如此其他裝置才能根據這個 IP與 ESP8266連線。透過這個指令,我們就可以查詢到 ESP8266的 IP位址。
指令「AT+CIFSR」
顯示 ESP8266自己目前的 IP位址。
一旦連線建立之後,我們就可以透過以下指令傳送訊息:
指令「AT+CIPSEND」
「AT+CIPSEND=<length>」只適用於 CIPMUX=0 的情況。
「AT+CIPSEND=<id>,<length>」只適用於 CIPMUX=1 的情況。
<id>:在多重連線的情況下,需要輸入連線的代號,ESP8266才會知道要把訊息發送給哪一條連線。
<length>要發送的訊息長度。等到此指令發送出去之後,會出現「>」符號在螢幕,這時就可以輸入符合訊息長度的訊息。
最後如果要中斷連線,則可以使用以下指令:
指令「AT+CIPCLOSE」
「AT+CIPCLOSE=<id>」中斷指定的連線。適用於 CIPMUX=1 的情況
「AT+CIPCLOSE」中斷連線。適用於 CIPMUX=0 的情況
<id>:要中斷的連線代號。
實際操作範例
以下我使用更新過韌體,Baud Rate為9600的 ESP8266進行操作。
首先我輸入「AT」和「AT+GMR」指令進行測試,並得到以下的結果:
接著,我想將 ESP8266連線到我的 Wifi「commandship」。
我先把的 Wifi連線模式設為 Station模式:
AT+CWMODE=1
由於我之前已經將它的模式設定為1了 (它在斷電重開後仍然會保留設定),因此得到的回應為「No Change」:
列出目前的Wifi清單:
AT+CWLAP
回應:
在這串裡面,我們看到共有四個Wifi被找到,而其中就有我要找的 Wifi:"commandship"。
現在,就要來與它連線了。
指令與回應:
AT+CWJAP="commandship","123456789"
OK
現在我們成功連線到 Wifi了。
接著,我要把「多重連線」打開,並讓 ESP8266進入伺服器模式,等候其他裝置與它連線:
AT+CIPMUX=1
OK
AT+CIPSERVER=1,8087
OK
好了,現在 ESP8266已經進入伺服器模式了。接著我們還需要知道它的 IP,這樣別的裝置才能透過這個 IP與它連線通訊:
AT+CIFSR
192.168.43.45
OK
接著我們需要準備另一個連到同一個 Wifi的裝置,去跟 ESP8266連線通訊。我決定使用我自己的筆記型電腦,讓它也連到 Wifi:"commandship"。這樣一來,我的筆電就可以與 ESP8266通訊了。