

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 畢業(yè)設計說明書</b></p><p> 畢業(yè)論文(設計)任務書</p><p> 2011年 12 月 12 日至 2012 年 5 月 25 日</p><p> 題 目:基于Cortex-A8的家庭智能安防系統(tǒng)</p><p> 姓 名:
2、 </p><p> 學 號: </p><p> 專 業(yè): 電子信息工程 </p><p> 年 級: </p><p> 指導教
3、師: </p><p> 畢業(yè)論文(設計)開題報告</p><p><b> ?。ɡ砉ゎ悾?lt;/b></p><p> 基于Cortex-A8的家庭智能安防系統(tǒng)</p><p> 摘 要 家庭監(jiān)控是利用網絡技術將安裝在家內的視頻、音頻、報警等監(jiān)控系統(tǒng)連接起來,
4、通過中控電腦的處理將有用信息保存并發(fā)送到其他數據終端,如手機,筆記本,110報警中心等。本系統(tǒng)是linux下的基于Cortex-A8的嵌入式家庭智能安防系統(tǒng)系統(tǒng),采用的是S5PC100的內核芯片。主要包括溫度檢測、紅外感應防盜、視頻采集及顯示、GSM短信收發(fā)控制、web服務器,實現對家庭安全的實時監(jiān)控。用戶可以通過手機實時監(jiān)控家中的信息,也可以遠程web登錄監(jiān)控家中情況。從而方便人們的生活需要,為進一步的現代化鋪路搭橋。</p&g
5、t;<p> 關 鍵 詞: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章 方案設計5</p><p>
10、 2.1 總體設計框圖5</p><p> 2.2 主流程設計7</p><p> 2.3 具體體分工7</p><p> 第3章 溫度模塊設計9</p><p> 3.1 溫度、報警模塊9</p><p> 3.1.1.模塊概述9</p><p> 3.1.2.溫度模塊
11、詳細設計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 溫度軟件設計13</p><p> 3.3.1.驅動設計13</p><p> 3.3.2.內核驅動配置14</p><p> 3.3.3.用戶接口設計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.驅動設計17</p><p> 4.1.3.內核驅動配置19</p><p> 4.1.4.用戶接口設計19</p><p> 4.2 LED功能模塊說明20</p><p> 4.2.1.LED模塊電路如圖所示
14、20</p><p> 4.2.2.LED模塊驅動程序設計21</p><p> 4.2.3.應用程序設計23</p><p> 第5章 web模塊23</p><p> 5.1 功能模塊實現設計23</p><p> 5.2 CGI(common gateway interface)通信模塊:2
15、8</p><p> 5.3 Boa移植28</p><p> 5.4 數據庫公用模塊實現29</p><p><b> 參考文獻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ā)板資源,研究學習家庭智能安防系統(tǒng)設計。綜合應用嵌入式系統(tǒng)開發(fā)、實現安防系統(tǒng)整套應用。</p&
17、gt;<p><b> 1.2 背景</b></p><p> 隨著社會電子信息化的不斷發(fā)展,人們在家居中使用的電器越來越多,由此帶來的安全隱患也有了明顯的增多。在這些電器中一旦出現一些異常,便會給人們帶來很大的損失。為了降低電器的不合理使用帶來的異常情況,就要求在異常發(fā)生時用戶能及時得到信息,并通過實時監(jiān)控采取一定的操作排除異常。因此,遠程監(jiān)控系統(tǒng)的作用是非常巨大的。&l
18、t;/p><p> 以嵌入式視頻web服務器為核心的視頻監(jiān)控系統(tǒng),采用嵌入式實時多任務操作系統(tǒng)。攝像頭采集到的圖片信息經過壓縮,通過內部總線送到內置的web服務器,網絡上的用戶可以直接用瀏覽器觀看web服務器上的由攝像頭采集的圖像。由于把圖片采集和web功能集中到一個體積很小的設備內,可以直接連入局域網,用戶無需安裝任何硬件設備,僅用瀏覽器即可觀看。同時還具有以下優(yōu)點:</p><p>
19、布控區(qū)域廣闊,嵌入式視頻web服務器監(jiān)控系統(tǒng)web服務器直接連入網絡,沒有線纜長度和信號衰減的限制,同時網絡是沒有距離概念的,徹底拋棄了地域的概念,擴展布控的區(qū)域。系統(tǒng)具有幾乎無限的無縫擴展能力。所以設備都以IP地址進行標示,增加設備只是意味著IP地址的擴充。</p><p> 性能穩(wěn)定可靠,無需專人管理。嵌入式web服務器實際上是基于嵌入式微處理器技術,采用嵌入式實時多任務操作系統(tǒng),對于用戶來講,上網進行登陸
20、,便可對家中情況進行監(jiān)控。</p><p> 現在監(jiān)控系統(tǒng)發(fā)展到第三代,前端一體化、視頻十字化、監(jiān)控網絡化、系統(tǒng)集成化成為視頻監(jiān)控系統(tǒng)公認的發(fā)展方向,它以網絡為依托,以數字視頻的壓縮、傳輸、存放和播放為核心,以智能實用的圖像分析為特點,并為報警系統(tǒng)、門禁系統(tǒng)完美的整合到一個使用平臺上,引發(fā)了視頻控制行業(yè)的一次技術革命。</p><p> 1.3 課題的研究意義</p>&
21、lt;p> 智能家居控制系統(tǒng)可以定義為一個過程或者一個系統(tǒng)。利用先進的計算機技術、網 絡通訊技術、綜合布線技術、將與家居生活有關的各種子系統(tǒng),有機地結合在一起,通 過統(tǒng)籌管理,讓家居生活更加舒適、安全、有效。與普通家居相比,智能家居不僅具有 傳統(tǒng)的居住功能,提供舒適安全、高品位且宜人的家庭生活空間。還將原來的被動靜止 結構轉變?yōu)榫哂心軇又腔鄣墓ぞ撸峁┤轿坏男畔⒔粨Q功能,幫助家庭與外部保持信 息交換暢通,優(yōu)化人們的生活方式,幫
22、助人們有效安排時間,增強家居生活的安全性, 甚至為各種能源費用節(jié)約資金。 系統(tǒng)的網絡化功能可以提供遙控、家電(空調,熱水器等)控制、照明控制、室內外遙 控、窗簾自控、防盜報警、電話遠程控制、可編程定時控制及計算機控制等多種功能和手 段。使生活更加舒適、便利和安全。因智能家居控制系統(tǒng)簡單、功能靈活,擴展容易而被 人們廣泛接受和應用。 家居生活的智能化是當今計算機網絡與通訊技術最人性化的應用,給人們的家居生活 帶來了全新的感受。今天,借助電
23、話控制或互聯(lián)網,您幾乎可以在任何地方、任何時候監(jiān) 控您的家居狀況,為您的家居生活帶來前所未有的方便。隨著社會全面的信息化、智能化 和自動化,</p><p> 1.4 本課題的主要研究工作</p><p> 本課題通過研究現有的電子點菜系統(tǒng)的解決方案,以s5pc100為主控芯片的硬件,linux為操作系統(tǒng),cgi嵌入式應用圖形系統(tǒng)為操作界面,lcd屏作為顯示和WEB網頁輸入設備的一個系
24、統(tǒng)。具體包括以下內容:</p><p> 了解cortex-A8的系統(tǒng)結構,熟悉編程、調試環(huán)境,了解應用程序的開發(fā)的過程;</p><p> 底層設備驅動的編寫;</p><p> 嵌入式linux開發(fā)平臺的構建;</p><p> 4.應用程序的編寫等;</p><p><b> 第2章 方案設計
25、</b></p><p> 2.1 總體設計框圖</p><p><b> 硬件環(huán)境:</b></p><p> 三星S5PC100 開發(fā)平臺介紹</p><p> S5PC100 開發(fā)平臺用三星公司先進的基于Cortex-A8 內核的 S5PC100 處理器設計而成。此平臺主要應用于華清遠見的嵌入式
26、系統(tǒng)教學,以適應Android、Linux、Wince 等智能操作系統(tǒng)的發(fā)展及市場需求。S5PC100 處理器采用了64/32 位的內部總線 結構,和最大833M 赫茲的運算速度。包括強大的硬件加速器,如:動態(tài)視頻處理,顯示控制和縮放。支持多種格式的硬件編解碼:MPEF-1/2/4、H263/H264 等。其視頻解碼能力很強大并且省電, 編解碼能力達到 720p@30fps (1280x720) 支持電視輸出(NTSC/PAL/HDMI
27、)。支持2D/3D 加速。本處理器廣泛的應用于智能手機、平板電腦等產品。</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 內存,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> 網絡接口:DM9000AE 以太網控制器,實現10M/100M 自適應以太網通信。</p><p> 外擴接口:藍牙、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> 外設接口測試源代碼</b></p><p> Uboot(支持usb、網絡通訊)</p><p><b> 2.2 主流程設計&l
32、t;/b></p><p> Linux是一個完全受保護的多任務操作系統(tǒng),它允許每個用戶同時運行多個作業(yè)。進程間可相互通信,但每個進程都是受到完全保護的,即不會受到其他進程的干擾,就如內核不會受到其他任何進程干擾一樣。用戶在集中精力于當前屏幕所顯示作業(yè)的同時,還可在后臺運行其他作業(yè),而且可以在這些作業(yè)之間來回切換。這一功能提高了用戶的工作效率。</p><p> 考慮到整個系統(tǒng)的
33、穩(wěn)定性,可易性以及代碼的可讀性,應盡量遵循C程序設計中高內聚低耦合的設計思想,使每個模塊相互獨立,有序的完成自己的任務。此系統(tǒng)總共劃分成七個模塊,分別是溫度采集、圖像采集、紅外傳感、web服務器、數據庫模塊、蜂鳴器及短信收發(fā)模塊??傮w采用linux的多線程方式,當系統(tǒng)啟動以后,會自動啟動boa服務器和整個安防系統(tǒng)會主動進入監(jiān)控狀態(tài)。</p><p><b> 2.3 具體體分工</b>&l
34、t;/p><p><b> 模塊一 (胡志明)</b></p><p> 1、溫度采集,火災報警(發(fā)送短信、蜂鳴器報警和led閃爍);</p><p> 2、構建嵌入式web服務器,使用戶通過網絡利用pc機進行監(jiān)控;</p><p> 此模塊是直接使用的開發(fā)板上的現有溫度傳感器(LM75)資源,采集到環(huán)境中的溫度值,
35、再通過之前的與設定的參數,包括溫度的上下限,及火災報警溫度值等。</p><p> 另外的web服務器模塊則可以通過網頁界面查看和控制溫度報警紅外報警等具體值或參數等。</p><p><b> 模塊二 (何霄)</b></p><p> 1、紅外傳感,非法闖入報警(發(fā)送短信、蜂鳴器報警和led閃爍);</p><p&
36、gt; 2、GSM短信收發(fā)以及控制;</p><p> A)、紅外傳感可在非法闖入時及時報警,GSM模塊則主要實現短信收發(fā)功能;</p><p> 本次設計的GSM模塊主要需要完成的功能為:通過ARM開發(fā)板的串口2,控制GSM短信息模塊,實現短信息的即時收發(fā),以達到即時向用戶匯報家庭安全狀況的,并且能夠根據用戶回發(fā)的指令,采取對應的處理措施。</p><p>
37、<b> B)、接收短信</b></p><p> 短信息的接收,是為了能夠及時的收到用戶發(fā)給用戶的操作指令,以完成對家庭環(huán)境的遠程控制,所以需要能夠及時的收到用戶發(fā)送的短信息內容。短信息接收功能的具體實現方案有兩種:</p><p> 方案①為:通過阻塞方式訪問串口,等待GPRS模塊發(fā)送過來的 提示信息,并讀取對應位置的短信息;</p><
38、p> 方案②為:采用多路復用的方式,讀串口,等待接收GPRS模塊 放松過來的短信息提示信息,并讀取對應位置的短信息;</p><p> 另外還包括了短信得發(fā)送、短信內容提取、短信的保存及刪除等功能。</p><p><b> 模塊三 (王海)</b></p><p> 1、視頻采集與LCD顯示; </p>
39、<p> 2、數據庫保存數據記錄;</p><p> <系統(tǒng)集成及聯(lián)合調試></p><p> 此模塊所做的內容主要有從開發(fā)板操作系統(tǒng)環(huán)境的搭建開始:</p><p><b> 系統(tǒng)移植</b></p><p> 系統(tǒng)移植包括:交叉編譯工具鏈安裝、配置網絡文件系統(tǒng)NFS服務、U-boot移
40、植、Linux內核移植、文件系統(tǒng)移植等,期間的具體事項再次就不一一說明來 。</p><p> 視頻采集與LCD顯示</p><p> 這里包括有攝像頭V4L2驅動移植、LCD驅動移植、應用程序設計等。</p><p> 第3章 溫度模塊設計</p><p> 在這次項目中,我主要是負責溫度采集,火災報警(發(fā)送短信、蜂鳴器報警和led
41、閃爍)及構建嵌入式web服務器,使用戶通過網絡利用pc機進行監(jiān)控;具體設計如下:</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.溫度模塊詳細設計</p><p> 3.2 LM75芯片</p><p> National semiconductor公司的lm75芯片是一種含9位ADC、溫度分辨率為0.5℃的數字溫度傳感器,測量范圍是-55℃~125℃。它提供兩條支持I2C總線協(xié)議的接口來監(jiān)測溫度,并具備自校準功
43、能。上位機可以隨時要求lm75讀取溫度,當溫度超過設定的溫度時,芯片系統(tǒng)會自動輸出一個超溫報警信號用于上位機的監(jiān)控操作。主機可以通過程序來控制溫度報警器(Tos)及溫度。A0、A1、A2這三只引腳可以設定設備地址,這塊芯片在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內部有五個寄存器,其中四個寄存器命令指針寄存器進行選擇,lm75上電默認為00;及選擇溫度寄存器(Temp
45、erature register),這個寄存器中保存了當前采集的溫度,如果I2C發(fā)出了讀命令,lm75會返回該寄存器中的溫度值(16位),相關寄存器介紹如下:</p><p> 命令/指針寄存器:(8位只讀)主要用于選擇溫度寄存器、配置寄存器、超閥值寄存器、超閥值溫度關閉寄存器。</p><p><b> 圖 3 </b></p><p>
46、;<b> 溫度寄存器:</b></p><p><b> 圖 4 </b></p><p> MSB:符號位(正、負溫度)</p><p> D8~D14:溫度數據位</p><p> LSB:小數位(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: 報警溫度和滯后溫度. 上電默認TOS = 80°C, THYST = 75°C.</p><p> 3.2.4.硬件原
48、理圖</p><p><b> 圖 6 </b></p><p> 3.3 溫度軟件設計</p><p> 3.3.1.驅動設計</p><p> 注冊為字符設備,設備名稱為lm75,設備號自動分配,防止和其他程序員設置的設備號沖突,自動在dev目錄創(chuàng)建設備節(jié)點,掛接到I2C總線上。系統(tǒng)待用接口有:</p&
49、gt;<p> 打開(lm75_open):</p><p> static int lm75_open(struct inode *inode, struct file *file)</p><p> 關閉(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、寫哪個寄存器,用于設定溫度的超閥值)</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> ?。茫停摹〈a:</
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.內核驅動配置</p><p> 在內核源碼根目錄下執(zhí)行</p><
55、p> $ make menuconfig</p><p> 進入配置菜單后選擇lm75溫度傳感器的驅動程序:</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> 在函數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> 重新編譯內核</b></p><p> 3.3.3.用戶接口設計</p><p> 為主流程提供模塊初始化接口,溫度的讀寫接口。</p><p> 溫度數據結構為struct temp_data {</p><p>
60、 int current_temper;/*當前溫度*/</p><p> int highpoint;/*超閥值溫度*/</p><p> int lowpoint;/*滯后溫度*/</p><p><b> }</b></p><p> 采用多線程方式編程,主流程調用初始化函數以后,創(chuàng)建一個線程讀
61、寫溫度,將溫度存到溫度數據結構中,共主流程查詢,并檢測是否產生報警信號</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> 函數功能:模塊初始化函數:</p><p> (2)extern float get_temper(void){</p><p> 數據處理:右
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> 函數功能:讀取溫度接口:</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> 函數功能:獲取報警溫度</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> 函數功能:設置報警溫度</p><p> 第4
70、章 蜂鳴器、LED模塊</p><p> 4.1 蜂鳴器模塊說明</p><p> 4.1.1.硬件原理圖</p><p><b> 圖 7 </b></p><p> 4.1.2.驅動設計</p><p> 由于這個蜂鳴器是無源的,所以要想使其產生聲音必須給他提供一個有一定頻率的高低電
71、平。所以這里我們采用S5PC100的PWM定時器來使蜂鳴器發(fā)出聲音。</p><p> 在S5PC100中,有兩個寄存器,TCNTB0、TCMPB0,TCNTB0表示計數器從TCNTB0對應的值開始遞減,當其遞減到TCMPB0時,電平翻轉。當逆變器未使能時,從TCNTB0減到TCMPB0時候TOUT輸出高電平,而從TCMPB0到0時輸出低電平。由此可知,當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> 設備類型為字符設備,系統(tǒng)自動分配設備號和創(chuàng)建設備節(jié)點,提供的系統(tǒng)調用接口:</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> 關閉(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> 關蜂鳴器:</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.內核驅動配置</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> 重新編譯內核</b></p><p> 4.1.4.用戶接口設計</p><p> 用戶接口提供了兩種不同的報警聲音(溫度報警和非法闖入報警),應用層采用了多線程模式,該模塊唄初始化的時候會自動創(chuàng)建兩個線程,同時打
86、開蜂鳴器設備,并進入阻塞態(tài),等待喚醒信號;當溫度超過用戶設定的報警溫度或者有不明身份的闖入者,都會觸發(fā)喚醒相應的beep線程,立即報警。</p><p> ?。?)extern int beep_init(void);</p><p> 函數功能:初始化蜂鳴器模塊,創(chuàng)建線程</p><p> ?。?)extern int beep_on(void);/*Th
87、e temper is beyound expected!*/</p><p> 函數功能:溫度報警接口</p><p> ?。?)extern int beep_on2(void);/*Here is someone came into!*/</p><p> 函數功能:有人闖入時報警接口</p><p> ?。?)extern i
88、nt beep_off(void);</p><p> 函數功能:關閉蜂鳴器</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盞燈都加以運用,在驅動的實現中通過cmd碼的實現對燈的亮或滅的控制;通過arg這個參數實現對指定燈的控制;</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模塊驅動程序設計</p><p> 通過LED的電路原理圖可知,要實現對LED的控制就是實現對GPG3寄存器的控制。通過查看S5PC100的用戶手冊,知道GPG3是一個復用寄存器,因此需要改變GPG3的端口狀態(tài)為Output狀態(tài)。在往GPF3DAT數據寄存器寫入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> //點亮對應的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> //關閉對應的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:對應燈的控制;</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.應用程序設計</p><p> //把對應的燈點亮;</p><p> void led_on(const int );</p><p><b> //把對應燈滅</b></p><
102、;p> void led_off(const int );</p><p> 注:形參為對應的燈號;編號為:0/1/2/3</p><p><b> 第5章 web模塊</b></p><p> 5.1 功能模塊實現設計</p><p><b> 系統(tǒng)登錄模塊</b></p&g
103、t;<p> 1)對用戶身份進行驗證用戶輸入用戶名2)</p><p> 3)對用戶身份進行驗證用戶輸入密碼。</p><p><b> 模塊背景描述:</b></p><p> 為了提高當前系統(tǒng)的安全性能,當用戶輸入用戶名而沒有輸入密碼或者密碼小于6位數的時候,就彈出alert提示用戶輸入信息不全,當輸入密碼而沒有
104、輸入用戶名的時候,會提示用戶完成用戶名補全。當前系統(tǒng)默認用戶名為username,密碼為123456,通過此用戶名和密碼可以直接登錄。</p><p> 點擊LOGIN的時候驗證通過就進入控制總界面。驗證不通過:密碼將會清空;點擊RESET按鈕則直接清空用戶名框和密碼框;后臺全部使用cgi作為驗證,驗證通過則進入主界面控制安防系統(tǒng)。</p><p><b> 模塊算法設計:&
105、lt;/b></p><p> 入口說明:用戶通過用戶界面點擊按鈕LOGIN鏈接。</p><p> 輸入參數:記錄的用戶name和pasword</p><p> 出口說明:驗證通過則進入系統(tǒng)。不通過則返回登錄界面</p><p><b> 調用參數的描述:</b></p><p>
106、; 輸入用戶名username:該數據由數據庫提供。</p><p> 輸入密碼password: 該數據由數據庫提供.</p><p><b> 登錄數據流:</b></p><p> 1)要使用到G-001系統(tǒng)登錄模塊func_login();接口作為驗證信息。</p><p><b> 用戶登
107、錄界面圖例:</b></p><p><b> 圖 9 </b></p><p><b> 設置頁面:</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頁面所用技術:</p><p> 為了能讓一些出差人士,和在外工作的人員有一個舒適安全的家園,項目加上了一個w
109、eb界面來控制家里的服務器,</p><p> 所用技術:css布局,javascript驗證判斷,每次傳入后臺的name只有一個,后臺cgi取得最這個名字之后就可以操作服務器做用戶對應的事件驅動,</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的后臺驗證信息,主要負責調用各種數據接口和和數據庫銜接。</p><p><b> 工作流程:</b></p><p> 通過web頁面得到用戶輸入的信息,此信息通過
112、boa服務器直接傳給了cgi程序,捕獲該信息之后保存數據到環(huán)境變量,cgi根據用戶提交的信息,分別調用查詢(更新)數據庫里面的不同表之間的信息。最后確認用戶需要插入或者更新的數據。并對應改之。</p><p><b> 5.3 Boa移植</b></p><p> Boa網絡服務器--------?搭建成功,測試順利通過.</p><p>
113、<b> 處理說明: </b></p><p> 1.從www.boa.org下載Boa源碼,解壓并進入源碼目錄的src子目錄。進行編譯 # tar xzf boa-0.94.13.tar.gz </p><p><b> 2.交叉編譯BOA</b></p><p> 修改里面服務器對用戶支持.改為不對用
114、戶支持,直接在操作系統(tǒng)公用用戶上運行.</p><p> 3.配置BOA,并且修改boa.conf文件</p><p> Boa需要在/etc目錄下建立一個boa目錄,里面放入Boa的主要配置文件boa.conf。在Boa源碼目錄下已有一個示例boa.conf,可以在其基礎上進行修改。</p><p> 1.Group nogroup修改成Group 0,由于
115、在/etc/group文件中沒有nogroup組,所以設成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> 其它默認
116、設置即可。</b></p><p> 還需要創(chuàng)建日志文件所在目錄/var/log/boa,創(chuàng)建HTML文檔的主目錄/var/www,將靜態(tài)網頁存入該目錄下(可以將主機/usr/share/doc/HTML/目錄下的index.html文件和img目錄復制到/var/www目錄下),創(chuàng)建CGI腳本所在目錄/var/www/cgi-bin,將cgi的腳本存放在該目錄下。另外還要將mime.types文件
117、復制/etc目錄下,通??梢詮膌inux主機的/etc目錄下直接復制即可。</p><p> 成功配置以后,還需要創(chuàng)建日志文件所在目錄/var/log/boa,創(chuàng)建HTML文檔的主目錄/var/www,將靜態(tài)網頁存入該目錄下(可以將主機 /usr/share/doc/HTML/目錄下的index.html文件和img目錄復制到/var/www目錄下),創(chuàng)建CGI腳本所在錄 /var/www/cgi-bin,將c
118、gi的腳本存放在該目錄下。另外還要將mime.types文件復制/etc目錄下,通常可以從linux主機的 /etc目錄下直接復制即可。</p><p> 3. 實際運行時,可以將index.html文件、img目錄和mime.types文件放到CF卡目錄下,建立目錄后,拷貝至相應目錄。</p><p> 4.設計測試代碼test.cgi,進行測試 </p>
119、<p> 直接在瀏覽器中輸入http://localhost/index.html。靜態(tài)HTML調試成功。</p><p> 5.4 數據庫公用模塊實現</p><p> 模塊名稱:數據庫模塊</p><p><b> 模塊功能:</b></p><p> 1)提供用戶數據存儲功能,為了與大多項目接
120、軌,選用了嵌入式專用數據庫sqlite3,作為數據的存儲位置.對溫度,照片,短信,命令,等信息存儲,作為備2)份數據.后續(xù)查看. </p><p><b> 模塊背景描述:</b></p><p> SQLite是一個非常流行的嵌入式數據庫,它提供了一個清爽的 SQL 接口,相當小的內存占用和高速的響應,更 Happy 的是他還是免費的,大家都可以盡情的使用,很
121、多牛叉的公司(諸如Adobe, Apple,Google,Sun,Symbian ),開源項目( Mozilla,PHP,Python )都在產品中裝配 了該數據庫.</p><p> a)模塊算法設計:</p><p> 1)入口說明:經過封裝之后對提供了以下幾個個接口函數.只要通各自需要的接口函數就可以獲取或者設置需要的數據,</p><p> 2)
122、static sqlite3 *db;</p><p> /*###################################################</p><p> #查詢接口函數#</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> #更新接口函數#</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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于gprs家庭智能安防系統(tǒng)的設計【畢業(yè)論文】
- 基于gsm的家庭安防系統(tǒng)畢業(yè)論文
- 基于CORTEX-A8的物聯(lián)網智能應用.pdf
- 電子與信息工程畢業(yè)論文家庭智能安防系統(tǒng)設計
- 安防智能電子畢業(yè)論文
- 基于ARM Cortex-A8與Android平臺的智能家居系統(tǒng)設計.pdf
- 畢業(yè)論文-智能住宅安防監(jiān)控主控系統(tǒng)
- 智能樓宇視頻安防監(jiān)控系統(tǒng)畢業(yè)論文
- 智能樓宇視頻安防監(jiān)控系統(tǒng)畢業(yè)論文
- 基于Cortex-A8的鋼纜索應力檢測系統(tǒng)研制.pdf
- 基于ARM Cortex-A8圖形系統(tǒng)的設計與實現.pdf
- 基于ARM Cortex-A8的無線視頻監(jiān)控系統(tǒng)設計.pdf
- 畢業(yè)論文-智能住宅安防監(jiān)控主控系統(tǒng)設計
- 基于arm_cortex-a8與_android平臺的智能家居系統(tǒng)設計畢業(yè)論文
- 基于Cortex-A8的Android系統(tǒng)分析與移植.pdf
- 樓宇智能安防監(jiān)控設計畢業(yè)論文
- 基于Cortex-A8的人臉檢測系統(tǒng)的設計與實現.pdf
- 樓宇智能化系統(tǒng)&安防系統(tǒng)畢業(yè)論文-
- 基于Cortex-A8的LXI觸發(fā)盒硬件設計.pdf
- 基于Cortex-A8平臺的行人檢測技術.pdf
評論
0/150
提交評論