張義紅, 李永樂, 郝礦榮, 韋 方
(東華大學(xué) a.信息科學(xué)與技術(shù)學(xué)院; b.數(shù)字化紡織服裝技術(shù)教育部工程研究中心,上海 201620)
物聯(lián)網(wǎng)是計(jì)算機(jī)、互聯(lián)網(wǎng)之后,世界信息產(chǎn)業(yè)的第三次浪潮[1]。物聯(lián)網(wǎng)專業(yè)作為一個(gè)典型的交叉學(xué)科,應(yīng)用到通信、電子、計(jì)算機(jī)多個(gè)學(xué)科的專業(yè)知識(shí),同時(shí)它也是一個(gè)基于工程應(yīng)用的學(xué)科,是現(xiàn)有信息技術(shù)綜合集成化的產(chǎn)物[2-3]。近年來,BLE技術(shù)以及智能終端的普及加速了物聯(lián)網(wǎng)技術(shù)的發(fā)展,同時(shí)也催生出了各種智能硬件。隨著智能硬件的發(fā)展,智能穿戴也成為了一項(xiàng)熱門的課題。溫濕度傳感器是較為廣泛運(yùn)用的兩種傳感器。
本文以我校大唐移動(dòng)物聯(lián)網(wǎng)實(shí)驗(yàn)室智能家居實(shí)驗(yàn)開發(fā)平臺(tái)設(shè)計(jì)了一款面向信息類研究生的創(chuàng)新型實(shí)驗(yàn)。實(shí)驗(yàn)的主要內(nèi)容和技術(shù)是:利用物聯(lián)網(wǎng)實(shí)驗(yàn)平臺(tái)的溫濕度傳感器,采集到溫濕度信息后,通過BLE技術(shù)將信息傳輸?shù)接脩糁悄苁謾C(jī)中,并由對(duì)應(yīng)的APP解析數(shù)據(jù)并判斷當(dāng)前溫濕度傳感器狀態(tài),可解決母嬰和養(yǎng)老領(lǐng)域的智能穿戴中的技術(shù)關(guān)鍵問題。
本文的實(shí)驗(yàn)教學(xué)環(huán)節(jié)是基于新型物聯(lián)網(wǎng)實(shí)訓(xùn)平臺(tái)的,該平臺(tái)相較于傳統(tǒng)平臺(tái)的最大特點(diǎn)在于功能模塊十分完備,可擴(kuò)展性強(qiáng)。平臺(tái)實(shí)物圖如圖1所示。
實(shí)驗(yàn)所涉及的硬件資源:① Exynos4412 核心板。Samsung Exynos4412,2 GB DDR2內(nèi)存,4GB NAND FLASH;② 17.78 cm(7 in)TFT LCD。分辨率為800×480,電容式觸摸屏,支持校準(zhǔn);③ 調(diào)試串口、JTAG、復(fù)位、RTC 電池、DCDC電源等;④ BLE4.0開發(fā)套件;⑤ 板載溫濕度傳感器。系統(tǒng)框架如圖2所示。
圖2系統(tǒng)框架
溫濕度傳感器所采用的芯片為SHT11[6-7]。SHT系列單芯片傳感器是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器。傳感器包括一個(gè)電容式聚合體測(cè)濕元件和一個(gè)能隙式測(cè)溫元件,并與一個(gè)14 bit的A/D轉(zhuǎn)換器以及串行接口電路在同一芯片上實(shí)現(xiàn)無縫連接,具有品質(zhì)卓越、超快響應(yīng)、抗干擾能力強(qiáng)等優(yōu)點(diǎn)。
將傳感器芯片輸出轉(zhuǎn)換為物理量的過程遵循的公式如圖3所示。圖中,SORH和SOT分別為濕度傳感器和溫度傳感器的數(shù)字輸出,表示測(cè)量分辨率。默認(rèn)的 測(cè)量分辨率分別為14 bit(溫度)、12 bit(濕度),也可分別降至12 bit和8 bit[6-7]。
圖3 溫濕度轉(zhuǎn)換公式
藍(lán)牙通信協(xié)議包括多個(gè)服務(wù)(service),每個(gè)service由一個(gè)或多個(gè)特征組成,通信數(shù)據(jù)分?jǐn)?shù)據(jù)(data)、命令(command)兩類,支持手機(jī)端向設(shè)備的查詢、設(shè)定命令、設(shè)備響應(yīng),設(shè)備主動(dòng)上報(bào)消息及手機(jī)端響應(yīng)等。每條命令和消息由命令名、命令內(nèi)容構(gòu)成[8-9]。
設(shè)定設(shè)備溫濕度主動(dòng)上報(bào),每1 s上報(bào)一個(gè)數(shù)據(jù),本實(shí)驗(yàn)僅使用命令幀傳輸,格式如表1所示。
表1 命令幀格式
舉例:若接受數(shù)據(jù)為 0xDFB1D100020300D540。溫度值: 0x00D5=213/10=+21.3 °C(默認(rèn)1位小數(shù)點(diǎn));濕度值:0x40=64%。
Android是Google公司開發(fā)的基于Linux平臺(tái)的開源手機(jī)操作系統(tǒng),遵循MVC框架模式。M層即Model層適合做一些業(yè)務(wù)邏輯處理[10-11]。數(shù)據(jù)庫(kù)存取操作、網(wǎng)絡(luò)操作、復(fù)雜的算法、耗時(shí)的任務(wù)等都在該層處理。V層即View層,應(yīng)用層中處理數(shù)據(jù)顯示的部分,XML布局可以視為V層,顯示Model層的數(shù)據(jù)結(jié)果。 C層即Controller層,在Android中,Activity用以處理用戶交互問題,因此可以認(rèn)為Activity是控制器,Activity讀取V視圖層的數(shù)據(jù),控制用戶輸入,并向Model發(fā)送數(shù)據(jù)請(qǐng)求。
應(yīng)用程序視圖層主界面采用經(jīng)典Tab類型界面,實(shí)現(xiàn)方式為Fragment + FragmentManager,見圖4。
圖4主界面布局
FrameLayout作為Fragment的container主界面,頂欄為標(biāo)題欄,底欄作為菜單欄,啟動(dòng)時(shí)默認(rèn)fragment為顯示溫濕度信息的界面。
應(yīng)用程序的工作流程如圖5所示。
圖5應(yīng)用程序業(yè)務(wù)邏輯流程圖
2.2.1BLE連接并解析數(shù)據(jù)
首先需要開啟BLE權(quán)限,在manifest添加:android.permission.BLUETOOTH和android.permission. BLUETOOTH_ADMIN 兩個(gè)權(quán)限。之后完成BLE Controller層的編寫:
(1) 獲取適配器mBlueAdapter并調(diào)用適配器方法mBluetoothAdapter.enable();方法開啟藍(lán)牙。
(2) 掃描藍(lán)牙設(shè)備:mBluetoothAdapter.startLeScan(lescancallback); 搜索到設(shè)備后會(huì)回調(diào)LeScanCallback接口,此時(shí)可判斷(本文依據(jù)預(yù)設(shè)的設(shè)備名“RLEIT_9430C”)是否為目標(biāo)設(shè)備,若是則連接。
(3) 停止掃描,此時(shí)獲得device對(duì)象,調(diào)用其 device.connectGatt(this, true, mGattCallback);進(jìn)行連接,連接后會(huì)回調(diào)BluetoothGattCallback接口,此時(shí)可依照前文所述通信協(xié)議解析所接收到的數(shù)據(jù)。
2.2.2監(jiān)測(cè)溫濕度信息
將獲取到的溫濕度數(shù)據(jù)封裝至Intent中,使用廣播傳遞至主界面并以進(jìn)度條的視圖形式顯示。
intent_18.putExtra("temperature", temperature);
intent_18.putExtra("humidity", humidity);
getBaseContext().sendBroadcast(intent_18)。
在主界面中響應(yīng)廣播,并得到溫濕度數(shù)據(jù):
temperature = intent.getStringExtra("temperature");
humidity = intent.getStringExtra("humidity")。
每1 s接受一次BLE數(shù)據(jù),則每秒判斷一次:
(Integer.parseInt(temperature, 16) / 10) > 25&& Integer.parseInt(humidity, 16)>70。
只要滿足溫度>25 °C并且濕度超過70%,彈出報(bào)警界面,并創(chuàng)建一個(gè)MediaPlayer類型的對(duì)象實(shí)現(xiàn)播放背景音樂的功能,使用工具類vibrator_util.Vibrate(new long[]{1 000, 1 000, 1 000, 1 000, 1 000, 1 000}, true)實(shí)現(xiàn)振動(dòng)功能。
采用閾值進(jìn)行判斷是最基礎(chǔ)的報(bào)警判斷方式,實(shí)驗(yàn)中學(xué)生可通過溫濕度信息隨時(shí)間的變化率自行設(shè)計(jì)更為復(fù)雜和精確的算法。
2.2.3存儲(chǔ)報(bào)警信息
Android在運(yùn)行時(shí)(run-time)集成了SQLite,所以每個(gè)Android 應(yīng)用程序都可以使用 SQLite 數(shù)據(jù)庫(kù)[12]。本文所述應(yīng)用程序的Model層即是使用SQLite數(shù)據(jù)庫(kù)來存儲(chǔ)數(shù)據(jù)的。所要存儲(chǔ)的主要信息為每次報(bào)警的日期以及具體時(shí)間,由此可以統(tǒng)計(jì)嬰兒的排尿頻率,建表語句如下:
public static final String CREAT_DATABASE = "create table baby_data("
+ "_id integer primary key autoincrement,"
+ "date varchar(10),"
+ "time varchar(10))";
在滿足報(bào)警條件時(shí),首先執(zhí)行存儲(chǔ)數(shù)據(jù)命令:
new SqliteData(getApplicationContext()).insertData();
之后彈出報(bào)警窗口。
2.2.4附加功能設(shè)計(jì)
軟件部分可進(jìn)行附加功能的設(shè)計(jì)實(shí)驗(yàn),將溫濕度信息數(shù)據(jù)利用Android自定義控件制作成圖形進(jìn)度條顯示,使信息顯示更為直觀,界面布局更為簡(jiǎn)潔美觀。將數(shù)據(jù)庫(kù)的存儲(chǔ)信息調(diào)出,可在程序內(nèi)制作圖表界面,直觀展示或查詢數(shù)據(jù)庫(kù)內(nèi)容。擴(kuò)展報(bào)警選項(xiàng),增加報(bào)警鈴聲選項(xiàng),增加鈴聲和震動(dòng)選項(xiàng)(見圖6)。
圖6 應(yīng)用程序功能界面
實(shí)驗(yàn)環(huán)境:實(shí)驗(yàn)室空調(diào)控制室溫為25 °C左右,空氣濕度為30%~40%。
啟動(dòng)圖1所示物聯(lián)網(wǎng)開發(fā)板。啟動(dòng)手機(jī)端的Android應(yīng)用程序,打開藍(lán)牙,并配對(duì)設(shè)備名稱為“RLEIT_9430C”的藍(lán)牙設(shè)備。配對(duì)成功后,應(yīng)用程序主界面會(huì)將溫濕度信息以進(jìn)度條的形式顯示在主界面上。測(cè)試數(shù)據(jù)傳輸?shù)姆€(wěn)定性,將實(shí)驗(yàn)室溫度升至30 °C,可觀察到應(yīng)用程序主界面顯示信息的變化。
準(zhǔn)備一小杯40 °C左右的溫水,將紙巾蘸水后迅 速貼近溫濕度傳感器。片刻后,應(yīng)用程序主界面彈出
報(bào)警窗口,同時(shí)手機(jī)振動(dòng)并播放警報(bào)音樂。
按下報(bào)警界面的任意選項(xiàng)即可退出報(bào)警狀態(tài),至此智能尿不濕系統(tǒng)的實(shí)驗(yàn)基本成功。
結(jié)合大唐移動(dòng)物聯(lián)網(wǎng)實(shí)驗(yàn)室相關(guān)的軟硬件實(shí)驗(yàn)設(shè)備與研究生課程體系,面向當(dāng)今育嬰或養(yǎng)老產(chǎn)業(yè)的應(yīng)用需求,設(shè)計(jì)了一門創(chuàng)新性研究生實(shí)驗(yàn)課程。該實(shí)驗(yàn)的主要原理和功能室由溫濕度傳感器檢測(cè)的物理信息通過BLE傳輸給智能手機(jī)終端,由Android應(yīng)用程序解析數(shù)據(jù)并判定溫濕度信息的變化,完成報(bào)警功能。
軟件附加部分可設(shè)置多種創(chuàng)新內(nèi)容,如改進(jìn)溫濕度信息預(yù)警判斷的算法,以及搭建服務(wù)器已上傳APP的數(shù)據(jù)庫(kù)信息并分析。
參考文獻(xiàn)(References):
[1]楊丹,吳建勝,王剛,等.“物聯(lián)網(wǎng)技術(shù)及應(yīng)用”實(shí)驗(yàn)教學(xué)環(huán)境構(gòu)建[J].實(shí)驗(yàn)室研究與探索,2016(6):211-213.
[2]黃崢,古鵬.物聯(lián)網(wǎng)實(shí)驗(yàn)室建設(shè)研究與探討[J].實(shí)驗(yàn)技術(shù)與管理,2012(2):191-195.
[3]錢志鴻,王義君.物聯(lián)網(wǎng)技術(shù)與應(yīng)用研究[J].電子學(xué)報(bào),2012(5):1023-1029.
[4]李德駿,盧曉波. 可手機(jī)監(jiān)控的智能紙尿褲電子系統(tǒng)[J]. 電子質(zhì)量,2015(7):35-38.
[5]張思云. 紙尿褲熱濕舒適性的評(píng)價(jià)與研究[D].上海:東華大學(xué),2014.
[6]Duane W J, Pepin N C, Losleben M L,etal. General characteristics of temperature and humidity variability on kilimanjaro, tanzania[J]. Arctic Antarctic & Alpine Research, 2016, 40(2):323-334.
[7]Patanen M. Creating Android application using BLE sensor: A knee rehabilitation monitoring system[J]. Astronomy Now, 2014, 17(11):1804-1814.
[8]韓悅文. 幾種典型濕度傳感器的原理和概要分析[J]. 江漢大學(xué)學(xué)報(bào)(自然科學(xué)版),2009(1):33-36.
[9]廖澤鑫. 溫度傳感器的設(shè)計(jì)與研究[D].上海:復(fù)旦大學(xué),2012.
[10]李金樺,甄輝,黃海,等. 基于BLE的Android心電監(jiān)護(hù)軟件[J]. 計(jì)算機(jī)與現(xiàn)代化,2016(4):114-122.
[11]常敏,梅曉敏,崔永進(jìn),等. 基于BLE與Android的牧場(chǎng)溫濕度智能監(jiān)控系統(tǒng)設(shè)計(jì)[J]. 通信電源技術(shù),2015(5):134-137.
[12]林培杰,朱安南,程樹英. Android數(shù)據(jù)庫(kù)SQLite性能優(yōu)化[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用,2014(4):193-196.
[13]潘月, 朱卉. 基于Android系統(tǒng)的藍(lán)牙便攜式血脂儀的設(shè)計(jì)[J]. 電子設(shè)計(jì)工程, 2013, 21(24):170-173.
[14]唐榮年, 曾雄梅. 基于北斗衛(wèi)星和藍(lán)牙技術(shù)的Android手機(jī)導(dǎo)航系統(tǒng)設(shè)計(jì)[J]. 武漢理工大學(xué)學(xué)報(bào), 2015, 37(6):104-108.
[15]張馳程,周淵平. 基于Android的藍(lán)牙通信頭盔應(yīng)用[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用,2017(2):37-42.