esp8266(0) AT指令
http://www.shaoguoji.cn/2017/01/15/ESP8266-usage/
注意事項
使用WiFi模塊的一些細(xì)節(jié)及注意事項
模塊使用3.3V供電,一定注意電源的穩(wěn)定,一些USB轉(zhuǎn)串口模塊電源不能滿足要求。
模塊在連接WiFi后若斷電,則會在下一次上電后自動重連。同理,模塊在透傳模式下斷電后,下次上電仍會進入透傳模式,不響應(yīng)AT指令,很容易誤以為模塊壞了。
如果斷開TCP連接時沒有實現(xiàn)完整的TCP退出流程,ESP8266 會判斷為異常開,對TCP server 進行重連。
AT指令一定以回車換行符”
”結(jié)尾,但退出透傳模式需發(fā)送不帶回車換行的+++
AT指令有三:基礎(chǔ)指令; wifi功能指令; TCP/IP工具箱指令; * 基礎(chǔ)指令; * AT 測試指令 * AT+RST 重啟模塊 * AT+GMR 查看版本信息 * wifi功能指令: * AT+CWMODE 選擇WIFI應(yīng)用模式 * AT+CWJAP 加入AP * AT+CWLAP 列出當(dāng)前可用AP * AT+CWQAP 退出與AP的連接 * AT+CWSAP 設(shè)置AP模式下的參數(shù) * AT+CWLIF 查看已接入設(shè)備的IP * TCP/IP工具箱指令 * AT+ CIPSTATUS 獲得連接狀態(tài) * AT+CIPSTART 建立TCP連接或注冊UDP端口號 * AT+CIPSEND 發(fā)送數(shù)據(jù) * AT+CIPCLOSE 關(guān)閉TCP或UDP * AT+CIFSR 獲取本地IP地址 * AT+CIPMUX 啟動多連接 * AT+CIPSERVER 配置為服務(wù)器 * AT+CIPMODE 設(shè)置模塊傳輸模式 * AT+CIPSTO 設(shè)置服務(wù)器超時時間
1sta模式連接WiFi演示
連接到路由器, arduino 結(jié)尾選擇,
普通串口軟件注意勾選“發(fā)送新行”
發(fā)送AT+CWMODE=1指令配置模塊為sta模式(參數(shù)1,2,3分別對應(yīng)模式sta,AP和sta/AP)。
發(fā)送AT+CWLAP指令掃描當(dāng)前附近WiFi,模塊會返回可用AP列表。
使用AT+CWJAP="WiFi名稱","WiFi密碼"連接到指定的路由器,比如我在圖書館的WiFi是 “lib-free-wlan01”,密碼是“zhku-lib”,實際連接WiFi發(fā)送的指令就是 AT+CWJAP="lib-free-wlan01","zhku-lib"。
返回的“WIFI CONNECTED”說明連接成功,“WIFI GOT IP”代表模塊分配到了IP。
最后可使用AT+CWQAP斷開當(dāng)前連接的WiFi。
2AP模式參數(shù)設(shè)置演示
連完WiFi那接下來就“開WiFi”吧!AP模式和手機開熱點一樣,只需設(shè)置WiFi名稱和密碼即可。
先使用AT+CWMODE=2指令配置模塊為AP模式
發(fā)送AT+CWSAP="ESP8266","12345678",3,4設(shè)置AP的ssid為“ESP8266”,密碼12345678,最后兩個參數(shù)3和4分別表示信道和加密方式。
手機連上模塊的WiFi,使用AT+CWLIF可查看當(dāng)前連接到AP的客戶端列表。
3透傳模式下WiFi模塊與服務(wù)器TCP網(wǎng)絡(luò)通訊演示
| 指令 | 描述 |
|---|---|
| AT+CIPSTATUS | 查詢網(wǎng)絡(luò)連接信息 |
| AT+CIPMUX | 設(shè)置多連接模式 |
| AT+CIPSTART | 建立TCP連接UDP傳輸或者SSL連接 |
| AT+CIPCLOSE | 關(guān)閉TCP/UDP/SSL傳輸 |
| AT+CIPMODE | 設(shè)置透傳模式 |
| AT+CIPSEND | 發(fā)送數(shù)據(jù) |
打開“網(wǎng)絡(luò)調(diào)試助手”,左側(cè)選擇“TCP服務(wù)器”,輸入自定的端口號(1024-65535),點擊“連接”按鈕開始監(jiān)聽本機TCP連接請求。在進行下一步之前,請確保電腦和WiFi模塊連接到同一個路由器。
把WiFi模塊和電腦連接,在sscom確定AT指令能正常使用后,就可以開始配置TCP連接了,具體步驟如下:
根據(jù)上面“sta模式連接WiFi演示”一節(jié)把模塊連上WiFi
輸入指令AT+CIPMUX=0設(shè)置單連接
從“網(wǎng)絡(luò)調(diào)試助手”得知本機IP和端口,輸入指令AT+CIPSTART="TCP","192.168.43.140",1234(指令參數(shù)分別為連接類型、目標(biāo)IP地址和端口號)向服務(wù)器發(fā)起TCP連接請求,握手成功并建立連接后,服務(wù)器端的“網(wǎng)絡(luò)調(diào)試助手”就會顯示客戶端IP和端口信息,此時雙方已做好收發(fā)數(shù)據(jù)的準(zhǔn)備
輸入指令AT+CIPMODE=1開啟透傳模式
輸入命令AT+CIPSEND進入透傳模式,此時模塊會把所有串口收到的數(shù)據(jù)都從TCP端口發(fā)送至服務(wù)器,同樣的,從服務(wù)器收到的數(shù)據(jù)也會從模塊串口發(fā)送出去打印到sscom上。這樣WiFi模塊就真正成為了連接硬件與網(wǎng)絡(luò)的橋梁,實現(xiàn)了串口到TCP的協(xié)議轉(zhuǎn)換
若要退出透傳模式返回AT指令模式,需發(fā)送不帶回車換行的+++(取消勾選sscom的“發(fā)送新行”再發(fā)送指令即可)
手機,ESP8266,電腦無線連接路由器賬戶 dongdong 密碼 dongdong
電腦網(wǎng)線連接路由器 網(wǎng)頁192.168.1.1 查詢路由器當(dāng)前狀態(tài),可看到三個設(shè)備分配的地址
4、手機做客戶端-client,模塊做服務(wù)端-server
http://www.yfrobot.com/thread-11791-1-1.html
AT+CWMODE=2 // 將模塊配置到 AP 模式
AT+CWSAP="YFRobot_ESP","12345678",11,0 // 設(shè)置模塊 AP 模式下的參數(shù)
YFRobot_ESP ---- 接入點名稱
12345678 ---- 密碼
11 ---- 通道號(通道修改后需要+RST重啟模塊)
0 ---- 加密模式0 - OPEN 1 - WEP 2 - WPA_PSK 3 - WPA2_PSK 4 - WPA_WPA2_PSK
AT+RST :復(fù)位
AT+CIFSR :查詢模塊IP端口
AT+CIPMUX=1 :多連接
AT+CIPSERVER=1,6000 :建立服務(wù)器的同時順便設(shè)端口號
注:AT+CIPMUX=1 情況下才能開啟服務(wù)器。
前兩條AT指令,配置一次即可,模塊重啟不會改變,第三條為查詢指令;也就是說當(dāng)模塊下次重啟時,只需配置最后兩條AT指令!
手機連接到該模塊
可用AT指令 查詢已連入的設(shè)備
AT+CWLIF 查詢已連入設(shè)備
192.168.4.2,38:bc:1a:c7:18:47 -- 返回 IP 地址,MAC 地址
手機向ESP8266發(fā)送命令
參數(shù)
0--連接的 id 號 (范圍 0~4)
TCP -- 連接類型
192.168.4.2-- 手機客戶端IP地址
43188- 端口號
1 -- 本模塊做 server 的連接(0 -- client)
ESP8266向手機發(fā)送命令
ESP模塊做為服務(wù)端想要給手機客戶端發(fā)送數(shù)據(jù),必須申請(不然不知道發(fā)給誰了):
原理:
AT+CIPSEND=0,15 申請發(fā)送15個字符數(shù)據(jù) 至 0 號客戶端(客戶端號按連接順命名)
請求成功后,會顯示符號“>”,這時直接發(fā)送已申請大小的數(shù)據(jù)即可:
hello client-0!
注:若輸入數(shù)據(jù)大小大于申請大小,則數(shù)據(jù)不能完整發(fā)送
若輸入數(shù)據(jù)大小小于申請大小,則等待輸入數(shù)據(jù)輸入滿大小才進行發(fā)送
所以需要為單片機寫程序,每次把上述過程,通過串口命令發(fā)送給esp8266,然后由此轉(zhuǎn)發(fā):
這里以Arduino單片機為例;
兩點重要:
1軟串口從esp8266 收到的是亂碼, 重新設(shè)置下波特率就解決了。
AT+UART=9600,8,1,0,0
2 Arduio設(shè)置的波特率實際的2倍。
我們期望 9600, 但是你的設(shè)置成9600*2(見程序),我也不知道為什么這樣,估計是版本和庫文件的問題。
#include <SoftwareSerial.h>
#define DEBUG true
SoftwareSerial esp8266(2,3); // make RX Arduino line is pin 2, make TX Arduino line is pin 3.
// This means that you need to connect the TX line from the esp to the Arduino's pin 2
// and the RX line from the esp to the Arduino's pin 3
void setup()
{
Serial.begin(19200);
esp8266.begin(19200); // your esp's baud rate might be different
sendCommand("AT+CWMODE=2
",2000,DEBUG); // reset module
// delay(20000);
String s="AT+CWSAP="DDD","12345678",11,0
";
sendCommand(s,2000,DEBUG);// reset module
Serial.println("1");
// delay(30000);
sendCommand("AT+RST
",2000,DEBUG); // reset module
delay(3000);
sendCommand("AT+CIPMUX=1
",1000,DEBUG); // configure for multiple connections
// delay(20000);
sendCommand("AT+CIPSERVER=1,6000
",1000,DEBUG); // turn on server on port 80
Serial.println("Server Ready");
}
void loop() { // run over and over
if (esp8266.available()) {
Serial.write(esp8266.read());
}
if (Serial.available()) {
esp8266.write(Serial.read());
}
}
String sendCommand(String command, const int timeout, boolean debug)
{
String response = "";
esp8266.print(command); // send the read character to the esp8266
long int time = millis();
while( (time+timeout) > millis())
{
while(esp8266.available())
{
// The esp has data so display its output to the serial window
char c = esp8266.read(); // read the next character.
response+=c;
}
}
if(debug)
{
Serial.print(response);
}
return response;
}
5、模塊做客戶端-client,手機做服務(wù)端-server
wifi連接不變按照上面的步驟連接即可,然后手機端開啟服務(wù),模塊連接手機!連接完成,即可進行數(shù)據(jù)通信,具體操作如圖:
模塊配置指令如下:
TCP 連接 -----
●單路連接:
AT+CIPMUX=0 單路連接設(shè)置(只有當(dāng)連接都斷開才可更改,可先AT+RST)
AT+CIPSTART="TCP","192.168.4.2",5000 建立 TCP 連接(類型,IP,端口號由手機開啟服務(wù)決定,上圖可見)
AT+CIPSEND=17 申請發(fā)送字符大小,回顯字符 ">"
hello tcp server! 發(fā)送申請大小的字符串
手機端成功接收字符串:“hello tcp server!” 手機發(fā)送字符,ESP也同樣可以接收到!
●多路連接:
AT+CIPMUX=1 多路連接設(shè)置(只有當(dāng)連接都斷開才可更改,可先AT+RST)
AT+CIPSTART=0,"TCP","192.168.4.2",5000 建立 TCP 連接(和單路區(qū)別,需要參數(shù) ID 號,范圍0~4)
AT+CIPSEND=0,17 申請發(fā)送字符大小,回顯字符 ">"
hello tcp server! 發(fā)送申請大小的字符串
手機端成功接收字符串:“hello tcp server!” 手機發(fā)送字符,ESP也同樣可以接收到!
5 一鍵配置原理(smartconfig)
先來說smartconfig吧 也就是所謂的一鍵配置,速度比AP模式快,為什么呢?請看下面分解。
所謂的smartconfig就是
手機APP端發(fā)送包含WIFI 用戶名 WIFI密碼的 UDP 廣播包或者組播包,
智能終端的WIFI芯片可以接收到該UDP包,只要知道UDP的組織形式,就可以通過接收到的UDP包解密 出WIFI 用戶名 密碼,
然后智能硬件 配置受到的WIFI 用戶名 密碼到指定的WIFI AP 上。
6 WIFI修改波特率
AT+UART=4800,8,1,0,0
其他常用指令
除了上面列舉的主要功能指令,ESP8266 模塊還有一些常用的指令:
AT+CIOBAUD指令用于設(shè)置串口波特率,示例:AT+CIOBAUD=9600(設(shè)置波特率為9600)。 設(shè)置好TCP連接信息后通過AT+SAVETRANSLINK指令把TCP連接透傳保存到Flash,掉電不丟失。重新上電后模塊會自動聯(lián)網(wǎng)建立TCP連接后進入透傳模式,實現(xiàn)了真正意義上的透傳,示例:AT+SAVETRANSLINK=1,"192.168.43.140",1234,"TCP"。而AT+CWSTARTSMART和AT+CWSTOPSMART則時用來實現(xiàn)智能配置(Smart Config)的。
| 指令 | 描述 |
|---|---|
| AT+CIOBAUD | 設(shè)置串口波特率 |
| AT+SAVETRANSLINK | 保存透傳到 Flash |
| AT+CWSTARTSMART | 開啟 SmartConfig |
| AT+CWSTOPSMART | 停止 SmartConfig |
總結(jié)
以上是生活随笔為你收集整理的esp8266(0) AT指令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAXB 实现java对象与xml之间互
- 下一篇: VPS性能测试(3):磁盘IO读写速度、