版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)設(shè)計說明書</b></p><p> 畢業(yè)論文(設(shè)計)任務(wù)書</p><p> 2011年 12 月 12 日至 2012 年 5 月 25 日</p><p> 題 目:基于Cortex-A8的家庭智能安防系統(tǒng)</p><p> 姓 名:
2、 </p><p> 學(xué) 號: </p><p> 專 業(yè): 電子信息工程 </p><p> 年 級: </p><p> 指導(dǎo)教
3、師: </p><p> 畢業(yè)論文(設(shè)計)開題報告</p><p><b> ?。ɡ砉ゎ悾?lt;/b></p><p> 基于Cortex-A8的家庭智能安防系統(tǒng)</p><p> 摘 要 家庭監(jiān)控是利用網(wǎng)絡(luò)技術(shù)將安裝在家內(nèi)的視頻、音頻、報警等監(jiān)控系統(tǒng)連接起來,
4、通過中控電腦的處理將有用信息保存并發(fā)送到其他數(shù)據(jù)終端,如手機,筆記本,110報警中心等。本系統(tǒng)是linux下的基于Cortex-A8的嵌入式家庭智能安防系統(tǒng)系統(tǒng),采用的是S5PC100的內(nèi)核芯片。主要包括溫度檢測、紅外感應(yīng)防盜、視頻采集及顯示、GSM短信收發(fā)控制、web服務(wù)器,實現(xiàn)對家庭安全的實時監(jiān)控。用戶可以通過手機實時監(jiān)控家中的信息,也可以遠(yuǎn)程web登錄監(jiān)控家中情況。從而方便人們的生活需要,為進(jìn)一步的現(xiàn)代化鋪路搭橋。</p&g
5、t;<p> 關(guān) 鍵 詞:linux Cortex-A8 GSM 嵌入式 S5PC100 </p><p> Based on the Cortex-the A8 family intelligent security system</p><p><b> Abstract</b></p><p> Fami
6、ly monitoring is by using the network technology will be installed at home video, audio, and within the alert monitor system connected, through the central computer processing will be useful information preservation capa
7、bility to send other data terminal,such as cell phones, laptops, 110 alarm center, etc. The system is based on the Linux of Cortex-the A8 embedded family intelligence security system system, use is S5PC100 kernel chip.Ma
8、inly includes temperature detection, inductive guard aga</p><p> Key word: Linux Cortex-the A8 GSM embedded S5PC100</p><p><b> 目 錄</b></p><p><b> 第1章 緒論3<
9、;/b></p><p> 1.1 課題來源3</p><p><b> 1.2 背景3</b></p><p> 1.3 課題的研究意義4</p><p> 1.4 本課題的主要研究工作4</p><p> 第2章 方案設(shè)計5</p><p>
10、 2.1 總體設(shè)計框圖5</p><p> 2.2 主流程設(shè)計7</p><p> 2.3 具體體分工7</p><p> 第3章 溫度模塊設(shè)計9</p><p> 3.1 溫度、報警模塊9</p><p> 3.1.1.模塊概述9</p><p> 3.1.2.溫度模塊
11、詳細(xì)設(shè)計9</p><p> 3.2 LM75芯片9</p><p> 3.2.1.Lm75功能引腳描述10</p><p> 3.2.2.lm75引腳功能定義11</p><p> 3.2.3.Lm75寄存器及寄存器位格式11</p><p> 3.2.4.硬件原理圖12</p>
12、<p> 3.3 溫度軟件設(shè)計13</p><p> 3.3.1.驅(qū)動設(shè)計13</p><p> 3.3.2.內(nèi)核驅(qū)動配置14</p><p> 3.3.3.用戶接口設(shè)計14</p><p> 第4章 蜂鳴器、LED模塊17</p><p> 4.1 蜂鳴器模塊說明17</p&g
13、t;<p> 4.1.1.硬件原理圖17</p><p> 4.1.2.驅(qū)動設(shè)計17</p><p> 4.1.3.內(nèi)核驅(qū)動配置19</p><p> 4.1.4.用戶接口設(shè)計19</p><p> 4.2 LED功能模塊說明20</p><p> 4.2.1.LED模塊電路如圖所示
14、20</p><p> 4.2.2.LED模塊驅(qū)動程序設(shè)計21</p><p> 4.2.3.應(yīng)用程序設(shè)計23</p><p> 第5章 web模塊23</p><p> 5.1 功能模塊實現(xiàn)設(shè)計23</p><p> 5.2 CGI(common gateway interface)通信模塊:2
15、8</p><p> 5.3 Boa移植28</p><p> 5.4 數(shù)據(jù)庫公用模塊實現(xiàn)29</p><p><b> 參考文獻(xiàn)32</b></p><p> 致 謝 詞32</p><p> 獨 撰 聲 明33</p><p><b>
16、 第1章 緒論</b></p><p> 本章主要介紹課題的來源、研究目的和意義,并簡要介紹課題所做的主要研究工作。</p><p><b> 1.1 課題來源</b></p><p> 本課題為自選課題,基于本實驗室已有的開發(fā)板資源,研究學(xué)習(xí)家庭智能安防系統(tǒng)設(shè)計。綜合應(yīng)用嵌入式系統(tǒng)開發(fā)、實現(xiàn)安防系統(tǒng)整套應(yīng)用。</p&
17、gt;<p><b> 1.2 背景</b></p><p> 隨著社會電子信息化的不斷發(fā)展,人們在家居中使用的電器越來越多,由此帶來的安全隱患也有了明顯的增多。在這些電器中一旦出現(xiàn)一些異常,便會給人們帶來很大的損失。為了降低電器的不合理使用帶來的異常情況,就要求在異常發(fā)生時用戶能及時得到信息,并通過實時監(jiān)控采取一定的操作排除異常。因此,遠(yuǎn)程監(jiān)控系統(tǒng)的作用是非常巨大的。&l
18、t;/p><p> 以嵌入式視頻web服務(wù)器為核心的視頻監(jiān)控系統(tǒng),采用嵌入式實時多任務(wù)操作系統(tǒng)。攝像頭采集到的圖片信息經(jīng)過壓縮,通過內(nèi)部總線送到內(nèi)置的web服務(wù)器,網(wǎng)絡(luò)上的用戶可以直接用瀏覽器觀看web服務(wù)器上的由攝像頭采集的圖像。由于把圖片采集和web功能集中到一個體積很小的設(shè)備內(nèi),可以直接連入局域網(wǎng),用戶無需安裝任何硬件設(shè)備,僅用瀏覽器即可觀看。同時還具有以下優(yōu)點:</p><p>
19、布控區(qū)域廣闊,嵌入式視頻web服務(wù)器監(jiān)控系統(tǒng)web服務(wù)器直接連入網(wǎng)絡(luò),沒有線纜長度和信號衰減的限制,同時網(wǎng)絡(luò)是沒有距離概念的,徹底拋棄了地域的概念,擴展布控的區(qū)域。系統(tǒng)具有幾乎無限的無縫擴展能力。所以設(shè)備都以IP地址進(jìn)行標(biāo)示,增加設(shè)備只是意味著IP地址的擴充。</p><p> 性能穩(wěn)定可靠,無需專人管理。嵌入式web服務(wù)器實際上是基于嵌入式微處理器技術(shù),采用嵌入式實時多任務(wù)操作系統(tǒng),對于用戶來講,上網(wǎng)進(jìn)行登陸
20、,便可對家中情況進(jìn)行監(jiān)控。</p><p> 現(xiàn)在監(jiān)控系統(tǒng)發(fā)展到第三代,前端一體化、視頻十字化、監(jiān)控網(wǎng)絡(luò)化、系統(tǒng)集成化成為視頻監(jiān)控系統(tǒng)公認(rèn)的發(fā)展方向,它以網(wǎng)絡(luò)為依托,以數(shù)字視頻的壓縮、傳輸、存放和播放為核心,以智能實用的圖像分析為特點,并為報警系統(tǒng)、門禁系統(tǒng)完美的整合到一個使用平臺上,引發(fā)了視頻控制行業(yè)的一次技術(shù)革命。</p><p> 1.3 課題的研究意義</p>&
21、lt;p> 智能家居控制系統(tǒng)可以定義為一個過程或者一個系統(tǒng)。利用先進(jìn)的計算機技術(shù)、網(wǎng) 絡(luò)通訊技術(shù)、綜合布線技術(shù)、將與家居生活有關(guān)的各種子系統(tǒng),有機地結(jié)合在一起,通 過統(tǒng)籌管理,讓家居生活更加舒適、安全、有效。與普通家居相比,智能家居不僅具有 傳統(tǒng)的居住功能,提供舒適安全、高品位且宜人的家庭生活空間。還將原來的被動靜止 結(jié)構(gòu)轉(zhuǎn)變?yōu)榫哂心軇又腔鄣墓ぞ?,提供全方位的信息交換功能,幫助家庭與外部保持信 息交換暢通,優(yōu)化人們的生活方式,幫
22、助人們有效安排時間,增強家居生活的安全性, 甚至為各種能源費用節(jié)約資金。 系統(tǒng)的網(wǎng)絡(luò)化功能可以提供遙控、家電(空調(diào),熱水器等)控制、照明控制、室內(nèi)外遙 控、窗簾自控、防盜報警、電話遠(yuǎn)程控制、可編程定時控制及計算機控制等多種功能和手 段。使生活更加舒適、便利和安全。因智能家居控制系統(tǒng)簡單、功能靈活,擴展容易而被 人們廣泛接受和應(yīng)用。 家居生活的智能化是當(dāng)今計算機網(wǎng)絡(luò)與通訊技術(shù)最人性化的應(yīng)用,給人們的家居生活 帶來了全新的感受。今天,借助電
23、話控制或互聯(lián)網(wǎng),您幾乎可以在任何地方、任何時候監(jiān) 控您的家居狀況,為您的家居生活帶來前所未有的方便。隨著社會全面的信息化、智能化 和自動化,</p><p> 1.4 本課題的主要研究工作</p><p> 本課題通過研究現(xiàn)有的電子點菜系統(tǒng)的解決方案,以s5pc100為主控芯片的硬件,linux為操作系統(tǒng),cgi嵌入式應(yīng)用圖形系統(tǒng)為操作界面,lcd屏作為顯示和WEB網(wǎng)頁輸入設(shè)備的一個系
24、統(tǒng)。具體包括以下內(nèi)容:</p><p> 了解cortex-A8的系統(tǒng)結(jié)構(gòu),熟悉編程、調(diào)試環(huán)境,了解應(yīng)用程序的開發(fā)的過程;</p><p> 底層設(shè)備驅(qū)動的編寫;</p><p> 嵌入式linux開發(fā)平臺的構(gòu)建;</p><p> 4.應(yīng)用程序的編寫等;</p><p><b> 第2章 方案設(shè)計
25、</b></p><p> 2.1 總體設(shè)計框圖</p><p><b> 硬件環(huán)境:</b></p><p> 三星S5PC100 開發(fā)平臺介紹</p><p> S5PC100 開發(fā)平臺用三星公司先進(jìn)的基于Cortex-A8 內(nèi)核的 S5PC100 處理器設(shè)計而成。此平臺主要應(yīng)用于華清遠(yuǎn)見的嵌入式
26、系統(tǒng)教學(xué),以適應(yīng)Android、Linux、Wince 等智能操作系統(tǒng)的發(fā)展及市場需求。S5PC100 處理器采用了64/32 位的內(nèi)部總線 結(jié)構(gòu),和最大833M 赫茲的運算速度。包括強大的硬件加速器,如:動態(tài)視頻處理,顯示控制和縮放。支持多種格式的硬件編解碼:MPEF-1/2/4、H263/H264 等。其視頻解碼能力很強大并且省電, 編解碼能力達(dá)到 720p@30fps (1280x720) 支持電視輸出(NTSC/PAL/HDMI
27、)。支持2D/3D 加速。本處理器廣泛的應(yīng)用于智能手機、平板電腦等產(chǎn)品。</p><p><b> 開發(fā)板硬件資源</b></p><p><b> 圖2.2-1</b></p><p> FS_S5PC100擁有豐富的硬件資源:</p><p> 存儲器:256M Byte 的NAND F
28、lash,256M Byte 的DDR2 內(nèi)存,2M 的Nor Flash</p><p> 顯示輸出接口:LCD 接口、VGA 接口、TVout 接口、HDMI 接口。</p><p> 視頻輸入接口:Camera 接口。</p><p> 串口:2 路5 線串口、1 路3 線串口。</p><p> 紅外通訊接口:1 路紅外收發(fā)。
29、</p><p> 存儲卡接口:SD 卡接口。</p><p> SPI:SPI 的E2PROM (用于SPI 實驗)。</p><p> I2C:I2C 的溫度傳感器(用于I2C 實驗)。</p><p> A/D: 變阻器(用于A/D 實驗)。</p><p> USB:USB2.0-OTG 接口、4 路
30、USB Host 接口。</p><p> PWM:蜂鳴器(用于PWM 實驗)。</p><p> 網(wǎng)絡(luò)接口:DM9000AE 以太網(wǎng)控制器,實現(xiàn)10M/100M 自適應(yīng)以太網(wǎng)通信。</p><p> 外擴接口:藍(lán)牙、wifi 等</p><p> 音頻接口:WM9714</p><p> FS_S5PC10
31、0軟件資源:</p><p> Android 2.1 系統(tǒng)源代碼</p><p> Linux2.6.29 系統(tǒng)源代碼</p><p><b> 外設(shè)接口測試源代碼</b></p><p> Uboot(支持usb、網(wǎng)絡(luò)通訊)</p><p><b> 2.2 主流程設(shè)計&l
32、t;/b></p><p> Linux是一個完全受保護(hù)的多任務(wù)操作系統(tǒng),它允許每個用戶同時運行多個作業(yè)。進(jìn)程間可相互通信,但每個進(jìn)程都是受到完全保護(hù)的,即不會受到其他進(jìn)程的干擾,就如內(nèi)核不會受到其他任何進(jìn)程干擾一樣。用戶在集中精力于當(dāng)前屏幕所顯示作業(yè)的同時,還可在后臺運行其他作業(yè),而且可以在這些作業(yè)之間來回切換。這一功能提高了用戶的工作效率。</p><p> 考慮到整個系統(tǒng)的
33、穩(wěn)定性,可易性以及代碼的可讀性,應(yīng)盡量遵循C程序設(shè)計中高內(nèi)聚低耦合的設(shè)計思想,使每個模塊相互獨立,有序的完成自己的任務(wù)。此系統(tǒng)總共劃分成七個模塊,分別是溫度采集、圖像采集、紅外傳感、web服務(wù)器、數(shù)據(jù)庫模塊、蜂鳴器及短信收發(fā)模塊??傮w采用linux的多線程方式,當(dāng)系統(tǒng)啟動以后,會自動啟動boa服務(wù)器和整個安防系統(tǒng)會主動進(jìn)入監(jiān)控狀態(tài)。</p><p><b> 2.3 具體體分工</b>&l
34、t;/p><p><b> 模塊一 (胡志明)</b></p><p> 1、溫度采集,火災(zāi)報警(發(fā)送短信、蜂鳴器報警和led閃爍);</p><p> 2、構(gòu)建嵌入式web服務(wù)器,使用戶通過網(wǎng)絡(luò)利用pc機進(jìn)行監(jiān)控;</p><p> 此模塊是直接使用的開發(fā)板上的現(xiàn)有溫度傳感器(LM75)資源,采集到環(huán)境中的溫度值,
35、再通過之前的與設(shè)定的參數(shù),包括溫度的上下限,及火災(zāi)報警溫度值等。</p><p> 另外的web服務(wù)器模塊則可以通過網(wǎng)頁界面查看和控制溫度報警紅外報警等具體值或參數(shù)等。</p><p><b> 模塊二 (何霄)</b></p><p> 1、紅外傳感,非法闖入報警(發(fā)送短信、蜂鳴器報警和led閃爍);</p><p&
36、gt; 2、GSM短信收發(fā)以及控制;</p><p> A)、紅外傳感可在非法闖入時及時報警,GSM模塊則主要實現(xiàn)短信收發(fā)功能;</p><p> 本次設(shè)計的GSM模塊主要需要完成的功能為:通過ARM開發(fā)板的串口2,控制GSM短信息模塊,實現(xiàn)短信息的即時收發(fā),以達(dá)到即時向用戶匯報家庭安全狀況的,并且能夠根據(jù)用戶回發(fā)的指令,采取對應(yīng)的處理措施。</p><p>
37、<b> B)、接收短信</b></p><p> 短信息的接收,是為了能夠及時的收到用戶發(fā)給用戶的操作指令,以完成對家庭環(huán)境的遠(yuǎn)程控制,所以需要能夠及時的收到用戶發(fā)送的短信息內(nèi)容。短信息接收功能的具體實現(xiàn)方案有兩種:</p><p> 方案①為:通過阻塞方式訪問串口,等待GPRS模塊發(fā)送過來的 提示信息,并讀取對應(yīng)位置的短信息;</p><
38、p> 方案②為:采用多路復(fù)用的方式,讀串口,等待接收GPRS模塊 放松過來的短信息提示信息,并讀取對應(yīng)位置的短信息;</p><p> 另外還包括了短信得發(fā)送、短信內(nèi)容提取、短信的保存及刪除等功能。</p><p><b> 模塊三 (王海)</b></p><p> 1、視頻采集與LCD顯示; </p>
39、<p> 2、數(shù)據(jù)庫保存數(shù)據(jù)記錄;</p><p> <系統(tǒng)集成及聯(lián)合調(diào)試></p><p> 此模塊所做的內(nèi)容主要有從開發(fā)板操作系統(tǒng)環(huán)境的搭建開始:</p><p><b> 系統(tǒng)移植</b></p><p> 系統(tǒng)移植包括:交叉編譯工具鏈安裝、配置網(wǎng)絡(luò)文件系統(tǒng)NFS服務(wù)、U-boot移
40、植、Linux內(nèi)核移植、文件系統(tǒng)移植等,期間的具體事項再次就不一一說明來 。</p><p> 視頻采集與LCD顯示</p><p> 這里包括有攝像頭V4L2驅(qū)動移植、LCD驅(qū)動移植、應(yīng)用程序設(shè)計等。</p><p> 第3章 溫度模塊設(shè)計</p><p> 在這次項目中,我主要是負(fù)責(zé)溫度采集,火災(zāi)報警(發(fā)送短信、蜂鳴器報警和led
41、閃爍)及構(gòu)建嵌入式web服務(wù)器,使用戶通過網(wǎng)絡(luò)利用pc機進(jìn)行監(jiān)控;具體設(shè)計如下:</p><p> 3.1 溫度、報警模塊</p><p> 3.1.1.模塊概述</p><p> 溫度模塊用于采集環(huán)境中的實時溫度,報警模塊用于報警(提醒監(jiān)控方有異常情況,溫度超過限定或者是有不明身份的人闖入監(jiān)控區(qū)),溫度模塊采用的傳感器是National semiconduc
42、tor公司的lm75芯片,采集精度0.5℃。</p><p> 3.1.2.溫度模塊詳細(xì)設(shè)計</p><p> 3.2 LM75芯片</p><p> National semiconductor公司的lm75芯片是一種含9位ADC、溫度分辨率為0.5℃的數(shù)字溫度傳感器,測量范圍是-55℃~125℃。它提供兩條支持I2C總線協(xié)議的接口來監(jiān)測溫度,并具備自校準(zhǔn)功
43、能。上位機可以隨時要求lm75讀取溫度,當(dāng)溫度超過設(shè)定的溫度時,芯片系統(tǒng)會自動輸出一個超溫報警信號用于上位機的監(jiān)控操作。主機可以通過程序來控制溫度報警器(Tos)及溫度。A0、A1、A2這三只引腳可以設(shè)定設(shè)備地址,這塊芯片在S5PC100開發(fā)板上硬件地址固化為000。下圖是lm75的功能方框圖</p><p><b> 圖 1 </b></p><p> 3.2.
44、1.Lm75功能引腳描述</p><p><b> 圖 2 </b></p><p> 3.2.2.lm75引腳功能定義</p><p> 3.2.3.Lm75寄存器及寄存器位格式</p><p> Lm75內(nèi)部有五個寄存器,其中四個寄存器命令指針寄存器進(jìn)行選擇,lm75上電默認(rèn)為00;及選擇溫度寄存器(Temp
45、erature register),這個寄存器中保存了當(dāng)前采集的溫度,如果I2C發(fā)出了讀命令,lm75會返回該寄存器中的溫度值(16位),相關(guān)寄存器介紹如下:</p><p> 命令/指針寄存器:(8位只讀)主要用于選擇溫度寄存器、配置寄存器、超閥值寄存器、超閥值溫度關(guān)閉寄存器。</p><p><b> 圖 3 </b></p><p>
46、;<b> 溫度寄存器:</b></p><p><b> 圖 4 </b></p><p> MSB:符號位(正、負(fù)溫度)</p><p> D8~D14:溫度數(shù)據(jù)位</p><p> LSB:小數(shù)位(0.5℃)</p><p> ?。?)THYST AND TO
47、S REGISTER</p><p><b> 圖 5 </b></p><p><b> D0–D6:未定義</b></p><p> D7–D15: 報警溫度和滯后溫度. 上電默認(rèn)TOS = 80°C, THYST = 75°C.</p><p> 3.2.4.硬件原
48、理圖</p><p><b> 圖 6 </b></p><p> 3.3 溫度軟件設(shè)計</p><p> 3.3.1.驅(qū)動設(shè)計</p><p> 注冊為字符設(shè)備,設(shè)備名稱為lm75,設(shè)備號自動分配,防止和其他程序員設(shè)置的設(shè)備號沖突,自動在dev目錄創(chuàng)建設(shè)備節(jié)點,掛接到I2C總線上。系統(tǒng)待用接口有:</p&
49、gt;<p> 打開(lm75_open):</p><p> static int lm75_open(struct inode *inode, struct file *file)</p><p> 關(guān)閉(lm75_release):</p><p> static int lm75_release(struct inode *inode,
50、 struct file *file)</p><p> 讀(lm_75read):</p><p> static ssize_t lm75_read(struct file *file, char __user *buff, size_t count, loff_t *offset) </p><p> IO控制(lm75_ioctl)(定義CMD碼,控制
51、寫哪個寄存器,用于設(shè)定溫度的超閥值)</p><p> static int lm75_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg){</p><p> switch(cmd){</p><p> case SET_OS:</p>
52、<p> lm75_write_value(new_client,LM75_REG_TEMP[1], (u16)((arg*2)<<7));</p><p><b> break;</b></p><p> case SET_HYST:</p><p> lm75_write_value(new_client,
53、LM75_REG_TEMP[2], (u16)((arg*2)<<7));</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> CMD 碼:</
54、b></p><p> #define SET_OS_IOR('a', 1, int)</p><p> #define SET_HYST_IOW('a', 2, int)</p><p> 3.3.2.內(nèi)核驅(qū)動配置</p><p> 在內(nèi)核源碼根目錄下執(zhí)行</p><
55、p> $ make menuconfig</p><p> 進(jìn)入配置菜單后選擇lm75溫度傳感器的驅(qū)動程序:</p><p><b> Location:</b></p><p> -> Device Drivers</p><p> -> Hardware Monitoring suppor
56、t (HWMON [=y])</p><p><b> 打開平臺代碼源文件</b></p><p> $ vim (kernel_dir)/arch/arm/mach-s5pc100/mach-smdkc100.c</p><p><b> 添加如下代碼:</b></p><p> sta
57、tic struct i2c_board_info i2c_devs0[] __initdata = {</p><p> { I2C_BOARD_INFO("lm75", 0x90 >> 1 ), },</p><p><b> };</b></p><p> 在函數(shù)smdkc100_machine_in
58、it中的</p><p> s3c_i2c0_set_platdata(NULL);</p><p> s3c_i2c1_set_platdata(NULL);</p><p><b> 之后添加如下代碼:</b></p><p> i2c_register_board_info(0, i2c_devs0, AR
59、RAY_SIZE(i2c_devs0));</p><p><b> 重新編譯內(nèi)核</b></p><p> 3.3.3.用戶接口設(shè)計</p><p> 為主流程提供模塊初始化接口,溫度的讀寫接口。</p><p> 溫度數(shù)據(jù)結(jié)構(gòu)為struct temp_data {</p><p>
60、 int current_temper;/*當(dāng)前溫度*/</p><p> int highpoint;/*超閥值溫度*/</p><p> int lowpoint;/*滯后溫度*/</p><p><b> }</b></p><p> 采用多線程方式編程,主流程調(diào)用初始化函數(shù)以后,創(chuàng)建一個線程讀
61、寫溫度,將溫度存到溫度數(shù)據(jù)結(jié)構(gòu)中,共主流程查詢,并檢測是否產(chǎn)生報警信號</p><p> extern int temp_init(void)</p><p><b> {</b></p><p><b> int fd;</b></p><p> temp.temp.current_tem
62、p = 0;</p><p> temp.temp.highpoint = 0;</p><p> temp.temp.lowpoint = 0;</p><p> led_init();</p><p> fd = open (DEV_NAME, O_RDWR);</p><p> if (fd <
63、 0) {</p><p> perror("open");</p><p> exit(EXIT_FAILURE);</p><p><b> }</b></p><p> temp._fd = fd;</p><p> printf("\ntemp in
64、it finished!\n");</p><p> return 0;</p><p><b> };</b></p><p> 函數(shù)功能:模塊初始化函數(shù):</p><p> (2)extern float get_temper(void){</p><p> 數(shù)據(jù)處理:右
65、移七位*2</p><p> current_temp = ((float) (buff[0]>>7)/2);</p><p> highpoint = buff[1]>>8;</p><p> lowpoint = buff[2]>>8;</p><p><b> };</b>
66、;</p><p> 函數(shù)功能:讀取溫度接口:</p><p> extern int get_highpoint(void)</p><p><b> {</b></p><p> read_temper(temp._fd);</p><p> return temp.temp.hig
67、hpoint;</p><p><b> };</b></p><p> 函數(shù)功能:獲取報警溫度</p><p> extern int set_temper(int Highpoint, int Lowpoint)</p><p><b> {</b></p><p&g
68、t; if(Highpoint > Lowpoint + 5 || !Lowpoint)</p><p> Lowpoint = Highpoint - 5;</p><p> ioctl(temp._fd, SET_OS, Highpoint);</p><p> ioctl(temp._fd, SET_HYST, Lowpoint);</p&
69、gt;<p> Highpoint = 0;</p><p> Lowpoint = 0;</p><p><b> return 0;</b></p><p><b> };</b></p><p> 函數(shù)功能:設(shè)置報警溫度</p><p> 第4
70、章 蜂鳴器、LED模塊</p><p> 4.1 蜂鳴器模塊說明</p><p> 4.1.1.硬件原理圖</p><p><b> 圖 7 </b></p><p> 4.1.2.驅(qū)動設(shè)計</p><p> 由于這個蜂鳴器是無源的,所以要想使其產(chǎn)生聲音必須給他提供一個有一定頻率的高低電
71、平。所以這里我們采用S5PC100的PWM定時器來使蜂鳴器發(fā)出聲音。</p><p> 在S5PC100中,有兩個寄存器,TCNTB0、TCMPB0,TCNTB0表示計數(shù)器從TCNTB0對應(yīng)的值開始遞減,當(dāng)其遞減到TCMPB0時,電平翻轉(zhuǎn)。當(dāng)逆變器未使能時,從TCNTB0減到TCMPB0時候TOUT輸出高電平,而從TCMPB0到0時輸出低電平。由此可知,當(dāng)TCMPB0相同時,TCNTB0值越大聲音越低,反之越尖
72、。</p><p> 首先是beep的初始化:</p><p> static void beep_init(void)</p><p><b> {</b></p><p> writel((readl(S5PC100_GPD_BASE) & (~0xF << 4)) | (0x2 <
73、< 4), S5PC100_GPD_BASE);</p><p> writel((readl(S3C2410_TCFG0) & ~0xff), S3C2410_TCFG0);</p><p> writel((readl(S3C2410_TCFG1) & ~(0xf << 4) | (0x1 << 4)), S3C2410_TCFG1);
74、</p><p> writel(cnt_def, S3C2410_TCNTB(1));</p><p> writel(cnt_def/2, S3C2410_TCMPB(1));</p><p> writel((readl(S3C2410_TCON) & ~(0xf<<8)) | (0xe<<8), S3C2410_TCON
75、);</p><p><b> }</b></p><p> 設(shè)備類型為字符設(shè)備,系統(tǒng)自動分配設(shè)備號和創(chuàng)建設(shè)備節(jié)點,提供的系統(tǒng)調(diào)用接口:</p><p> static struct file_operations s5pc100_pwm_ops = {</p><p> .owner = THIS_MODU
76、LE,</p><p> .open = s5pc100_pwm_open,</p><p> .release = s5pc100_pwm_close,</p><p> .ioctl= s5pc100_pwm_ioctl</p><p><b> };</b></p><p>
77、;<b> 打開(open)</b></p><p> static int s5pc100_pwm_open(struct inode *inode, struct file *file)</p><p> 關(guān)閉(release)</p><p> static int s5pc100_pwm_close(struct inode *
78、inode, struct file *file)</p><p> IO控制(ioctl)(定義CMD碼,控制蜂鳴器鳴在什么情況下叫)。</p><p> static int s5pc100_pwm_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)</p>
79、<p><b> 開蜂鳴器:</b></p><p> static void beep_on(void)</p><p><b> {</b></p><p> writel((readl(S3C2410_TCON) & ~(0xf<<8)) | (0xd<<8),
80、S3C2410_TCON);</p><p><b> }</b></p><p><b> 關(guān)蜂鳴器:</b></p><p> static void beep_off(void)</p><p><b> {</b></p><p> w
81、ritel((readl(S3C2410_TCON) & ~(0xf<<8)), S3C2410_TCON);</p><p><b> }</b></p><p><b> 定義CMD碼:</b></p><p> #define SET_CNT _IO('k', 2)<
82、/p><p> #define SET_PRE _IO('k', 3)</p><p> 4.1.3.內(nèi)核驅(qū)動配置</p><p><b> 改寫Kconfig</b></p><p> config PWM_BEEP</p><p> tristate "PWM
83、_BEEP Device Support"</p><p> depends on ARCH_S5PC100</p><p> ---help---</p><p> support beep test on FSC100 board</p><p> 修改Makefile</p><p><b
84、> 添加</b></p><p> obj-$(CONFIG_PWM_BEEP)+= pwm_beep.o</p><p> $ make menuconfig</p><p> Device Drivers ---></p><p> Character devices ---> </p&
85、gt;<p> <*> PWM_BEEP Device Support</p><p><b> 重新編譯內(nèi)核</b></p><p> 4.1.4.用戶接口設(shè)計</p><p> 用戶接口提供了兩種不同的報警聲音(溫度報警和非法闖入報警),應(yīng)用層采用了多線程模式,該模塊唄初始化的時候會自動創(chuàng)建兩個線程,同時打
86、開蜂鳴器設(shè)備,并進(jìn)入阻塞態(tài),等待喚醒信號;當(dāng)溫度超過用戶設(shè)定的報警溫度或者有不明身份的闖入者,都會觸發(fā)喚醒相應(yīng)的beep線程,立即報警。</p><p> ?。?)extern int beep_init(void);</p><p> 函數(shù)功能:初始化蜂鳴器模塊,創(chuàng)建線程</p><p> ?。?)extern int beep_on(void);/*Th
87、e temper is beyound expected!*/</p><p> 函數(shù)功能:溫度報警接口</p><p> ?。?)extern int beep_on2(void);/*Here is someone came into!*/</p><p> 函數(shù)功能:有人闖入時報警接口</p><p> ?。?)extern i
88、nt beep_off(void);</p><p> 函數(shù)功能:關(guān)閉蜂鳴器</p><p> 4.2 LED功能模塊說明</p><p> 4.2.1.LED模塊電路如圖所示</p><p><b> 圖 8 </b></p><p><b> LED模塊功能說明</b
89、></p><p> 在S5PC100的板子上一共有4盞燈,在本次LED的模塊開發(fā)中,把4盞燈都加以運用,在驅(qū)動的實現(xiàn)中通過cmd碼的實現(xiàn)對燈的亮或滅的控制;通過arg這個參數(shù)實現(xiàn)對指定燈的控制;</p><p> static int s5pc100_led_ioctl(struct inode *inode, struct file *file, unsigned int c
90、md, unsigned long arg);</p><p> 4.2.2.LED模塊驅(qū)動程序設(shè)計</p><p> 通過LED的電路原理圖可知,要實現(xiàn)對LED的控制就是實現(xiàn)對GPG3寄存器的控制。通過查看S5PC100的用戶手冊,知道GPG3是一個復(fù)用寄存器,因此需要改變GPG3的端口狀態(tài)為Output狀態(tài)。在往GPF3DAT數(shù)據(jù)寄存器寫入1,即可點亮LED燈。</p>
91、<p> //LED燈的初始化既將GPG3置為Output狀態(tài)</p><p> static void led_init(void)</p><p><b> {</b></p><p> writel((readl(S5PC100_GPG3_BASE) & (~0XFFFF)) | (0X1111),S5PC1
92、00_GPG3_BASE);</p><p><b> }</b></p><p> //點亮對應(yīng)的LED燈</p><p> static void led_on(char flag)</p><p><b> {</b></p><p> switch(flag
93、){</p><p><b> case 0:</b></p><p> writel((readl(S5PC100_GPG3_BASE + 0x4) &(~0x1) ) | (0x1),S5PC100_GPG3_BASE + 0x4);</p><p><b> break;</b></p>
94、<p><b> ......</b></p><p><b> }</b></p><p><b> }</b></p><p> //關(guān)閉對應(yīng)的LED燈</p><p> static void led_off(char flag)</p>
95、<p><b> {</b></p><p> switch(flag){</p><p><b> case 0:</b></p><p> writel((readl(S5PC100_GPG3_BASE + 0x4) ) & ( ~ 0x1),S5PC100_GPG3_BASE + 0x4
96、);</p><p><b> break;</b></p><p><b> ......</b></p><p><b> }</b></p><p><b> }</b></p><p> //LED的操作控制 cm
97、d:亮或滅的控制 ;arg:對應(yīng)燈的控制;</p><p> static int s5pc100_led_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)</p><p><b> {</b></p><p> switc
98、h(cmd)</p><p><b> {</b></p><p> case LED_ON:</p><p> led_on((char)arg);</p><p><b> break;</b></p><p> case LED_OFF:</p>
99、<p> led_off((char)arg);</p><p><b> break;</b></p><p><b> default:</b></p><p><b> break;</b></p><p><b> }</b>
100、</p><p><b> return 0;</b></p><p><b> }</b></p><p><b> //Cmd控制碼;</b></p><p> #define LED_ON _IO('k', 0)</p><p
101、> #define LED_OFF _IO('k', 1)</p><p> 4.2.3.應(yīng)用程序設(shè)計</p><p> //把對應(yīng)的燈點亮;</p><p> void led_on(const int );</p><p><b> //把對應(yīng)燈滅</b></p><
102、;p> void led_off(const int );</p><p> 注:形參為對應(yīng)的燈號;編號為:0/1/2/3</p><p><b> 第5章 web模塊</b></p><p> 5.1 功能模塊實現(xiàn)設(shè)計</p><p><b> 系統(tǒng)登錄模塊</b></p&g
103、t;<p> 1)對用戶身份進(jìn)行驗證用戶輸入用戶名2)</p><p> 3)對用戶身份進(jìn)行驗證用戶輸入密碼。</p><p><b> 模塊背景描述:</b></p><p> 為了提高當(dāng)前系統(tǒng)的安全性能,當(dāng)用戶輸入用戶名而沒有輸入密碼或者密碼小于6位數(shù)的時候,就彈出alert提示用戶輸入信息不全,當(dāng)輸入密碼而沒有
104、輸入用戶名的時候,會提示用戶完成用戶名補全。當(dāng)前系統(tǒng)默認(rèn)用戶名為username,密碼為123456,通過此用戶名和密碼可以直接登錄。</p><p> 點擊LOGIN的時候驗證通過就進(jìn)入控制總界面。驗證不通過:密碼將會清空;點擊RESET按鈕則直接清空用戶名框和密碼框;后臺全部使用cgi作為驗證,驗證通過則進(jìn)入主界面控制安防系統(tǒng)。</p><p><b> 模塊算法設(shè)計:&
105、lt;/b></p><p> 入口說明:用戶通過用戶界面點擊按鈕LOGIN鏈接。</p><p> 輸入?yún)?shù):記錄的用戶name和pasword</p><p> 出口說明:驗證通過則進(jìn)入系統(tǒng)。不通過則返回登錄界面</p><p><b> 調(diào)用參數(shù)的描述:</b></p><p>
106、; 輸入用戶名username:該數(shù)據(jù)由數(shù)據(jù)庫提供。</p><p> 輸入密碼password: 該數(shù)據(jù)由數(shù)據(jù)庫提供.</p><p><b> 登錄數(shù)據(jù)流:</b></p><p> 1)要使用到G-001系統(tǒng)登錄模塊func_login();接口作為驗證信息。</p><p><b> 用戶登
107、錄界面圖例:</b></p><p><b> 圖 9 </b></p><p><b> 設(shè)置頁面:</b></p><p><b> 圖 10 </b></p><p><b> 視頻顯示頁面:</b></p><
108、;p><b> 圖 11 </b></p><p><b> 控制頁面:</b></p><p><b> 圖 12 </b></p><p> Web頁面所用技術(shù):</p><p> 為了能讓一些出差人士,和在外工作的人員有一個舒適安全的家園,項目加上了一個w
109、eb界面來控制家里的服務(wù)器,</p><p> 所用技術(shù):css布局,javascript驗證判斷,每次傳入后臺的name只有一個,后臺cgi取得最這個名字之后就可以操作服務(wù)器做用戶對應(yīng)的事件驅(qū)動,</p><p> 用一組form表單,通過javascript來控制表單提交項為一項</p><p> function check_button(string
110、button_value){</p><p> document.getElementsById("submit_button").value=button_value;</p><p> return true;</p><p><b> }</b></p><p> 5.2 CGI(com
111、mon gateway interface)通信模塊:</p><p><b> 功能:</b></p><p> 作為web的后臺驗證信息,主要負(fù)責(zé)調(diào)用各種數(shù)據(jù)接口和和數(shù)據(jù)庫銜接。</p><p><b> 工作流程:</b></p><p> 通過web頁面得到用戶輸入的信息,此信息通過
112、boa服務(wù)器直接傳給了cgi程序,捕獲該信息之后保存數(shù)據(jù)到環(huán)境變量,cgi根據(jù)用戶提交的信息,分別調(diào)用查詢(更新)數(shù)據(jù)庫里面的不同表之間的信息。最后確認(rèn)用戶需要插入或者更新的數(shù)據(jù)。并對應(yīng)改之。</p><p><b> 5.3 Boa移植</b></p><p> Boa網(wǎng)絡(luò)服務(wù)器--------?搭建成功,測試順利通過.</p><p>
113、<b> 處理說明: </b></p><p> 1.從www.boa.org下載Boa源碼,解壓并進(jìn)入源碼目錄的src子目錄。進(jìn)行編譯 # tar xzf boa-0.94.13.tar.gz </p><p><b> 2.交叉編譯BOA</b></p><p> 修改里面服務(wù)器對用戶支持.改為不對用
114、戶支持,直接在操作系統(tǒng)公用用戶上運行.</p><p> 3.配置BOA,并且修改boa.conf文件</p><p> Boa需要在/etc目錄下建立一個boa目錄,里面放入Boa的主要配置文件boa.conf。在Boa源碼目錄下已有一個示例boa.conf,可以在其基礎(chǔ)上進(jìn)行修改。</p><p> 1.Group nogroup修改成Group 0,由于
115、在/etc/group文件中沒有nogroup組,所以設(shè)成0,另外在/etc/passwd中有nobody用戶,所以User nobody不用修改。</p><p> 2.ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 修改成 ScriptAlias /cgi-bin/ /var/www/cgi-bin/</p><p><b> 其它默認(rèn)
116、設(shè)置即可。</b></p><p> 還需要創(chuàng)建日志文件所在目錄/var/log/boa,創(chuàng)建HTML文檔的主目錄/var/www,將靜態(tài)網(wǎng)頁存入該目錄下(可以將主機/usr/share/doc/HTML/目錄下的index.html文件和img目錄復(fù)制到/var/www目錄下),創(chuàng)建CGI腳本所在目錄/var/www/cgi-bin,將cgi的腳本存放在該目錄下。另外還要將mime.types文件
117、復(fù)制/etc目錄下,通??梢詮膌inux主機的/etc目錄下直接復(fù)制即可。</p><p> 成功配置以后,還需要創(chuàng)建日志文件所在目錄/var/log/boa,創(chuàng)建HTML文檔的主目錄/var/www,將靜態(tài)網(wǎng)頁存入該目錄下(可以將主機 /usr/share/doc/HTML/目錄下的index.html文件和img目錄復(fù)制到/var/www目錄下),創(chuàng)建CGI腳本所在錄 /var/www/cgi-bin,將c
118、gi的腳本存放在該目錄下。另外還要將mime.types文件復(fù)制/etc目錄下,通??梢詮膌inux主機的 /etc目錄下直接復(fù)制即可。</p><p> 3. 實際運行時,可以將index.html文件、img目錄和mime.types文件放到CF卡目錄下,建立目錄后,拷貝至相應(yīng)目錄。</p><p> 4.設(shè)計測試代碼test.cgi,進(jìn)行測試 </p>
119、<p> 直接在瀏覽器中輸入http://localhost/index.html。靜態(tài)HTML調(diào)試成功。</p><p> 5.4 數(shù)據(jù)庫公用模塊實現(xiàn)</p><p> 模塊名稱:數(shù)據(jù)庫模塊</p><p><b> 模塊功能:</b></p><p> 1)提供用戶數(shù)據(jù)存儲功能,為了與大多項目接
120、軌,選用了嵌入式專用數(shù)據(jù)庫sqlite3,作為數(shù)據(jù)的存儲位置.對溫度,照片,短信,命令,等信息存儲,作為備2)份數(shù)據(jù).后續(xù)查看. </p><p><b> 模塊背景描述:</b></p><p> SQLite是一個非常流行的嵌入式數(shù)據(jù)庫,它提供了一個清爽的 SQL 接口,相當(dāng)小的內(nèi)存占用和高速的響應(yīng),更 Happy 的是他還是免費的,大家都可以盡情的使用,很
121、多牛叉的公司(諸如Adobe, Apple,Google,Sun,Symbian ),開源項目( Mozilla,PHP,Python )都在產(chǎn)品中裝配 了該數(shù)據(jù)庫.</p><p> a)模塊算法設(shè)計:</p><p> 1)入口說明:經(jīng)過封裝之后對提供了以下幾個個接口函數(shù).只要通各自需要的接口函數(shù)就可以獲取或者設(shè)置需要的數(shù)據(jù),</p><p> 2)
122、static sqlite3 *db;</p><p> /*###################################################</p><p> #查詢接口函數(shù)#</p><p> ####################################################*/</p
123、><p> extern void get_user_passwd();</p><p> extern void get_user_name();</p><p> extern void get_temper_min();</p><p> extern void get_temper_max();</p><p&
124、gt; extern void get_phone_no_1();</p><p> extern void get_phone_no_2();</p><p> extern void get_gms_content();</p><p> /*###################################################</
125、p><p> #更新接口函數(shù)#</p><p> ####################################################*/</p><p> extern void set_phone(int first,char* num);</p><p> extern void set_t
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于gprs家庭智能安防系統(tǒng)的設(shè)計【畢業(yè)論文】
- 基于gsm的家庭安防系統(tǒng)畢業(yè)論文
- 基于CORTEX-A8的物聯(lián)網(wǎng)智能應(yīng)用.pdf
- 電子與信息工程畢業(yè)論文家庭智能安防系統(tǒng)設(shè)計
- 安防智能電子畢業(yè)論文
- 基于ARM Cortex-A8與Android平臺的智能家居系統(tǒng)設(shè)計.pdf
- 畢業(yè)論文-智能住宅安防監(jiān)控主控系統(tǒng)
- 智能樓宇視頻安防監(jiān)控系統(tǒng)畢業(yè)論文
- 智能樓宇視頻安防監(jiān)控系統(tǒng)畢業(yè)論文
- 基于Cortex-A8的鋼纜索應(yīng)力檢測系統(tǒng)研制.pdf
- 基于ARM Cortex-A8圖形系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 基于ARM Cortex-A8的無線視頻監(jiān)控系統(tǒng)設(shè)計.pdf
- 畢業(yè)論文-智能住宅安防監(jiān)控主控系統(tǒng)設(shè)計
- 基于arm_cortex-a8與_android平臺的智能家居系統(tǒng)設(shè)計畢業(yè)論文
- 基于Cortex-A8的Android系統(tǒng)分析與移植.pdf
- 樓宇智能安防監(jiān)控設(shè)計畢業(yè)論文
- 基于Cortex-A8的人臉檢測系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 樓宇智能化系統(tǒng)&安防系統(tǒng)畢業(yè)論文-
- 基于Cortex-A8的LXI觸發(fā)盒硬件設(shè)計.pdf
- 基于Cortex-A8平臺的行人檢測技術(shù).pdf
評論
0/150
提交評論