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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于ARM-linux的智能監(jiān)控系統(tǒng)設計

          基于ARM-linux的智能監(jiān)控系統(tǒng)設計

          作者: 時間:2013-02-01 來源:網絡 收藏

          隨著社會的發(fā)展和進步,人們的生活步調加快,如家庭生活和工作等環(huán)境中會經常出現無人的情況,此時安全問題令人擔憂,研制一個適宜的安全是十分必要的。然而,目前大多需要借助一些傳感器,如熱紅外、煙霧等,來實現監(jiān)控,這樣提高了成本,使系統(tǒng)變得復雜,可靠性降低。因此一種簡易的家居是必要的。本文提出了運動物體檢測的方案。當有外來入侵者時,系統(tǒng)會追蹤運動目標并將其鎖定,拍攝記錄下其圖片,并會發(fā)出報警信號,警告入侵者離開。同時系統(tǒng)將會通過GPRS網絡發(fā)送警告信息和入侵者的圖片,讓用戶可以隨時了解監(jiān)控區(qū)域的情況。

          本文引用地址:http://www.ex-cimer.com/article/148109.htm

          本文以嵌入式系統(tǒng)ARM+Linux系統(tǒng)為平臺了智能家居監(jiān)控系統(tǒng)。系統(tǒng)采用背景差法實現對視頻序列中運動目標的檢測,根據檢測結果實現報警功能,同時利用GPRS移動通信覆蓋區(qū)域廣闊的特點,以短信和彩信的形式將信息發(fā)送到用戶手機,從而實現智能監(jiān)控[1]。

          1 監(jiān)控系統(tǒng)的功能概述及工作流程

          本智能監(jiān)控系統(tǒng)是嵌入式ARM-Linux開發(fā)的,系統(tǒng)實現圖像采集、運動目標檢測、現場警報并通過GPRS網絡實現短信和彩信的發(fā)送。

          系統(tǒng)要實現的主要功能有:(1)采用背景差法實現對視頻序列中運動目標檢測;(2)通過GPRS發(fā)送報警短信和檢測到的運動目標圖像彩信;(3)通過聲卡在現場播放報警音樂。

          系統(tǒng)工作流程為:首先,運行運動目標入侵檢測模塊,驅動USB攝像頭進行圖像數據采集,在ARM處理器中進行運動目標檢測算法計算工作。當系統(tǒng)檢測到有運動目標入侵時,系統(tǒng)會拍攝下運動目標入侵者的圖像并保存在文件夾中。此時,系統(tǒng)將開啟現場報警程序模塊,通過聲卡UDA1341驅動音箱播放報警音樂,來警告非法入侵者離開。同時,系統(tǒng)通過串口發(fā)送AT指令來啟動GPRS無線模塊M20,GPRS模塊發(fā)送報警短信和入侵者的圖片到用戶手機。

          2 系統(tǒng)硬件平臺構建

          本系統(tǒng)硬件由以下模塊構成:中芯微的USB攝像頭zc0301、GPRS彩信模塊M20、聲卡UDA1341、音箱、三星公司的微處理器S3C2440,256 MB NAND Flash以及64 MB SDRAM。S3C2440微處理器內部集成了ARM公司ARM920T處理器核的32 bit微控制器,其資源豐富,帶獨立的16 KB指令Cache和16 KB數據Cache,還有NAND閃存控制器及RAM控制器,系統(tǒng)主頻最高可達203 MHz[2-3]。本系統(tǒng)硬件結構框圖如圖1所示。

          本系統(tǒng)用USB攝像頭zc301進行圖像采集,得到JPEG格式圖像,通過聲卡UDA1341驅動音箱報警,用M20實現彩信圖片發(fā)送。

          3 系統(tǒng)軟件設計

          本視頻監(jiān)控系統(tǒng)軟件是ARM-Linux平臺開發(fā)的。首先在系統(tǒng)上移植Uboot、Linux-2.6.30內核和根文件系統(tǒng)。系統(tǒng)移植zc0301攝像頭驅動、聲卡UDA1341驅動和串口驅動。系統(tǒng)需要設計背景差法的運動圖像檢測算法的軟件實現[4]。報警模塊需要移植MP3播放器madplay,設計報警控制程序及GPRS警告信息發(fā)送程序。系統(tǒng)的應用軟件體系結構如圖2所示。

          3.1 運動圖像檢測

          視頻序列檢測為智能視頻監(jiān)控提供了便利。本系統(tǒng)通過運動檢測實現自動報警和圖片拍攝,而在以往的監(jiān)控系統(tǒng)中通常是采用人工干預的方式或者增加額外報警電路的方式實現報警功能。通過視頻序列檢測運動目標則可以提高監(jiān)控系統(tǒng)的自動化程度,節(jié)約人力[1]。運動目標檢測和跟蹤是視覺領域的重要課題。系統(tǒng)對視頻視野內是否有入侵者進行檢查,當檢測結果超出認定的變化閾值時,系統(tǒng)就會自動報警并拍攝下運動目標的照片。

          本文采用背景差法進行運動圖像檢測。背景差法基于圖像序列和參考背景模型相減實現運動物體的檢測,它能較好地檢測出運動目標有關的所有像素點[1]。由于視頻監(jiān)控系統(tǒng)位置是固定的,場景不會實時變化,因此適合采用背景差法進行運動目標檢測[1]。

          修改配置文件motion-dist.conf:設置圖像大小為320×240,設置攝像頭采集速度為30幀/s,設置像素變化檢測認定為圖像變化的閾值threshold=90,設置當檢測到有圖像變化時,把運動區(qū)域用矩形框起來等配置信息。

          移植motion:首先進入源碼包交叉編譯#./configure、#make和#make install,這樣就完成了移植工作。之后#./motion-c motion-dist.conf,即可開始驗證運動圖像檢測。

          報警模塊是根據motion檢測的結果(圖像變化超過閾值90)作出報警反應。報警模塊移植了MP3播放器madplay及報警音樂播放處理程序。當檢測到圖像像素變化達到閾值時,則開始播放MP3報警音樂。

          3.2 短信發(fā)送

          短信的發(fā)送方式有TEXT模式和PDU模式兩種,本文采用TEXT模式向用戶發(fā)送報警短信。發(fā)送英文短信的主要步驟如下:

          (1)打開串口;

          (2)初始化串口參數;

          (3)發(fā)送AT+CMGF=1命令,通知手機模塊采用TEXT模式;

          (4)發(fā)送AT指令AT+CMGS=150968807501,通知手機模塊用戶的電話號碼;

          (5)添加發(fā)送的警告信息內容;

          (6)發(fā)送結束,關閉串口。

          3.3 彩信發(fā)送

          運動目標檢測部分在檢測到運動目標入侵時會拍攝下運動目標的圖像,將其存儲在/root/motion文件夾下。發(fā)送彩信時則將讀取相關圖片,并采用彩信發(fā)送的指令發(fā)送彩信[5]。發(fā)送彩信的步驟為:

          (1)發(fā)送指令AT+QIFGCNT=1,以配置場景;

          (2)發(fā)送AT+QICSGP=1,CMWAP設置接入點;

          (3)發(fā)送指令AT+QIREGAPP以設置用戶名及密碼,通常默認為空;

          (4)發(fā)送AT+QIACT激活GPRS;

          (5)發(fā)送AT+QILOCIP查詢本機IP是否連上GPRS;

          (6)發(fā)送AT+QMMSW=1,1,150968807501設置目標手機號碼;

          (7)發(fā)送AT+QFUPL=pic_name.jpg,2 644,即上傳圖片并起名為pic_name.jpg,圖片大小為2 664;

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();