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