ESP8266是一款超低功耗的UART-WiFi 透傳模塊,擁有業(yè)內(nèi)極富競爭力的封裝尺寸和超低能耗技術(shù),專為移動設(shè)備和物聯(lián)網(wǎng)應(yīng)用設(shè)計(jì),可將用戶的物理設(shè)備連接到Wi-Fi 無線網(wǎng)絡(luò)上,進(jìn)行互聯(lián)網(wǎng)或局域網(wǎng)通信,實(shí)現(xiàn)聯(lián)網(wǎng)功能。
雖然“WiFi門鎖”一直拖著還沒弄好,但WiFi模塊卻玩了很久。是時(shí)候介紹下ESP8266的基本使用和配置了。
內(nèi)容簡介
讓硬件聯(lián)網(wǎng)一直以來都是比較麻煩的事情,而通過使用 ESP8266 這款WiFi模塊,僅需要通過串口使用AT指令控制,就能滿足大部分的網(wǎng)絡(luò)功能需求。本文通過簡單介紹及應(yīng)用實(shí)例,讓剛接觸WiFi模塊的讀者了解模塊的大致使用方法。
ESP8266簡介
ESP8266是上海樂鑫信息科技設(shè)計(jì)的低功耗WiFi芯片,集成完整的TCP/IP協(xié)議棧和MCU。而ESP8266模塊是深圳安信可公司基于ESP8266芯片研發(fā)(增加必要外圍電路、串口flash、板載天線等)的串口WiFi模塊,成本低、使用簡便、功能強(qiáng)大。
硬件與網(wǎng)絡(luò)的橋梁
和串口藍(lán)牙模塊一樣,串口WiFi模塊也是擴(kuò)展單片機(jī)功能的又一神器。在沒有接觸8266之前,我對單片機(jī)如何聯(lián)網(wǎng)的問題很是好奇,在書里看過用笨重繁瑣的以太網(wǎng)模塊實(shí)現(xiàn),但一點(diǎn)都不帥好吧。而小巧的 ESP8266 WiFi模塊通過串口AT指令與單片機(jī)通訊,實(shí)現(xiàn)串口透傳,非常好上手。
透傳,又稱透明傳輸,具體來說就是“輸入即輸出(如從WiFi模塊串口輸入的字符會透傳到服務(wù)器端)”,數(shù)據(jù)不改變,不同協(xié)議之間的轉(zhuǎn)換(如串口到WiFi、藍(lán)牙等)由模塊完成。使用者無需關(guān)心內(nèi)部具體實(shí)現(xiàn),因此模塊對于使用者是“透明的”、似乎不存在的(因?yàn)榭蔁o視中間的實(shí)現(xiàn)原理)。一個(gè)高度封裝的模塊,應(yīng)該隱藏內(nèi)部實(shí)現(xiàn)細(xì)節(jié),僅對外提供使用接口。
把硬件聯(lián)網(wǎng)之后,就再也不是“玩單機(jī)”了。配合服務(wù)器端的Socket網(wǎng)絡(luò)編程,可以玩許多東西。所以我覺得WiFi模塊是連接軟件(網(wǎng)絡(luò)編程)與硬件(單片機(jī))的橋梁,把我所學(xué)的單片機(jī)和Web知識聯(lián)系起來了。
而近來“物聯(lián)網(wǎng)”或者說“智能硬件”似乎也火了起來,許多強(qiáng)大的芯片和模塊的出現(xiàn)使得聯(lián)網(wǎng)設(shè)備的開發(fā)門檻大大降低。正是有了這些為物聯(lián)網(wǎng)大業(yè)鋪路的各大廠商們,我等對網(wǎng)絡(luò)一竅不通的渣渣也能輕松將硬件聯(lián)網(wǎng)、實(shí)現(xiàn)網(wǎng)絡(luò)通訊。
模塊資料大全
在某寶買模塊一般都會有相應(yīng)的資料文檔,涵蓋使用方法與常見的問題。
開始前的準(zhǔn)備
原理圖及引腳說明
URXD | UART_RXD,接收 |
UTXD | UART_TXD,發(fā)送 |
GPIO 16 | 外部Reset信號,低電平復(fù)位,高電平工作(默認(rèn)高) |
GND | GND |
VCC | 3.3V,模塊供電 |
GPIO 0 | 工作模式選擇:懸空:FlashBoot,工作模式;下拉:UARTDownload,下載模式 |
CH_PD | 高電平工作;低電平模塊供電關(guān)掉 |
GPIO 2 | (1)開機(jī)上電時(shí)必須為高電平,禁止硬件下拉;(2)內(nèi)部默認(rèn)已拉高 |
Function | Description |
---|
模塊的連線
要讓模塊上電正常工作只需三處接線:VCC和CH_PD接3.3電源正極,GND接地。剛好USB-TTL下載模塊上有3.3V的電源。而使用串口調(diào)試要再把模塊與下載器的TXD和RXD交叉連接。這樣一來WiFi模塊就能與電腦連接、用串口助手進(jìn)行測試了。
模塊上電
電腦安裝好USB-TTL模塊的驅(qū)動后,USB口插上模塊,在設(shè)備管理器查看串口號后,打開串口調(diào)試工具sscom,串口號選擇模塊對應(yīng)的,默認(rèn)波特率115200,數(shù)據(jù)-停止-校驗(yàn)-流控:8-1-None-None,勾選“發(fā)送新行”(一定一定要記得勾選“發(fā)送新行”,否則WiFi無法識別AT指令),點(diǎn)擊“打開串口”按鈕,然后將CH_PD引腳的3.3V電源斷了重接進(jìn)行復(fù)位,若串口打印亂碼后看到“ready”,說明模塊上電初始化正常。
和某些需要按鍵進(jìn)入AT指令模式的藍(lán)牙模塊不同,ESP8266上電后就運(yùn)行在AT指令模式下。
免冷啟下載器的坑
記得有一次在實(shí)驗(yàn)室用ESP8266時(shí)怎么都不能成功上電初始化顯示“ready”,AT指令也無法工作。最終把固件燒了一遍又一遍,把模塊都“玩壞了”也還是不行,就像見了鬼一樣……最終竟然是因?yàn)槭褂昧嗣饫鋯⑾螺d器的原因。后來才知道ESP8266電源要求十分苛刻,必須“穩(wěn)定純凈”,估計(jì)這種“高級下載器”內(nèi)部電路會造成模塊上電時(shí)電源不穩(wěn)定,從而導(dǎo)致上電初始化失敗。如果你也遇到同樣的問題不妨換個(gè)USB-TTL下載器試試。
別不信邪,一些詭異的bug很可能是由某個(gè)不起眼的硬件引起的,這很“玄學(xué)”。
ESP8266的AT指令
AT指令最早在藍(lán)牙模塊上接觸過,所謂AT指令實(shí)質(zhì)上就是一些起控制作用的特殊字符串。模塊可以通過AT指令控制使用和用源代碼API函數(shù)開發(fā),前者開發(fā)速度快,難度非常低(傻瓜化使用)。后者靈活,難度較大。而我只用過AT指令,所以本文不涉及SDK開發(fā)。
說明:下面僅列舉一些最常用的AT指令及用法,指令的詳細(xì)參數(shù)及使用說明請參考官方文檔:ESP8266 AT指令集。
基礎(chǔ)AT指令
AT | 測試AT啟動 |
AT+RST | 重啟模塊 |
AT+GMR | 查看版本信息 |
指令 | 描述 |
---|
AT是最常用的指令,用于測試模塊能否正常接受指令。在sscom中向串口發(fā)送指令A(yù)T,若收到模塊返回的OK則說明模塊的AT指令可正常工作。發(fā)送AT+GMR可查看AT指令及SDK的版本號,我當(dāng)前使用的AT指令是V1.1.0.0的最新版,一般最新版指令會增加一些新功能,可隨時(shí)關(guān)注官方的更新。
WiFi功能AT指令
WiFi是讓硬件聯(lián)網(wǎng)的基礎(chǔ),和其他功能一樣,這里僅列舉所需的常用指令,更詳細(xì)指令說明還得查閱文檔。
AT+CWMODE | 設(shè)置WiFi模式(sta/AP/sta+AP) |
AT+CWLAP | 掃描附近的AP信息 |
AT+CWJAP | 連接AP |
AT+CWQAP | 與AP斷開連接 |
AT+CWSAP | 設(shè)置ESP8266 softAP配置 |
AT+CWLIF | 獲取連接到 ESP8266 softAP 的 station 的信息 |
指令 | 描述 |
---|
關(guān)于WiFi模式這里要說明一下,sta模式下模塊相當(dāng)于客戶端,像我們手機(jī)平板一樣是要去連接路由器的,而AP模式下模塊相當(dāng)于路由器,是發(fā)射WiFi被別人連的。ESP8266支持兩種模式并存(模塊出廠默認(rèn)的是AP模式) 。另外,掃描WiFi指令A(yù)T+CWLAP只能在sta模式下使用,否則會報(bào)ERRO錯(cuò)誤,AT+CWJAP和AT+CWQAP指令也同理。
sta模式連接WiFi演示
那如何讓模塊連接到路由器呢?下面簡單列舉了一下步驟:
發(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是 “l(fā)ib-free-wlan01”,密碼是“zhku-lib”,實(shí)際連接WiFi發(fā)送的指令就是AT+CWJAP="lib-free-wlan01","zhku-lib"。
返回的“WIFI CONNECTED”說明連接成功,“WIFI GOT IP”代表模塊分配到了IP。
最后可使用AT+CWQAP斷開當(dāng)前連接的WiFi。
AP模式參數(shù)設(shè)置演示
連完WiFi那接下來就“開WiFi”吧!AP模式和手機(jī)開熱點(diǎn)一樣,只需設(shè)置WiFi名稱和密碼即可。同樣的先使用AT+CWMODE=2指令配置模塊為AP模式,然后發(fā)送AT+CWSAP="ESP8266","12345678",3,4設(shè)置AP的ssid為“ESP8266”,密碼12345678,最后兩個(gè)參數(shù)3和4分別表示信道和加密方式。手機(jī)連上模塊的WiFi,使用AT+CWLIF可查看當(dāng)前連接到AP的客戶端列表。
TCP/IP相關(guān)AT指令
傳輸控制協(xié)議(英語:Transmission Control Protocol,縮寫為 TCP)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,由IETF的RFC 793定義。在簡化的計(jì)算機(jī)網(wǎng)絡(luò)OSI模型中,它完成第四層傳輸層所指定的功能,用戶數(shù)據(jù)報(bào)協(xié)議(UDP)是同一層內(nèi)另一個(gè)重要的傳輸協(xié)議。
在因特網(wǎng)協(xié)議族(Internet protocol suite)中,TCP層是位于IP層之上,應(yīng)用層之下的中間層。不同主機(jī)的應(yīng)用層之間經(jīng)常需要可靠的、像管道一樣的連接,但是IP層不提供這樣的流機(jī)制,而是提供不可靠的包交換。——維基百科
我們常說互聯(lián)網(wǎng)互聯(lián)網(wǎng),那兩個(gè)連接到互聯(lián)網(wǎng)的設(shè)備該如何相互“交流”呢?TCP連接就是其中一種最常用的方式。TCP是面向連接的傳輸層協(xié)議,通信雙方都要實(shí)現(xiàn)TCP協(xié)議,其中一方只需目標(biāo)ip地址和端口號就能發(fā)起連接,連接一旦建立,就像在雙方之間拉了一條管子,管子兩端可進(jìn)行全雙工(雙向同時(shí)收發(fā))通信。
TCP是傳輸層協(xié)議,是在網(wǎng)絡(luò)層IP協(xié)議的基礎(chǔ)上封裝而來。而這些封裝的實(shí)現(xiàn)細(xì)節(jié)也是與我們無關(guān),我們只需使用系統(tǒng)所提供的相關(guān)接口“拿來即用”,比如網(wǎng)絡(luò)編程中的Socket。ESP8266模塊中也實(shí)現(xiàn)了TCP/IP協(xié)議棧,模塊作為客戶端可輕松使用AT指令向服務(wù)端發(fā)起TCP連接。連接TCP服務(wù)器并開啟透傳模式后,模塊串口收到的數(shù)據(jù)就會通過TCP連接透傳到服務(wù)端,這樣就完成了數(shù)據(jù)從硬件串口通過網(wǎng)絡(luò)到程序進(jìn)程的傳輸,實(shí)現(xiàn)軟硬結(jié)合。
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ù) |
指令 | 描述 |
---|
透傳模式下WiFi模塊與服務(wù)器TCP網(wǎng)絡(luò)通訊演示
講的再多,還不如親手體驗(yàn)一下如何用WiFi模塊連接TCP服務(wù)器,體會TCP/IP相關(guān)AT指令的具體使用。首先我們需要一個(gè)TCP服務(wù)器,利用調(diào)試工具“網(wǎng)絡(luò)調(diào)試助手”(軟件在資料包中)即可創(chuàng)建一個(gè)TCP服務(wù)器,實(shí)現(xiàn)服務(wù)端對指定端口監(jiān)聽TCP連接請求,當(dāng)然也可以自己寫程序?qū)崿F(xiàn),為了簡便這里用現(xiàn)成的就好。
打開“網(wǎng)絡(luò)調(diào)試助手”,左側(cè)選擇“TCP服務(wù)器”,輸入自定的端口號(1024-65535),點(diǎn)擊“連接”按鈕開始監(jiān)聽本機(jī)TCP連接請求。在進(jìn)行下一步之前,請確保電腦和WiFi模塊連接到同一個(gè)路由器。
把WiFi模塊和電腦連接,在sscom確定AT指令能正常使用后,就可以開始配置TCP連接了,具體步驟如下:
根據(jù)上面“sta模式連接WiFi演示”一節(jié)把模塊連上WiFi
輸入指令A(yù)T+CIPMUX=0設(shè)置單連接
從“網(wǎng)絡(luò)調(diào)試助手”得知本機(jī)IP和端口,輸入指令A(yù)T+CIPSTART="TCP","192.168.43.140",1234(指令參數(shù)分別為連接類型、目標(biāo)IP地址和端口號)向服務(wù)器發(fā)起TCP連接請求,握手成功并建立連接后,服務(wù)器端的“網(wǎng)絡(luò)調(diào)試助手”就會顯示客戶端IP和端口信息,此時(shí)雙方已做好收發(fā)數(shù)據(jù)的準(zhǔn)備
輸入指令A(yù)T+CIPMODE=1開啟透傳模式
輸入命令A(yù)T+CIPSEND進(jìn)入透傳模式,此時(shí)模塊會把所有串口收到的數(shù)據(jù)都從TCP端口發(fā)送至服務(wù)器,同樣的,從服務(wù)器收到的數(shù)據(jù)也會從模塊串口發(fā)送出去打印到sscom上。這樣WiFi模塊就真正成為了連接硬件與網(wǎng)絡(luò)的橋梁,實(shí)現(xiàn)了串口到TCP的協(xié)議轉(zhuǎn)換
若要退出透傳模式返回AT指令模式,需發(fā)送不帶回車換行的+++(取消勾選sscom的“發(fā)送新行”再發(fā)送指令即可)
見識了TCP透傳的強(qiáng)大,只要再稍微學(xué)習(xí)一下socket網(wǎng)絡(luò)編程,那么對于通過單片機(jī)串口收發(fā)數(shù)據(jù)實(shí)現(xiàn)的功能,現(xiàn)在都可以通過自己編寫服務(wù)器上的TCP程序來實(shí)現(xiàn)。當(dāng)我第一次在命令行看到打印的串口數(shù)據(jù)、體驗(yàn)到網(wǎng)絡(luò)互通的魅力時(shí),我就知道——我的“WiFi門鎖”有戲了!
其他常用指令
除了上面列舉的主要功能指令,ESP8266 模塊還有一些常用的指令:
AT+CIOBAUD | 設(shè)置串口波特率 |
AT+SAVETRANSLINK | 保存透傳到 Flash |
AT+CWSTARTSMART | 開啟 SmartConfig |
AT+CWSTOPSMART | 停止 SmartConfig |
指令 | 描述 |
---|
AT+CIOBAUD指令用于設(shè)置串口波特率,示例:AT+CIOBAUD=9600(設(shè)置波特率為9600)。設(shè)置好TCP連接信息后通過AT+SAVETRANSLINK指令把TCP連接透傳保存到Flash,掉電不丟失。重新上電后模塊會自動聯(lián)網(wǎng)建立TCP連接后進(jìn)入透傳模式,實(shí)現(xiàn)了真正意義上的透傳,示例:AT+SAVETRANSLINK=1,"192.168.43.140",1234,"TCP"。而AT+CWSTARTSMART和AT+CWSTOPSMART則時(shí)用來實(shí)現(xiàn)智能配置(Smart Config)的。
注意事項(xiàng)
使用WiFi模塊的一些細(xì)節(jié)及注意事項(xiàng)
模塊使用3.3V供電,一定注意電源的穩(wěn)定,一些USB轉(zhuǎn)串口模塊電源不能滿足要求。
模塊在連接WiFi后若斷電,則會在下一次上電后自動重連。同理,模塊在透傳模式下斷電后,下次上電仍會進(jìn)入透傳模式,不響應(yīng)AT指令,很容易誤以為模塊壞了。
如果斷開TCP連接時(shí)沒有實(shí)現(xiàn)完整的TCP退出流程,ESP8266 會判斷為異常開,對TCP server 進(jìn)行重連。
AT指令一定以回車換行符” ”結(jié)尾,但退出透傳模式需發(fā)送不帶回車換行的+++
關(guān)于WiFi模塊要寫的也就這么多了。把以上的AT指令都自己試一遍、觀察效果后,那么ESP8266這個(gè)模塊的AT指令使用是基本沒問題了,然后就可以發(fā)揮想象力用模塊著手開發(fā)更好玩的東西啦~~~
責(zé)任編輯:xj
原文標(biāo)題:ESP8266串口WiFi模塊的基本使用
文章出處:【微信公眾號:開源嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
WIFI
+關(guān)注
關(guān)注
81文章
5386瀏覽量
207869 -
串口
+關(guān)注
關(guān)注
15文章
1586瀏覽量
79562 -
wifi模塊
+關(guān)注
關(guān)注
60文章
387瀏覽量
74846 -
ESP8266
+關(guān)注
關(guān)注
51文章
965瀏覽量
47155
原文標(biāo)題:ESP8266串口WiFi模塊的基本使用
文章出處:【微信號:KY_QRS,微信公眾號:開源嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
ESP8266串口WIFI
基于ESP8266串口WiFi擴(kuò)展板上傳數(shù)據(jù)到服務(wù)器和反向控制
esp8266串口wifi實(shí)例
esp8266中文資料匯總(esp8266引腳圖_與單片機(jī)連接_串口wifi實(shí)例)

ESP8266串口WiFi模塊的模塊庫文件資料合集免費(fèi)下載

ESP8266 wifi模塊開發(fā)匯總

STM32-ESP8266wifi模塊實(shí)現(xiàn)

ESP8266 WIFI模塊 與PC機(jī)聯(lián)機(jī)通信

ESP8266串口WiFi模塊基本使用方法和配置教程

評論