專題文章:
ESP8266模塊,STA模式(與電腦搭建TCP通訊,ESP8266為客戶端)
ESP8266模塊,STA模式(與電腦搭建TCP通訊,ESP8266為服務(wù)端)
ESP8266模塊,SoftAP模式(與電腦搭建TCP通訊,ESP8266為客戶端)
ESP8266模塊,SoftAP模式(與電腦搭建TCP通訊,ESP8266為服務(wù)端) ??☆
ESP8266模塊,STA模式(與手機搭建TCP通訊,ESP8266為客戶端)
ESP8266模塊,STA模式(與手機搭建TCP通訊,ESP8266為服務(wù)端)
ESP8266模塊,SoftAP模式(與手機搭建TCP通訊,ESP8266為客戶端)
ESP8266模塊,SoftAP模式(與手機搭建TCP通訊,ESP8266為服務(wù)端)
前言
??全文篇幅過于冗長,建議讀者可先跳轉(zhuǎn)至第4段落,完成本次實驗(文章標題),達到實驗結(jié)果后,如有不解疑惑,即可返回查閱前文,是本人學習過程中困惑點,經(jīng)過學習解答的一點見解,或許能幫助解答你的一點疑惑。
進入正文:
1、效果演示
如圖:
(
ps:
??圖片中有兩個窗口,
??左側(cè)窗口是 ESP8266 調(diào)試串口,此時充當著 TCP 通訊中的 服務(wù)端;
??右側(cè)窗口是 網(wǎng)絡(luò)調(diào)試助手窗口,本次實驗中的電腦設(shè)備窗口,充當著 TCP 通訊中的 客戶端。
??左側(cè)窗口的藍色方框內(nèi)的信息是,客戶端 電腦發(fā)送給 服務(wù)端 ESP8266 的信息
??右側(cè)窗口的綠色方框內(nèi)的信息是,服務(wù)端 ESP8266 發(fā)送給 客戶端 電腦的信息
)
2、 實驗?zāi)康?/h2>
☆??將ESP8266模塊配置為SoftAP模式(AP)、服務(wù)端。并且搭建TCP通訊,與PC實現(xiàn)通訊功能 。
(ps:PC:Personal Computer。譯:個人電腦)
3、指令
3.1 本實驗相關(guān)指令
配置ESP8266為Station模式時,需要的用到的相關(guān)指令:
AT指令 | 響應(yīng)(也就是返回值) |
---|---|
AT | OK |
ATE<mode> | OK |
AT+CWMODE=<mode> | OK |
AT+CWSAP=<ssid>,<pwd>,<chl>,<ecn> | OK |
AT+CIPMUX=<mode> | OK |
AT+CIPSERVER=<mode>[,<port>] | OK |
AT+CIPSEND=<link ID>,<length> | > |
AT+CWSAP? | OK(查詢 ESP8266 SoftAP 的配置參數(shù)) |
AT+CIFSR | OK(查詢 ESP8266 模塊本地 IP 地址) |
AT+CWLIF | OK(查詢連接到 ESP8266 SoftAP 的 Station 信息) |
AT+RST | ready |
ps:只有配置正常沒有錯誤時,才會出現(xiàn)如上表中的響應(yīng)(即窗口彈出的返回值)
3.2 學習指令的方法
??下面,我將先詳細跟大家分享一下,我是如何從芯片數(shù)據(jù)手冊中,了解相關(guān)指令作用的,然后讀者照著思路去翻閱其余指令即可。表中剩余的相關(guān)指令,我會按照以我的理解闡述,因為目的在于能夠理解并使用,所以有時不會拘束于專業(yè)術(shù)語,對此不要過于糾結(jié)了,如有出錯點,希望讀者指出,一同進步!
見下表:
閱讀表中信息可知,有關(guān)AT+CWSAP指令有兩類,一類是查詢指令,另一類是設(shè)置指令。下面分別對這兩種指令進行實驗。
① 按照指令表所給指令,向ESP8266模塊發(fā)送指令(就是往調(diào)試窗口 發(fā)送指令):
AT+CWSAP? |
觀察表中紅色方框信息可知,該指令是查詢指令,功能是 “ 查詢 ESP8266 SoftAP 的配置參數(shù)。”
(ps:這句話需要注意的信息:ESP8266 SoftAP“表明已經(jīng)將ESP8266設(shè)置為 SoftAP 模式)
響應(yīng)(即窗口返回的信息)為:+CWSAP:<ssid>,<pwd>,<chl>,<ecn>,<max conn>,<ssid hidden>
??????????????OK
下圖是我往調(diào)試窗口發(fā)送查詢指令以及返回的參數(shù)值(響應(yīng)),根據(jù)截圖對比著表中信息來逐一了解。
觀察發(fā)現(xiàn),當我們發(fā)送查詢指令時,窗口就如期而至的彈出“一批數(shù)據(jù)”,并且數(shù)據(jù)與指令表的格式一一對應(yīng),固定的信息“+CWSAP :?” ?我就不加以闡述,下面我們來對比著參數(shù),一一了解:
?? <ssid>? → 參數(shù)① “MY_ESP”?:該參數(shù)表示的是熱點的名稱。
例:當前 ESP8266 模塊處于 SoftAP 模式提供的熱點的名稱為?“MY_ESP”。
??<pwd> → 參數(shù)② “12345677”?:該參數(shù)表示的是熱點的密碼。
例:當前 ESP8266 模塊處于 SoftAP 模式提供的 WIFI熱點的密碼 為“12345678”
<channel> → 參數(shù)③ “1”?:該參數(shù)表示的是網(wǎng)絡(luò)通道號。
此處我也不甚了解,故不加以說明
??<rssi> → 參數(shù)④ “3”?:該參數(shù)表示的是加密方式。
不甚了解,不加以說明
??<rssi> → 參數(shù)⑤ “4”?:該參數(shù)表示的是允許多少臺設(shè)備接入熱點。
例:此處我設(shè)置最多允許4臺設(shè)備接入 ESP8266 提供的 WIFI 熱點
??<rssi> → 參數(shù)⑥ “0”?:該參數(shù)表示的是開啟廣播SSID。
牽扯到通訊方面的知識,若想了解自行深入,此處必須打開廣播,以免通訊故障
??以上便是發(fā)送 查詢指令 時返回的各個參數(shù)代表的含義。
(ps:? “→”? ? 表示? “對應(yīng)” 關(guān)系)
下面我們按照這種思路來繼續(xù)解讀“ 設(shè)置指令 ”。
② 向調(diào)試窗口 發(fā)送(就是向 ESP8266模塊發(fā)送指令)指令:
AT+CWSAP="MY_ESP","12345678",1,3,4,0 |
下圖是實踐的截圖,
查閱表中信息得知:
該 設(shè)置指令 格式為:AT+CWSAP=<ssid>,<pwd>,<chl>,<ecn>[,<max conn>][,<ssid hidden>]。功能是設(shè)置 ESP8266 WIFI 的信息,其中最后兩個參數(shù)可設(shè)置也可以不設(shè)置。其中參數(shù),
<ssid> 表示 WIFI 熱點的名稱。
例:我將處于 " SoftAP " 模式下的 ESP8266 提供的 WIFI 熱點名稱,設(shè)置為 “MY_ESP”。
<pwd> 表示 WIFI 熱點的接入密碼,最?為64 字節(jié)。
例:我將處于 " SoftAP " 模式下的 ESP8266 提供的熱點密碼,設(shè)置為“12345678”
<chl> 表示網(wǎng)絡(luò)通道號。
例:我將處于 " SoftAP " 模式下的 ESP8266 的通道號為通道1
<ecn> 表示加密方式。
例:我將處于 " SoftAP " 模式下的 ESP8266 的加密方式,設(shè)置為加密方式3,不同的加密方式具體作用區(qū)別是什么,我也不清楚
<max conn> 表示最多允許多少臺設(shè)備接入熱點,該參數(shù)發(fā)送指令時可算進去,不算進去也可以。
例:我將處于 " SoftAP " 模式下的 ESP8266 能接入的設(shè)備數(shù)量,設(shè)置最多允許4臺設(shè)備接入熱點
<ssid hidden> 表示是否開啟廣播SSID。
例:我將處于 " SoftAP " 模式下的 ESP8266,設(shè)置為開啟廣播SSID。默認設(shè)置是開啟廣播的,建議不要關(guān)閉廣播,否則可能會對設(shè)備之間的通訊有影響
以上便是對指令 “AT + CWSAP” 的相關(guān)知識的學習,其他的指令也可以參照此過程,試驗一下,其他指令我將只大致闡述其作用。
3.3 指令用途和說明
??根據(jù)上面一條詳細指令的學習,我們需要知道有一個意識,就是設(shè)置指令和查詢指令,在格式上只是個別的不同,如“xxx?”是查詢指令。而相同的“xxx=”便是設(shè)置指令了。下面我會在兼有這兩種指令的旁邊標記“☆☆☆”,事后可以自己調(diào)試時試試看。
AT |
說明:用來確認是否與模塊達成通訊的。
用途:無特別功能用處。
ATE |
說明:該指令用于是否“回顯”自己發(fā)送的指令命令。
用途:發(fā)送指令“ATE0”,關(guān)閉回顯。這時發(fā)送指令時,串口軟件只會顯示響應(yīng)信息,不會顯示發(fā)送的指令;
發(fā)送“ATE1”,開啟回顯。這時發(fā)送指令時,串口軟件即會顯示響應(yīng)信息,也會顯示發(fā)送的指令信息。
AT+CWMODE ?????????☆☆☆ |
說明:該指令用于配置或查詢ESP8266模塊的工作模式(共三種模式)。
用途:發(fā)送指令“AT+CWMODE=1”,設(shè)置模塊為Station模式,該模式下ESP8266是需要連接其他熱點的設(shè)備,本身不是熱點;
???發(fā)送指令“AT+CWMODE=2”,設(shè)置模塊為SoftAP模式,該模式下ESP8266模塊自身便是一個熱點,等待其他設(shè)備的接入,注意兩種模式的區(qū)別(就是連接與被連接的區(qū)別);
???發(fā)送指令“AT+CWMODE=3”,設(shè)置模塊為SoftAP+Station模式,該模式下ESP8266模塊既可以是Station站點(接入其他熱點),也可以是SoftAP接入點(WIFI),本次實驗設(shè)置ESP8266為模式1,Station站點模式,接入電腦的熱點。
tip:“AT+CWMODE?”為查詢指令,查詢當前ESP8266處于什么模式。
AT+CWSAP?????????☆☆☆ |
說明:用來設(shè)置 ESP8266 自身 WIFI 熱點信息,或用來查詢 ESP8266 自身 WIFI 熱點信息的。
用途:具體用途已經(jīng)在上面詳細例子中總結(jié)完畢,此處便不多加贅述。
tip:“AT+CWSAP?”為查詢指令,查詢當前 ESP8266 自身 WIFI 熱點的信息。
AT+CIPMUX?????????☆☆☆ |
說明: 建? TCP 、UDP 或 SSL 連接時,設(shè)置模塊的連接模式(單連接模式或多連接模式)。
用途: 發(fā)送指令“AT+CIPMUX=0”,設(shè)置模塊為單連接模式;
????發(fā)送指令“AT+CIPMUX=1”,設(shè)置模塊為多連接模式。
注意:ESP8266不同模式下,設(shè)置為什么樣的連接模式,可能會對具體的實現(xiàn)功能有影響,比如 Station 模式下,只能設(shè)置為單連接模式,才能連接上WIFI熱點,設(shè)置為多連接模式時是連接不上熱點的(個人理解便是一個模塊不能連接多個熱點吧,得專一,所以只能是單連接模式)。而SoftAP模式下,可以設(shè)置為多連接模式,這時 ESP8266 作為WIFI熱點,可以被多個設(shè)備連接。
tip:“AT+CIPMUX?”為查詢指令,查詢當前ESP8266處于什么連接模式。
AT+CIPSERVER |
說明: ESP8266 處于工作模式2,其他設(shè)備連接上 ESP8266 提供的熱點時,如需要進一步搭建TCP 通訊,此時可將 ESP8266 模塊設(shè)置為服務(wù)端,而開啟或關(guān)閉服務(wù)端便是通過該指令實現(xiàn)的。但是開啟服務(wù)端有一個前提條件,那就是必須是在多連接模式 (AT+CIPMUX=1)下,才能開啟 TCP 服務(wù)器。
用途: 單連接模式時,該指令無意義且報錯error。
???多連接模式時,發(fā)送指令AT+CIPSERVER=1,8088”,參數(shù)1取值范圍 [0,1] ,0表示關(guān)閉服務(wù)器,1表示建立服務(wù)器;參數(shù)2表示端口號,可自行設(shè)定,但是避免常用的端口號,如8080等。例:此處我設(shè)置為:建立服務(wù)器,并且端口值設(shè)置為8088
AT+CIPSEND |
說明:搭建好通訊時,發(fā)送信息的作用
用途: 單連接模式時發(fā)送指令“AT+CIPSEND=<length>”表示一次發(fā)送length個字節(jié);
????多連接模式時發(fā)送指令“AT+CIPSEND=<link ID>,<length>”表示向指定的設(shè)備一次發(fā)送length個字節(jié)。
例:" AT+CIPSEND=0,16 "表示向第一臺接入的設(shè)備發(fā)送16個字節(jié)的信息
以上是普通傳輸模式下,每一次傳輸信息時需要進行的操作。ESP8266只會發(fā)送指定好的字節(jié)數(shù),超出的將不發(fā)送出去。
????透傳模式時發(fā)送指令“AT+CIPSEND”表示進入信息透傳功能,此時發(fā)送信息前不用再發(fā)指令,不管發(fā)什么都將被認為是信息發(fā)送出去,包括指令也將被認為是信息而發(fā)送出去,如果需要重新恢復(fù)指令的作用,得先退出“透傳模式”,具體操作在下文的實驗配置中有解說,此處不加以贅述。
AT+CIFSR |
說明: 查詢ESP8266模塊的本地IP地址和物理地址,①當ESP8266為Station模式,連接上WIFI熱點時,發(fā)送該指令可以查詢ESP8266模塊分配到的IP地址和物理地址;②當ESP8266為SoftAP模式時,發(fā)送該指令可以查詢ESP8266此時的IP地址和物理地址。(注:一般設(shè)備都只有唯一的一個物理地址。)
用途:發(fā)送指令“AT+CIFSR”模塊ESP8266將返回自己當前模式下分配到的IP地址和物理地址。
AT+CWLIF |
說明:用來查詢接入 ESP8266 模塊提供熱點的設(shè)備的IP地址。
用途:發(fā)送指令“ AT+CWLIF ”時,返回的參數(shù)有,接入設(shè)備的 IP 地址 和 MAC 地址(物理地址)。
AT+RST |
說明:令ESP8266模塊復(fù)位重啟。
用途:發(fā)送指令“AT+RST”,模塊重新啟動。
4、配置并且搭建TCP通訊
4.1 準備工作 :
????① ESP8266 模塊
????②一個 USB 轉(zhuǎn) TTL 的轉(zhuǎn)串口設(shè)備;
????③兩種串口軟件,一個 串口調(diào)試軟件 ,用來調(diào)試 ESP8266 模塊;一個 網(wǎng)絡(luò)調(diào)試助手 軟件,用來搭建TCP 客戶端;
ESP8266 與 轉(zhuǎn)串口設(shè)備連接圖如下:
實物圖如下,可照著線的顏色比對比對:
將轉(zhuǎn)串口設(shè)備接入電腦USB口,打開設(shè)備管理器出現(xiàn)該端口說明識別成功 (而后用調(diào)試窗口選擇該端口時,便能和 ESP8266 通訊了。)
準備工作完成,接下來開始配置 ESP8266 模塊,讓電腦連接上ESP8266模塊提供的熱點,并且搭建TCP通訊.。
4.2 配置 ESP8266
第一步:與 ESP8266 達成通訊
????〇打開串口調(diào)試軟件
????①選擇USB識別到的端口
????②打開串口
????③發(fā)送" AT "指令
如下圖所示,窗口響應(yīng)OK,證明此時調(diào)試助手軟件已成功與 ESP8266 模塊達成通訊。
第二步:設(shè)置 ESP8266 模塊為 SoftAP 模式(CWMODE = 2)
????① 設(shè)置前可先查詢一下當前模式,發(fā)送" AT+CWMODE? “指令,藍色方框所示
????② 發(fā)送” AT+CWMODE = 2 "指令,設(shè)置 ESP8266 工作模式為模式2,紅色方框所示。
??配置好這一步,處于 SoftAP 狀態(tài)的 ESP8266 模塊,本身充當著 WIFI的角色,為其他設(shè)備提供熱點,也稱為 AP (接入點)。
??下一步我們將配置 ESP8266 這個模塊提供的 WIFI 信息 。大家可以理解為我們平常手機開熱點給小伙伴連接時,為了不讓無關(guān)人員連接進來蹭流量,也為了與其他的 WIFI 熱點識別開,因此設(shè)置屬于自己的 WIFI 熱點名稱和密碼。同樣的我們接下來也對 ESP8266 模塊提供的 WIFI 熱點進行這樣的操作。
第三步:設(shè)置WIFI信息
????① 設(shè)置前可先查詢一下當前模式,發(fā)送 " AT+CWSAP? “ 指令
????② 發(fā)送” AT+CWSAP=“MY_ESP”,“12345678”,1,3,4,0 " 指令,設(shè)置 ESP8266 的 WIFI 信息
(因為我已經(jīng)將模塊 WIFI 信息設(shè)置好了,所以查詢時的 WIFI 信息如圖所示,默認配置的 WIFI 信息是不一樣的,我懶得恢復(fù)出產(chǎn)設(shè)置了,因此給讀者提個醒。)
??這時我們已經(jīng)將 ESP8266 模塊提供的 WIFI 信息設(shè)置為:WIFI 熱點名稱為“MY_ESP”,密碼為“12345678”,通道號為1,加密方式3,最多允許 4 個設(shè)備接入,開啟 SSID 廣播。
第四步,連接 ESP8266 的熱點
??我們打開電腦的 WIFI 熱點識別,便會出現(xiàn)一個 “MY_ESP” 的 WIFI 熱點,這時候想平常一樣連接熱點,點擊輸入密碼即可連接上熱點了。
??成功接入熱點后,下面我們便要開始著手搭建 ESP8266 模塊和電腦之間的 TCP 通訊了。
這里簡單闡述一下,電腦連上 ESP8266 模塊提供的熱點后,便與 ESP8266 模塊組成了一個局域網(wǎng),為電腦提供熱點的ESP8266 在這個局域網(wǎng)中扮演著類似路由器的角色。電腦想要和 ESP8266 達成TCP通訊,必須得知道 ESP8266 模塊在這個局域網(wǎng)內(nèi)的IP地址,而且對于電腦來說,ESP8266 的 IP 地址也就是網(wǎng)關(guān) IP 地址(二者是一樣的),如何獲取 ESP8266 的 IP 地址,或者說如何知道 ESP8266 的網(wǎng)關(guān)地址,以下為大家提供兩種方法:
方法一 :發(fā)送 " AT+CIFSR? " 指令獲?。?/p>
方法二 :在電腦中查看電腦在該局域網(wǎng)中的網(wǎng)關(guān)地址:
①在電腦鍵盤上按,WIN + R,彈出運行框(左側(cè)圖),輸入“cmd”,點擊確定(或者回車鍵),便會彈出一個指令框(右側(cè))。
②在指令框中輸入"ipconfig/all",然后按下回車鍵,便會彈出一堆信息。
??找到無線局域網(wǎng)的區(qū)域,其中紅色方框的便是該局域網(wǎng)中電腦的 IP 地址和 MAC 地址;綠色方框的便是該局域網(wǎng)中的網(wǎng)關(guān)地址,也就是 ESP8266 的IP 地址了。
現(xiàn)在,知道了 ESP8266 的IP地址,就可以開始搭建 ESP8266 與電腦之間的TCP通訊了。
第五步:設(shè)置 ESP8266 模塊為多連接模式(CIPMUX=1)。
????① 發(fā)送" AT+CIPMUX=1 " 指令。
(注意:這一步必須設(shè)置為多連接模式。單連接模式時,下一步是開啟不了 ESP8266 模塊的 服務(wù)器 的 。)
第六步:開啟 ESP8266 模塊的 服務(wù)器(CIPSERVER = 1)。
????① 發(fā)送" AT+CIPSERVER=1,8088 " 指令,開啟 ESP8266 的 服務(wù)器,并且設(shè)置端口值為8088。
??至此,對于 TCP 通訊,ESP8266 模塊的配置工作已經(jīng)完成,接下來我們將配置電腦方面,讓 客戶端 電腦連接上 服務(wù)端 ESP8266 模塊,實現(xiàn) TCP 通訊。
4.3 搭建 TCP 通訊
第一步,打開網(wǎng)絡(luò)調(diào)試助手,搭建TCP通訊的服務(wù)端:
????①選好協(xié)議類型;
????②填寫上遠程主機地址(就是 ESP8266 的 IP 地址);
????③填寫上遠程主機端口(注:默認端口值是333,但是前面我們已經(jīng)將端口值配置為 8088,該端口值可自由分配填寫,但是要避免一些特殊端口);
????④點擊打開,就能連接上服務(wù)端開始通訊了;
以下是兩個設(shè)備之間的通訊頁面:
至此,ESP8266 與 電腦已經(jīng)形成了 TCP通訊。本次實驗, 完成 !
綜上, ESP8266服務(wù)端 已經(jīng)與電腦 客戶端 達成了通訊。但是在信息傳遞上還有幾個要點:
??此時 ESP8266 在 TCP 通訊中是服務(wù)端,而電腦是客戶端。
由于服務(wù)端 ESP8266 是多連接模式,因此不能開啟透傳模式。所以服務(wù)端 ESP8266 每次想要向客戶端發(fā)送消息只能使用非透傳模式。
非透傳模式:
單連接模式,
??發(fā)送信息前,得發(fā)送指令 " AT+CIPSEND=“多少個字節(jié)” " 。*
例: " AT+CIPSEND=5 " ,就是發(fā)送5個字節(jié)的信息*文章來源:http://www.zghlxwxcb.cn/news/detail-764199.html
多連接模式,
??發(fā)送信息前,得發(fā)送指令 " AT+CIPSEND=“參數(shù)1”,“參數(shù)2” “,其中參數(shù)1表示接入的設(shè)備,每一臺接入的設(shè)備標記加1,從0開始。如電腦A接入后電腦A設(shè)備標記為0。如果還有電腦B也接入,則電腦B設(shè)備標記為1。參數(shù)2,表示要發(fā)送多少個字節(jié)數(shù)
例:” AT+CIPSEND=0,10 " 表示向 ‘0’ 設(shè)備發(fā)送10字節(jié)的數(shù)據(jù)。
優(yōu)點:
??發(fā)送指令不會被當做信息發(fā)送出去。
缺點:
??每次發(fā)送信息前都得發(fā)送指令 " AT+CIPSEND=“多少個字節(jié)” " ,并且要算自己發(fā)送的數(shù)據(jù)需要多少個字節(jié)。發(fā)送的字節(jié)數(shù)過多,發(fā)送數(shù)據(jù)不完全,發(fā)送到自己設(shè)定的字節(jié)數(shù)便截止不再發(fā)送;
發(fā)送的字節(jié)數(shù)過少,發(fā)完會接著從頭繼續(xù)發(fā)送,直到發(fā)送的數(shù)據(jù)達到自己設(shè)定的字節(jié)數(shù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-764199.html
到了這里,關(guān)于ESP8266模塊,SoftAP模式(與電腦搭建TCP通訊,ESP8266為服務(wù)端)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!