esp8266局域網內的TCP通信實驗

本文以esp8266作爲STA,以手機WIFI作爲AP,電腦端用網絡調試助手與esp8266共同連接至手機WIFI並建立TCP連接,操作步驟與我在另一篇博文提到的一致。

下面分別以“esp8266作爲TCP客戶端”和“esp8266作爲TCP服務器”兩種情況進行實驗示範:

準備工具
USB轉TTL、
esp8266模塊、
串口調試助手、
網絡調試助手、

一、esp8266作爲TCP客戶端

1、設置工作模式&連接熱點

通過串口發送AT指令來設置esp8266的工作模式,並連接手機WIFI熱點。
這裏我們設置爲STA模式。(電腦端也記得連上手機熱點)(網線建議拔掉)
初始化配置

2、建立TCP連接

這裏我們讓esp8266作爲TCP客戶端,電腦端的網絡調試助手作爲TCP服務器。
於是,我們要先打開網絡調試助手並建立一個TCP服務器。其中,端口號自行設置,(ip地址的話,軟件會自動根據電腦的WIFI情況幫你填好,無法人爲更改)
網絡調試助手
緊接着,我們將esp8266連接至網絡調試助手建立的服務器上,即建立TCP連接。模塊返回連接成功,同時可以看見網絡調試助手上顯示客戶端上線。(注意ip和端口號填寫正確,否則無法正確連接)
在這裏插入圖片描述

3、進入透傳模式&開始透傳

TCP連接建立之後,就可以進入透傳模式,進行數據傳輸了。
指令發送完成後,當模塊返回>,說明透傳開始,接下來由串口助手發送出的數據將不再被認爲是AT指令,而會被當作是純數據,並通過TCP傳送到網絡助手上。
開始透傳
我們通過串口向網絡調試助手發送“This is a message!”數據,可以看到網絡助手原封不動的收到了數據。由於是透傳模式,此時如果我們發送“AT”,會被當做是數據發送給網絡助手,而並不是指令。

所以,可以看到,網絡助手收到“AT”這個數據,而串口調試助手中,並沒有反饋OK,也沒有將我們發送的“This is a message!”和“AT”顯示出來,再次表明當前是透傳模式。

(同時要注意,從本文開始至此,我們的串口調試助手發送數據時都是勾選“發送新行”的)
開始透傳數據

4、退出透傳

當數據發送完了,不想再發送數據了,則通過發送+++退出透傳模式。此時,請注意,先取消勾選“發送新行”,再發送+++
發送+++發送+++後,可以看見串口助手和網絡助手均無任何反饋,如上圖。

緊接着,我們再次勾選“發送新行”,並通過串口發送AT,可以看到模塊返回OK,說明模塊退出透傳模式,AT被當成了指令而不是數據。如下圖:
成功退出透傳
於是,模塊成功退出透傳模式。至此,我們就完成了TCP通信的簡單實驗。

.
.
.

二、esp8266作爲TCP服務器

下面我們來講解esp8266作爲TCP服務器的情況,相關步驟與上面“esp8266作爲TCP客戶端”時相似,有細微差別。

1、設置工作模式&連接熱點

與上面提到的相同,這裏略過不講。

二、建立TCP連接

這裏我們讓esp8266作爲TCP服務器,電腦端的網絡調試助手作爲TCP客戶端。
所以,這一次網絡調試助手要建立一個TCP客戶端,以便稍後連接至esp8266建立的TCP服務器。

那麼,網絡調試助手的客戶端參數(ip地址和端口號)怎麼設置呢?該設置成多少呢?爲了解決這個問題,我們先不忙着操作我們的網絡助手,先操作esp8266。

通過AT指令,我們設置8266爲多連接模式(因爲我們要讓其作爲服務器,服務器需滿足供多個設備連接的要求,所以是多連接),同時,我們配置8266的端口號(自行定義)。而8266建立的TCP服務器的ip地址,我們通過AT+CIPSTA_CUR?指令查得,返回數據的第一個ip則爲我們要的。
esp8266建立TCP服務器

TCP服務器建立好之後,接下來我們就用網絡助手作爲客戶端連接,客戶端的參數爲8266設置的端口號和其ip。連接成功後,模塊返回CONNECT。
TCP連接建立

3、透傳

8266作爲服務器時,不能開啓透傳模式(並不等於不能透傳),我們需要通過AT+CIPSEND=<>,<>指令完成數據的傳輸,其第一個參數爲ID號,即要發送數據給連接此服務器的第幾個客戶端(注意到CONNECT前的0了嗎?),第二個參數爲數據長度。注意,編號是從0開始的。
透傳
大概就是這樣。

P.S. 類似的,其實在上一個模式,當esp8266作爲客戶端時,也可以使用AT+CIPSEND=<>指令實現透傳(注意此時只有一個參數,即數據長度),由於不用選擇客戶端,所以只有一個參數。

以上就是本實驗的基本內容,再進一步的,與外網建立TCP連接,也是相似的步驟,就不再贅述。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章