物聯(lián)網(wǎng)智能家居系統(tǒng)畢業(yè)論文_第1頁
物聯(lián)網(wǎng)智能家居系統(tǒng)畢業(yè)論文_第2頁
物聯(lián)網(wǎng)智能家居系統(tǒng)畢業(yè)論文_第3頁
物聯(lián)網(wǎng)智能家居系統(tǒng)畢業(yè)論文_第4頁
物聯(lián)網(wǎng)智能家居系統(tǒng)畢業(yè)論文_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、天津電子信息職業(yè)技術學院畢業(yè)論文題目 物聯(lián)網(wǎng)智能家居系統(tǒng) 姓 名 專業(yè)班級 指導教師 完成時間 天津電子信息職業(yè)技術學院 制2017.1摘 要:隨著經(jīng)濟的高速增長。建立一個低成本、高效率的智能家居系統(tǒng)已成為當今世界的一個熱點話題。目前越來越多的智能家居產(chǎn)品出現(xiàn)在市場上,其中以基于電話網(wǎng)的智能安防系統(tǒng)居多。目前在我國,使用家庭電話的用戶越來越少,而且電話線路受地域的影響嚴重容易損壞,所以這類產(chǎn)品局限性很大。隨著電信GSM網(wǎng)絡覆蓋范圍的無縫化、廣闊化以及手機的日益普及為基于GSM網(wǎng)絡的智能家居系統(tǒng)提供了巨大的應用空間。本文設計了一種基于GSM網(wǎng)絡的智能家居系統(tǒng)。本系統(tǒng)采用cortexA8為系統(tǒng)控制

2、核心,對家庭中出現(xiàn)的意外情況使用各種傳感器進行采集,然后通過GSM模塊把采集到的信息發(fā)送給管理人員,管理員根據(jù)收到的信息發(fā)送相關指令給GSM模塊來控制現(xiàn)場執(zhí)行機構,完成意外情況的排除。關鍵詞:智能家居 GSM 傳感器 遠程控制目錄一、 緒論1(一) 智能家居概述1(二) 智能家居網(wǎng)絡構成21、家居網(wǎng)絡控制平臺22、智能家居子系統(tǒng)23、智能家居網(wǎng)絡的信號傳輸介質3 4、遠程控制技術概括45、智能家居控制系統(tǒng)的國內外發(fā)展現(xiàn)狀5二、系統(tǒng)需求分析及方案6(一)應用程序功能需求分析6(二)開發(fā)環(huán)境需求分析61、 硬件環(huán)境62、 軟件環(huán)境7三、硬件模塊及其驅動設計實現(xiàn)7(一) 主控模塊7 (二) 通信模塊

3、71、 TC35模塊簡介72、 TC35模塊與cortexA8連接方式73、傳感器模塊8四、系統(tǒng)軟件部分36(一)主程序及大致流程361、溫度監(jiān)測線程372、視頻監(jiān)測線程383、報警流程39(二)短消息程序設計401、 AT指令介紹402、PDU編碼規(guī)則423、短信模式設置424、短信的發(fā)送方法43五、測試及結論43(一)測試原則43(二)測試方案43(三)結論44參 考 文 獻44一、 緒論21世紀是信息化的時代,物聯(lián)網(wǎng)新技術推動了人類文明的進步。隨著人們生活水平的提高以及科技的高速發(fā)展,智能化家居已成為一種必然趨勢而深入千家萬戶。智能化家居是利用電力自動化、計算機、網(wǎng)絡通信、信息、結構化布

4、線、無線等技術將多種設備應用和綜合功能組成一個強大的完善的系統(tǒng)。它以住房為平臺,同時兼?zhèn)渚W(wǎng)絡家電、家電設備自動化、建筑、通信、遠程醫(yī)療、家庭辦公、娛樂等功能,集結構、服務、系統(tǒng)、管理為一體的舒適、節(jié)能、安全、便利、高效、娛樂、環(huán)保的居住環(huán)境。本文介紹的智能化家居控制系統(tǒng)可以使得人們通過手機在任何時候、任意地點對家中的任意電器(例如:熱水器、空調、電飯煲、燈光等)進行遠程控制。你可以在下班途中,預先將家中的空調打開、電飯煲煮好香噴噴的米飯、讓熱水器提前燒好熱水,而這一切的實現(xiàn)都僅僅是靠一條短信完成。本系統(tǒng)采用cortexA8作為主控器件,遠程控制是基于GSM網(wǎng)絡短消息通信方式,AT指令作為系統(tǒng)控

5、制命令,cortexA8通過對收到的信息進行解碼來識別控制信號,用戶只需向TC35模塊發(fā)送相應指令即可實現(xiàn)遠程控制操作。溫度傳感器完成現(xiàn)場信息的采集,cortexA8對數(shù)據(jù)進行及時的處理,實現(xiàn)實時測控;短消息發(fā)送部分采用基于GSM模塊TC35和IT公司的電平轉換芯片MAX232等器件構成的移動終端的硬件電路,完成短消息收發(fā)功能。(一) 智能家居概述進入21世紀,科學技術與生產(chǎn)力加速了社會的發(fā)展創(chuàng)造能力,隨之而來的也是人類對于物質水平的大力需求,而居住的環(huán)境要求也成為了人們關注的領域,所以“智能化”這一概念也促使科技工作者們將其引入智能家居民應用方面的小區(qū)住宅以及小區(qū)建筑技術之中。由于計算機控制

6、系統(tǒng)發(fā)展迅速,以及電子信息行業(yè)的發(fā)展成長快速,也大力促進了智能家居控制系統(tǒng)的產(chǎn)生。因為固定電話和互聯(lián)網(wǎng)技術基本上是傳統(tǒng)智能家居控制系統(tǒng)的技術核心,所以安裝固定電話以及互聯(lián)網(wǎng)成為了達到家庭用戶傳統(tǒng)智能家居控制系統(tǒng)的產(chǎn)生的根本硬件技術、以及硬件要求。但是隨著電子技術、智能通信技術以及網(wǎng)絡技術發(fā)展日新月異的今天,基于GSM網(wǎng)絡通訊體統(tǒng)的低成本無限制智能家居控制系統(tǒng)成為廣大居民以及中國居民享受新一代智能家居控制系統(tǒng)的變革捷徑。智能家居系統(tǒng)成為一種新興的綜合技術學科。智能家居系統(tǒng)也可被定義為一個控制過程,或者控制系統(tǒng),利用現(xiàn)在被大多數(shù)科技人員已掌握的計算機技術、網(wǎng)絡布線技術、網(wǎng)絡通信系統(tǒng)將其糅合,使之成

7、為融合在家居控制中的多個子系統(tǒng),并使其智能的結合在一起。目前相比較其他時分多址技術手段而言,更加完美、成熟、應用更廣泛的一種普及率很高的系統(tǒng)是GSM(Global System for Mobile communication)系統(tǒng)。在我國,已建成的基本覆蓋全國的GSM數(shù)字蜂窩移動技術信息網(wǎng),早已成為我國公眾移動生活密不可分的一種技術之一。在GSM短信服務的基礎上,智能家居控制系統(tǒng)是在移動網(wǎng)絡通訊技術的短信應用功能的技術運用。由于GSM網(wǎng)絡通訊系統(tǒng)在全國范圍實現(xiàn)了聯(lián)網(wǎng)以及漫游能力,所以它的網(wǎng)絡功能很強大,用戶無需另外搭建網(wǎng)絡,因此,在GSM網(wǎng)絡覆蓋率達到全國范圍的情況下,為客戶省下了昂貴的網(wǎng)絡

8、搭建費用以及維護網(wǎng)絡費用。同時,它對用戶數(shù)量的限制也十分少,也為客戶克服了一般智能家居控制系統(tǒng)中系統(tǒng)成本高、維護艱難、并且網(wǎng)絡覆蓋范圍小以及用戶組數(shù)量少的缺點。相比傳統(tǒng)網(wǎng)絡智能家居控制系統(tǒng)在網(wǎng)絡通信覆蓋率上具有較大的優(yōu)勢,加之GSM本身就具有數(shù)據(jù)的輸送功能,這也促成了GSM應用在廣大生活中得到迅速普及。基于GSM的無線通訊智能系統(tǒng)還具有雙線傳送數(shù)據(jù)的功能、性能穩(wěn)定。為客戶在遠程操控以及用戶控制設備提供了強大技術平臺。遠程操控系統(tǒng)應用廣泛,遍及中國經(jīng)濟生活發(fā)展的各大領域。而且目前人們正在使用中的操控系統(tǒng)從成本、性能、穩(wěn)定性、便捷性以及維護的難易方面基本都不能使人們最大程度的滿意。所以,GSM網(wǎng)絡

9、通信技術的提出大大的提升了智能家居控制系統(tǒng)的完善程度。(二) 智能家居網(wǎng)絡構成1、家居網(wǎng)絡控制平臺智能家居主控制平臺是智能家居控制系統(tǒng)的“心臟”部分,等效的可以說是智能家居的核心。對方可以通過手機短信的方式接受用戶命令并實時操作,或者對對用戶手機發(fā)送控制電器運轉情況,對家庭總線和各個網(wǎng)絡子系統(tǒng)實施連接,完成智能家居控制系統(tǒng)平臺的鏈接構成。2、智能家居子系統(tǒng)智能家居系統(tǒng)的連接一般均為家電網(wǎng)絡中的耗電類型的家電電器。例如冰箱、空調、電磁爐、熱水器、電飯煲、電燈等家用電器。這些消耗電類型的家庭電器可以在現(xiàn)場立即布線互聯(lián)構成智能家居系統(tǒng),與主控家居智能平臺相連接,再進行現(xiàn)場網(wǎng)絡綜合布線連接智能家居子系

10、統(tǒng),就可以由用戶利用協(xié)議中的操作指令短信操作家庭中電器設備了。3、智能家居網(wǎng)絡的信號傳輸介質智能家居網(wǎng)絡通訊形式多彩多樣,可以采用不同的傳輸介質傳輸網(wǎng)絡通訊信號,大體上有電力線、電話線、雙絞線、無線方式。(1) 電力線基于電力線為傳輸介質的通信網(wǎng)絡可以說是最方便的,因為現(xiàn)在家庭基本都已鋪設供電源的電源線而且家中的電源線已經(jīng)延伸到家庭生活的每個角落。而且,現(xiàn)在大部分家用電器設備都離不開電源。所以利用家中的電力線完成智能家居控制系統(tǒng)網(wǎng)絡方案方便而且經(jīng)濟便宜。在國際上,首個實現(xiàn)家庭電器智能化的方案便是通過電力線作為信息傳輸載體的而達成的。(2) 電話線利用電話線作為網(wǎng)絡信息傳輸載體起步雖然相較于電力

11、線稍微晚一些,但是因為它具有布局簡單、使用方便、安全性能好和易于大規(guī)模推廣等優(yōu)點,而且近期電話線的傳輸速率也完成了大幅度提升,所以它的應用和發(fā)展非常快,在美國已有成熟的產(chǎn)品。其中包括:3COM、Advanced MicroDevices、AT&T、Compaq、HewlettPackard、Intel、IBM和Lucent Technologies等發(fā)起成立了“電話線家居網(wǎng)絡協(xié)會”,至今己有100多個成員。(3) 雙絞線同軸電纜目前最通用的傳輸介質是用雙絞線同軸電纜。可是在基于雙絞線同軸電纜實際操作中最大的困難是需要另外鋪設24根專用的傳輸線。但是它擁有通信可靠性和總線接口相對簡單等優(yōu)

12、點,其仍然可以受到廣泛用戶的大批量應用。(4) 無線方式無線方式通過射頻載波或者紅外線等形式傳輸用戶信息,“藍牙技術”是最近發(fā)展最火熱的無線通信方式。音頻和視頻信號、計算機網(wǎng)絡信號、控制信號均可以利用藍牙技術傳輸家庭用戶信號。而且用無線方式傳輸信息時無需架設任何線路且實現(xiàn)極其方便靈活,非常適合在家庭網(wǎng)絡中應用。由于無線方式簡單方便,易于架設,所以本論文便是使用的GSM無線技術平臺操作的智能家居平臺系統(tǒng)。4、遠程控制技術概括本論文研究立于一個對于家居電器進行遠程控制,以便于實現(xiàn)家居智能化的系統(tǒng)。遠程控制指的是遠端的家居控制者通過通信系統(tǒng)對現(xiàn)場的家居電器系統(tǒng)進行控制,其目的在于解除地域和環(huán)境對控制

13、的限制,實現(xiàn)高集中的遠程控制,最終實現(xiàn)生產(chǎn)資料和社會資源與通訊資源的優(yōu)化配置。現(xiàn)代遠程控制技術是計算機技術、通信技術、網(wǎng)絡技術的集合,也是信息技術和控制技術的結合。從用戶角度來講,需要的是一種方便、安全、可靠的一種傳輸方式??梢岳霉矓?shù)據(jù)網(wǎng)或者通過架設專線來實現(xiàn)有線傳輸,然而在大多數(shù)情況下,傳輸距離、架線環(huán)境等條件限制了有線傳輸2。無線傳輸也有很多途徑,如架設微波線路、(超)短波電臺等都是通過自建的無線發(fā)射接收系統(tǒng)。然而無線傳輸架設成本高、頻率資源的限制、容易受到地形地貌的影響、系統(tǒng)的架設和維護工作繁重,在業(yè)務量小、用戶數(shù)量大、位置分散等應用場合中也受到很大限制。目前,經(jīng)過三代發(fā)展的移動通信

14、,移動通信體制中的時分多址技術中最完善、最成熟、應用最廣的一種移動通信系統(tǒng)就是GSM系統(tǒng)2。在數(shù)據(jù)采集、遠距離監(jiān)控、GPS定位、繳費通知、無線報警等領域GMS都有著廣泛的應用。在全國范圍內GSM網(wǎng)絡實現(xiàn)了聯(lián)網(wǎng)和漫游,用戶無需另外組網(wǎng),GMS具有很強的網(wǎng)絡能力,網(wǎng)絡覆蓋范圍廣闊,用戶不必再花費節(jié)昂貴的建網(wǎng)費用和維護費用2。比傳統(tǒng)的集群系統(tǒng)在無線網(wǎng)絡覆蓋上具有無法比擬的優(yōu)勢,加上GSM的SMS本身具備的數(shù)據(jù)傳送功能,都使得這些應用得到迅速的普及2。GSM短信息系統(tǒng)性能穩(wěn)定還可進行雙向數(shù)據(jù)傳輸,為監(jiān)控設備和遠程數(shù)據(jù)傳送通信提供了一個可靠、安全的支持平臺。短消息發(fā)送一般采用其專用控制信道(DCCH)來

15、發(fā)送,短信息的服務端可以實時的了解到對方是否接收到短信息,一旦信息傳送失敗,短信中心實時得知被叫用戶沒有回復信息,網(wǎng)絡管理端則會繼續(xù)發(fā)送消息,以保證被叫方能收到短信息。所以,在GSM網(wǎng)絡的一些主要的電信業(yè)務當中,此類短消息業(yè)務的信息傳遞是實時安全的2。每個短消息的信息量都是140個八位組(7比特編碼,160個字符)不會超過140個字節(jié),絕對可以滿足單方面監(jiān)測用戶指標的信息量。綜上所述,智能家居控制系統(tǒng)選用GSM的短消息控制方式,來實現(xiàn)智能家居設備的遠程控制是可行的。5、智能家居控制系統(tǒng)的國內外發(fā)展現(xiàn)狀目前,我國每年竣工的建筑面積達到20億平米,智能家居/建筑的產(chǎn)值至少在1-2萬億元以上。智能家

16、居的發(fā)展分為三個階段:首先是家庭電子化(Home Electronics)階段,這個時期主要是面向單個的電器,家庭電器之間并沒有形成網(wǎng)絡,亦沒有大的聯(lián)系。其次是住宅自動化(Home Automation)階段,這個時期是面向功能的階段,一部分的家庭電器之間形成了簡單的網(wǎng)絡,主要是為了實現(xiàn)某個特定單一的功能,例如單一的自動抄表功能。最后是家居智能化(歐洲稱為Smart Home,美國稱為 Wise House)階段,這個時期是面向系統(tǒng)設計的階段,系統(tǒng)通過家庭分布總線把住宅內各種與信息相關的通信設備、家用電器、報警裝置并到網(wǎng)絡節(jié)點中進行集中的監(jiān)控、管理,保持家電與環(huán)境的協(xié)調,提供生活、工作、學習以

17、及娛樂的各種優(yōu)質服務,營造一種溫馨舒適的家庭氛圍。智能家居控制系統(tǒng)提供高效、舒適的家居環(huán)境,確保住戶的生命財產(chǎn)安全;集中或遠程監(jiān)控家居環(huán)境的溫度、濕度以及風速等,空氣中成分也可檢驗,為空氣質量的提高提供依據(jù);電視機、CD等娛樂設施也不再需要人們近距離調節(jié);周圍環(huán)境以及太陽光的強弱變化都可以合理利用,使能耗降低,資源合理利用,保護環(huán)境;提供現(xiàn)代化的通信、信息服務12。在智能家居系統(tǒng)研發(fā)中,美國和歐洲一些發(fā)達國家一直處于領先地位。近年來,一大批國外知名企業(yè)先后擠身于智能家居的研發(fā)中尤其以美國微軟公司及摩托羅拉公司等為首12。摩托羅拉公司開發(fā)的“居所之門”、IBM公司開發(fā)的“家庭主任”、微軟公司開發(fā)

18、的“夢幻之家”等均已日趨成熟12。在亞洲,日本韓國新等一些經(jīng)濟發(fā)達國家的主要企業(yè)也進軍智能化家居系統(tǒng)的開發(fā),對家居市場更是躍躍欲試。經(jīng)過哥本哈根會議,我國更加明確了節(jié)能減排,綠色建筑的目標,這就使住宅智能化凸顯出了其合理規(guī)劃,最大限度的節(jié)約能源的優(yōu)勢。如果我國大力推廣綠色建筑,僅在鋪設智能化系統(tǒng)上所需的新設備的生產(chǎn)上就有2000億到3000億人民幣的新市場。而中國“智能家居網(wǎng)絡”必在“智能化住宅”的框架下形成一個新型IT產(chǎn)業(yè),而這一切必將對未來幾十年我國房地產(chǎn)的健康有效發(fā)展起著深遠的影響。由于智能家居系統(tǒng)還缺乏統(tǒng)一明確的國際標準,許多公司開發(fā)出的產(chǎn)品都是基于自己組的網(wǎng)絡和信息交換協(xié)議,很多產(chǎn)品

19、是針對特定的組網(wǎng)環(huán)境開發(fā)的,部分核心技術沒有對外公布,技術復雜,直接導致了使用范圍的局限性。再者,缺乏對應的第三方產(chǎn)品,各個接入設備之間不能兼容、互操作性差、不利于產(chǎn)品的擴充,因而進一步局限了產(chǎn)品的發(fā)展。再加上,有的系統(tǒng)成本過高,嚴重影響了產(chǎn)品的普及。因此設計一個符合國家國情和規(guī)范的集遠程控制和本地控制為一體的智能家居控制系統(tǒng)是非常具有現(xiàn)實意義的,且勢在必行。作為智能家居的核心系統(tǒng)的智能家居的控制系統(tǒng),它的設計功能的完善必將推動住宅智能化的發(fā)展。而系統(tǒng)功能的集成化、用戶使用的傻瓜化以及市場的平民化將是智能家居控制器的發(fā)展趨勢,系統(tǒng)也將逐步邁向綠色化。最終,我想全人類的夢想是智能家居控制系統(tǒng)將囊

20、括所有的家事雜物,讓我們真正的享受舒適溫馨的家庭生活。二、系統(tǒng)需求分析及方案 物聯(lián)網(wǎng)智能家居要將各成體系、互不相連的子系統(tǒng)協(xié)調起來,就必須有一個兼容性強的中央家居處理平臺,接受并處理控制設施發(fā)出的信息,然后傳送信號給你希望控制的家電或者其他家居子系統(tǒng)。(一)應用程序功能需求分析本設計采用模塊化設計,整個系統(tǒng)由通信模塊、視頻采集模塊、傳感器模塊、Lcd模塊組成。cortexA8通過對傳感器模塊傳送來的信息進行判斷,如果信息異常,則利用蜂鳴器以及LED實現(xiàn)報警,并通過GSM模塊向用戶發(fā)送報警信息。同時用戶也可以根據(jù)需要,發(fā)送短信給GSM模塊來控制相應的家電。實現(xiàn)對現(xiàn)場圖像實時監(jiān)控及工作位置實時控制

21、。(二)開發(fā)環(huán)境需求分析1、 硬件環(huán)境(1) 硬件配置原則具有可靠性,可用性和安全性,在滿足軟件需求的條件下,具有完善的技術支持,能夠滿足個人學習和設計需要。(2) 運行本軟件所需的硬件資源CPU: 800M及以上;內存容量: 內存達128M以上。本系統(tǒng)采用cortexA8為中央處理平臺。2、 軟件環(huán)境(1) 系統(tǒng)軟件配置規(guī)則 能夠在指定的運行環(huán)境下,滿足該軟件的可靠性、安全性和可用性的要求。(2) 系統(tǒng)軟件的配置方案配置有持續(xù)工作能力、高穩(wěn)定性、高度可集成的開放式標準的操作系統(tǒng),如Windows NT 、Windows2000、UNIX,Linux等。熟悉C+高級程序設計語言。本系統(tǒng)采用Li

22、nux為操作系統(tǒng)。三、硬件模塊及其驅動設計實現(xiàn)(一) 主控模塊 本系統(tǒng)采用cortexA8為控制核心,cortexA8不斷監(jiān)測有沒有異常信息,當發(fā)現(xiàn)異常信息時,則進入相應中斷,利用cortexA8通過UART串口向GSM模塊發(fā)送一系列AT指令并啟動GSM模塊發(fā)送報警短信給用戶。再根據(jù)用戶發(fā)送回來的指令打開相應的繼電器來控制家用電器,完成現(xiàn)場控制和監(jiān)測任務。(二) 通信模塊1、 TC35模塊簡介TC35是西門子公司推出的一種完整的無線GSM模塊,主要由GSM基帶處理器、GSM射頻模塊、供電模塊(ASIC)、閃存、ZIF連接器、天線接口、SIM卡支架七部分組成。它可以快速、安全可靠地實現(xiàn)系統(tǒng)方案中

23、的數(shù)據(jù)傳輸、短消息服務(Short Message Service)。模塊的工作電壓為3.34.8V。該模塊有AT指令集接口,支持文本和PDU模式的短消息第三組的二類傳真等。此外,TC35還擁有多方通話、電話簿功能、漫游檢測等功能。TC35具有TALK、IDLE、省電模式三種常用工作模式。通過它的40管腳的ZIF連接器實現(xiàn)指令、數(shù)據(jù)、語音信號、控制信號的雙向傳輸以及電源連接。TC35的核心是基帶處理器,主要處理GSM終端內的語音、數(shù)據(jù)信號,蜂窩射頻設備中所有的模擬和數(shù)字功能它也擁有??芍С諩FR、FR和語音編碼而不需要額外硬件電路。2、 TC35模塊與cortexA8連接方式TC35模塊主要通

24、過串口與cortexA8進行連接,從而cortexA8實現(xiàn)對TC35模塊的控制??紤]到系統(tǒng)設計接口的簡單性并且與cortexA8的UART進行連接,所以只采用TC35的串口提供了的兩線(TXD、RXD)控制線連接。系統(tǒng)采用軟件對TC35模塊通信模塊進行控制非常靈活,過多硬件信號的檢測也很好地避免了。對于TC35的其它管腳在不使用的時候,如果該管腳為輸出時,一般將該管腳懸空;如果該管腳為輸入管腳,則需要將該管腳通過10的電阻上拉。另外需要將IGT管腳上拉因為IGT管腳是控制TC35模塊工作的管腳。并且cortexA8與該管腳進行連接,因此我們可以利用cortexA8來控制TC35模塊的工作模式。

25、由于TC35模塊功能健全,TC35模塊的電源管腳是并連在一起的,因此這里不需要做任何的射頻處理和信號處理。此外,IGT管腳是TC35??斓膯幽_,與cortexA8的ALE管腳相連接。系統(tǒng)加電后為使TC35i進入工作狀態(tài),必須在ALE管腳加一個大于100ms的低脈沖,電平下降持續(xù)時間不可超過1ms。以下為TC35模塊的接口設計。3、傳感器模塊linux2.6內核的設備驅動模型中關心總線、設備和驅動這三個實體,總線將設備和驅動綁定。SOC系統(tǒng)中集成的獨立的外設控制器、掛接在soc內存空間的外設不依附于PCI、USB、I2C、SPI等?;谶@個背景l(fā)inux發(fā)明了一種虛擬的總線,稱為platfor

26、m總線,相應的設備platform_device,而驅動稱為platform_driver。(1)led圖3.1 led電路采用platform框架 自動獲取設備號,生成設備節(jié)點。led驅動:struct file_operations fops = .owner = THIS_MODULE,.read = led_read,.ioctl = led_ioctl,.release = led_release,.open = led_open,.write = led_write,;static int led_probe(struct platform_device *devices)stru

27、ct resource *r;int ret;dev_t dev = MKDEV(led_major, led_minor);if(led_major)ret = register_chrdev_region(dev, count, devname);elseret = alloc_chrdev_region(&dev, led_minor, count, devname);led_major = MAJOR(dev);if(ret)return ret;cdev_init(&cdev, &fops);ret=cdev_add(&cdev, dev, 1);if

28、(ret)goto out_unreg_chrdev;atomic_set(&num, 0);myclass = class_create(THIS_MODULE, devname);if (IS_ERR(myclass)goto out_cdevdel;device_create(myclass, NULL, dev, NULL, "%s""%d", devname, led_minor);r = platform_get_resource(devices, IORESOURCE_MEM, 0);if (r = NULL) goto out_c

29、lass_destroy;GPG3_CON=r->start;r = platform_get_resource(devices, IORESOURCE_MEM, 1);if (r = NULL) goto out_class_destroy;GPG3_DAT=r->start;return 0;out_class_destroy:device_destroy(myclass, dev);class_destroy(myclass);out_cdevdel:cdev_del(&cdev);out_unreg_chrdev:unregister_chrdev_region(d

30、ev, count);return -EINVAL;int led_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg)unsigned int m=0x0;int tmp;if(cmd=CMDINIT)if(atomic_sub_and_test(1,&num)gpg3con = ioremap(GPG3_CON, 4);if(NULL = gpg3con)return -ENOMEM;gpg3dat = ioremap(GPG3_DAT, 4);if(NULL = gpg

31、3dat)return -ENOMEM;tmp=ioread32(gpg3con);tmp=tmp&(0xffff);iowrite32(0x1111|tmp, gpg3con);tmp=ioread32(gpg3dat);tmp=tmp&(0xf);iowrite32(0x0|tmp, gpg3dat);atomic_inc(&num);return 0;else m=cmd & 0xf;tmp=ioread32(gpg3dat);tmp=tmp&(0xf);iowrite32(m, gpg3dat);return 0;led應用程序設計void le

32、d_init(void); 函數(shù)功能:打開led設備并int led_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg) 函數(shù)功能:LED報警 輸入?yún)?shù):cmd 參數(shù)表示那個燈亮void led_exit(void); 函數(shù)功能:關閉led設備(2) 蜂鳴器圖3.2 pwm電路圖采用platform框架 自動獲取設備號,生成設備節(jié)點。由于這個蜂鳴器是無源的,所以要想使其產(chǎn)生聲音必須給他提供一個有一定頻率的高低電平。所以這里我們采用S5PC100的PWM定時器來使蜂鳴器發(fā)出聲音。st

33、atic int pwm_probe(struct platform_device *devices)struct resource *r;int ret;dev_t dev = MKDEV(pwm_major, pwm_minor);if(pwm_major)ret = register_chrdev_region(dev, count, devname);elseret = alloc_chrdev_region(&dev, pwm_minor, count, devname);pwm_major = MAJOR(dev);if(ret)return ret;cdev_init(&

34、amp;cdev, &fops);ret=cdev_add(&cdev, dev, 1);if(ret)goto out_unreg_chrdev;atomic_set(&num, 0);myclass = class_create(THIS_MODULE, devname);if (IS_ERR(myclass)goto out_cdevdel;device_create(myclass, NULL, dev, NULL, "%s""%d", devname, pwm_minor);r = platform_get_resour

35、ce(devices, IORESOURCE_MEM, 0);if (r = NULL) goto out_class_destroy;GPD_CON1=r->start;r = platform_get_resource(devices, IORESOURCE_MEM, 1);if (r = NULL) goto out_class_destroy;TCFG0=r->start;r = platform_get_resource(devices, IORESOURCE_MEM, 2);if (r = NULL) goto out_class_destroy;TCFG1=r->

36、;start;r = platform_get_resource(devices, IORESOURCE_MEM, 3);if (r = NULL) goto out_class_destroy;TCNTB1=r->start;r = platform_get_resource(devices, IORESOURCE_MEM, 4);if (r = NULL) goto out_class_destroy;TCMPB1=r->start;r = platform_get_resource(devices, IORESOURCE_MEM, 5);if (r = NULL) goto

37、out_class_destroy;TCON=r->start;return 0;out_class_destroy:device_destroy(myclass, dev);class_destroy(myclass);out_cdevdel:cdev_del(&cdev);out_unreg_chrdev:unregister_chrdev_region(dev, count);return -EINVAL;int pwm_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long

38、 arg)int tmp;if(cmd=CMDINIT)if(atomic_sub_and_test(1,&num)gpdcon1 = ioremap(GPD_CON1, 4);if(NULL = gpdcon1)return -ENOMEM;tcfg0 = ioremap(TCFG0, 4);if(NULL = tcfg0)return -ENOMEM;tcfg1 = ioremap(TCFG1, 4);if(NULL = tcfg1)return -ENOMEM;tcntb1 = ioremap(TCNTB1, 4);if(NULL = tcntb1)return -ENOMEM;

39、tcmpb1 = ioremap(TCMPB1, 4);if(NULL = tcmpb1)return -ENOMEM;gtcon = ioremap(TCON, 4);if(NULL = gtcon)return -ENOMEM;tmp=ioread32(gpdcon1);tmp=tmp&(0xf<<4);tmp=tmp|(0x2<<4);iowrite32(tmp, gpdcon1);tmp=ioread32(tcfg0);tmp=tmp&0xff;tmp=tmp|0xfe;iowrite32(tmp, tcfg0);tmp=ioread32(tcf

40、g1);tmp=tmp&(0xf<<4);tmp=tmp|(0x1<<4);iowrite32(tmp, tcfg1);iowrite32(300, tcntb1);iowrite32(150, tcmpb1);tmp=ioread32(gtcon);tmp=tmp|0x0e<<8;tmp=tmp&(0x01<<8);iowrite32(tmp, gtcon);atomic_inc(&num);return 0;else if(cmd=CMDGO)tmp=ioread32(gtcon);tmp=tmp|(0x0d<&

41、lt;8);tmp=tmp&(0x02<<8);iowrite32(tmp, gtcon);else if(cmd=CMDSTOP)tmp=ioread32(gtcon);tmp=tmp&(0x0f<<8);iowrite32(tmp, gtcon);return 0;蜂鳴器應用程序設計:int beep_init(void); 函數(shù)功能:打開蜂鳴器設備文件void beep_exit(void); 函數(shù)功能:關閉蜂鳴器設備文件void beep_on(int num); 函數(shù)功能:在出現(xiàn)火災時蜂鳴器報警 輸入?yún)?shù):int num 表示報警的次數(shù)void

42、 beep_off(void); 函數(shù)功能:停止蜂鳴器響(3)lm75溫度傳感器I2C驅動三種方式:用戶層驅動、sysfs接口驅動、字符設備接口驅動(項目采用方案)。圖3.3 lm75電路圖驅動程序設計:static struct file_operations lm75_fops = .owner = THIS_MODULE,.read= lm75_read,.open = lm75_open,.release= lm75_release,;static int lm75_probe(struct i2c_client *client, const struct i2c_device_id

43、*id)int status;u8 set_mask, clr_mask;int new;my_client=client;if (!i2c_check_functionality(client->adapter,I2C_FUNC_SMBUS_BYTE_DATA | I2C_FUNC_SMBUS_WORD_DATA)return -EIO;data = kzalloc(sizeof(struct lm75_data), GFP_KERNEL);if (!data)return -ENOMEM;i2c_set_clientdata(client, data);mutex_init(&

44、;data->update_lock);set_mask = 0;clr_mask = (1 << 0)| (1 << 6) | (1 << 5);status = lm75_read_value(client, LM75_REG_CONF);if (status < 0) dev_dbg(&client->dev, "Can't read config? %dn", status);goto exit_free;data->orig_conf = status;new = status &

45、 clr_mask;new |= set_mask;if (status != new)lm75_write_value(client, LM75_REG_CONF, new);dev_dbg(&client->dev, "Config %02xn", new);devn = MKDEV(lm75_major, lm75_minor);if(lm75_major)status = register_chrdev_region(devn, count, devname);elsestatus = alloc_chrdev_region(&devn, lm

46、75_minor, count, devname);lm75_major = MAJOR(devn);if(status)return status;cdev_init(&cdev, &lm75_fops);status=cdev_add(&cdev, devn, 1);if(status)goto out_unreg_chrdev;myclass = class_create(THIS_MODULE, devname);if (IS_ERR(myclass)goto out_cdevdel;device_create(myclass, NULL, devn, NULL

47、, "%s""%d", devname, lm75_minor);goto out;out_cdevdel:cdev_del(&cdev);out_unreg_chrdev:unregister_chrdev_region(devn, count);exit_free:kfree(data);out:return status;static int lm75_read_value(struct i2c_client *client, u8 reg)int value;if (reg = LM75_REG_CONF)return i2c_smbus

48、_read_byte_data(client, reg);value = i2c_smbus_read_word_data(client, reg);return (value < 0) ? value : swab16(value);static int lm75_write_value(struct i2c_client *client, u8 reg, u16 value)if (reg = LM75_REG_CONF)return i2c_smbus_write_byte_data(client, reg, value);elsereturn i2c_smbus_write_wo

49、rd_data(client, reg, swab16(value);static int _init sensors_lm75_init(void)return i2c_add_driver(&lm75_driver);static void _exit sensors_lm75_exit(void)i2c_del_driver(&lm75_driver);由于lm75讀出的是TEMP寄存器(16位)的值但是lm75TEMP寄存器是高9位有效,精度是0.5。在驅動中不宜使用浮點數(shù)運算,所以讀出的值在應用層轉換。read (fd,buf,sizeof(buf);函數(shù)功能:從bu

50、f中讀取溫度值fd = open ("/dev/lm750",O_RDWR);read (fd,buf,sizeof(buf);m=atoi(buf);n=m&0xff80;if(n&0x8000) n=n>>7; n=n-1;n=n; n=n&0xfe;n=-n; elsen=n>>7;tmp=n*0.5;(4)視屏模塊圖3.4 V4L2流程V4L2采用流水線的方式,操作更簡單直觀,基本遵循打開視頻設備、設置格式、處理數(shù)據(jù)、關閉設備,更多的具體操作通過ioctl函數(shù)來實現(xiàn)。 打開視頻設備在Linux中,設備被看做一個文件。使

51、用open函數(shù)打開視頻設備。打開設備有兩種方式:1、用非阻塞模式打開int Fd;Fd = open("/dev/video2", O_RDWR | O_NONBLOCK, 0);2用阻塞模式打開:Fd = open("/dev/video2", O_RDWR, 0);應用程序能夠使用阻塞模式或非阻塞模式打開視頻設備,如果使用非阻塞模式調用視頻設備,即使尚未捕獲到信息,驅動依舊會把緩存(DQBUFF)里的東西返回給應用程序。設定屬性及采集方式打開視頻設備后,可以設置該視頻設備的屬性,例如裁剪、縮放等。這一步是可選的。在Linux編程中,一般使用ioctl

52、函數(shù)來對設備的I/O通道進行管理: int ioctl (int _fd, unsigned long int _request, ./*args*/) ;在進行V4L2開發(fā)中,常用的命令標志符如下(some are optional): VIDIOC_REQBUFS: 分配內存 VIDIOC_QUERYBUF:把VIDIOC_REQBUFS中分配的數(shù)據(jù)緩存轉換成物理地址 VIDIOC_QUERYCAP:查詢驅動功能 VIDIOC_ENUM_FMT:得到視頻設備支持的視頻格式 VIDIOC_S_FMT: 設置視頻設備的頻捕獲格式 VIDIOC_G_FMT: 得到視頻設備的頻捕獲格式 VIDIO

53、C_TRY_FMT: 視頻設備支持的顯示格式 VIDIOC_QBUF: 從緩存中讀取數(shù)據(jù) VIDIOC_DQBUF: 數(shù)據(jù)重新進入緩存隊列 VIDIOC_STREAMON:開始視頻獲取VIDIOC_STREAMOFF:結束視頻獲取 VIDIOC_QUERYSTD:檢查當前視頻設備支持的標準,例如PAL或NTSC。 在亞洲,一般使用PAL(720X576)制式的攝像頭,而歐洲一般使用NTSC(720X480),使用VIDIOC_QUERYSTD來檢測:v4l2_std_id std;do ret = ioctl(fd, VIDIOC_QUERYSTD, &std); while (ret = -1 && errno = EAGAIN);switch (std) case V4L2_STD_NTSC: / case V4L2_STD_PAL: /設置視頻捕獲格式當檢測完視頻設備支持的標準后,還需要設定視頻捕獲格式,結構如下:struct v4l2_format fmmt;memset ( & fmmt, 0, sizeof(fmmt) );fmmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;fmmt.fmt.pix.width = 720;fmmt.fmt.p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論