<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于ARM的智能家居安防監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)

          基于ARM的智能家居安防監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)

          作者: 時間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

          各種設(shè)備由于功能不同,驅(qū)動程序提供的函數(shù)接口也不相同,但Linux為能夠統(tǒng)一管理,規(guī)定了Linux下設(shè)備驅(qū)動程序必須使用統(tǒng)一的接口函數(shù)file_operations。根據(jù)功能填充對應(yīng)的file_operations中的接口函數(shù)。為便于開機啟動,統(tǒng)一地將驅(qū)動程序靜態(tài)編譯到內(nèi)核。

          另外,涉及設(shè)備節(jié)點的創(chuàng)建,選擇了udev機制來自動創(chuàng)建設(shè)備節(jié)點,具體步驟如下:

          1)在一開始定義一個類class,再在類下面定義一個設(shè)備class_dev;2)xx_init()函數(shù)中,使用class_creat()和device_creat()創(chuàng)建設(shè)備節(jié)點;3)xx_exit()函數(shù)中,使用class_destory()卸載設(shè)備節(jié)點。其中,設(shè)備號的選擇,通過查詢內(nèi)核中Documents/device.txt選用空閑的設(shè)備號,當然也可以用major=register_chrdev(0,name,file_operation)自動生成。

          3.2 串口通信程序設(shè)計

          系統(tǒng)的主要功能是實現(xiàn)家居環(huán)境參數(shù)的采集、上傳和監(jiān)控頁面控制命令的下發(fā),所以數(shù)據(jù)傳輸是整個應(yīng)用程序的關(guān)鍵部分,即S5PC100與模塊的串口通信程序的設(shè)計。

          在定義與串口相關(guān)寄存器地址的基礎(chǔ)上,以結(jié)構(gòu)體構(gòu)造新的串口數(shù)據(jù)類型,結(jié)構(gòu)體成員為函數(shù)指針,它們指向編寫的具體實現(xiàn)函數(shù),而函數(shù)體中的數(shù)據(jù)直接操作串口寄存器,實現(xiàn)了串口驅(qū)動程序,實際上就是上面驅(qū)動程序思想,填充對應(yīng)的file_operations中的接口函數(shù),實現(xiàn)我們自己的驅(qū)動程序。以下是實現(xiàn)串口數(shù)據(jù)類型的主要源代碼:

          基于ARM的智能家居安防監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)

          串口采用中斷方式接收數(shù)據(jù),提高了串口數(shù)據(jù)處理的實時性和整個CPU的工作效率。具體來說,S5PC100的串口1收到輸入模塊發(fā)送的家居環(huán)境參數(shù),進行邏輯判斷,結(jié)合輸出模塊處理后,傳輸?shù)奖O(jiān)控頁面,實現(xiàn)數(shù)據(jù)的上傳;S5PC100的串口1收到監(jiān)控頁面發(fā)送的指令后,調(diào)用相應(yīng)的處理函數(shù),把指令同步到各個模塊,實現(xiàn)數(shù)據(jù)的下發(fā)。

          3.3 Web服務(wù)器的搭建

          為方便用戶通過internet或網(wǎng)絡(luò)接入互聯(lián)網(wǎng),家里情況,提供遠程Web服務(wù)。本模塊主要包括2個部分:

          1)BOA服務(wù)器模塊設(shè)計:在嵌入式系統(tǒng)中移植BOA服務(wù)器,提供Web服務(wù);

          2)cgi模塊詳細設(shè)計:根據(jù)監(jiān)控頁面上的不同按鈕,發(fā)送不同信息給S5PC100,S5PC100調(diào)用相應(yīng)的處理函數(shù),執(zhí)行網(wǎng)頁按鈕相應(yīng)功能。

          3.4 應(yīng)用程序整體設(shè)計

          在搭建好系統(tǒng)環(huán)境,成功移植硬件驅(qū)動后,在Ubuntul2.04上Linux2.6內(nèi)核環(huán)境下進行程序的開發(fā)調(diào)試。系統(tǒng)中主要的進程,包括3個線程等待控制命令,在代碼中采用輪詢的形式來對線程狀況進行檢測,發(fā)生問題的時候進行相應(yīng)得處理,用戶可通過網(wǎng)絡(luò)訪問本系統(tǒng)并遠程進行控制操作。調(diào)用了兩個線程分別操作thief處理線程和fire處理線程。thief線程和fire線程分別調(diào)用模塊和攝像頭模塊進行短消息的發(fā)送和圖像的采集及保存。同時調(diào)用FS_S5PC100開發(fā)板自帶的,蜂鳴器模塊和LED模塊實現(xiàn)報警,另外利用流水燈模擬滅火的操作。具體框架如圖3所示。

          基于ARM的智能家居安防監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)

          輸入模塊和輸出模塊也是分別創(chuàng)建線程處理不同的任務(wù),模塊之間通信選用了消息隊列,對于共享資源采用了互斥鎖和條件變量,保證資源的共享和原子操作。

          4 測試結(jié)果

          整個系統(tǒng)在實驗室環(huán)境下進行了測試,利用S5PC100開發(fā)板上自帶的按鍵key1模擬外人闖入,按鍵key2模擬主人進入,溫度的采集使用了LM75溫度傳感器采集,同時為便于調(diào)試我們同時也利用ADC來模擬溫度變化。整個監(jiān)控界面效果圖如圖4所示。

          基于ARM的智能家居安防監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)

          通過點擊頁面上的用戶設(shè)置按鈕,可以設(shè)置用戶名、密碼的修改及新用戶的增加;手機短信號碼的修改及新手機號碼的增加;短信中心號碼更改;報警溫度設(shè)置,這些參數(shù)設(shè)置好后都保存在數(shù)據(jù)庫中。點擊用戶基本信息按鈕,可以查看用戶信息,及報警功能的開關(guān)狀態(tài)等。點擊歷史照片查看,會跳轉(zhuǎn)到,頁面首先顯示第一張照片,可以在查看照片的頁面上點擊上一張、下一張、返回主頁面按鈕。點擊歷史照片下載按鈕,歷史照片會以_tar.gz格式打包。點擊連拍按鈕,攝像頭會自動連續(xù)拍照5張并存儲。另外,在開發(fā)板上配置并開啟crontab定時服務(wù),實現(xiàn)歷史照片的定時刪除功能。

          在測試報警功能時,先要點擊主頁面開報警功能按鈕,當按下S5PC100開發(fā)板上的key1鍵,蜂鳴器響,指定手機收到報警短信,抓拍的照片可以通過點擊頁面歷史照片查看按鈕查看。通過點擊主頁面關(guān)閉當前報警按鈕,關(guān)閉蜂鳴器。當調(diào)節(jié)電壓協(xié)調(diào)器使模擬的溫度過高時,蜂鳴器響,指定手機收到報警短信,流水燈不斷閃爍模擬滅火。點擊報警日志查看報警記錄,效果如圖5所示。

          基于ARM的智能家居安防監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)

          5 結(jié)論

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


          上一頁 1 2 下一頁

          關(guān)鍵詞: ARM GPRS Boa 遠程監(jiān)控

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();