999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

無(wú)線模塊的AT指令UDP透?jìng)髟O(shè)計(jì)

2018-09-21 08:28:34黃玉金楊越薛偉張?zhí)斐?/span>
電子產(chǎn)品世界 2018年1期

黃玉金 楊越 薛偉 張?zhí)斐?/p>

摘要:ESP8266是一款國(guó)產(chǎn)的性能穩(wěn)定、價(jià)格低廉的串口與WiFi橋接器,本文對(duì)單片機(jī)與ESP8266的接口模型和用AT指令配置ESP8266的UDP透?jìng)魍ㄐ胚M(jìn)行了分析與研究,提出了該模式下單片機(jī)程序設(shè)計(jì)的一種簡(jiǎn)化結(jié)構(gòu)和操作步驟,應(yīng)用在多路溫控RTU設(shè)計(jì)中運(yùn)行穩(wěn)定。

關(guān)鍵詞:ESP8266;AT指令;透?jìng)鳎痪幊蹋籛iFi

DOI: 10.3969/j.issn.1005-5517.2018.1.006

引言

ESP8266是上海樂(lè)鑫公司設(shè)計(jì)的高度集成的WiFiSoC,它具有低功耗、緊湊設(shè)計(jì)和高穩(wěn)定性的特點(diǎn)。ESP8266擁有完整的且自成體系的WiFi網(wǎng)絡(luò)功能,既能夠獨(dú)立應(yīng)用(集成了32位處理器,帶片上SRAM),也可以用作串口-WiFi橋接模塊,配合其他主機(jī)MCU運(yùn)行。

在獨(dú)立應(yīng)用時(shí),集成的處理器通過(guò)GPIO可以和外部傳感器或模塊進(jìn)行接口,樂(lè)鑫提供了專(zhuān)門(mén)軟件開(kāi)發(fā)方案,其一下游模塊生產(chǎn)商安信可(AI-Thinker)提供了Windows下的GUI方式的IDE實(shí)現(xiàn)SDK編程[1]。這種方法需要用戶對(duì)ESP8266及其編程有相當(dāng)?shù)睦斫猓话阈枰^長(zhǎng)的學(xué)習(xí)和開(kāi)發(fā)周期。

當(dāng)ESP8266用作橋接模塊配合單片機(jī)(如8051兼容單片機(jī)、ARM Cortex MO、M3等)使用時(shí),可以采用UART串口、I2C或SPI與主控單片機(jī)接口,但是用得最多的還是串口。借由一套便捷的AT指令[2],單片機(jī)可以通過(guò)工作于station模式的ESP8266模塊快速、穩(wěn)定地連上WiFi,也可以生成WiFi AP,供其他設(shè)備連接,甚至還可以工作于AP和station共存的模式。

ESP8266目前在智能燈泡、插座、開(kāi)關(guān)等智能電器中有廣泛應(yīng)用,在工業(yè)、科研設(shè)備的聯(lián)網(wǎng)方案中也被大量采用[3]。筆者在一個(gè)多路溫控記錄項(xiàng)目中就使用這個(gè)模塊設(shè)計(jì)了RTU,該RTU在室外環(huán)境中也工作穩(wěn)定。

本文主要介紹采用AT指令的UDP透?jìng)魍ㄐ诺木幊棠P驮O(shè)計(jì)。采用UDP透?jìng)鳎脩舻闹骺貑纹瑱C(jī)可以用類(lèi)似有線UART的方式實(shí)現(xiàn)WiFi傳輸,可以顯著地降低開(kāi)發(fā)難度,節(jié)約開(kāi)發(fā)時(shí)間。

1 ESP8266的AT指令集

根據(jù)數(shù)據(jù)手冊(cè)[2],ESP8266的AT指令包含4個(gè)類(lèi)型,用于實(shí)現(xiàn)基礎(chǔ)功能、WiFi相關(guān)和TCP/IP相關(guān)的功能的操作。

在設(shè)置指令中,根據(jù)設(shè)置參數(shù)的時(shí)間有效性又分為當(dāng)前參數(shù)設(shè)置和永久參數(shù)設(shè)置。當(dāng)前參數(shù)設(shè)置在下一次復(fù)位或被更改前有效,永久設(shè)置在設(shè)置被更改之前均有效。樂(lè)鑫為模塊公司提供了AT指令模式的源代碼和SDK,模塊公司往往會(huì)對(duì)這些指令進(jìn)行刪減和調(diào)整(增加私有AT指令),以適應(yīng)更小的FLASH或簡(jiǎn)化應(yīng)用。本文采用安信可(AI Thinker)公司修改后的指令集手冊(cè)[4]進(jìn)行了測(cè)試。

ESP8266的數(shù)據(jù)通信既支持UDP方式,也支持TCP(或SSL)方式。一般認(rèn)為T(mén)CP協(xié)議面向連接,提供的服務(wù)更加可靠,但是在單片機(jī)中處理TCP通信控制錯(cuò)誤會(huì)比較麻煩,筆者在設(shè)計(jì)溫控RTU時(shí)就采用了數(shù)據(jù)報(bào)方式的UDP透?jìng)魍ㄐ拧1疚膶?duì)ESP8266的UDP AT指令實(shí)現(xiàn)通信透?jìng)鲿r(shí)的編程設(shè)計(jì)進(jìn)行了介紹和總結(jié)。

2 ESP8266的UDP透?jìng)鞯姆治?/p>

2.1 UDP、IP和端口

UDP(User Datagram Protocol,用戶數(shù)據(jù)包協(xié)議),是一個(gè)簡(jiǎn)單的面向數(shù)據(jù)報(bào)的傳輸層協(xié)議。在TCP/IP模型中,UDP為網(wǎng)絡(luò)層以上和應(yīng)用層以下提供了一個(gè)簡(jiǎn)單的接口。

UDP通信被認(rèn)為是不可靠的通信,這里的不可靠主要指兩個(gè)方面:報(bào)文是否送達(dá)不可靠,報(bào)文送達(dá)的順序不可靠。前者是因?yàn)閰f(xié)議的設(shè)計(jì)沒(méi)有要求對(duì)發(fā)送的數(shù)據(jù)進(jìn)行確認(rèn),后者是因?yàn)閿?shù)據(jù)報(bào)可能經(jīng)由不同的路由而導(dǎo)致到達(dá)目標(biāo)的時(shí)間延遲不一致引起的。對(duì)于報(bào)文是否送達(dá)雖然在通信層沒(méi)有進(jìn)行實(shí)現(xiàn),但是用戶(程序設(shè)計(jì)人員)可以在應(yīng)用層面實(shí)現(xiàn)反饋確認(rèn);而針對(duì)報(bào)文順序問(wèn)題,考慮到ESP8266更多的是用于低通信載荷的場(chǎng)所,多數(shù)情況一個(gè)數(shù)據(jù)報(bào)就可以傳遞當(dāng)前的全部數(shù)據(jù),一般也不會(huì)造成困擾。

ESP8266提供WiFi方式連接以太網(wǎng),WiFi在OSI網(wǎng)絡(luò)互聯(lián)模型的通信層、數(shù)據(jù)層和有線的以太網(wǎng)有一些不同,但是對(duì)使用UDP或是TCP的應(yīng)用者而言并沒(méi)有區(qū)別,只是Internet通信的一種具體形式,不會(huì)影響到ESP8266模塊的使用者。

在使用ESP8266進(jìn)行無(wú)線通信的開(kāi)發(fā)時(shí),還有2個(gè)基本概念需要理解:IP地址和端口號(hào)。在UART通信中,線纜的兩端分別連接不同的設(shè)備,屬于1對(duì)1的通信,兩個(gè)設(shè)備不需要身份設(shè)置就可以相互區(qū)別;而通過(guò)網(wǎng)絡(luò)進(jìn)行信息傳輸時(shí),因?yàn)榫W(wǎng)絡(luò)上有很多不同的設(shè)備,就必須對(duì)設(shè)備進(jìn)行標(biāo)記區(qū)別。Internet網(wǎng)絡(luò)中,這個(gè)身份設(shè)置就是IP地址。無(wú)論是TCP還是UDP,在通信中都會(huì)涉及到目標(biāo)IP地址和源IP地址,用于對(duì)不同設(shè)備進(jìn)行標(biāo)記。

端口則是編程的電子工程師需要理解的另一個(gè)重要概念。端口和IP(用于標(biāo)志設(shè)備)一起使用,用于標(biāo)志同一個(gè)設(shè)備中不同的功能或者關(guān)注的不同的通信數(shù)據(jù)。

2.2 ESP8266的工作模式

ESP8266可以工作于3種模式:station模式、AP模式以及station和AP共存模式。工作于AP模式的ESP8266提供與路由器類(lèi)似的功能,但是最多只能連接4個(gè)station,本文不做分析。在使用ESP8266 AT指令方式的進(jìn)行數(shù)據(jù)交換的場(chǎng)所,主要有下面2種形式:

1)主控板通過(guò)TTL UART連接ESP8266模塊,通過(guò)UART發(fā)送AT指令控制ESP8266連接路由器(AP)工作于station模式(圖1a)。這種模式下,ESP8266和主控板之間相當(dāng)于無(wú)線網(wǎng)卡和PC之間的關(guān)系;

2)主控板通過(guò)TTL UART連接ESP8266模塊,通過(guò)UART發(fā)送AT指令控制ESP8266AP模塊工作于AP+station模式,模塊生成一個(gè)AP,同時(shí)本身也作為station收發(fā)數(shù)據(jù)(圖1b)。這種模式下模塊可以與連接到該模塊所生成的AP的其他模塊或者設(shè)備通信,可用于構(gòu)建小型局域網(wǎng)(最多連接4個(gè)設(shè)備),但是更多的場(chǎng)景還是用于AIR-KISS等無(wú)線方式對(duì)該模塊進(jìn)行配置[5]。因?yàn)檫@種方式在應(yīng)用中可能存在多個(gè)連接,需要?jiǎng)討B(tài)傳遞控制信息,不能進(jìn)行透?jìng)鳎膊辉诒疚挠懻撝小?/p>

2.3 ESP8266使用注意事項(xiàng)

ESP8266工作于AT指令操作模式時(shí),為了減少M(fèi)CU解碼的時(shí)間和簡(jiǎn)化內(nèi)部協(xié)議棧的設(shè)計(jì),對(duì)AT指令的設(shè)計(jì)和使用有一些額外的要求,在開(kāi)發(fā)中注意到這些要求,會(huì)顯著提高開(kāi)發(fā)效率:

1)模塊的默認(rèn)波特率(出廠設(shè)置)是115200bps;

2)AT指令必須大寫(xiě),而且以回車(chē)換行符"\r\n"結(jié)尾;

3)長(zhǎng)度和時(shí)間間隔成幀機(jī)制。ESP8266判斷UART傳來(lái)的數(shù)據(jù)時(shí)間間隔,若時(shí)間間隔大于20ms,則認(rèn)為一幀結(jié)束;否則,一直接收數(shù)據(jù)到上限值2KB,認(rèn)為一幀結(jié)束。ESP8266模塊判斷UART來(lái)的數(shù)據(jù)一幀結(jié)束后,通過(guò)WIFI接口將數(shù)據(jù)轉(zhuǎn)發(fā)出去。成幀時(shí)間間隔為20ms,一幀上限值為2KB。

2.4 AT指令透?jìng)髟O(shè)計(jì)

MCU通過(guò)串口和ESP8266連接,發(fā)送控制信息或者數(shù)據(jù)到串口,ESP8266也將控制命令的執(zhí)行情況和收到的數(shù)據(jù)從串口返回。要進(jìn)行透?jìng)餍枰l(fā)送一系列的配置指令,模塊執(zhí)行命令或者傳遞數(shù)據(jù)的時(shí)間也通常不可忽略,而且有些指令會(huì)執(zhí)行失敗,對(duì)程序結(jié)構(gòu)的設(shè)計(jì)帶來(lái)巨大挑戰(zhàn)。

表1對(duì)進(jìn)行透?jìng)魍ㄐ排渲眠^(guò)程中可能會(huì)用到的指令的執(zhí)行時(shí)間進(jìn)行了統(tǒng)計(jì)。測(cè)試時(shí)將ESP8266恢復(fù)至出廠設(shè)置,近距離(<3米)連接了一個(gè)TPLINK WR845N的家用無(wú)線路由器。從表1可以看到,執(zhí)行簡(jiǎn)單的查詢模塊IP的指令耗時(shí)10ms,從給ESP8266發(fā)出連接路由器指令到反饋連接成功耗時(shí)5.2s。在計(jì)算機(jī)上通過(guò)串口測(cè)試ESP8266時(shí),人工交互式執(zhí)行系列指令很方便,如果某指令未能成功執(zhí)行,用戶可以根據(jù)需要?jiǎng)討B(tài)獲取模塊狀態(tài),調(diào)整指令輸出成功配置模塊正常工作,但在單片機(jī)的程序設(shè)計(jì)中如果有些指令的執(zhí)行時(shí)間太長(zhǎng),或者某條指令執(zhí)行失敗,相應(yīng)的程序的運(yùn)行邏輯就變得很復(fù)雜。

在對(duì)ESP8266的指令表進(jìn)行研究之后,發(fā)現(xiàn)在對(duì)ESP8266進(jìn)行透?jìng)髋渲煤螅幸粭l指令在保存其透?jìng)髟O(shè)置后可以使得模塊上電之后自動(dòng)連接路由器并綁定預(yù)定的遠(yuǎn)程和本地的IP和端口,再次進(jìn)入透?jìng)鳡顟B(tài)。在利用這個(gè)特性之后,主控板檢測(cè)到ESP8266未能正常工作時(shí),只需復(fù)位重啟模塊即可。對(duì)ESP8266模塊的配置可以使用PC端軟件交互操作,不用在單片機(jī)上額外配置,可以顯著的降低編程難度。

要將ESP8266模塊配置為上電自動(dòng)進(jìn)入透?jìng)髂J剑话阆仍赑C上進(jìn)行測(cè)試。在將模塊與USB串口橋接器(如CP2102或CH340)的TX和RX交叉連接后,保證ESP8266模塊有充足的3.3V的電源供應(yīng),然后按照下面的流程進(jìn)行測(cè)試和配置:

1.測(cè)試模塊是否正確連接,即發(fā)送測(cè)試指令觀察是否有反饋;

a)注意模塊的通信波特率需設(shè)置正確。一般通過(guò)給模塊斷電并重新上電觀察是否接收到模塊上電時(shí)從串口輸出的狀態(tài)信息(是否正確顯示)來(lái)判斷波特率和電路是否正確連接。

b)發(fā)送AT測(cè)試指令觀察是否有反饋。有的時(shí)候模塊被配置后上電自動(dòng)進(jìn)入透?jìng)髂J剑瑥亩鴮?dǎo)致AT測(cè)試沒(méi)有反應(yīng),此時(shí)可嘗試發(fā)送"+++"退出透?jìng)鳌W⒁馔顺鐾競(jìng)髦噶畋仨殕为?dú)發(fā)出,即發(fā)送"+++“時(shí)不能同時(shí)跟隨發(fā)送"\r\n"或其他的字符,必須發(fā)送單獨(dú)成幀的"+++"。

2.發(fā)送AT+MODE=1配置模塊工作于透?jìng)髂J剑?/p>

3.發(fā)送AT+CWJAP="ap","pw"配置模塊連接指定的路由器AP;其中ap、pw分別指預(yù)期連接的AP的名稱(chēng)和密碼;

4.發(fā)送AT+CIPMUX=O配置模塊工作于單連接狀態(tài):

5.發(fā)送AT+CIPSTA="192.168.x.y"配置模塊使用指定的lP;其中"192.168.x.y"表示預(yù)期的IP;

6.發(fā)送AT+SAVETRANSLINK=1,"192.168.1.8",51081,"UDP",51080配置模塊透?jìng)鬟h(yuǎn)端IP"192.168.1.8"和端口51081,自身在51080端口監(jiān)聽(tīng):

7.發(fā)送AT+RST或者斷電再加電復(fù)位模塊進(jìn)入透?jìng)髂J剑▓D1a)。

經(jīng)過(guò)上述配置,當(dāng)ESP8266進(jìn)入透?jìng)鳡顟B(tài)之后,主控板通過(guò)TX發(fā)送的數(shù)據(jù)自動(dòng)發(fā)送到遠(yuǎn)端IP綁定的端口,遠(yuǎn)端設(shè)備發(fā)送到本地lP和端口的數(shù)據(jù)也自動(dòng)從RX傳入(圖1a)。

3 結(jié)論

本文用上述方法在設(shè)計(jì)的野外運(yùn)行的多通道溫控系統(tǒng)RTU上實(shí)現(xiàn)了WiFi無(wú)線傳輸,運(yùn)行穩(wěn)定可靠。后又專(zhuān)門(mén)設(shè)計(jì)了相應(yīng)的軟件實(shí)現(xiàn)了ESP8266 UDP透?jìng)鞯膱D形化的一鍵配置,可顯著節(jié)約ESP8266 WiFi無(wú)線設(shè)計(jì)的開(kāi)發(fā)時(shí)間。

參考文獻(xiàn):

[1]曹振民,陳年生,馬強(qiáng),等.基于ESP8266的無(wú)線控制電路設(shè)計(jì)[J].工業(yè)控制計(jì)算機(jī),2017,(01):68-69.

[2]Espressif Systems (Shanghai)Pte.,Ltd.,ESP8266 AT Instruction Set,Ver2.1.0,2017.

[3]范興隆.ESP8266在智能家居監(jiān)控系統(tǒng)中的應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2016.(09):52-56.

[4]深圳市安信可科技有限公司,Espressif AT指令集(安信可修改版),Ver0.21,2015.

[5]羅光瑋.無(wú)線網(wǎng)絡(luò)環(huán)境手機(jī)快速配置智能硬件方法研究[D].華中科技大學(xué),2015.

主站蜘蛛池模板: 欧美激情视频一区| 国产一区在线视频观看| 国产大片喷水在线在线视频 | 亚洲欧美色中文字幕| 中文字幕无码中文字幕有码在线| 亚洲中文字幕无码爆乳| 中文纯内无码H| 亚洲欧美成人在线视频| 国产精鲁鲁网在线视频| 精品国产成人a在线观看| 91香蕉视频下载网站| 欧美午夜网| 久久精品波多野结衣| 日本人真淫视频一区二区三区| 国产中文一区a级毛片视频| 免费全部高H视频无码无遮掩| AV无码无在线观看免费| 72种姿势欧美久久久久大黄蕉| 国产精品亚洲va在线观看| 久久精品aⅴ无码中文字幕| 免费激情网站| 人妻精品久久无码区| 91精品国产自产在线老师啪l| 人妻21p大胆| 国产国语一级毛片在线视频| 国产精品久久久免费视频| 日韩在线1| 亚洲欧美天堂网| 精品视频在线观看你懂的一区| 国产成人永久免费视频| 99在线观看国产| 欧美五月婷婷| 国产成人综合久久| 在线观看视频一区二区| 粉嫩国产白浆在线观看| 国产一级无码不卡视频| 亚洲国产精品成人久久综合影院| 99视频精品全国免费品| 538精品在线观看| 国产在线无码一区二区三区| 国产精品无码一区二区桃花视频| a级免费视频| 亚洲欧美成人综合| 一本无码在线观看| 996免费视频国产在线播放| 无码福利日韩神码福利片| 亚洲九九视频| 日韩高清在线观看不卡一区二区 | 国产三级a| 九九热在线视频| 无码专区国产精品一区| 亚洲天堂777| 免费精品一区二区h| 精品久久香蕉国产线看观看gif| 婷婷亚洲视频| 欧美性色综合网| 91精品在线视频观看| 成年女人a毛片免费视频| 日本在线国产| 91伊人国产| 中文字幕人妻av一区二区| 婷婷六月激情综合一区| 免费在线一区| 波多野结衣久久精品| 黄色网在线| 国产va在线观看免费| 国产在线自乱拍播放| 天堂成人在线| 欧美自慰一级看片免费| 国产成人一区免费观看| 视频在线观看一区二区| 高潮毛片免费观看| 精品国产女同疯狂摩擦2| 91视频区| 成人午夜视频在线| 精品久久高清| 中文字幕丝袜一区二区| 五月婷婷精品| 综合久久五月天| 精品亚洲欧美中文字幕在线看| 99在线视频免费| 国产浮力第一页永久地址|