王方+黃連麗+陳帥+曹鑫堯


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