李元元
(上海電子信息職業技術學院,上海 201411)
智能家居是以住宅為平臺,利用綜合布線技術集成各種家居生活設施,構建高效的住宅設施與家庭事務的管理系統,與傳統意義上的家居相比,智能家居提供了全方位的信息交換功能,幫助家庭與外部保持信息交流暢通。隨著信息化技術的發展,采用高性能嵌入式芯片作為硬件、以Android作開發平臺的系統模式被逐漸開始應用于各類智能家居系統。
Android是由Google主導的開放手機聯盟于2007年發布的基于Linux的開源手機平臺,在最初是為智能手機終端打造的操作系統。在2011年,Google正式提出了Android@Home計劃,通過Android設備來實現家居安全布防、并實現對各種家用電器的自動控制。隨著Android系統的發展,它已經不僅僅是一個移動設備的平臺,未來將廣泛應用于消費類電子和智能家居設備。 Android平臺具備系統的開放性,應用上的無界限性,開發的快速性等優點,將是未來具有廣泛應用的智能家居系統平臺。
安全防范系統是智能家居系統中非常重要的組成部分,在小區及戶內可視對講、家庭監控、家庭防盜報警、與家庭有關的小區一卡通等領域都有廣泛應用。與傳統安防系統相比,智能家居安防系統利用現代化的信息技術,具有如下的優勢:
1)對報警信息實現快速傳輸。
2)對報警信息實現大容量存儲。
3)對報警信息實現智能反饋控制。
4)利用信息技術,實現對報警系統的遠程控制。
故使用智能家居安防增強了家居生活的安全性,將是未來安防技術的必然發展趨勢。
基于Android平臺的智能家居安防系統使用傳感器檢測報警信號,可同時控制喇叭輸出報警聲音、驅動LED燈發光、使用3G語音模塊撥打報警電話和發送報警消息、使用Wifi網卡對外傳輸報警信息。這樣可以通過Android系統平臺輸出各種不同的報警信息,并通過通信技術實現報警信息的遠程異地傳輸,使得人們對報警信息作出更快的反應,極大的提升了安防系統的應用價值。
基于Android平臺的智能家居安防系統硬件平臺采用高性能的ARM Cortex A8 處理器芯片,并連接7寸TFT觸摸屏,采用基于Goldfish內核的Android 2.3系統平臺。主控中央系統通過內置串口連接傳感器、報警器、3G語音模塊、Wifi無線網卡等外設硬件。
Android平臺的系統框架如圖1所示,從高到低可分為應用程序、用戶空間、內核空間和硬件系統4個層次。智能家居安防系統控制軟件處于最高的應用程序層,故在進行軟件開發之前,需要移植相關硬件設備的Linux內核驅動到Android系統中。在智能家居安防系統中,需要移植的設備驅動包含顯示、輸入、電話、傳感器、攝像頭、音頻播放、指示燈、電池等外設硬件。在軟件系統開發過程中,只需要調用用戶空間的Java框架和Android框架,并不需要直接訪問硬件設備。

圖1 Android平臺系統框架

圖2 軟件系統架構圖
智能家居安防系統軟件可分為用戶界面單位、中央控制單位、傳感器模塊、報警模塊、語音模塊和數據傳輸模塊。軟件系統架構如圖2所示。
用戶界面單元提供人機交互的界面,主要包括登陸界面和布控設置界面。登陸界面提供用戶身份信息的輸入并進行驗證,驗證通過可進入布控設置界面,用戶身份信息可存儲于Android內置的SQLite數據庫系統中。布控設置界面可以設置系統布控方式、傳感器靈敏度、報警電話號碼、報警短信號碼和報警音頻文件等參數。
布控方式可以為即時布控(立即啟動報警布控)或定時布控(在某個時間布控),定時布控的時間可以設定在每天睡覺和上班的時間。若采用即時布控,則立即啟動中央控制單元。若為定時布控,則需要使用Android系統的鬧鐘管理器設置一個鬧鐘實現,并設定一個類(設為TestReceiver)繼承BroadcastRecever類,作為鬧鐘接受程序用于啟動中央控制單元。具體代碼如下:

中央控制單位負責開啟或關閉布控,收集和處理傳感器的信息,控制報警模塊報警,控制語音模塊撥打報警電話,使用數據傳輸模塊與遠程終端之間雙向進行通信。
中央控制單位首先根據用戶界面單元或數據傳輸模塊的信息確定是否開啟布控方式,只要布控方式開啟,即調用中央控制單元處理程序。中央控制單元處理程序首先調用傳感器模塊注冊傳感器,然后啟動一個線程處理傳感器模塊傳遞的傳感器數據。若傳感器數據達到某個閥值而報警裝置尚未啟動,則立即啟動報警模塊和語音模塊。
在智能家居安防系統中使用的傳感器主要為光傳感器和壓力傳感器,傳感器模塊的軟件工作流程包括傳感器檢測、傳感器事件獲取、傳感器數據獲取。
檢測傳感器可使用SensorManager對象,它可返回一個可用傳感器對象列表,并可注冊程序中需要使用的傳感器。在使用SensorManager對象注冊傳感器時,需要設定合適靈敏度,過高的靈敏度會加大系統負荷并出現誤警現象,在智能家居安防系統中一般選擇中等靈敏度。傳感器事件監聽可通過繼承SensorEventListener接口實現,當傳感器檢測的信息發生變化即可觸發SensorEvent事件。可通過SensorEvent事件的onSensorChanged方法獲得傳感器數據,并將傳感器數據傳遞給中央控制單元進行解釋,主要代碼如下:

可以在Android系統中事先錄制報警音頻文件(mp3)并存儲與SD卡上,出現告警時直接播放音頻文件實現報警,音頻播放可使用MediaPlayer類實現,主要代碼如下:

另外為了加強報警裝置的使用效果,還可以使用Android系統的光源接口控制LED發光設備在報警裝置啟動的同時發光,主要代碼如下:

語音模塊的功能是當存在告警信息時,通過Android系統內置電話模塊硬件接口,可實現智能撥打報警電話,并同步發送報警短消息。
為了使應用程序直接實現撥出電話和發送短信,需要在AndroidManifest.xml設置撥號權限android.permission.CALL_PHONE和短信發送權限android.permission.SEND_SMS。然后在應用程序中通過Intent調用Dialer應用程序實現電話撥打,代碼如下:

對于短信發送,可以使用SmsManager類的sendTextMessage方法實現。
數據傳輸模塊用于中央控制單元與遠程終端之間的通信,用戶可使用自身的智能手機作為智能終端,遠程實現對智能家居安防系統的布控設置。
數據傳輸模塊需要啟動一個線程,用于接收接收遠程終端傳輸的布控設置數據。布控參數與用戶界面模塊的設置參數基本相同,采用xml文檔包裝數據,數據傳輸模塊與遠程終端之間的通信使用面向連接的Socket套接字技術實現。
本文對基于Android平臺的智能家居安防系統進行了詳細的分析與設計并最終實現,系統設計具有如下優點:
1)基于開源Android平臺的開發,系統可運行于各種Android設備上,系統運行成本較低。
2)系統利用信息化技術構建了報警信息遠程傳輸體系,體現了智能視頻監控系統的最新發展方向。
3)軟件設計時采用了模塊化設計思想,系統具有較好的邏輯性,充分考慮到以后的移植、維護和擴展。
[1]沈華東,周義,張坤.基于GSM網絡的柔性制造車間安防報警系統設計[J].機械設計與制造,2009,8(8):252-253.
[2]管鳳旭,徐冉,楊偉.基于WinCE和GPRS的安防報警系統設計[J].實驗技術與管理,2009,11(26): 45-48.
[3]夏繼媛,馮明發.網絡化智能家居控制系統中安防報警功能的設計[J].深圳職業技術學院學報,2005,(1):40-42.