前言:
ESP8266是一款超低功耗的UART-WiFi 透傳模塊,擁有業內極富競爭力的封裝尺寸和超低能耗技術,專為移動設備和物聯網應用設計,可將用戶的物理設備連接到Wi-Fi 無線網路上,進行互聯網或局域網通信,實作聯網功能,
由于本人一直從事醫學資訊處理與醫學物聯網設備研發,硬體聯網一直以來都是比較麻煩的事情,而通過使用 ESP8266 這款WiFi模塊,僅需要通過串口使用AT指令控制,就能滿足大部分的網路功能需求,本文通過簡單介紹及應用實體,讓剛接觸WiFi模塊的讀者了解模塊的大致使用方法,
ESP8266簡介
ESP8266是上海樂鑫資訊科技設計的低功耗WiFi芯片,集成完整的TCP/IP協議堆疊和MCU,而ESP8266模塊是深圳安信可公司基于ESP8266芯片研發(增加必要外圍電路、串口flash、板載天線等)的串口WiFi模塊,成本低、使用簡便、功能強大,
硬體與網路的橋梁
和串口藍牙模塊一樣,串口WiFi模塊也是擴展單片機功能的又一神器,在沒有接觸8266之前,我對單片機如何聯網的問題很是好奇,在書里看過用笨重繁瑣的以太網模塊實作,但一點都不帥好吧,而小巧的 ESP8266 WiFi模塊通過串口AT指令與單片機通訊,實作串口透傳,非常好上手,
透傳,又稱透明傳輸,具體來說就是“輸入即輸出(如從WiFi模塊串口輸入的字符會透傳到服務器端)”,資料不改變,不同協議之間的轉換(如串口到WiFi、藍牙等)由模塊完成,使用者無需關心內部具體實作,因此模塊對于使用者是“透明的”、似乎不存在的(因為可無視中間的實作原理),一個高度封裝的模塊,應該隱藏內部實作細節,僅對外提供使用介面,
把硬體聯網之后,就再也不是“玩單機”了,配合服務器端的Socket網路編程,可以玩許多東西,所以我覺得WiFi模塊是連接軟體(網路編程)與硬體(單片機)的橋梁,把我所學的單片機和Web知識聯系起來了,
而近來“物聯網”或者說“智能硬體”似乎也火了起來,許多強大的芯片和模塊的出現使得聯網設備的開發門檻大大降低,正是有了這些為物聯網大業鋪路的各大廠商們,我等對網路一竅不通的渣渣也能輕松將硬體聯網、實作網路通訊,
原理圖及引腳說明


要讓模塊上電正常作業只需三處接線:VCC和CH_PD接3.3電源正極,GND接地,剛好USB-TTL下載模塊上有3.3V的電源,而使用串口除錯要再把模塊與下載器的TXD和RXD交叉連接,這樣一來WiFi模塊就能與電腦連接、用串口助手進行測驗了,

下面進行用USB轉TTL連接模塊后在串口助手上進行AT模式除錯;
1.AT測驗:
電腦安裝好USB-TTL模塊的驅動后,USB口插上模塊,在設備管理器查看串口號后,打開串口除錯工具XCOM(正點原子),串口號選擇模塊對應的,默認波特率115200,資料-停止-校驗-流控:8-1-None-None,勾選“發送新行”(一定一定要記得勾選“發送新行”,否則WiFi無法識別AT指令),點擊“打開串口”按鈕,然后發送AT,若串口列印亂碼后看到“OK”,說明模塊進入AT模式,和某些需要按鍵進入AT指令模式的藍牙模塊不同,ESP8266上電后就運行在AT指令模式下,
2. ESP8266的AT指令
AT指令最早在藍牙模塊上接觸過,所謂AT指令實質上就是一些起控制作用的特殊字串,模塊可以通過AT指令控制使用和用源代碼API函式開發,前者開發速度快,難度非常低(傻瓜化使用),后者靈活,難度較大,本文只涉及前者,后者見下篇博客;
下面僅列舉一些最常用的AT指令及用法,指令的詳細引數及使用說明請參考官方檔案:ESP8266 AT指令集
AT 測驗模塊是否啟動,進入AT模式
AT+RST 重啟
AT+GMR 查看版本資訊
AT+CWMODE 設定WiFi模式(sta/AP/sta+AP)
AT+CWLAP 掃描附近的AP資訊
AT+CWJAP 連接AP
AT+CWQAP 與AP斷開連接
AT+CWSAP 設定ESP8266 softAP配置
AT+CWLIF 獲取連接到 ESP8266 softAP 的 station 的資訊
3.模塊連接我們手機熱點或者我們自己家里路由器的方法:
1.發送AT+CWMODE=1,配置模塊為sta模式(引數1,2,3分別對應模式sta,AP和sta/AP),此模式下,esp8266模塊相當于客戶端,可以連接其他路由器;

2.發送AT+CWLAP指令掃描當前附近WiFi,模塊會回傳可用AP串列,
3.使用AT+CWJAP=“WiFi名稱”,"WiFi密碼"連接到指定的路由器,比如我的手機熱點是 “fly”,密碼是“hhhhjjjj”,實際連接WiFi發送的指令就是AT+CWJAP=“fly”,“hhhhjjjj”,

回傳的“WIFI CONNECTED”說明連接成功,“WIFI GOT IP”代表模塊分配到了IP,
最后可使用AT+CWQAP斷開當前連接的WiFi,
4,esp8266也可以自己作為wifi熱點;跟手機開熱點一樣
步驟:1.使用AT+CWMODE=2指令配置模塊為AP模式

2.發送AT+CWSAP=“ESP8266”,“12345678”,3,4設定AP的ssid為“ESP8266”,密碼12345678,最后兩個引數3和4分別表示信道和加密方式,手機連上模塊的WiFi,使用AT+CWLIF可查看當前連接到AP的客戶端串列,

5.如何用WiFi模塊連接TCP服務器
TCP/IP協議:
傳輸控制協議(英語:Transmission Control Protocol,縮寫為 TCP)是一種面向連接的、可靠的、基于位元組流的傳輸層通信協議,由IETF的RFC 793定義,在簡化的計算機網路OSI模型中,它完成第四層傳輸層所指定的功能,用戶資料報協議(UDP)是同一層內另一個重要的傳輸協議,
在因特網協議族(Internet protocol suite)中,TCP層是位于IP層之上,應用層之下的中間層,不同主機的應用層之間經常需要可靠的、像管道一樣的連接,但是IP層不提供這樣的流機制,而是提供不可靠的包交換,——維基百科
我們常說互聯網互聯網,那兩個連接到互聯網的設備該如何相互“交流”呢?TCP連接就是其中一種最常用的方式,TCP是面向連接的傳輸層協議,通信雙方都要實作TCP協議,其中一方只需目標ip地址和埠號就能發起連接,連接一旦建立,就像在雙方之間拉了一條管子,管子兩端可進行全雙工(雙向同時收發)通信,
TCP是傳輸層協議,是在網路層IP協議的基礎上封裝而來,而這些封裝的實作細節也是與我們無關,我們只需使用系統所提供的相關介面“拿來即用”,比如網路編程中的Socket,ESP8266模塊中也實作了TCP/IP協議堆疊,模塊作為客戶端可輕松使用AT指令向服務端發起TCP連接,連接TCP服務器并開啟透傳模式后,模塊串口收到的資料就會通過TCP連接透傳到服務端,這樣就完成了資料從硬體串口通過網路到程式行程的傳輸,實作軟硬結合,
相關AT指令:
AT+CIPSTATUS 查詢網路連接資訊
AT+CIPMUX 設定多連接模式
AT+CIPSTART 建立TCP連接UDP傳輸或者SSL連接
AT+CIPCLOSE 關閉TCP/UDP/SSL傳輸
AT+CIPMODE 設定透傳模式
AT+CIPSEND 發送資料
連接服務器步驟:
1.首先我們需要一個TCP服務器,利用除錯工具“網路除錯助手”即可創建一個TCP服務器,實作服務端對指定埠監聽TCP連接請求,當然也可以自己寫程式實作,為了簡便這里用現成的就好,
打開“網路除錯助手”,左側選擇“TCPServer”,電腦和WiFi模塊連接同一個手機熱點,查看手機熱點IP后,我這里是192.168.43.258,這步非常關鍵,一定要選對,選擇這個IP輸入自定的埠號我這里填的1234,下次用的時候最好換一個,只要是1024-65535都可以,不然容易打不開,點擊“連接”按鈕開始監聽本機TCP連接請求,在進行下一步之前,請確保電腦和WiFi模塊連接到同一個路由器,

2.輸入指令AT+CIPMUX=0設定單連接
3.從“網路除錯助手”得知本機IP和埠,輸入指令AT+CIPSTART=“TCP”,“192.168.43.140”,8080(指令引數分別為連接型別、目標IP地址和埠號)(對應步驟1)向服務器發起TCP連接請求,握手成功并建立連接后,服務器端的“網路除錯助手”就會顯示客戶端IP和埠資訊,此時雙方已做好收發資料的準備;


4.輸入指令AT+CIPMODE=1開啟透傳模式

5. 輸入命令AT+CIPSEND進入透傳模式,此時模塊會把所有串口收到的資料都從TCP埠發送至服務器,同樣的,從服務器收到的資料也會從模塊串口發送出去列印到sscom上,這樣WiFi模塊就真正成為了連接硬體與網路的橋梁,實作了串口到TCP的協議轉換
若要退出透傳模式回傳AT指令模式,需發送不帶回車換行的+++(取消勾選xcom的“發送新行”再發送指令即可)

見識了TCP透傳的強大,只要再稍微學習一下socket網路編程,那么對于通過單片機串口收發資料實作的功能,現在都可以通過自己撰寫服務器上的TCP程式來實作,
寫在最后:使用WiFi模塊的一些細節及注意事項
1.模塊使用3.3V供電,一定注意電源的穩定,一些USB轉串口模塊電源不能滿足要求,我用的是USB轉串口模塊5V(笑哭,,,,,,),
2.模塊在連接WiFi后若斷電,則會在下一次上電后自動重連,同理,模塊在透傳模式下斷電后,下次上電仍會進入透傳模式,不回應AT指令,很容易誤以為模塊壞了,退出透傳模式需發送不帶回車換行的+++
3.如果斷開TCP連接時沒有實作完整的TCP退出流程,ESP8266 會判斷為例外開,對TCP server 進行重連,
4.AT指令一定以回車換行符” ”結尾,或者勾選“發送新行”,二者只需要選其一,但退出透傳模式需發送不帶回車換行的+++;
5.如果出現AT模式不正常,不要著急重啟,確認一次模式是否正確AT+CWMODE 設定WiFi模式(sta/AP/sta+AP);是否退出透傳模式;
6.關于WiFi模塊要寫的也就這么多了,把以上的AT指令都自己試一遍、觀察效果后,那么ESP8266這個模塊的AT指令使用是基本沒問題了,然后就可以發揮想象力用模塊著手開發更好玩的東西啦~~~
參考來自:http://www.elecfans.com/d/1445744.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/289681.html
標籤:其他
上一篇:什么是MircoPython?
