程廷果+許維東
摘 要:受施工現(xiàn)場條件限制,常規(guī)的無線網(wǎng)絡(luò)節(jié)點多存在功耗高、傳輸距離短、信號穿透性差、數(shù)據(jù)穩(wěn)定性不足等問題。設(shè)計并實現(xiàn)了一種基于LoRa(long range)技術(shù)的節(jié)點,給出了節(jié)點的軟硬件系統(tǒng)設(shè)計方案。硬件包括SX1278、ds18b20單總線接口、msp430f149、w25q32和ds1302。軟件包括底層驅(qū)動、系統(tǒng)框架和任務(wù)處理程序。將節(jié)點搭建為星型網(wǎng)進(jìn)行測試,結(jié)果證明該節(jié)點工作穩(wěn)定可靠,功耗較低,能滿足大體積混凝土的測溫要求。
關(guān)鍵詞:LoRa技術(shù);msp430f149;星型網(wǎng);大體積混凝土測溫
DOIDOI:10.11907/rjdk.171290
中圖分類號:TP319
文獻(xiàn)標(biāo)識碼:A 文章編號文章編號:1672-7800(2017)008-0111-03
0 引言
隨著建筑行業(yè)的飛速發(fā)展,大體積混凝土越來越普遍,由此帶來的溫度引發(fā)裂縫問題受到工程界廣泛關(guān)注[1-2]。為此,國家標(biāo)準(zhǔn)GB50496-2009規(guī)定大體積混凝土要進(jìn)行現(xiàn)場檢測和試驗[3]。
目前,在我國建筑施工行業(yè)中,采用無線傳感器網(wǎng)絡(luò)(WSN)進(jìn)行結(jié)構(gòu)物和施工環(huán)境的安全監(jiān)測已成為常態(tài)[4]。工程中常見的大體積混凝土溫度監(jiān)控周期一般為數(shù)月,監(jiān)控測點相距往往數(shù)百米,網(wǎng)絡(luò)節(jié)點之間經(jīng)常存在臨時障礙物等,導(dǎo)致包括ZigBee、433MHz在內(nèi)的無線網(wǎng)絡(luò)技術(shù)無法得到有效應(yīng)用。
2013年8月,美國加利福利亞州的Semtech公司推出了一系列基于擴(kuò)頻調(diào)制技術(shù)的LoRa(long range)芯片[5],該芯片在FSK調(diào)制方式下保持低功耗性能的同時,明顯增加了通信距離,具有極強(qiáng)的抗干擾能力。LoRa作為一種調(diào)制技術(shù),是線性調(diào)制擴(kuò)頻(CSS)的一個變種,與同類技術(shù)相比,可提供更長的通信距離,并具有前向糾錯(FEC)功能; LoRa在接收靈敏度方面明顯優(yōu)于傳統(tǒng)調(diào)制技術(shù),其接收靈敏度高達(dá)-148dBm。因此,本文將LoRa技術(shù)引入大體積混凝土測溫領(lǐng)域。
1 節(jié)點系統(tǒng)設(shè)計
為了獲取大體積混凝土內(nèi)的溫度數(shù)據(jù)并通過無線射頻發(fā)送到網(wǎng)關(guān),設(shè)計了如圖1所示的以MCU為中心的采集節(jié)點。MCU采用msp430f149,外圍芯片采用SX1278、w25q32、ds1302,分別實現(xiàn)射頻、存儲和實時時鐘功能,Px(1,2,3,4)用于連接ds18b20總線。
使用IAR集成開發(fā)環(huán)境和C語言開發(fā)MCU軟件系統(tǒng)。軟件結(jié)構(gòu)分為元件驅(qū)動程序、數(shù)據(jù)幀封裝器、任務(wù)管理器和任務(wù)處理程序,如圖2所示。
1.1 硬件系統(tǒng)
傳感器:為了穩(wěn)定可靠,采用工程現(xiàn)場常用的ds18b20傳感器。該傳感器可多個搭接在單總線上,非常適合多點測溫[6],元件參數(shù)見表1。
微控制器:msp430f149是業(yè)界標(biāo)桿TI公司的一款低電壓低功耗芯片,帶有12位ADC,是帶硬件乘法器的16bitMCU,在standby和off模式下電流低至1.6μA和0.1μA[7],元件參數(shù)見表2。
無線射頻芯片:SX1278是市面上最常用的Lora芯片,其無線電頻段屬于ISM開放頻段,無需授權(quán)許可??紤]到射頻PCB的設(shè)計,最后選用以SX1278為核心的Lora模塊。
SX1278具有極高的接收靈敏度和抗干擾能力,127dBm的動態(tài)RSSI,最大20dBm發(fā)送功率,多種調(diào)制方式可選以及載波監(jiān)聽等功能,使用非常方便,安全性好[8]。元件參數(shù)見表3。
1.2 軟件系統(tǒng)
1.2.1 元件驅(qū)動程序
元件驅(qū)動程序是對應(yīng)元件的功能函數(shù)集合,由于函數(shù)較多,這里只介紹主要函數(shù)。
(1)ds18b20:
STATUS SearchROM(char(*ROM)[8],
uchar ROMsize,char*numsofsensor)
SearchROM函數(shù)用于搜集各個端口單總線上所有傳感器的ID并返回各個端口傳感器數(shù)量和函數(shù)執(zhí)行狀態(tài)。
SearchROM函數(shù)主要用到搜索二叉樹算法[9]。
STATUS GetRegister(char*rambuf,
char*singleROM)
GetRegister函數(shù)用于將單個傳感器寄存器中的數(shù)據(jù)復(fù)制到ram,以便計算溫度和CRC校驗[10]。
(2)ds1302:
STATUS GetTime(char*time,
uchar timesize)
STATUS ModifyTime(char *time,
uchar timesiz)
GetTime、Modifyime分別用于讀取和修改實時時鐘。
(3)w25q32:
STATUS WriteData(char*address,
char*ram,uchar size)
STATUS ReadData(char*address,
char*ram,uchar size)
WriteData、ReadData分別用于向flash芯片中寫和讀指定地址和大小的數(shù)據(jù)。
(4)Lora:
void LoraSendBytes(char *rfsendbuf,
uchar size);
LoraSendBytes用于Lora發(fā)送多個字節(jié),Lora接收函數(shù)在interrupt實現(xiàn)。
1.2.2 數(shù)據(jù)幀封裝器
為了使多個節(jié)點能夠共同協(xié)調(diào)工作,將多個節(jié)點的拓?fù)渚W(wǎng)絡(luò)設(shè)計為星型結(jié)構(gòu),見圖3。為使節(jié)點具有自己的地址,在鏈路上互不干擾,需要設(shè)計一個簡單的鏈路協(xié)議,所有采集節(jié)點將各自的數(shù)據(jù)打包成數(shù)據(jù)幀發(fā)送到指定地址的網(wǎng)關(guān)節(jié)點,數(shù)據(jù)幀封裝器用于實現(xiàn)這一功能。endprint
數(shù)據(jù)幀有以下幾種:
(1)上/下行數(shù)據(jù)幀。用于節(jié)點上傳收集的數(shù)據(jù)或網(wǎng)關(guān)控制節(jié)點工作模式,見表4。
(2)上/下行確認(rèn)幀。用于網(wǎng)關(guān)和節(jié)點互相確認(rèn)對方是否成功收到數(shù)據(jù),見表5。
(3)上行心跳幀。心跳幀有兩個作用,用于網(wǎng)關(guān)判斷節(jié)點是否連接網(wǎng)絡(luò)與上傳節(jié)點電壓,見表6。
1.2.3 任務(wù)管理器與任務(wù)程序
任務(wù)程序是節(jié)點軟件系統(tǒng)的中心部件,負(fù)責(zé)處理所有事件,包括采集上傳任務(wù)、設(shè)置參數(shù)任務(wù)、上傳錯誤任務(wù)、上傳心跳任務(wù)等。任務(wù)管理器則負(fù)責(zé)檢查事件表,根據(jù)事件將指令碼插入指令隊列尾并根據(jù)隊列調(diào)用相應(yīng)的處理程序,任務(wù)管理器事件輪詢功能見圖4。
事件表采用RAM中的數(shù)組實現(xiàn),事件表中的位置代表了事件的優(yōu)先級。為了保持處理事件的順序,指令碼采用隊列存儲,隊列使用循環(huán)數(shù)組實現(xiàn),由于運行過程中需要收集發(fā)生的錯誤用于分析原因,而對錯誤沒有順序要求,所以錯誤碼采用棧存儲,棧采用數(shù)組棧實現(xiàn)[11],如圖5所示。
1.2.4 其它
(1)limit。該文件內(nèi)全部是宏定義,用于限制傳感器數(shù)量、隊列、棧、數(shù)據(jù)存儲區(qū)等在內(nèi)存中的大小,以合理使用內(nèi)存。
(2)globlevariable:全局變量。該文件包含系統(tǒng)所有全局變量,用以確定靜態(tài)內(nèi)存區(qū)大小。
(3)clock:全局時鐘區(qū)。所有需要用到時間的服務(wù)都由該文件中的函數(shù)提供。
(4)System:系統(tǒng)初始化。包括CPU時鐘頻率、定時器頻率以及和系統(tǒng)有關(guān)的設(shè)置等。
(5)Interrupt:中斷函數(shù)文件。該文件主要包含LoRa發(fā)送和接收中斷、時鐘中斷。因為Lora模塊休眠后不能接收信號,所以需要設(shè)置接收時隙以及無應(yīng)答重發(fā)機(jī)制。
2 系統(tǒng)測試
將3個節(jié)點分開放于3個實驗室模擬測試,每個節(jié)點接10個傳感器,分別相距網(wǎng)關(guān)約1km、500m、800m,將各節(jié)點分別設(shè)置為間隔10分鐘采集一次數(shù)據(jù)并上傳至網(wǎng)關(guān)。
將網(wǎng)關(guān)接收數(shù)據(jù)處理后通過串口上傳至PC,可在PC端看到各節(jié)點發(fā)來的數(shù)據(jù),見圖6。
3 結(jié)語
節(jié)點模擬工作一段時間后,經(jīng)過對溫度數(shù)據(jù)的分析發(fā)現(xiàn)很少丟失數(shù)據(jù)。經(jīng)過對電壓數(shù)據(jù)的整理發(fā)現(xiàn)功耗較低。在傳輸距離方面,LoRa優(yōu)于同功耗下的2.4GHz與433MHz傳統(tǒng)調(diào)制技術(shù),完全滿足大體積混凝土的測溫要求。
LoRaWAN網(wǎng)絡(luò)已經(jīng)在世界多地進(jìn)行試點部署,包括中國、美國、法國、新西蘭 、印度、澳大利亞、韓國、西班牙[12-15] 等國。
搭建中國的物聯(lián)網(wǎng)平臺,將大體積混凝土測溫節(jié)點加入loRaWAN網(wǎng)絡(luò),是行業(yè)發(fā)展方向,會極大促進(jìn)安全監(jiān)測領(lǐng)域發(fā)展,給建造事業(yè)提供便利,更好地保護(hù)人民的生命財產(chǎn)安全。
參考文獻(xiàn):
[1] 解榮. 大體積混凝土溫度監(jiān)控的研究[D].西安: 長安大學(xué), 2011.
[2] 方仙梅. 大體積混凝土裂縫的分析及防治[J]. 中國西部科技, 2011, 10(10):20-21.
[3] 中國冶金建設(shè)協(xié)會. 大體積混凝土施工規(guī)范[M]. 北京:中國計劃出版社, 2009.
[4] 史學(xué)濤. 結(jié)構(gòu)健康監(jiān)測系統(tǒng)的研究[D]. 上海:同濟(jì)大學(xué), 2006.
[5] 龔天平.LoRa技術(shù)實現(xiàn)遠(yuǎn)距離、低功耗無線數(shù)據(jù)傳輸[J].技術(shù)交流,2016(10):117-119.
[6] 李會聰. DS18B20多點測溫方法探討[J]. 微計算機(jī)信息, 2010, 26(26):166-167.
[7] 李彬, 王朝陽, 卜濤,等. 基于MSP430F149的最小系統(tǒng)設(shè)計[J]. 國外電子測量技術(shù), 2009, 28(12):74-76.
[8] 王瑞, 李躍忠. 基于SX1278的水表端無線抄表控制器[J]. 電子質(zhì)量, 2015(12):67-68.
[9] 劉建華. 二叉樹算法在單總線技術(shù)中的應(yīng)用[J]. 自動化儀表, 2006, 27(3):63-64.
[10] 蔡淼. Modbus RTU協(xié)議中字節(jié)型CRC-16算法分析與實現(xiàn)[J]. 物聯(lián)網(wǎng)技術(shù), 2015(3):35-36.
[11] KENNETH A, REEK. C和指針 [M].第2版.北京: 人民郵電出版社, 2008.
[12] 佚名. 法國運營商Orange啟動物聯(lián)網(wǎng)計劃[J]. 今日電子, 2016(1):40-41.
[13] 佚名. 三星聯(lián)手SK電信部署全國性LoRaWAN[J]. 互聯(lián)網(wǎng)天地, 2016(7):40-41.
[14] NAMELESS. New smart parking by libelium includes double radio with LoRaWAN and Sigfox[EB/OL]. http://www.businesswire.com/news/home/20160405005177/en/Smart-Parking-Libelium-Includes-Double-Radio-LoRaWAN.
[15] 張冬楊. 物聯(lián)網(wǎng)領(lǐng)域最具發(fā)展前景的通信技術(shù)[J]. 物聯(lián)網(wǎng)技術(shù), 2016, 6(10):7-8.endprint