唐 軍,杜秀君
(1.宜賓職業(yè)技術(shù)學(xué)院 電子信息與人工智能學(xué)院,四川 宜賓 644003;2.宜賓職業(yè)技術(shù)學(xué)院 科技處,四川 宜賓 644003)
Huawei LiteOS發(fā)布于2015年5月的華為網(wǎng)絡(luò)大會(huì)上,是面向IoT領(lǐng)域構(gòu)建的輕量級(jí)物聯(lián)網(wǎng)操作系統(tǒng)[1]。本設(shè)計(jì)利用LiteOS系統(tǒng),通過NB-IOT技術(shù)完成與華為IOTDA物聯(lián)網(wǎng)平臺(tái)的對(duì)接,可以將數(shù)據(jù)發(fā)送到該平臺(tái),也可以從該平臺(tái)下發(fā)指令,控制設(shè)備側(cè)。本設(shè)計(jì)來源于橫向課題,要求基于NB-IOT技術(shù),將溫度、光照度、數(shù)字量、開關(guān)量輸入數(shù)據(jù)傳入IOTDA平臺(tái),并能依據(jù)IOTDA平臺(tái)指令,控制繼電器輸出。
按項(xiàng)目需求,本設(shè)計(jì)需要在采集完外界的溫度、光照度數(shù)據(jù)與數(shù)字開關(guān)量數(shù)據(jù)后,對(duì)數(shù)據(jù)進(jìn)行上傳處理,并能對(duì)外部的一些數(shù)字IO量進(jìn)行開關(guān)的控制。為方便現(xiàn)場(chǎng)的數(shù)據(jù)調(diào)試,設(shè)計(jì)采用串口觸摸屏進(jìn)行顯示。數(shù)據(jù)采集完成后,通過NB-IOT模塊,系統(tǒng)將數(shù)據(jù)傳送到華為的IDOA平臺(tái),進(jìn)行遠(yuǎn)程處理。
圖1 系統(tǒng)架構(gòu)設(shè)計(jì)
系統(tǒng)由STM32小系統(tǒng)、高速數(shù)字量輸入電平轉(zhuǎn)換、光照度數(shù)據(jù)采集、PT100溫度采集模塊、開關(guān)量輸出、觸摸屏通信接口、NB-IOT模塊通信接口設(shè)計(jì)構(gòu)成。
外部數(shù)據(jù)的開關(guān)量,其電平標(biāo)準(zhǔn)為5 V,而STM32的端口為3.3 V,故需要設(shè)計(jì)一個(gè)高速數(shù)字量輸入電平轉(zhuǎn)換模塊完成電平轉(zhuǎn)換功能,實(shí)現(xiàn)電平轉(zhuǎn)換與端口保護(hù)。本設(shè)計(jì)采用光耦6N137實(shí)現(xiàn)此功能。
系統(tǒng)的整體設(shè)計(jì)參考了小熊派開發(fā)板的設(shè)計(jì)。該開發(fā)板包含采集光照度的E53智慧路燈模塊。本設(shè)計(jì)直接采用該模塊,連接與光照度模塊的接口。光照度模塊采用IIC接口進(jìn)行通信。
PT100采集外部的溫度信號(hào),經(jīng)過電橋電路后,得到與溫度相關(guān)的信號(hào),然后將電壓值送入儀表放大,放大后的電壓信號(hào)送入STM32,利用STM32內(nèi)部自帶的ADC模塊進(jìn)行模數(shù)轉(zhuǎn)換,并利用查表法完成溫度信號(hào)的換算,從而得到具體的溫度信號(hào)[2]。設(shè)計(jì)出的具體電路,如圖2所示。
圖2 PT100溫度采集模塊設(shè)計(jì)
按設(shè)計(jì)要求,系統(tǒng)需要能夠?qū)θA為物聯(lián)網(wǎng)平臺(tái)IOTDA下發(fā)的指令進(jìn)行解析,用以控制繼電器。
本設(shè)計(jì)在STM32上實(shí)現(xiàn)了華為的LiteOS系統(tǒng)運(yùn)行。該系統(tǒng)可以很方便地與華為IOTDA平臺(tái)實(shí)現(xiàn)連接。本設(shè)計(jì),一是在MDK平臺(tái)上,完成了LiteOS的遷移;二是單獨(dú)為每一個(gè)電路模塊標(biāo)志了驅(qū)動(dòng)程序,通過觸摸屏完成了數(shù)據(jù)的顯示;三是利用NB-IOT將所采集到的數(shù)據(jù)上報(bào)到華為IOTDA平臺(tái)。在云端,本設(shè)計(jì)也對(duì)應(yīng)開發(fā)了相應(yīng)的程序用以響應(yīng)和控制設(shè)備側(cè)。
Huawei LiteOS是華為面向IoT領(lǐng)域構(gòu)建的輕量級(jí)物聯(lián)網(wǎng)操作系統(tǒng)[3],系統(tǒng)可廣泛應(yīng)用于智能家居、個(gè)人穿戴、車聯(lián)網(wǎng)、城市公共服務(wù)、制造業(yè)等領(lǐng)域[4]。
LiteOS系統(tǒng)遷移之前,需要在STM32裸機(jī)上完成對(duì)應(yīng)外設(shè)的驅(qū)動(dòng)開發(fā)后開始進(jìn)行遷移。系統(tǒng)遷移的步驟主要包括增加新移植開發(fā)板的目錄、適配新開發(fā)板的外設(shè)驅(qū)動(dòng)和HAL庫配置文件、配置系統(tǒng)時(shí)鐘、適配串口初始化文件、修改鏈接腳本和適配編譯配置等步驟。
在實(shí)現(xiàn)LiteOS成功移植后,通過加入在STM32裸機(jī)上已經(jīng)調(diào)試運(yùn)行成功的外設(shè)程序,就可以通過NB-IOT模塊與云端IOTDA平臺(tái)進(jìn)行通信。系統(tǒng)的整體功能架構(gòu)如圖3所示。
圖3 系統(tǒng)的整體功能架構(gòu)
系統(tǒng)上電后,首先初始化LiteOS內(nèi)核,然后在LiteOS中創(chuàng)建STM32硬件初始化任務(wù),對(duì)STM32時(shí)鐘、串口、ADC、IIC的進(jìn)行配置,再創(chuàng)建數(shù)據(jù)采集和數(shù)據(jù)上報(bào)任務(wù),將采集到的各種數(shù)據(jù),利用NB-IOT上傳到IOTDA平臺(tái)。
IOTDA云測(cè)平臺(tái)中對(duì)系統(tǒng)模型進(jìn)行了定義,在模型中一共定義了4個(gè)服務(wù),即Sensor,LED,Temperature和In_put,分別對(duì)應(yīng)這個(gè)設(shè)備側(cè)上傳到云側(cè)的光強(qiáng)度數(shù)據(jù)、LED的開關(guān)指令、PT100采集到的溫度數(shù)據(jù)和開關(guān)量的狀態(tài),通過這4個(gè)服務(wù),就可以實(shí)時(shí)把測(cè)量到的數(shù)據(jù)上傳到IOTDA平臺(tái),并可以由LED指令控制設(shè)備側(cè)的LED亮滅。
本文利用華為的LiteOS技術(shù)設(shè)計(jì)了遠(yuǎn)程設(shè)備的管理平臺(tái),可以實(shí)現(xiàn)光照度、溫度、數(shù)字量IO的數(shù)據(jù)上報(bào),也可以在云側(cè)通過SET_LED指令實(shí)現(xiàn)對(duì)設(shè)備側(cè)的控制。NB-IOT在LiteOS的控制下,實(shí)時(shí)向IOTDA平臺(tái)傳遞數(shù)據(jù),在IOTDA平臺(tái),通過設(shè)置Set_LED的狀態(tài)為ON,可以點(diǎn)亮LED,完成對(duì)開關(guān)量的控制。