王方+黃連麗+陳帥+曹鑫堯
摘 要:物聯(lián)網(wǎng)技術(shù)是互聯(lián)網(wǎng)的擴(kuò)展,將人與物、物與物直接鏈接,促進(jìn)了信息化發(fā)展?;谖锫?lián)網(wǎng)的家庭環(huán)境檢測(cè)系統(tǒng)可用于室內(nèi)、養(yǎng)殖種植等環(huán)境指數(shù)的監(jiān)測(cè),滿(mǎn)足環(huán)境的精準(zhǔn)數(shù)據(jù)需求。采用ARM MCU+RTOS+傳感器+安卓APP的設(shè)計(jì)方案,實(shí)現(xiàn)了一種低成本、易擴(kuò)展、個(gè)性化的基于物聯(lián)網(wǎng)的智能環(huán)境監(jiān)測(cè)系統(tǒng)。
關(guān)鍵詞:物聯(lián)網(wǎng);環(huán)境監(jiān)測(cè)系統(tǒng);安卓APP
DOIDOI:10.11907/rjdk.171294
中圖分類(lèi)號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào)文章編號(hào):1672-7800(2017)008-0106-02
0 引言
物聯(lián)網(wǎng)是國(guó)家戰(zhàn)略性新興產(chǎn)業(yè)[1],環(huán)境監(jiān)測(cè)是物聯(lián)網(wǎng)應(yīng)用最廣泛的領(lǐng)域之一,精準(zhǔn)的環(huán)境數(shù)據(jù)對(duì)提高生活質(zhì)量意義重大。為滿(mǎn)足環(huán)境的精準(zhǔn)測(cè)量要求,設(shè)計(jì)了基于物聯(lián)網(wǎng)的家庭環(huán)境檢測(cè)系統(tǒng),采用ARM MCU+RTOS+傳感器+安卓 APP的設(shè)計(jì)方案,實(shí)現(xiàn)了低成本高效率環(huán)境監(jiān)測(cè)[2]。該系統(tǒng)可用于家居環(huán)境、辦公室、超市和溫室大棚等室內(nèi)環(huán)境監(jiān)測(cè)。
1 系統(tǒng)開(kāi)發(fā)環(huán)境及關(guān)鍵技術(shù)
1.1 Android
Android是一種基于Linux的自由及開(kāi)放源代碼操作系統(tǒng),采用分層架構(gòu),由應(yīng)用程序?qū)印?yīng)用程序框架層、系統(tǒng)運(yùn)行庫(kù)層和Linux內(nèi)核層構(gòu)成,是目前市場(chǎng)占有率最高的移動(dòng)操作系統(tǒng)。
1.2 ARM Cortex-M3處理器
ARM Cortex-M3處理器具有高性能、低功耗、高實(shí)時(shí)性等諸多優(yōu)點(diǎn),采用thumb2指令,代碼密度高,與C語(yǔ)言配合很好, C程序代碼可以輕易地移植和重用。本系統(tǒng)選用意法半導(dǎo)體公司的STM32F103C8T6 ARM Cortex-M3 MCU作為硬件平臺(tái)處理器[3]。ESP8266是專(zhuān)為移動(dòng)設(shè)備、可穿戴電子產(chǎn)品和物聯(lián)網(wǎng)應(yīng)用設(shè)計(jì)的, SOC能夠作為主控制器獨(dú)立運(yùn)行,也可作為從機(jī)搭載于其它主機(jī)MCU 運(yùn)行。本系統(tǒng)選用ESP8266模塊作為STM32-F103C8T6的從機(jī),為系統(tǒng)提供網(wǎng)絡(luò)連接功能與APP通信。
2 系統(tǒng)設(shè)計(jì)
基于物聯(lián)網(wǎng)的家庭環(huán)境檢測(cè)系統(tǒng)包括硬件系統(tǒng)和客戶(hù)端APP兩個(gè)部分。硬件部分由微處理器+WiFi模塊+多種環(huán)境傳感器+部分輔助裝置構(gòu)成??蛻?hù)端APP利用Andorid系統(tǒng)提供的API實(shí)現(xiàn)人機(jī)交互[4]。
2.1 硬件系統(tǒng)
ARM微控制器采用意法半導(dǎo)體的STM32F-103C8 T6。該MCU芯片尺寸小、資源豐富,有I2C、USART、IrDA、SPI、CAN、USB等接口,方便連接常見(jiàn)傳感器,滿(mǎn)足傳感器連接和通信方面的需要[5]。軟件方面移植RT-Thread,能夠方便模塊化開(kāi)發(fā),提高代碼的可閱讀性。系統(tǒng)的配置信息寫(xiě)入EEPROM或FLASH,上電后讀入SRAM,該配置信息可由用戶(hù)在APP端進(jìn)行配置,通過(guò)WiFi傳輸,最后由MCU完成寫(xiě)入。設(shè)置兩路開(kāi)關(guān),確定系統(tǒng)的3種啟動(dòng)模式,LED及報(bào)警裝置作為外圍電路提供報(bào)警提示功能,系統(tǒng)架構(gòu)見(jiàn)圖1。
2.2 客戶(hù)端APP
客戶(hù)端APP分消息通知、場(chǎng)景設(shè)備、設(shè)置3個(gè)主功能界面。
消息通知界面可實(shí)時(shí)顯示當(dāng)前測(cè)得的環(huán)境參數(shù)。該界面由標(biāo)題欄、搜索欄、消息列表欄、底部菜單欄4部分組成。標(biāo)題欄用于指示當(dāng)前界面功能,提供清空消息功能。搜索欄用于搜索設(shè)備,消息列表欄用于顯示當(dāng)前測(cè)得的環(huán)境參數(shù)、場(chǎng)景設(shè)備名稱(chēng)以及測(cè)得數(shù)據(jù)的時(shí)間。底部菜單欄可實(shí)現(xiàn)功能界面的切換,當(dāng)前界面為彩色,非當(dāng)前界面為灰色。
場(chǎng)景設(shè)備界面主要提供設(shè)備管理,實(shí)現(xiàn)一個(gè)APP連接控制多個(gè)設(shè)備,可以添加、刪除、修改、查看設(shè)備場(chǎng)景,以及啟用及關(guān)閉設(shè)備場(chǎng)景,打開(kāi)界面顯示當(dāng)前已經(jīng)啟用的設(shè)備等。該界面由頂部的標(biāo)題欄、搜索欄、工具欄、設(shè)備列表欄、菜單欄5個(gè)部分組成。
設(shè)置界面提供了IP地址設(shè)置、通知欄提醒、自動(dòng)添加設(shè)備、傳感器校正等功能。IP設(shè)置為APP與硬件平臺(tái)通信的IP和端口設(shè)置,當(dāng)接收到新的環(huán)境數(shù)據(jù)時(shí)通知欄提醒是否顯示。自動(dòng)添加設(shè)備用于收到未定義的傳感器時(shí)是否自動(dòng)添加一個(gè)匿名設(shè)備。傳感器校正用于傳感器設(shè)備的初始化,當(dāng)設(shè)備出現(xiàn)異??梢允褂迷摴δ苓M(jìn)行初始化,校正信息存放在EEPROM中。
3 系統(tǒng)實(shí)現(xiàn)
3.1 硬件系統(tǒng)
設(shè)計(jì)實(shí)現(xiàn)一個(gè)硬件系統(tǒng),首先要設(shè)計(jì)出它的最小系統(tǒng),讓硬件系統(tǒng)能上電啟動(dòng)。最小系統(tǒng)包括MCU、晶振電路、復(fù)位電路、電源電路。
MUC選用意法半導(dǎo)體的STM32F103C8T6 MCU。該MCU為L(zhǎng)QFP64封裝, Proteus元件庫(kù)中沒(méi)有,需要自己畫(huà)封裝,畫(huà)封裝時(shí)要注意引腳方向,各項(xiàng)電器參數(shù)設(shè)置正確。參考STM32F103C8T6的數(shù)據(jù)手冊(cè)給出復(fù)位電路,重新設(shè)計(jì)本硬件平臺(tái)的復(fù)位電路,確定硬件系統(tǒng)從FLASH啟動(dòng)、FLASH燒寫(xiě)ROM從啟動(dòng)和開(kāi)發(fā)調(diào)試SRAM從啟動(dòng)。STM32F103C8T6有多個(gè)時(shí)鐘源,需要一個(gè)8MHz的外部晶振和一個(gè)32.768kHz的實(shí)時(shí)時(shí)鐘晶振。為保證時(shí)鐘的精準(zhǔn)一般采用外部32.768kHz晶振提供時(shí)鐘源,完成晶振電路、復(fù)位電路、電源電路的設(shè)計(jì),也即完成最小系統(tǒng)設(shè)計(jì),見(jiàn)圖2。
最小系統(tǒng)設(shè)計(jì)成功后開(kāi)始外圍輔助電路設(shè)計(jì)。為使硬件平臺(tái)有更好的擴(kuò)展能力,設(shè)計(jì)了CAN收發(fā)器模塊電路,可實(shí)現(xiàn)基于CAN協(xié)議的Bootloader給系統(tǒng)升級(jí)。同時(shí),為了便于在開(kāi)發(fā)應(yīng)用程序時(shí)把運(yùn)行的參數(shù)保存下來(lái),添加了EEPROM模塊。雖然增加了系統(tǒng)電路,但避免了使用FLASH保存時(shí)頻繁擦寫(xiě)導(dǎo)致的產(chǎn)品壽命減少。添加一個(gè)LED和一個(gè)蜂鳴器作為報(bào)警裝置。LED燈由PA1控制,蜂鳴器由PC13控制。
系統(tǒng)監(jiān)測(cè)功能由多種傳感器構(gòu)成,主要包括溫度、濕度、光照強(qiáng)度傳感器。不同型號(hào)傳感器的電路設(shè)計(jì)、驅(qū)動(dòng)設(shè)計(jì)均不相同。溫度傳感器DS18B20提供9位二進(jìn)制溫度讀數(shù),通過(guò)單總線(xiàn)傳輸數(shù)據(jù),主控與DS18B20之間的連接只需要一條數(shù)據(jù)線(xiàn)。每個(gè)DS18B20都擁有一個(gè)全球唯一的64位序列號(hào),微處理器能夠讀取該64位序列號(hào)辨認(rèn)總線(xiàn)上的器件,記錄總線(xiàn)上的器件地址,所以多個(gè)DS18B20同時(shí)連接在一條單線(xiàn)總線(xiàn)上,可輕松地利用一個(gè)微處理器去控制分布在不同區(qū)域的DS18B20[6]。溫濕度傳感器DHT11是數(shù)字信號(hào)輸出的復(fù)合傳感器,傳感元件與一個(gè)8位MCU相連,由MCU控制直接輸出數(shù)字信息。光照強(qiáng)度監(jiān)測(cè)采用光敏電阻,光敏電阻連接到STM32F-103C8T6的PB0引腳上,該引腳ADC1的通道8,用于測(cè)量光敏電路兩端的電壓進(jìn)而計(jì)算出光照強(qiáng)度。endprint
ESP8266WiFi模塊SOC主控制器獨(dú)立運(yùn)行,上電后自動(dòng)啟動(dòng),通過(guò)串口進(jìn)行固件更新,通過(guò)AT指令進(jìn)行設(shè)置[7],啟動(dòng)后可進(jìn)行UDP或TCP通信。ESP8266一般都需要進(jìn)行固件更新才能支持最新的功能及指令,使用USB串口改裝連接電腦進(jìn)行固件升級(jí)。
3.2 客戶(hù)端APP
客戶(hù)端啟動(dòng)后打開(kāi)消息通知界面,該界面顯示當(dāng)前連接設(shè)備提供的實(shí)時(shí)環(huán)境參數(shù),界面為一個(gè)Fragment控件。該界面在創(chuàng)建時(shí)先取得一個(gè)Application對(duì)象,該對(duì)象在APP中是唯一的。為保證Socket連接在整個(gè)APP都是唯一的,將socket連接放到Application對(duì)象中。
然后啟動(dòng)一個(gè)線(xiàn)程用于監(jiān)視socket是否連接,完成UI設(shè)置、數(shù)據(jù)初始化、listadapter綁定。socket連接后開(kāi)啟一個(gè)新的線(xiàn)程用于接收數(shù)據(jù),對(duì)接收到的數(shù)據(jù)進(jìn)行解析,獲取該數(shù)據(jù)包中的場(chǎng)景、設(shè)備、傳感數(shù)據(jù)、校驗(yàn)等。將該數(shù)據(jù)包解析后寫(xiě)入數(shù)據(jù)庫(kù)。由于數(shù)據(jù)包中的場(chǎng)景、設(shè)備是以數(shù)字的形式編碼的,所以需要在事先添加場(chǎng)景設(shè)備,綁定場(chǎng)景名與場(chǎng)景號(hào)、設(shè)備名與設(shè)備號(hào)。從數(shù)據(jù)庫(kù)中查詢(xún)到場(chǎng)景號(hào)對(duì)應(yīng)的場(chǎng)景名、設(shè)備號(hào)對(duì)應(yīng)的設(shè)備名。如果在listview中查到該場(chǎng)景設(shè)備已存在,就不用創(chuàng)建新的listitem。否則在數(shù)據(jù)庫(kù)中查詢(xún)?cè)搱?chǎng)景設(shè)備是否存在,如果存在就創(chuàng)建新的listitem,并更新數(shù)據(jù),否則就丟棄該數(shù)據(jù)包。
4 結(jié)語(yǔ)
本文設(shè)計(jì)并實(shí)現(xiàn)了基于物聯(lián)網(wǎng)的家庭環(huán)境檢測(cè)系統(tǒng),對(duì)系統(tǒng)涉及的一些關(guān)鍵技術(shù)進(jìn)行了介紹與分析。該系統(tǒng)使用時(shí)自行組建獨(dú)立的局域網(wǎng)絡(luò),不依賴(lài)其它網(wǎng)絡(luò)就能很好地完成環(huán)境參數(shù)監(jiān)測(cè)。系統(tǒng)預(yù)留了升級(jí)接口,后期可根據(jù)需要添加傳感器實(shí)現(xiàn)更多功能,或?qū)ο到y(tǒng)進(jìn)行升級(jí)優(yōu)化,是一個(gè)開(kāi)放的易于擴(kuò)展的系統(tǒng)。
參考文獻(xiàn):
[1] 劉錦,顧加強(qiáng). 我國(guó)物聯(lián)網(wǎng)現(xiàn)狀及發(fā)展策略[J].企業(yè)經(jīng)濟(jì),2013(4):114-117.
[2] 錢(qián)志鴻,王義君. 面向物聯(lián)網(wǎng)的無(wú)線(xiàn)傳感器網(wǎng)絡(luò)綜述[J] .電子與信息學(xué)報(bào),2013,35(1):215 -227.
[3] 吳子岳,張帥,侯瑀. 海洋工作平臺(tái)的溫濕度監(jiān)控系統(tǒng)的設(shè)計(jì)[J].測(cè)控技術(shù),2013(8):63-66.
[4] 卜曉曉. 基于Android和WiFi的智能家居系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].鎮(zhèn)江:江蘇大學(xué),2016.
[5] 易誠(chéng),俞子榮,陳黎娟. 基于Cortex-M3與Android的智能家居控制系統(tǒng)設(shè)計(jì)[J].無(wú)線(xiàn)互聯(lián)科技,2014(12):9-11.
[6] 潘勇,孟慶斌. 基于DS18B20的多點(diǎn)溫度測(cè)量系統(tǒng)設(shè)計(jì)[J].電子測(cè)量技術(shù),2008(9):91-93.
[7] 樊智一. 基于STM32的無(wú)線(xiàn)WiFi溫濕度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].電子世界,2016(18):35-36.endprint