• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于NodeMCU的雙向通信系統(tǒng)

      2020-09-02 06:46肖楊林釗浩
      關(guān)鍵詞:上位風(fēng)扇客戶端

      肖楊 林釗浩

      摘 ? 要: Wi-Fi是廣泛應(yīng)用于物聯(lián)網(wǎng)的無線通信技術(shù),但具有傳輸功耗過高的缺陷,故提出一種基于NodeMCU的雙向通信系統(tǒng)。在硬件上,NodeMCU搭載ESP8266-F12模塊實現(xiàn)無線通信,可有效降低傳輸功耗;在軟件上,NodeMCU模塊靈活實現(xiàn)接入點(AP)、控制端(STA)及混合模式(AP+STA)配置,用戶通過連接配置界面,可實現(xiàn)數(shù)據(jù)傳輸與設(shè)備控制需求;系統(tǒng)采用輕量化的JSON數(shù)據(jù)傳輸格式,具有方便、穩(wěn)定的數(shù)據(jù)傳輸通道,有效實現(xiàn)了物聯(lián)網(wǎng)系統(tǒng)云邊端架構(gòu)中的邊—端環(huán)節(jié),可方便地搭接到云平臺,構(gòu)成通信高效、功耗較低的物聯(lián)網(wǎng)系統(tǒng)。

      關(guān)鍵詞: NodeMCU;ESP8266-F12;Wi-Fi;無線通信;雙向通信;物聯(lián)網(wǎng)

      中圖分類號:TP273 ? ?文獻標(biāo)識碼:A ? ?文章編號:2095-8412 (2020) 04-080-05

      工業(yè)技術(shù)創(chuàng)新 URL: http://gyjs.cbpt.cnki.net ? ?DOI: 10.14103/j.issn.2095-8412.2020.04.015

      引言

      隨著無線通信技術(shù)多樣化、快速發(fā)展,人們對遠(yuǎn)程控制產(chǎn)品的多樣化需求也不斷增加,針對智能家居等基于無線通信、遠(yuǎn)程遙控的技術(shù)層出不窮。其中,短距離無線傳輸技術(shù)以其低能耗、低成本、能夠適應(yīng)復(fù)雜環(huán)境的優(yōu)點,在無線通信領(lǐng)域起著至關(guān)重要的作用[1]。

      Wi-Fi、藍牙、ZigBee等短距離無線通信技術(shù)都應(yīng)用廣泛,且各有所長,在不同的應(yīng)用場景中發(fā)揮著作用和優(yōu)勢。其中Wi-Fi傳輸在當(dāng)下應(yīng)用較廣泛,但是其傳輸功耗問題一直受到詬病,而NodeMCU能夠在滿足物聯(lián)網(wǎng)設(shè)備相關(guān)功能的同時降低Wi-Fi傳輸功耗,從而有效改善這一缺陷[2]?,F(xiàn)在比較常見的NodeMCU應(yīng)用方法是將其移植到專用的機智云SOC方案中,但這種做法并不能很好地將NodeMCU嵌入到物聯(lián)網(wǎng)系統(tǒng)云邊端架構(gòu)中。

      本文介紹一種基于NodeMCU的雙向通信系統(tǒng),聚焦于物聯(lián)網(wǎng)系統(tǒng)云邊端架構(gòu)中的邊—端環(huán)節(jié),使系統(tǒng)搭接到云平臺后能夠構(gòu)成完整的物聯(lián)網(wǎng)系統(tǒng)。

      1 系統(tǒng)結(jié)構(gòu)與工作原理

      系統(tǒng)主要由兩塊NodeMCU構(gòu)成,一塊作為設(shè)備端,一塊與上位機組成網(wǎng)關(guān),實現(xiàn)邊—端通信。系統(tǒng)采用的NodeMCU是一種搭載了ESP8266-F12模塊(以下簡稱ESP8266)的MCU,專門用于Wi-Fi通信。系統(tǒng)結(jié)構(gòu)如圖1所示。

      NodeMCU1(模塊1)連接有一個溫濕度傳感器(DHT11)和一個執(zhí)行機構(gòu)(本系統(tǒng)中為風(fēng)扇)。用手機連接模塊1的網(wǎng)絡(luò),并在配置界面輸入NodeMCU2(模塊2)的熱點名、密碼、設(shè)備名稱和傳感器名稱,并確認(rèn)。模塊2連接上位機,發(fā)出熱點,與模塊1建立連接。模塊1每5秒向模塊2發(fā)送傳感器信息,上位機可隨時通過模塊2向模塊1發(fā)送控制信號,使執(zhí)行機構(gòu)按要求運動。

      2 硬件架構(gòu)設(shè)計

      NodeMCU使用Lua編程語言實現(xiàn)硬件功能。Lua實現(xiàn)了將C語言輕量化,并結(jié)合動態(tài)語言特性,可以在減小內(nèi)存空間占用的同時完成復(fù)雜的功能[3]。NodeMCU能夠通過豐富的GPIO接口、擴展口和串口連接外圍設(shè)備,并且這些接口在驅(qū)動時使用的都是非阻塞的事件驅(qū)動,所以不僅使用方便,而且可以有效地降低功耗,在物聯(lián)網(wǎng)應(yīng)用中具有一定的優(yōu)勢[2]。

      硬件設(shè)計主要體現(xiàn)在第一塊NodeMCU上,該NodeMCU本身作為無線通信模塊,同時連接了執(zhí)行機構(gòu)和傳感器。硬件總體設(shè)計如圖2所示。其中DHT11即溫濕度傳感器,用于采集空氣溫度數(shù)據(jù);繼電器和風(fēng)扇為執(zhí)行機構(gòu),若收到轉(zhuǎn)動信號,則風(fēng)扇轉(zhuǎn)動,否則靜止。

      2.1 無線通信模塊

      NodeMCU搭載的ESP8266是一款超低功耗的UART—Wi-Fi透傳模塊,其自身包含可以實現(xiàn)串口和Wi-Fi轉(zhuǎn)換的TCP/IP協(xié)議棧[4]。ESP8266與NodeMCU主板內(nèi)部連接,直接對主板編程,可間接編輯無線通信模塊。

      ESP8266有三種工作模式:

      (1)AP模式,即接入點模式。該模式下ESP8266發(fā)出熱點,允許其他客戶端與其建立通信連接。

      (2)STA模式,即客戶端模式。該模式下ESP8266作為客戶端連接熱點,申請建立連接。

      (3)AP+STA模式,即混合模式。該模式下ESP8266可同時完成發(fā)出熱點和連接熱點的功能[5]。

      根據(jù)實際情況,將模塊1配置為AP+STA模式,用手機連接模塊1并在配置界面輸入模塊2的熱點名、密碼、設(shè)備名稱和傳感器名稱,確認(rèn)后MCU模式更改為STA模式;將模塊2設(shè)置為AP模式,發(fā)出熱點,與模塊1建立連接。

      2.2 傳感器模塊

      傳感器應(yīng)用DHT11溫濕度傳感器的溫度傳感部分。DHT11是一款有已校準(zhǔn)數(shù)字信號輸出的溫濕度傳感器,其精度為:濕度±5%RH,溫度±2℃;量程為:濕度20%~90%RH,溫度0~50℃。DHT11有三個引腳,分別為VCC、GND和Signal,分別與MCU的3.3V、GND和D4口相連接。D4口負(fù)責(zé)采集傳感器信息[6]。

      2.3 執(zhí)行機構(gòu)

      執(zhí)行機構(gòu)由一個低電平觸發(fā)5 V繼電器和一個12 V風(fēng)扇組成。繼電器模塊分為控制端和執(zhí)行端兩個部分,控制端中有VCC、GND和IN三個引腳,分別與MCU的3.3 V、GND和GPIO01(TX)相連接。執(zhí)行端與風(fēng)扇相連接。執(zhí)行機構(gòu)接線如圖3所示[7]。當(dāng)GPIO01從高電平置低時,繼電器開關(guān)閉合,風(fēng)扇轉(zhuǎn)動。執(zhí)行機構(gòu)工作邏輯如表1所示。

      2.4 電源

      NodeMCU有外接電源的Micro USB口,可接5 V、2 A的充電寶等電源。執(zhí)行機構(gòu)的電源接4節(jié)3 V紐扣電池。

      3 軟件設(shè)計

      3.1 主程序架構(gòu)

      由于系統(tǒng)有兩個模式的NodeMCU組成,所以主程序架構(gòu)也分為兩個部分,如圖4所示。

      對于NodeMCU1(模塊1),其主程序比較復(fù)雜,需要按照流程依次進行,并且為了防止程序出現(xiàn)邏輯錯誤,需要在必要的地方添加定時器。大致流程如下:首先,初始化配置,配置GPIO01、HTTP和Wi-Fi,目前為AP+STA模式;其次,打開HTTP對80端口進行監(jiān)聽,當(dāng)手機連接該模塊網(wǎng)絡(luò)時,調(diào)用登錄界面發(fā)送到手機上,并獲取手機上填寫的熱點名、密碼、設(shè)備名稱和傳感器名稱[8],保持10 s,使MCU連接NodeMCU2(模塊2)發(fā)出的熱點,并將其轉(zhuǎn)換為STA模式;然后,當(dāng)Wi-Fi連接成功后,初始化TCP傳輸;最后,通過Wi-Fi透傳一次打包好的設(shè)備和傳感器名稱,并每5 s發(fā)送打包好的溫度值。在監(jiān)聽過程中,TCP收到控制命令后進入控制程序。

      對于NodeMCU2(模塊2),首先配置為AP模式,設(shè)置名稱和密碼;其次,設(shè)置模塊為TCP服務(wù)器模式,監(jiān)聽8080端口,判斷客戶端連接狀態(tài),接收溫度信息,并通過UART0傳給上位機。當(dāng)串口收到控制命令時,將打包信息廣播給所有客戶端。

      3.2 無線通信模塊軟件設(shè)計

      無線通信模塊軟件設(shè)計只涉及到對Wi-Fi的配置。

      模塊1進行以下步驟:

      (1)設(shè)置模式為AP+STA。

      (2)設(shè)置Wi-Fi信息,如AP的熱點名(SSID)和密碼(PASSWORD)。SSID為nodemcu_temperature,PASSWORD為12345678,密碼形式為WPA2_PSK[9]。

      (3)連接熱點。通過HTTP服務(wù)獲取模塊2的SSID和PASSWORD進行連接,并開啟定時器判斷是否連接成功,成功的標(biāo)志為獲取到IP地址。

      (4)模式更改。在連接成功后,關(guān)閉定時器,更改為STA模式[10]。

      模塊2進行以下步驟:

      (1)設(shè)置模式為AP。

      (2)設(shè)置Wi-Fi信息。

      3.3 配置界面設(shè)計

      HTTP屬于應(yīng)用層面向?qū)ο蟮膮f(xié)議,在NodeMCU中有相應(yīng)的配置函數(shù),既簡捷又方便[11]??紤]到NodeMCU占用內(nèi)存不大,這里使用輕量版HTTP服務(wù)代碼。配置界面的使用和HTTP服務(wù)密不可分。寫好的一個HTML配置界面如圖5所示。在主程序中,建立基于HTTP協(xié)議前端和后端的一種鏈接。

      后端從URL中獲取路由和傳遞的參數(shù),調(diào)用路由索引的服務(wù),將運行服務(wù)的結(jié)果返回前端。前端向后端發(fā)送HTTP請求,訪問后端的config和setname服務(wù),并傳遞參數(shù)SSID和PASSWORD,通過device_name和sensor_name獲取請求結(jié)果。后端截取到的數(shù)據(jù)用于完成后續(xù)任務(wù)。

      3.4 TCP通信

      通過TCP通信傳輸數(shù)據(jù)的前提是知道對方的IP地址。模塊2作為熱點,應(yīng)最先供電使用。經(jīng)過實驗得知,其IP固定,為192.168.4.1。TCP透明傳輸部分代碼也分為兩部分[12]。

      模塊1作為客戶端,向服務(wù)端發(fā)送連接請求,握手成功后便可傳輸數(shù)據(jù)。代碼涉及三個函數(shù):初始化函數(shù)、重新連接函數(shù)、停止連接函數(shù)。初始化函數(shù)分為三個部分,首先,將模塊1配置為客戶端,并通過8080端口與192.168.4.1建立連接;其次,時刻監(jiān)聽是否收到控制命令,如收到則執(zhí)行;最后,如果監(jiān)聽中發(fā)現(xiàn)斷開連接,則重新連接,連接成功后,停止連接。

      模塊2作為服務(wù)端,與客戶端建立連接。首先,初始化,將模塊2配置為服務(wù)端,建立TCPSocketList列表;然后,監(jiān)聽8080端口,判斷申請連接的客戶端個數(shù),由于基于Lua的TCP服務(wù)端最多可以接收4個客戶端的連接,所以當(dāng)?shù)?個客戶端發(fā)送請求的時候,模塊2將斷開與第1個客戶端的連接。當(dāng)模塊2收到來自模塊1的數(shù)據(jù)時,將數(shù)據(jù)通過串口轉(zhuǎn)送給上位機;最后,當(dāng)串口收到上位機發(fā)來的控制命令時,模塊2以廣播的形式將數(shù)據(jù)發(fā)送給所有客戶端[13]。

      3.5 數(shù)據(jù)格式設(shè)定

      系統(tǒng)數(shù)據(jù)傳輸采用JSON(JavaScript Object Notation)格式。JSON是一種輕量級的數(shù)據(jù)交換格式,易于閱讀和編寫,同時也易于機器解析和生成。由于本系統(tǒng)可以拓展到云平臺,且云平臺軟件大部分采用Java語言開發(fā),因此JSON格式更易受到開發(fā)人員的喜愛[14]。NodeMCU也有JSON格式的相關(guān)函數(shù)。

      數(shù)據(jù)格式具體定義如下[15]:

      (1)設(shè)備信息:{device_name: fan,sensor_name: temp}&

      (2)溫度信息:{sensor_name: temp, param: 21.0}&

      (3)控制命令:{ device_name: fan,param: 1}&

      其中“&”是為了方便上位機區(qū)分各條信息的標(biāo)注符。

      3.6 傳感器信息讀取

      NodeMCU中有專門用于讀取DHT11溫濕度傳感器信息的函數(shù)。利用dht.read函數(shù)讀取溫度和濕度信息,只取用其中溫度的部分,并打包成JSON格式。

      3.7 控制執(zhí)行機構(gòu)軟件設(shè)計

      當(dāng)模塊收到控制信息時,首先需要解析JSON數(shù)據(jù),然后作出判斷:如果關(guān)鍵詞device_name的值是“fan”,且關(guān)鍵詞param的值是“1”,則將GPIO01置低電平,風(fēng)扇轉(zhuǎn);反之,GPIO01置高,風(fēng)扇不轉(zhuǎn)。

      4 系統(tǒng)測試與評價

      按系統(tǒng)的硬件設(shè)計和軟件設(shè)計制作了實際模塊,實物如圖6所示。

      按需求搭接電路,為模塊2和模塊1依次供電。用手機連接名為nodemcu_temperature的Wi-Fi,輸入密碼、設(shè)備名和傳感器名,點擊確定。

      等待一些時間后,每5 s上位機會顯示收到的溫度信息。通過上位機發(fā)送JSON格式的控制指令,風(fēng)扇按要求轉(zhuǎn)動。傳輸過程中偶爾會有丟包現(xiàn)象,溫度數(shù)據(jù)存在丟失情況,但影響不大。

      5 結(jié)語

      本文設(shè)計的基于NodeMCU的雙向通信系統(tǒng),在物聯(lián)網(wǎng)應(yīng)用中可以起到降低功耗、可靠傳輸?shù)淖饔?,特別是在邊—端環(huán)節(jié)建立方便、穩(wěn)定的數(shù)據(jù)傳輸通道是優(yōu)勢。從測試和使用情況上看,該系統(tǒng)性能良好,接入云平臺后具有可觀的市場前景和應(yīng)用價值。

      參考文獻

      [1] 李孟臻. 短距離無線通信技術(shù)在物聯(lián)網(wǎng)中的應(yīng)用探討[J]. 通訊世界, 2019, 26(1): 129-130.

      [2] 楊芳, 何勇, 晏平. 基于NodeMCU的醫(yī)療語音呼叫系統(tǒng)設(shè)計[J]. 計算機技術(shù)與發(fā)展, 2019, 29(7): 135-139.

      [3] 熊夢彪, 高譽, 周龍麗, 等. 基于NodeMCU和MQTT協(xié)議的物聯(lián)網(wǎng)網(wǎng)關(guān)設(shè)計[J]. 數(shù)字通信世界, 2019(12): 47.

      [4] Azmi N, Sudin S, Kamarudin L M, et al. Design and Development of Multi-Transceiver Lorafi Board consisting LoRa and ESP8266-Wifi Communication Module[J]. IOP Conference Series: Materials Science and Engineering, 2018, 318: 012051.

      [5] 張問松, 荊黎明, 田思慶. 基于ZigBee和ESP8266的遠(yuǎn)程灌溉控制平臺設(shè)計[J]. 山西電子技術(shù), 2020(1): 12-14.

      [6] 劉美麗, 李曰陽, 李震. 基于嵌入式的農(nóng)作物生長環(huán)境的監(jiān)測控制系統(tǒng)設(shè)計[J]. 自動化與儀器儀表, 2019(12): 141-143.

      [7] 劉煥. 一種物聯(lián)網(wǎng)多協(xié)議智能管控系統(tǒng)的設(shè)計與開發(fā)[D]. 北京: 北京郵電大學(xué), 2019.

      [8] 林劍敏. 凈水器凈水量手機顯示軟件的設(shè)計與實現(xiàn)[J]. 福建電腦, 2020, 36(1): 58-61.

      [9] 陳錦偉. 家庭無線局域網(wǎng)數(shù)據(jù)加密應(yīng)用分析[J]. 計算機光盤軟件與應(yīng)用, 2013, 16(4): 9-10.

      [10] Kashyap M, Sharma V, Gupta N. Taking MQTT and NodeMcu to IOT: Communication in Internet of Things[J]. Procedia Computer Science, 2018, 132: 1611-1618.

      [11] 孟慶杰, 何鈺. 利用HTTP協(xié)議GET請求得IP[J]. 網(wǎng)絡(luò)安全和信息化, 2019(11): 158-159.

      [12] 袁勇. 嵌入式TCP/IP協(xié)議單片機技術(shù)在網(wǎng)絡(luò)通信中的應(yīng)用[J]. 現(xiàn)代信息科技, 2020, 4(2): 82-84.

      [13] 徐子豪, 張騰飛. 基于語音識別和無線傳感網(wǎng)絡(luò)的智能家居系統(tǒng)設(shè)計[J]. 計算機測量與控制, 2012, 20(1): 180-182.

      [14] 陸國君, 金勤芳, 張慧麗. 基于MQTT網(wǎng)關(guān)連接PLC與阿里云物聯(lián)網(wǎng)平臺的工業(yè)物聯(lián)網(wǎng)系統(tǒng)[J]. 物聯(lián)網(wǎng)技術(shù), 2019, 9(12): 58-60, 63.

      [15] 金鳴, 袁嵩, 劉榮. 利用JSON實現(xiàn)客戶端與服務(wù)器端通信[J]. 電腦編程技巧與維護, 2018(4): 75-77.

      作者簡介:

      肖楊(1999—),通信作者,男,漢族,遼寧大連人,深圳大學(xué)本科在讀。研究方向:物聯(lián)網(wǎng)。

      E-mail: 852331418@qq.com

      林釗浩(1998—),男,漢族,廣東揭陽人,深圳大學(xué)本科在讀。研究方向:物聯(lián)網(wǎng)。

      (收稿日期:2020-05-21)

      Two-way Communication System Based on NodeMCU

      XIAO Yang, LIN Zhao-hao

      (College of Mechatronics and Control Engineering, Shenzhen University, Shenzhen 518061, China)

      Abstract: Wi-Fi is a common wireless communication technology applied to the Internet of Things, but it has the defect of high transmission power consumption. A two-way communication system based on NodeMCU is proposed. In terms of hardware, NodeMCU is equipped with ESP8266-F12 module to realize the wireless communication and effectively reduce the transmission power consumption. In terms of software, NodeMCU module can flexibly realize configurations including access point (AP), control end (STA) and hybrid mode (AP+STA), and users can realize data transmission and equipment control requirements through connection configuration interface. The system adopts lightweight JSON data transmission format, with convenient and stable data transmission channels, and effectively realizes the side-to-terminal link in the cloud side architecture of the Internet of Things system, which can be easily connected to the cloud platform to form an Internet of Things system with high efficiency communication and low power consumption.

      Key words: NodeMCU; ESP8266-F12; Wi-Fi; Wireless Communication; Two-way Communication; Internet of Things

      猜你喜歡
      上位風(fēng)扇客戶端
      夏日說“扇”
      AirFan手持小風(fēng)扇
      一場史無前例的樂隊真人秀
      虛擬專用網(wǎng)絡(luò)訪問保護機制研究
      新聞客戶端差異化發(fā)展策略
      電風(fēng)扇
      基礎(chǔ)油“上位”
      設(shè)計 創(chuàng)意風(fēng)扇帶來夏日涼風(fēng)
      淺析IEEE 802.1x及其客戶端軟件
      基于VC的PLC數(shù)據(jù)采集管理系統(tǒng)
      厦门市| 惠来县| 城固县| 错那县| 静宁县| 宣化县| 古蔺县| 泗洪县| 昭平县| 馆陶县| 视频| 定州市| 横峰县| 威海市| 邹城市| 永德县| 晋江市| 阳山县| 会同县| 察哈| 鸡泽县| 谢通门县| 阳江市| 福泉市| 文昌市| 富川| 隆林| 仙游县| 长垣县| 抚宁县| 江达县| 彭泽县| 石泉县| 镇赉县| 遂川县| 常州市| 班玛县| 分宜县| 潞城市| 贺州市| 冕宁县|