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

基于OpenWrt與ZigBee的遠(yuǎn)程分布式物聯(lián)網(wǎng)監(jiān)控系統(tǒng)設(shè)計(jì)*

2019-09-26 03:06:10葛聰樂(lè)王晨宇任春枝
傳感器與微系統(tǒng) 2019年10期
關(guān)鍵詞:數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)

葛聰樂(lè), 車(chē) 進(jìn), 田 斌, 王晨宇, 任春枝

(寧夏大學(xué) 物理與電子電氣工程學(xué)院,寧夏 銀川 750021)

0 引 言

隨著物聯(lián)網(wǎng)技術(shù)在生活中的普及應(yīng)用,以智慧農(nóng)業(yè)、精準(zhǔn)農(nóng)業(yè)為標(biāo)準(zhǔn)的農(nóng)業(yè)物聯(lián)網(wǎng)已經(jīng)成為現(xiàn)代農(nóng)業(yè)發(fā)展的一個(gè)重要趨勢(shì)[1,2]。在傳統(tǒng)的土壤數(shù)據(jù)采集中存在采集面積較小、采集數(shù)據(jù)量較低及數(shù)據(jù)誤差等問(wèn)題,通過(guò)利用物聯(lián)網(wǎng)技術(shù),以實(shí)現(xiàn)土壤數(shù)據(jù)采集的智慧化和精準(zhǔn)化。

本文設(shè)計(jì)了一種分布式部署ZigBee傳感器節(jié)點(diǎn),通過(guò)OpenWrt網(wǎng)關(guān)轉(zhuǎn)發(fā)數(shù)據(jù)至服務(wù)器的系統(tǒng)方案。

1 系統(tǒng)總體結(jié)構(gòu)

系統(tǒng)的總體結(jié)構(gòu)包括了ZigBee模塊、MT7688網(wǎng)關(guān)及服務(wù)器三部分。ZigBee模塊由協(xié)調(diào)器和終端節(jié)點(diǎn)組成,各個(gè)節(jié)點(diǎn)將采集的土壤數(shù)據(jù)通過(guò)ZigBee 網(wǎng)絡(luò)協(xié)議發(fā)至ZigBee協(xié)調(diào)器。網(wǎng)關(guān)部分負(fù)責(zé)數(shù)據(jù)轉(zhuǎn)發(fā),與協(xié)調(diào)器使用Mod-bus通信協(xié)議,并把采集的數(shù)據(jù)寫(xiě)入備用的SQLite3數(shù)據(jù)庫(kù),同時(shí)網(wǎng)關(guān)向MQTT(MQ telemetry transport) Broker發(fā)布數(shù)據(jù)消息話題。

遠(yuǎn)程Linux PC機(jī)服務(wù)器中的MQTT Broker可以管理一個(gè)或多個(gè)網(wǎng)關(guān)發(fā)布的消息話題,在后臺(tái)應(yīng)用程序中訂閱發(fā)布的消息話題,并把數(shù)據(jù)存入MySQL。

2 系統(tǒng)硬件設(shè)計(jì)

2.1 網(wǎng)關(guān)模塊

網(wǎng)關(guān)以聯(lián)發(fā)科公司的MT7688為主控制器,該控制器集成了主頻最高580 MHz的MIPS 24KEc CPU處理器,配置有標(biāo)準(zhǔn)IEEE 802.11n Wi—Fi無(wú)線電,3個(gè)UART串口、及GPIO等接口。MT7688提供物聯(lián)網(wǎng)網(wǎng)關(guān)和物聯(lián)網(wǎng)設(shè)備兩種模式,本系統(tǒng)使用物聯(lián)網(wǎng)網(wǎng)關(guān)模式。

由系統(tǒng)架構(gòu)圖可知,MT7688系統(tǒng)配有一個(gè)802.11n WiFi接口和一個(gè)RJ45接口,系統(tǒng)可工作于有線和無(wú)線兩種模式。

2.2 ZigBee模塊

ZigBee是一種無(wú)線傳感網(wǎng)絡(luò)新技術(shù),其協(xié)議是由ZigBee聯(lián)盟制定的一種基于IEEE802.15.4技術(shù)的無(wú)線傳輸標(biāo)準(zhǔn),ZigBee技術(shù)具有低功耗、低成本、近距離等特點(diǎn)[3,4]。目前ZigBee結(jié)合傳感器的系統(tǒng)設(shè)計(jì)技術(shù)已經(jīng)成熟,并且自組網(wǎng)功能較強(qiáng),在無(wú)線傳感網(wǎng)絡(luò)系統(tǒng)中被廣泛地采用。

ZigBee網(wǎng)絡(luò)有星型、樹(shù)型、Mesh(網(wǎng)狀拓?fù)?三種拓?fù)浣Y(jié)構(gòu),按照拓?fù)浣Y(jié)構(gòu)可將ZigBee模塊分為協(xié)調(diào)器、路由器及節(jié)點(diǎn)三類(lèi)。與另外兩種拓?fù)浣Y(jié)構(gòu)相比采用星型拓?fù)浣Y(jié)構(gòu)具有結(jié)構(gòu)簡(jiǎn)單、傳輸速度快等特點(diǎn),在此結(jié)構(gòu)中路由器和終端節(jié)點(diǎn)都被作為終端設(shè)備使用。

3 通信協(xié)議設(shè)計(jì)

3.1 Modbus-網(wǎng)關(guān)與協(xié)調(diào)器通信協(xié)議

基于串口通信具有傳輸數(shù)據(jù)量大、誤碼識(shí)別率高等優(yōu)點(diǎn)[5,6]。協(xié)調(diào)器與網(wǎng)關(guān)之間的通信采用Modbus RTU,以網(wǎng)關(guān)作為主站、協(xié)調(diào)器作為從站,主站向從站發(fā)送如表1的心跳包數(shù)據(jù),從站接收到心跳包數(shù)據(jù)后響應(yīng)如表2數(shù)據(jù)。

表1 心跳包數(shù)據(jù)

表2 響應(yīng)數(shù)據(jù)

在上述表格中H代表該值的十六進(jìn)制數(shù)據(jù)高8位,L代表該值的十六進(jìn)制數(shù)據(jù)低8位。

3.2 MQTT-網(wǎng)關(guān)與服務(wù)器通信協(xié)議

MQTT是一種基于發(fā)布/訂閱的消息協(xié)議,專(zhuān)為受限設(shè)備和高延遲、不可靠或低帶寬的網(wǎng)絡(luò)而設(shè)計(jì),TCP/IP端口1883與IANA保留在一起專(zhuān)用于MQTT[7,8]。

3.2.1 MQTT消息模型

在MQTT中存在MQTT Broker、客戶(hù)端兩個(gè)角色,其中客戶(hù)端包括了訂閱者和發(fā)布者兩部分,客戶(hù)端通過(guò)發(fā)送請(qǐng)求報(bào)文與MQTT Broker確認(rèn)并建立連接,MQTT Broker負(fù)責(zé)處理訂閱者和發(fā)布者的請(qǐng)求。

考慮需要傳輸溫度、電導(dǎo)率及濕度3種數(shù)據(jù),基于以上數(shù)據(jù)類(lèi)型分別設(shè)計(jì)了3種數(shù)據(jù)消息話題,分別對(duì)應(yīng)1/temperature、1/conductivity、1/humidity。發(fā)布者、訂閱者與MQTT Broker消息模型如圖1。

圖1 MQTT Broker消息模型

3.2.2 MQTT Broker和客戶(hù)端部署

MQTT Broker部署在遠(yuǎn)程PC機(jī)中,實(shí)現(xiàn)MQTT Broker的軟件種類(lèi)繁多,本次采用經(jīng)過(guò)EPL/EDL許可的開(kāi)源消息代理Eclipse Mosquitto,Mosquitto是基于MQTT協(xié)議3.1和3.1.1的輕量級(jí)消息代理軟件。在Linux系統(tǒng)中下載Mosquitto代碼后,修改代碼目中config.mk文件可以配置支持SSL/TLS、橋接模式等功能。

MQTT客戶(hù)端包括了網(wǎng)關(guān)部分的發(fā)布者及PC機(jī)中后臺(tái)服務(wù)的訂閱者,為了與Mosquitto相互兼容,客戶(hù)端采用了開(kāi)源Eclipse Paho項(xiàng)目。Paho支持多語(yǔ)言庫(kù),而且專(zhuān)為嵌入式設(shè)備提供了 MQTT 嵌入式C/C++ 客戶(hù)端庫(kù),因此,在嵌入式網(wǎng)關(guān)中移植基于Paho的嵌入式客戶(hù)端庫(kù)實(shí)現(xiàn)數(shù)據(jù)消息話題發(fā)布,在PC機(jī)中使用標(biāo)準(zhǔn)MQTT C 庫(kù)實(shí)現(xiàn)消息話題訂閱。

4 系統(tǒng)軟件設(shè)計(jì)

4.1 OpenWrt系統(tǒng)設(shè)計(jì)

OpenWrt是一個(gè)開(kāi)源的Linux衍生版,支持Intel X86、MIPS及ARM等架構(gòu),具有強(qiáng)大的網(wǎng)絡(luò)功能以及豐富的模塊和用戶(hù)自定義庫(kù)[9,10]。

4.1.1 交叉編譯鏈創(chuàng)建

Buildroot是一種簡(jiǎn)易的交叉編譯工具,不僅可以編譯ARM架構(gòu)同時(shí)支持編譯MIPS架構(gòu)。獲取Buildroot源碼后,進(jìn)入源碼包路徑中通過(guò)make menuconfig命令選擇交叉編譯配置。在Target options中選擇Target Architecture (MIPS (little endian)),其中,MIPS (little endian)為MIPS小端模式,在toolchain中選擇需要配置的選項(xiàng),經(jīng)過(guò)編譯之后在服務(wù)器用戶(hù)目錄下的bashrc文件中添加交叉編譯路徑,即可在全局環(huán)境中使用交叉編譯命令編譯程序。

4.1.2 SQlite3數(shù)據(jù)庫(kù)添加及使用

OpenWrt內(nèi)核中帶有SQlite3數(shù)據(jù)庫(kù)選項(xiàng),需在內(nèi)核中配置libsqlite3和sqlite3-cli,經(jīng)過(guò)編譯之后生成相關(guān)的鏈接庫(kù)文件,編譯程序時(shí)需依賴(lài)生成的鏈接庫(kù)文件并指明庫(kù)文件和所引用頭文件的路徑[11,12]。在OpenWrt系統(tǒng)中使用SQlite3數(shù)據(jù)庫(kù)可以生成以.db結(jié)尾的數(shù)據(jù)庫(kù)文件,使用如下的SQlite命令可以轉(zhuǎn)換為MySQL文件:

sqlite3 xxx.db < xxx.sql

xxx.db 指待轉(zhuǎn)換的SQlite文件,xxx.sql為生成的MySQL文件。

4.2 網(wǎng)關(guān)應(yīng)用程序設(shè)計(jì)

為了最大效率利用硬件處理器,網(wǎng)關(guān)程序采用并行多線程設(shè)計(jì),與串行結(jié)構(gòu)相比并行結(jié)構(gòu)運(yùn)行速度更快、處理周期更短。網(wǎng)關(guān)程序分為線程1、線程2和主進(jìn)程三部分。

4.2.1 主進(jìn)程設(shè)計(jì)

主進(jìn)程負(fù)責(zé)網(wǎng)關(guān)策略調(diào)度。首先打開(kāi)串口,初始化波特率、奇偶校驗(yàn)位、阻塞超時(shí)時(shí)間等串口參數(shù),然后設(shè)置MQTT客戶(hù)端地址、信號(hào)質(zhì)量、MQTT Broker IP地址和端口號(hào)等參數(shù),參數(shù)設(shè)置成功后,向MQTT服務(wù)器發(fā)送請(qǐng)求報(bào)文并與之建立連接。之后創(chuàng)建2個(gè)子線程,開(kāi)始任務(wù)調(diào)度處理。最后等待子線程結(jié)束,子線程結(jié)束后為防止內(nèi)存泄漏需將子線程銷(xiāo)毀。

4.2.2 線程1設(shè)計(jì)

線程1負(fù)責(zé)向協(xié)調(diào)器定時(shí)發(fā)送Modbus心跳包數(shù)據(jù)。在OpenWrt系統(tǒng)中用POSIX Timer函數(shù)和signal信號(hào)函數(shù)相結(jié)合實(shí)現(xiàn)定時(shí)發(fā)送數(shù)據(jù)包,實(shí)現(xiàn)步驟如下:

1)使用timer_create()創(chuàng)建定時(shí)器,該函數(shù)創(chuàng)建的定時(shí)器屬于進(jìn)程本身,此函數(shù)的參數(shù)成員之一為struct sigevent *evp,改變evp的成員變量可執(zhí)行不同的動(dòng)作。

2)在定時(shí)器創(chuàng)建完之后,使用timer_settime()函數(shù)設(shè)置定時(shí)周期。

3)定時(shí)器到時(shí)之后signal()函數(shù)收到對(duì)應(yīng)信號(hào)并執(zhí)行相關(guān)的功能函數(shù),在該函數(shù)中計(jì)算CRC校驗(yàn)碼、封包、發(fā)送心跳包。

4.2.3 線程2設(shè)計(jì)

在線程2中由網(wǎng)關(guān)接收協(xié)調(diào)器的響應(yīng)數(shù)據(jù)包,當(dāng)讀取串口數(shù)據(jù)未超時(shí)解析響應(yīng)數(shù)據(jù)包,將解析的數(shù)據(jù)通過(guò)校驗(yàn)計(jì)算與數(shù)據(jù)包里的校驗(yàn)碼相對(duì)比,校驗(yàn)正確則把數(shù)據(jù)寫(xiě)入SQlite3數(shù)據(jù)庫(kù),并向MQTT Broker發(fā)布數(shù)據(jù)消息話題。

4.3 遠(yuǎn)程服務(wù)器和MySQL設(shè)計(jì)

在遠(yuǎn)程服務(wù)器PC機(jī)中配置了MQTT Broker和MySQL,服務(wù)器程序中使用MQTT C 庫(kù)提供的API函數(shù)建立MQTT客戶(hù)端、連接MQTT Broker、訂閱網(wǎng)關(guān)發(fā)布的數(shù)據(jù)消息,當(dāng)消息到達(dá)時(shí)向數(shù)據(jù)庫(kù)寫(xiě)入數(shù)據(jù)。

對(duì)于數(shù)據(jù)庫(kù)的設(shè)計(jì)流程,整體基于MySQL的結(jié)構(gòu),設(shè)計(jì)步驟如下:

# mysql—uroot—p123456;連接數(shù)據(jù)庫(kù),—u指定用戶(hù),—p為用戶(hù)密碼。

#mysql>create database Embedded;創(chuàng)建名為Embedded數(shù)據(jù)庫(kù)。

# mysql>use Embedded;使用該數(shù)據(jù)庫(kù)。

# mysql>create table Sensor(

數(shù)據(jù)編號(hào) int(4) not null,

溫度 double not null,

電導(dǎo)率 double not null,

濕度 double not null);創(chuàng)建名為Sensor表,并向其中添加了4種數(shù)據(jù)字段。

在應(yīng)用程序中需初始化MySQL數(shù)據(jù)庫(kù)結(jié)構(gòu)、連接已建立的數(shù)據(jù)庫(kù)、插入指定的數(shù)據(jù)。

5 功能測(cè)試

在遠(yuǎn)程服務(wù)器PC機(jī)中打開(kāi)3個(gè)命令窗口分別輸入以下命令可查看訂閱數(shù)據(jù)消息,其命令如下:

#mosquitto_sub—t 1/temperature—i localhost—p 1883

#mosquitto_sub—t 1/conductivity—i localhost—p 1883

# mosquitto_sub—t 1/humidity—i localhost—p 1883

-t指定訂閱的數(shù)據(jù)消息話題,-i指定連接的MQTT Broker IP地址,localhost為本地MQTT Broker地址,1883為MQTT特定的消息服務(wù)器端口。

在服務(wù)器中通過(guò)MySQL命令查看應(yīng)用程序向數(shù)據(jù)庫(kù)寫(xiě)入的數(shù)據(jù),MySQL中數(shù)據(jù)如圖2。

圖2 MySQL數(shù)據(jù)

6 結(jié) 論

本文提出了一種基于OpenWrt與ZigBee的遠(yuǎn)程分布式物聯(lián)網(wǎng)數(shù)據(jù)監(jiān)控系統(tǒng),對(duì)于數(shù)據(jù)的存儲(chǔ)設(shè)計(jì)了2種不同位置的數(shù)據(jù)庫(kù),在數(shù)據(jù)傳輸過(guò)程中為了保證數(shù)據(jù)傳輸?shù)目煽啃院蜏?zhǔn)確性使用了MQTT和Modbus通信協(xié)議。該系統(tǒng)整體結(jié)構(gòu)完善,適宜于在遠(yuǎn)程分布式環(huán)境中部署,具有一定的實(shí)際應(yīng)用價(jià)值。

猜你喜歡
數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無(wú)人機(jī)系統(tǒng)
ZC系列無(wú)人機(jī)遙感系統(tǒng)
瞞天過(guò)海——仿生設(shè)計(jì)萌到家
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
設(shè)計(jì)秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計(jì)叫而專(zhuān)
Coco薇(2017年5期)2017-06-05 08:53:16
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
主站蜘蛛池模板: 午夜日b视频| 久久网综合| 国产精品色婷婷在线观看| 白浆免费视频国产精品视频| 8090午夜无码专区| 欧美日韩午夜| 九九香蕉视频| 亚洲无码精彩视频在线观看| 国产精品亚洲天堂| 亚洲第一中文字幕| 国产精品分类视频分类一区| av大片在线无码免费| 国产激爽大片高清在线观看| 久久男人资源站| 色噜噜狠狠狠综合曰曰曰| 成人国产精品2021| 亚洲人视频在线观看| 青青草原国产av福利网站 | 无码综合天天久久综合网| 色爽网免费视频| 日韩在线成年视频人网站观看| 亚洲欧美另类视频| 国产成人免费手机在线观看视频| 日韩黄色精品| 亚洲人成网7777777国产| 国产精品专区第1页| 成人精品视频一区二区在线| 久久黄色视频影| 国产亚洲欧美在线视频| 欧美国产精品不卡在线观看| 免费人欧美成又黄又爽的视频| 久久免费精品琪琪| 成人在线天堂| 精品国产免费人成在线观看| 国产国产人成免费视频77777| 国产成人啪视频一区二区三区| 亚洲丝袜第一页| 免费又爽又刺激高潮网址| 色欲色欲久久综合网| 在线精品视频成人网| 亚洲欧美自拍一区| 欧美一级高清免费a| 亚洲国产天堂久久综合226114| 国产精品9| 国产精品人人做人人爽人人添| 一级毛片不卡片免费观看| 久久一级电影| 亚洲欧洲日本在线| 国产自在线播放| 免费a级毛片视频| 亚洲av片在线免费观看| 日本中文字幕久久网站| 中文字幕免费在线视频| 国产成人高清精品免费| 久草视频精品| 亚洲第一视频网| 欧美在线视频不卡| 精品99在线观看| 最新国产高清在线| 波多野结衣爽到高潮漏水大喷| 亚洲成av人无码综合在线观看| 久久精品中文字幕免费| 日本高清在线看免费观看| 91九色最新地址| 色婷婷国产精品视频| 免费啪啪网址| 亚洲精品片911| 一本无码在线观看| 亚洲精品大秀视频| 亚洲伊人天堂| a毛片免费在线观看| 亚洲欧美色中文字幕| 高清色本在线www| 欧美天天干| 91久草视频| 久草国产在线观看| 一级一级一片免费| 欧美午夜视频在线| 无码专区在线观看| 亚洲成人精品在线| 久久亚洲综合伊人| 日本三级黄在线观看|