基于A(yíng)RM的智能家居安防監控系統的設計與實(shí)現
各種設備由于功能不同,驅動(dòng)程序提供的函數接口也不相同,但Linux為能夠統一管理,規定了Linux下設備驅動(dòng)程序必須使用統一的接口函數file_operations。根據功能填充對應的file_operations中的接口函數。為便于開(kāi)機啟動(dòng),統一地將驅動(dòng)程序靜態(tài)編譯到內核。
另外,涉及設備節點(diǎn)的創(chuàng )建,選擇了udev機制來(lái)自動(dòng)創(chuàng )建設備節點(diǎn),具體步驟如下:
1)在一開(kāi)始定義一個(gè)類(lèi)class,再在類(lèi)下面定義一個(gè)設備class_dev;2)xx_init()函數中,使用class_creat()和device_creat()創(chuàng )建設備節點(diǎn);3)xx_exit()函數中,使用class_destory()卸載設備節點(diǎn)。其中,設備號的選擇,通過(guò)查詢(xún)內核中Documents/device.txt選用空閑的設備號,當然也可以用major=register_chrdev(0,name,file_operation)自動(dòng)生成。
3.2 串口通信程序設計
系統的主要功能是實(shí)現家居環(huán)境參數的采集、上傳和監控頁(yè)面控制命令的下發(fā),所以數據傳輸是整個(gè)應用程序的關(guān)鍵部分,即S5PC100與GPRS模塊的串口通信程序的設計。
在定義與串口相關(guān)寄存器地址的基礎上,以結構體構造新的串口數據類(lèi)型,結構體成員為函數指針,它們指向編寫(xiě)的具體實(shí)現函數,而函數體中的數據直接操作串口寄存器,實(shí)現了串口驅動(dòng)程序,實(shí)際上就是上面驅動(dòng)程序思想,填充對應的file_operations中的接口函數,實(shí)現我們自己的驅動(dòng)程序。以下是實(shí)現串口數據類(lèi)型的主要源代碼:

串口采用中斷方式接收數據,提高了串口數據處理的實(shí)時(shí)性和整個(gè)CPU的工作效率。具體來(lái)說(shuō),S5PC100的串口1收到輸入模塊發(fā)送的家居環(huán)境參數,進(jìn)行邏輯判斷,結合輸出模塊處理后,傳輸到監控頁(yè)面,實(shí)現數據的上傳;S5PC100的串口1收到監控頁(yè)面發(fā)送的指令后,調用相應的處理函數,把指令同步到各個(gè)模塊,實(shí)現數據的下發(fā)。
3.3 Web服務(wù)器的搭建
為方便用戶(hù)通過(guò)internet或GPRS網(wǎng)絡(luò )接入互聯(lián)網(wǎng),遠程監控家里情況,提供遠程Web服務(wù)。本模塊主要包括2個(gè)部分:
1)BOA服務(wù)器模塊設計:在嵌入式系統中移植BOA服務(wù)器,提供Web服務(wù);
2)cgi模塊詳細設計:根據監控頁(yè)面上的不同按鈕,發(fā)送不同信息給S5PC100,S5PC100調用相應的處理函數,執行網(wǎng)頁(yè)按鈕相應功能。
3.4 應用程序整體設計
在搭建好系統環(huán)境,成功移植硬件驅動(dòng)后,在Ubuntul2.04上Linux2.6內核環(huán)境下進(jìn)行程序的開(kāi)發(fā)調試。系統中主要的進(jìn)程,包括3個(gè)線(xiàn)程等待控制命令,在代碼中采用輪詢(xún)的形式來(lái)對線(xiàn)程狀況進(jìn)行檢測,發(fā)生問(wèn)題的時(shí)候進(jìn)行相應得處理,用戶(hù)可通過(guò)網(wǎng)絡(luò )訪(fǎng)問(wèn)本系統并遠程進(jìn)行控制操作。調用了兩個(gè)線(xiàn)程分別操作thief處理線(xiàn)程和fire處理線(xiàn)程。thief線(xiàn)程和fire線(xiàn)程分別調用GPRS模塊和攝像頭模塊進(jìn)行短消息的發(fā)送和圖像的采集及保存。同時(shí)調用FS_S5PC100開(kāi)發(fā)板自帶的,蜂鳴器模塊和LED模塊實(shí)現報警,另外利用流水燈模擬滅火的操作。具體框架如圖3所示。

輸入模塊和輸出模塊也是分別創(chuàng )建線(xiàn)程處理不同的任務(wù),模塊之間通信選用了消息隊列,對于共享資源采用了互斥鎖和條件變量,保證資源的共享和原子操作。
4 測試結果
整個(gè)系統在實(shí)驗室環(huán)境下進(jìn)行了測試,利用S5PC100開(kāi)發(fā)板上自帶的按鍵key1模擬外人闖入,按鍵key2模擬主人進(jìn)入,溫度的采集使用了LM75溫度傳感器采集,同時(shí)為便于調試我們同時(shí)也利用ADC來(lái)模擬溫度變化。整個(gè)監控界面效果圖如圖4所示。

通過(guò)點(diǎn)擊頁(yè)面上的用戶(hù)設置按鈕,可以設置用戶(hù)名、密碼的修改及新用戶(hù)的增加;手機短信號碼的修改及新手機號碼的增加;短信中心號碼更改;報警溫度設置,這些參數設置好后都保存在數據庫中。點(diǎn)擊用戶(hù)基本信息按鈕,可以查看用戶(hù)信息,及報警功能的開(kāi)關(guān)狀態(tài)等。點(diǎn)擊歷史照片查看,會(huì )跳轉到,頁(yè)面首先顯示第一張照片,可以在查看照片的頁(yè)面上點(diǎn)擊上一張、下一張、返回主頁(yè)面按鈕。點(diǎn)擊歷史照片下載按鈕,歷史照片會(huì )以_tar.gz格式打包。點(diǎn)擊連拍按鈕,攝像頭會(huì )自動(dòng)連續拍照5張并存儲。另外,在開(kāi)發(fā)板上配置并開(kāi)啟crontab定時(shí)服務(wù),實(shí)現歷史照片的定時(shí)刪除功能。
在測試報警功能時(shí),先要點(diǎn)擊主頁(yè)面開(kāi)報警功能按鈕,當按下S5PC100開(kāi)發(fā)板上的key1鍵,蜂鳴器響,指定手機收到報警短信,抓拍的照片可以通過(guò)點(diǎn)擊頁(yè)面歷史照片查看按鈕查看。通過(guò)點(diǎn)擊主頁(yè)面關(guān)閉當前報警按鈕,關(guān)閉蜂鳴器。當調節電壓協(xié)調器使模擬的溫度過(guò)高時(shí),蜂鳴器響,指定手機收到報警短信,流水燈不斷閃爍模擬滅火。點(diǎn)擊報警日志查看報警記錄,效果如圖5所示。

5 結論
以上提出的基于ARM的智能家居安防監控系統的實(shí)現方案,有機結合了ARM高效的處理技術(shù)、GPRS可靠的遠程數據傳輸技術(shù)、動(dòng)態(tài)網(wǎng)頁(yè)設計等技術(shù),不僅實(shí)現了安防方面的迅速報警、記錄證據和遠程監控等功能,而且誤報率低、成本低。實(shí)驗證明,該系統運行可靠,達到了遠程監控的要求。另外,本系統還需繼續改進(jìn),比如,將開(kāi)發(fā)板上時(shí)間調整到標準時(shí)間;增加利用tftp實(shí)現遠程更新應用程序等功能。
評論