亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        無線模塊的AT指令UDP透傳設(shè)計(jì)

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

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

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

        關(guān)鍵詞:ESP8266;AT指令;透傳;編程;WiFi

        DOI: 10.3969/j.issn.1005-5517.2018.1.006

        引言

        ESP8266是上海樂鑫公司設(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)用時,集成的處理器通過GPIO可以和外部傳感器或模塊進(jìn)行接口,樂鑫提供了專門軟件開發(fā)方案,其一下游模塊生產(chǎn)商安信可(AI-Thinker)提供了Windows下的GUI方式的IDE實(shí)現(xiàn)SDK編程[1]。這種方法需要用戶對ESP8266及其編程有相當(dāng)?shù)睦斫?,一般需要較長的學(xué)習(xí)和開發(fā)周期。

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

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

        本文主要介紹采用AT指令的UDP透傳通信的編程模型設(shè)計(jì)。采用UDP透傳,用戶的主控單片機(jī)可以用類似有線UART的方式實(shí)現(xiàn)WiFi傳輸,可以顯著地降低開發(fā)難度,節(jié)約開發(fā)時間。

        1 ESP8266的AT指令集

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

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

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

        2 ESP8266的UDP透傳的分析

        2.1 UDP、IP和端口

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

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

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

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

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

        2.2 ESP8266的工作模式

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

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

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

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

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

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

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

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

        2.4 AT指令透傳設(shè)計(jì)

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

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

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

        要將ESP8266模塊配置為上電自動進(jìn)入透傳模式,一般先在PC上進(jìn)行測試。在將模塊與USB串口橋接器(如CP2102或CH340)的TX和RX交叉連接后,保證ESP8266模塊有充足的3.3V的電源供應(yīng),然后按照下面的流程進(jìn)行測試和配置:

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

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

        b)發(fā)送AT測試指令觀察是否有反饋。有的時候模塊被配置后上電自動進(jìn)入透傳模式,從而導(dǎo)致AT測試沒有反應(yīng),此時可嘗試發(fā)送"+++"退出透傳。注意退出透傳指令必須單獨(dú)發(fā)出,即發(fā)送"+++“時不能同時跟隨發(fā)送"\r\n"或其他的字符,必須發(fā)送單獨(dú)成幀的"+++"。

        2.發(fā)送AT+MODE=1配置模塊工作于透傳模式;

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

        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配置模塊透傳遠(yuǎn)端IP"192.168.1.8"和端口51081,自身在51080端口監(jiān)聽:

        7.發(fā)送AT+RST或者斷電再加電復(fù)位模塊進(jìn)入透傳模式(圖1a)。

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

        3 結(jié)論

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

        參考文獻(xiàn):

        [1]曹振民,陳年生,馬強(qiáng),等.基于ESP8266的無線控制電路設(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ǎng)絡(luò)環(huán)境手機(jī)快速配置智能硬件方法研究[D].華中科技大學(xué),2015.

        日本五十路人妻在线一区二区| 亚洲日韩AV秘 无码一区二区 | 久亚洲精品不子伦一区| 久久久久亚洲av成人网人人软件| av香港经典三级级 在线| 亚洲欧美日韩精品中文乱码| 久久99久久久精品人妻一区二区| av高清在线不卡直播| 亚洲av成人中文无码专区| 亚洲AV成人片色在线观看高潮| 亚洲av成人一区二区三区不卡| 亚洲中文一本无码AV在线无码 | 免费高清av一区二区三区| 亚洲香蕉成人AV网站在线观看| 美女被射视频在线观看91| 国产在线一区二区av| 亚欧色一区w666天堂| 亚洲国产美女精品久久| 国产av一区二区三区国产福利 | 亚洲国内精品一区二区在线| 精品久久有码中文字幕| 人妻av乱片av出轨| 98国产精品永久在线观看| 免费av一区男人的天堂| 国产色系视频在线观看| 麻豆乱码国产一区二区三区| 亚洲一区二区三区在线中文| 亚洲av熟女一区二区三区站| 久久久精品国产sm调教网站| 国产午夜无码视频免费网站| 91九色精品日韩内射无| 无码h黄肉3d动漫在线观看| 免费又黄又爽又猛的毛片| 国产香蕉尹人在线视频你懂的| 亚洲av香蕉一区二区三区av| 久久香蕉国产线熟妇人妻| 在线a亚洲视频播放在线观看| 亚洲天堂av在线免费播放| 色综合久久无码五十路人妻| 久久国产36精品色熟妇| 亚洲一区日本一区二区|