版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
武漢理工大學(xué)PAGE畢業(yè)設(shè)計(論文)任務(wù)書第1頁畢業(yè)設(shè)計(論文)題目:基于ZigBee技術(shù)的無線智能小車軟件設(shè)計畢業(yè)設(shè)計(論文)要求及原始數(shù)據(jù)(資料):1.綜述無線智能小車的應(yīng)用前景;2.深入了解無線智能小車的軟件設(shè)計的相關(guān)技術(shù)以及使用;3.熟練掌握基于QT的圖形界面開發(fā)以及ZigBee無線通訊技術(shù);4.設(shè)計并實現(xiàn)無線智能小車中關(guān)于上位機圖形界面的開發(fā)、上位機與下位機的無線通訊功能;5.深入分析無線智能小車的關(guān)鍵技術(shù)與編寫語言;6.訓(xùn)練檢索文獻資料和利用文獻資料的能力;7.訓(xùn)練撰寫技術(shù)文檔與學(xué)位論文的能力。第2頁畢業(yè)設(shè)計(論文)主要內(nèi)容:1.綜述無線智能小車在各領(lǐng)域中的應(yīng)用;2.掌握QT的圖形界面開發(fā)技術(shù);3.掌握ZigBee無線通訊技術(shù);4.設(shè)計并實現(xiàn)無線智能小車中關(guān)于上位機圖形界面的開發(fā);5.上位機與下位機的無線通訊功能;5.組裝各功能模塊,實現(xiàn)上位機對智能小車無線操作以及紅外智能避障功能;6.深入分析無線智能小車的關(guān)鍵技術(shù)與整個設(shè)計的流程;學(xué)生應(yīng)交出的設(shè)計文件(論文):1.內(nèi)容完整、層次清晰、敘述流暢、排版規(guī)范的畢業(yè)設(shè)計論文;2.包括畢業(yè)設(shè)計論文、源程序等內(nèi)容在內(nèi)的畢業(yè)設(shè)計電子文檔及其它相關(guān)材料。第3頁主要參考文獻(資料):1陳淑娟.Zigbee技術(shù)簡介及其在無線傳感網(wǎng)絡(luò)中的應(yīng)用研究[C].大連海事大學(xué)信息工程學(xué)院,20042晁楠.基于ZigBee無線網(wǎng)絡(luò)的小車控制[D].西安科技大學(xué),20093戴琪.基于ZigBee的LED路燈智能控制系統(tǒng)[D].西安電子科技大學(xué),20124周怡頲,凌志浩,吳勤勤.ZigBee無線通信技術(shù)及其應(yīng)用探討[J].自動化儀表,2005,(04)5王浩南,劉益成.基于嵌入式Linux系統(tǒng)下的Qt開發(fā)[J].電腦開發(fā)與應(yīng)用,2010,23(01)6劉艷青,蘇桂蓮.基于Qt4的圖形用戶界面程序的設(shè)計與實現(xiàn)[J].現(xiàn)代計算機(專業(yè)版),2009(03),170-1737張春艷.基于Qt的嵌入式圖形用戶界面研究與實現(xiàn)[D].大連海事大學(xué),20088BonhyunKoo,KyusukHan,JamesJ.(JongHyuk)Park,TaeshikShon.Designandimplementationofawirelesssensornetworkarchitectureusingsmartmobiledevices[J].TelecommunicationSystems,2013,Vol.52(4),pp.2311-23209BojanKulji?,JánosSimon,TiborSzakáll.PathfindingBasedonEdgeDetectionandInfraredDistanceMeasuringSensor[J].ActaPolytechnicaHungarica,2009,Vol.6(1),pp.10310Kaewnopparat,A.,Sooraksa,P.Trackingproblemandobstacleavoidanceofmobilerobotsusingsimplefuzzycontrol[J].SongklanakarinJournalofScienceandTechnology,2004,Vol.26(5),pp.671專業(yè)班級軟件1005班學(xué)生王澤彬要求設(shè)計(論文)工作起止日期2014年3月17日~2014年6月27日指導(dǎo)教師簽字日期2014年3月17日教研室主任審查簽字日期系主任批準(zhǔn)簽字日期武漢理工大學(xué)基于ZigBee技術(shù)的無線智能小車軟件設(shè)計摘要智能化,是現(xiàn)代社會發(fā)展到一定階段的新產(chǎn)物,是以后發(fā)展和研究的重點方向。它無需人為管理,可以在一個特點的環(huán)境里按照預(yù)先設(shè)計好的模式自動運行。隨著計算機、機械電子、自動化、網(wǎng)絡(luò)、信息和人工智能等技術(shù)的高速發(fā)展,智能機器人的研究進入了一個嶄新的階段。隨著研究的深入,對智能機器人、無人自主車等領(lǐng)域的各種技術(shù)也有了更高的要求。本次設(shè)計的無線智能小車,采用ATmga16單片機作為小車的控制核心;采用ZigBee來實現(xiàn)上位機與智能小車之間的通訊。本論文重點介紹了QT以及ZigBee技術(shù)的相關(guān)概念以及應(yīng)用。同時,主要介紹了完成無線智能小車上位機設(shè)計中QT的應(yīng)用,以及ZigBee串口通訊程序的編寫。最終,通過ZigBee的無線通訊以實現(xiàn)無線智能小車的無線操控功能。本設(shè)計的智能小車技術(shù)發(fā)展成熟,結(jié)構(gòu)簡單,易于實現(xiàn)。而且有很高的智能化和人性化特點。關(guān)鍵詞無線智能小車;ZigBee;QT
BasedonthetechnologyofZigBeewirelesssmartcarsoftwaredesignAbstractIntelligent,isanewproductofthedevelopmentofmodernsocialdevelopment,isthefocusofthedevelopmentandresearchdirectioninthefuture.Withouthumanmanagement,itcanbeintheenvironmentofacharacteristicaccordingtothepreliminarydesigngoodmodelautomatically.Alongwiththecomputer,machineryandelectronics,automation,network,artificialintelligenceandinformationtechnology,therapiddevelopmentofintelligentrobotresearchhasenteredanewstage.Withthedeepeningoftheresearchofintelligentrobots,unmannedautonomousvehicleinareassuchasallkindsoftechnologyhavehigherrequirements.Thedesignofwirelesssmartcar,useATmga16singlechipmicrocomputerascontrolcoreofthecar;ZigBeeisusedtorealizecommunicationbetweenPCandthesmartcar.ThispapermainlyintroducestherelatedconceptsandapplicationsofQTandZigBeetechnology.Atthesametime,mainlyintroducedthecompleteQTinthedesignofwirelesssmartcarPCapplications,andZigBeewriteaserialportcommunicationprogram.Intheend,throughtheZigBeewirelesscommunicationsinordertorealizethewirelesssmartcarradiocontrolfunctions.Thedesignoftheintelligentcartechnologydevelopmentmature,simplestructure,easytoimplement.Andhasahighintelligenceandhumancharacteristics.Keywords:Wirelesssmartcar;ZigBee;QT
目錄TOC\o"1-3"\h\u12356摘要 I17596Abstract II312811緒論 19341.1課題研究背景及意義 188201.2國內(nèi)外研究現(xiàn)狀及發(fā)展趨勢 1108691.2.1國外研究現(xiàn)狀 1254451.2.2國內(nèi)研究現(xiàn)狀 228621.2.3研究方向 230011.3設(shè)計概要 349462技術(shù)簡介 4199802.1QT簡介 486432.1.1QT概念及其主要模塊 4290822.1.2QT的發(fā)展歷史 4238192.1.3QT主要優(yōu)勢 556402.1.4QT的主要模塊 552652.2ZigBee簡介 726012.2.1ZigBee概念 7196452.2.2ZigBee技術(shù)特點 8302332.2.3ZigBee的應(yīng)用及前景 8218033CC2530解決方案 10233493.1描述 103283.2引腳描述 10165563.3電路描述 1279593.2.1CPU和內(nèi)存 13229763.2.2時鐘和電源管理、外設(shè) 13258453.2.3無線設(shè)備 1469004串口通訊程序的編寫 1557734.1編程環(huán)境 1576034.2串口操作流程 15251814.2.1設(shè)置串口參數(shù) 15282204.2.2選擇串口 16175324.2.3讀或?qū)懘?16322094.2.4關(guān)閉串口 16247104.3串口參數(shù)的設(shè)置 168924.4串口通訊程序 1750705ZigBee模塊的電路 19102185.1ZigBee第一次使用(組網(wǎng))流程 19190225.2ZigBee接收器電路 193204262.4G點對點通訊模塊(無線串口) 21132936.1概述及功能特點 2123856.2基本概念 2194856.3使用說明 2190427核心代碼詳解 2411587.1操作主界面代碼塊 2411587.2操作主界面代碼塊 2631350結(jié)論 2813801參考文獻 2928301致謝 3026969外文資料 316590外文資料翻譯 39武漢理工大學(xué)1緒論1.1課題研究背景及意義信息化時代的到來,人們對網(wǎng)絡(luò)通信技術(shù)的要求越來越高。傳統(tǒng)的數(shù)字化設(shè)備的有線連接給人的生活帶來了諸多不便。發(fā)展無線網(wǎng)絡(luò)技術(shù),將設(shè)備從有限連接的束縛中解脫出來,方便人們的使用,已經(jīng)成為一種趨勢,將無線技術(shù)運用到智能車設(shè)計中,從而使汽車輕松實現(xiàn)無線數(shù)據(jù)傳輸、語言通訊、目標(biāo)跟蹤、自動報警等功能已經(jīng)是必然趨勢,但是傳統(tǒng)的無線技術(shù)大多成本高、結(jié)構(gòu)復(fù)雜、不利于無線技術(shù)的推廣。近些年來,一些公司和標(biāo)準(zhǔn)化組織就開始在探尋在不同領(lǐng)域的無線網(wǎng)絡(luò)連接技術(shù)。并且開發(fā)出一系列技術(shù)標(biāo)準(zhǔn)。無線傳感網(wǎng)絡(luò)技術(shù)的研究熱潮掀起了一場后PC時代的革命。無線傳感器網(wǎng)絡(luò)是由大量無處不在的微小傳感器節(jié)點,隨機布設(shè)在無人值守的監(jiān)控區(qū)域而構(gòu)成的,能夠根據(jù)環(huán)境自主完成指定任務(wù)的自治監(jiān)控網(wǎng)絡(luò)系統(tǒng)。它已經(jīng)引起了學(xué)術(shù)界和工業(yè)界的高度重視,是對21世紀(jì)產(chǎn)生巨大影響力的技術(shù)之一,在很多領(lǐng)域也具有廣闊的應(yīng)用前景。2004年,在IEEE802.15.4基礎(chǔ)上建立了ZigBee標(biāo)準(zhǔn),進而推出符合該標(biāo)準(zhǔn)的芯片和開發(fā)平臺。ZigBee標(biāo)準(zhǔn)包括IEEE802.15.4協(xié)議制定的物理層和介質(zhì)訪問層,以及ZigBee聯(lián)盟制定的網(wǎng)絡(luò)層和部分應(yīng)用層。ZigBee協(xié)議標(biāo)準(zhǔn)作為一種全新的無線傳感網(wǎng)絡(luò)技術(shù)應(yīng)運而生,并展示了迅猛發(fā)展的良好勢頭,引起了國內(nèi)外廣大科技工作者的極大興趣和關(guān)注。該技術(shù)以微消耗能量、強組網(wǎng)能力、低營運成本、高可靠性為特點,可方便地組成一個功耗低、數(shù)據(jù)傳輸距離短且速率不高的低營運成本“無線局域網(wǎng)”,廣泛應(yīng)用到軍事無人值守和靈巧網(wǎng)絡(luò)通訊、工業(yè)自動控制、大中城市空氣質(zhì)量監(jiān)控、醫(yī)院醫(yī)護監(jiān)視、高速公路自動收繳費、居民水電氣自動收繳費、消費類電子設(shè)備、PC外設(shè)的無線連接等領(lǐng)域。國內(nèi)已有很多高校和科研院所開展了這一領(lǐng)域的研究工作,研究內(nèi)容含蓋無線傳感器節(jié)點硬件設(shè)計、操作系統(tǒng)、網(wǎng)絡(luò)路由技術(shù)、節(jié)能技術(shù)、覆蓋控制技術(shù)等。1.2國內(nèi)外研究現(xiàn)狀及發(fā)展趨勢1.2.1國外研究現(xiàn)狀國外對于ZigBee技術(shù)的研究較早,技術(shù)也更加成熟。ZigBee聯(lián)盟成立于2002年8月份,為推動ZigBee技術(shù)的發(fā)展,Ember、Freescale、Honeywell、Mistubishi/Mtotrola、Philips和Sansung等公司共同成立了ZigBee聯(lián)盟(ZigBeeAlliance)?,F(xiàn)如今已經(jīng)吸引了上百家芯片公司、無線設(shè)備公司和開發(fā)商的加入,其中包括有去多IC設(shè)計、家電、通訊設(shè)備、IP服務(wù)提供、玩具等產(chǎn)商。目前,該聯(lián)盟已經(jīng)包括好過150多家會員。ZigBee的研究主要集中于硬件和軟件2個方面。硬件方面,目前在2.4GHz的I芯片,以國外的Chipcon市場占有率較高,其RF芯片CC2420搭配AtmelAVR8bits微處理器的平臺,也是很多數(shù)人接觸道德ZigBee的第一個開發(fā)平臺。Chipcon已在2005年第3季推出型號為CC2430的系統(tǒng)芯片(soc),包含RF與微處理器,大大減低了未來ZIgBee相關(guān)產(chǎn)品的成本,簡化設(shè)計產(chǎn)品周期。2.4GHz的RF芯片廠商Freescale,也又漸漸迎頭趕上的趨勢。其IXII芯片公分三種型號:MCI3191、MCI3192和MCI3193,搭配不同的協(xié)議軟件,提供給廠商進行不同產(chǎn)品的開發(fā)。軟件方面,國際上已經(jīng)有很多公司提供ZigBeeStack。例如,Ember、AirBee、Figure8Wireless等,其中以Figure8Wireless(F8W)所設(shè)計的Z.Stack最負盛名。Chipcon把F8W買下之后,是的Chipcon成為ZIgBee的完全解決方案的提供者。Fresscale也是搭配F8W的Z.Stack。這樣,ChipconCC24Z.Stack以及Freescalel3193+Z.Stack都成為ZigBee的開發(fā)的黃金平臺。1.2.2國內(nèi)研究現(xiàn)狀國內(nèi)ZigBee的研究起步較晚,國內(nèi)市場主要由國外占領(lǐng)。現(xiàn)狀國內(nèi)還未見成熟的自主研制的ZigBee產(chǎn)品,只是有一些研究性和簡單應(yīng)用的文章出現(xiàn)在期刊雜志。但是隨著技術(shù)的發(fā)展,很多高校和研究機構(gòu)已經(jīng)開始無線組網(wǎng)技術(shù)的研究和應(yīng)用。像中科院計算所的寧波分所就在專業(yè)從事無線技術(shù)的研究,側(cè)重于無線網(wǎng)絡(luò)化的智能傳感器,計算所自主開發(fā)出了低功耗的CPU、多點網(wǎng)絡(luò)動態(tài)組網(wǎng)拓撲協(xié)議、網(wǎng)絡(luò)節(jié)點管理軟件。國內(nèi)的一些個大學(xué),如山東大學(xué)、浙江大學(xué)也在進行ZigBee組網(wǎng)和應(yīng)用的研究,利用國外廠商的開發(fā)平臺和芯片創(chuàng)建ZigBee網(wǎng)絡(luò),并且應(yīng)用在智能家居、物流管理方面。相信隨著無線技術(shù)的研究的深入,將有更多的國產(chǎn)的ZigBee產(chǎn)品。1.2.3研究方向ZigBee路由協(xié)議是基于AODV專用網(wǎng)絡(luò)路南協(xié)議來實現(xiàn)的。ZigBee路由器主要的功能是:路徑的開發(fā)和選擇、路徑保持維護、路徑期滿處理。Z-Stack提供了完善高效的路由算法,兵器路由對對于應(yīng)用層來說是完全透明的。用戶在實現(xiàn)路由算法時,主要通過路由記錄表的配置來實現(xiàn),這個重要的配置文件是fSwConfig.c用戶可以通過配置文件中的ROUTE_EXPIRY_TIME配置路徑滿期時間,通過MAX_RTG_ENTRIES配置路由表的大小,通過MAX_TEQ_ENTRIES配置并發(fā)查找路徑的大小。另基于ZigBee技術(shù)的傳感器網(wǎng)絡(luò)應(yīng)用非常廣泛,可以幫助人們更好地實現(xiàn)生活夢想。ZigBee技術(shù)應(yīng)用在數(shù)字家庭中,可使人們隨時了解家里的電子設(shè)備狀況,并可用于對家中病人的監(jiān)控,觀察病人狀況是否正常以便作出反應(yīng)。ZigBee傳感器網(wǎng)絡(luò)用語樓宇自動化可減低運營成本。如:檢點里遍布空調(diào)供暖(HVAC)設(shè)備,如果在每臺空調(diào)設(shè)備上加上ZigBee節(jié)點,就能對這些空調(diào)系統(tǒng)進行實時控制,節(jié)約能源消耗。此外,通過在手機上集成ZigBee芯片,可將手機作為ZigBee傳感器網(wǎng)絡(luò)的網(wǎng)關(guān),實現(xiàn)對智能家庭的自動化控制、進行移動商務(wù)(利用手機購物)等諸多功能。據(jù)BobHeile介紹,目前意大利TIM移動公司已經(jīng)推出了基于ZigBee技術(shù)的Z-sim卡,用于移動電話與電視機頂盒、計算機、家用電器之間的通信及停車場收費等。
1.3設(shè)計概要該智能小車是一輛雙輪驅(qū)動的小車。通過ATmega16主控芯片控制傳感器輸入輸出的信號;使用L298N做為電機驅(qū)動;ZigBee作為無線通訊裝置;HJ-IR2紅外傳感器用于發(fā)射和接收紅外線。以實現(xiàn)無線智能小車的無線操控以及智能避障功能。本論文主要簡述了無線智能小車中所使用的部分技術(shù),即:QT和ZigBee技術(shù)。并且詳細介紹了ZigBee串口通訊程序的編寫流程。最后,介紹了ZigBee模塊電路的各個接口,以方便最終智能小車的組裝。
2技術(shù)簡介2.1QT簡介2.1.1QT概念及其主要模塊QT是一個1991年由奇趣科技開發(fā)的多平臺的C++圖形用戶界面應(yīng)用程序框架。廣泛用于開發(fā)GUI程序,這種情況下又被稱為部件工具箱。也可用于開發(fā)非GUI程序,比如控制臺工具和服務(wù)器。它是Digia公司的產(chǎn)品。QT使用標(biāo)準(zhǔn)的C++和特殊的代碼生成擴展(稱為元對象編譯器(MetaObjectCompiler,moc))以及一些宏。通過語言綁定,其他的編程語言也可以使用QT。QT是自由且開放源代碼的軟件,在GNU較寬松公共許可證條款下發(fā)布。所有版本都支持廣泛的編譯器,包括GCC的C++編譯器和VisualStudio。它提供給應(yīng)用程序開發(fā)者建立藝術(shù)級的圖形用戶界面所需的所用功能。Qt是完全面向?qū)ο蟮暮苋菀讛U展,并且允許真正地組件編程。自從1996年早些時候,Qt進入商業(yè)領(lǐng)域,它已經(jīng)成為全世界范圍內(nèi)數(shù)千種成功的應(yīng)用程序的基礎(chǔ)。經(jīng)過多年發(fā)展,Qt不但擁有了完善的C++圖形庫,而且近年來的版本逐漸集成了數(shù)據(jù)庫、OpenGL庫、多媒體庫、網(wǎng)絡(luò)、腳本庫、XML庫、WebKit庫等等,其核心庫也加入了進程間通信、多線程等模塊,極大的豐富了Qt開發(fā)大規(guī)模復(fù)雜跨平臺應(yīng)用程序的能力。QT的主要模塊有圖形界面、信號與槽、布局管理、圖形工具、障礙環(huán)境、語言系統(tǒng)、線程支持、言語綁定等模塊。2.1.2QT的發(fā)展歷史1996OctKDE組織成立1998Apr05Trolltech的程序員在5天之內(nèi)將Netscape5.0從Motif移植到Qt上1998Apr08KDEFreeQt基金會成立1998Jul09Qt1.40發(fā)布1998Jul12KDE1.0發(fā)布1999Mar04QPL1.0發(fā)布1999Mar12Qt1.44發(fā)布1999Jun25Qt2.0發(fā)布1999Sep13KDE1.1.2發(fā)布2000Mar20嵌入式Qt發(fā)布2000Sep06Qt2.2發(fā)布2000Oct05Qt2.2.1發(fā)布2000Oct30Qt/Embedded開始使用GPL宣言2000Sep04Qtfreeedition開始使用GPL2008Nokia從Trolltech公司收購Qt,并增加LGPL的授權(quán)模式2011Digia從Nokia收購了Qt的商業(yè)版權(quán),從此Nokia負責(zé)QtonMobile,QtCommercial由Digia負責(zé),根據(jù)最新消息,NOKIA已經(jīng)停止Meltemi系統(tǒng)開發(fā),QT部門被解散2012Aug09作為非核心資產(chǎn)剝離計劃的一部分,諾基亞宣布將Qt軟件業(yè)務(wù)出售給芬蘭IT服務(wù)公司Digia。2013年7月3日,Digia公司Qt開發(fā)團隊在其官方博客上宣布Qt5.1正式版發(fā)布。2013年12月11日,Digia公司Qt開發(fā)團隊宣布Qt5.2正式版發(fā)布。2014年4月,Digia公司Qt開發(fā)團隊宣布QtCreator3.1.0正式版發(fā)布。2.1.3QT主要優(yōu)勢QT的主要優(yōu)勢有:(1)優(yōu)良的跨平臺特性:Qt支持下列操作系統(tǒng):MicrosoftWindows95/98,MicrosoftWindowsNT,Linux,Solaris,SunOS,HP-UX,DigitalUNIX(OSF/1,Tru64),Irix,F(xiàn)reeBSD,BSD/OS,SCO,AIX,OS390,QNX等等。(2)面向?qū)ο螅篞t的良好封裝機制使得Qt的模塊化程度非常高,可重用性較好,對于用戶開發(fā)來說是非常方便的。Qt提供了一種稱為signals/slots的安全類型來替代callback,這使得各個元件之間的協(xié)同工作變得十分簡單。(3)豐富的API:Qt包括多達250個以上的C++類,還提供基于模板的collections,serialization,file,I/Odevice,directorymanagement,date/time類。甚至還包括正則表達式的處理功能。(4)支持2D/3D圖形渲染,支持OpenGL。(5)大量的開發(fā)文檔。(6)XML支持。2.1.4QT的主要模塊經(jīng)過多年發(fā)展,Qt不但擁有了完善的C++圖形庫,而且近年來的版本逐漸集成了數(shù)據(jù)庫、OpenGL庫、多媒體庫、網(wǎng)絡(luò)、腳本庫、XML庫、WebKit庫等等,其核心庫也加入了進程間通信、多線程等模塊,極大的豐富了Qt開發(fā)大規(guī)模復(fù)雜跨平臺應(yīng)用程序的能力,真正意義上實現(xiàn)了其研發(fā)宗旨“CodeLess;CreateMore;DeployAnywhere.”。由于各家編譯器良莠不齊。Qt本身為了跨平臺兼容性,只能以“最低兼容規(guī)格”來設(shè)計。因此Qt必須具備RTTI、動態(tài)創(chuàng)建、Persistence/Serialization的基礎(chǔ)建設(shè),以及建構(gòu)出自己的容器組件。1.圖形界面Qt的圖形用戶界面的基礎(chǔ)是QWidget。Qt中所有類型的GUI組件如按鈕、標(biāo)簽、工具欄等都派生自QWidget,而QWidget本身則為QObject的子類。Widget負責(zé)接收鼠標(biāo),鍵盤和來自窗口系統(tǒng)的其他事件,并描繪了自身顯示在屏幕上。每一個GUI組件都是一個widget,widget還可以作為容器,在其內(nèi)包含其他Widget。QWidget不是一個抽象類型。并且可以被放置在一個已存在的用戶界面中;若是Widget沒有指定父Widget,當(dāng)它顯示時就是一個獨立的視窗、或是一個頂層widget。QWidget顯示能力包含了透明化及Double-Buffering。Qt提供一種托管機制,當(dāng)Widget于創(chuàng)建時指定父對象,就可把自己的生命周期交給上層對象管理,當(dāng)上層對象被釋放時,自己也被釋放。確保對象不再使用時都會被刪除。2.信號與槽Qt利用信號與槽(signals/slots)機制取代傳統(tǒng)的callback來進行對象之間的溝通。當(dāng)操作事件發(fā)生的時候,對象會發(fā)提交一個信號(signal);而槽(slot)則是一個函數(shù)接受特定信號并且運行槽本身設(shè)置的動作。信號與槽之間,則通過QObject的靜態(tài)方法connect來鏈接。信號在任何運行點上皆可發(fā)射,甚至可以在槽里再發(fā)射另一個信號,信號與槽的鏈接不限定為一對一的鏈接,一個信號可以鏈接到多個槽或多個信號鏈接到同一個槽,甚至信號也可連接到信號。以往的callback缺乏類型安全,在調(diào)用處理函數(shù)時,無法確定是傳遞正確型態(tài)的參數(shù)。但信號和其接受的槽之間傳遞的數(shù)據(jù)型態(tài)必須要相符合,否則編譯器會提出警告。信號和槽可接受任何數(shù)量、任何型態(tài)的參數(shù),所以信號與槽機制是完全類型安全。信號與槽機制也確保了低耦合性,發(fā)送信號的類型并不知道是哪個槽會接受,也就是說一個信號可以調(diào)用所有可用的槽。此機制會確保當(dāng)在"連接"信號和槽時,槽會接受信號的參數(shù)并且正確運行。3.布局管理布局管理類型用于描述一個應(yīng)用程序的用戶界面中的Widget是如何放置。當(dāng)視窗縮放時,布局管理器會自動調(diào)整widget的大小、位置或是字號,確保他們相對的排列和用戶界面整體仍然保有可用性。Qt內(nèi)置的布局管理類型有:QHBoxLayout、QVBoxLayout、QGridLayout和QFormLayout。這些類型繼承自QLayout,但QLayout非繼承自QWidget而是直接源于QObject。他們負責(zé)widget的幾何管理。想要創(chuàng)建更復(fù)雜的版面配置,可以繼承QLayout來自定義版面配置管理員。QHBoxLayout:配置widget成橫向一列。QVBoxLayout:配置widget成垂直一行。QGridLayout:配置widget在平面網(wǎng)格。QFormLayout:配置widget用于2欄標(biāo)簽-field。4.圖形工具(1)MainWindowQt提供了下列主視窗管理和相關(guān)的用戶界面組件的類型:QMainWindow:提供一個標(biāo)準(zhǔn)的應(yīng)用程序主視窗。當(dāng)中可以包括菜單、工具欄、狀態(tài)欄、停駐組件等組件。QDockWidget:提供了一個可用于創(chuàng)建彈簧工具調(diào)色板或輔助窗口的widget。Dockwidgets可以移、關(guān)閉、浮動為外部視窗。QToolBar:提供了一個通用的工具欄widget,可以放入一些不同的action有關(guān)的工具,如按鈕、下拉列表、comboboxes和spinboxes。GraphicsViewGraphicsView提供了用于管理和交互大量定制的2D圖形對象的平面以及可視化顯示對象的視圖widget,并支持縮放和旋轉(zhuǎn)功能。整個GraphicsView框架提供一個以Item為基礎(chǔ)的model-view設(shè)計。由3個主要的類型組成,分別是QGrphicsItem、QGraphicsScene和QGraphicsView。若干View可以顯示一個Scene,Scene中則包含不同幾何形狀的Item。該框架包括一個事件傳播的架構(gòu),讓在Scene上的Item有雙精度的交互能力。Item可以處理鍵盤事件,鼠標(biāo)按下、移動、釋放和雙擊事件,他們也可以跟蹤鼠標(biāo)移動。GraphicsView使用BSP(二進制空間劃分)樹可非常快速地找到Item,因此即使是包含百萬個Item的大型Scene,也能實時圖形化顯示。KDE中的Plasma亦是基于GraphicsView實現(xiàn)的。5.障礙環(huán)境無障礙環(huán)境需要無障礙兼容的應(yīng)用程序、輔助技術(shù)、以及輔助工具之間的合作。應(yīng)用程序通常不會直接溝通輔助工具,而是通過一個輔助技術(shù),這是一個應(yīng)用程序和工具之間信息交流的橋梁。用戶界面元素相關(guān)信息,例如按鈕和滾動條,使用輔助技術(shù)來顯示。Qt支持Windows上的MicrosoftActiveAccessibility(MSAA)和MacOSX上MacOSXAccessibility。無障礙兼容的應(yīng)用程序稱為AT-Servers,而輔助工具被稱為AT-Clients。Qt應(yīng)用程序通常會是一個AT-Server,但特別的程序也可能如同AT-Client方式工作。6.語言系統(tǒng)Qt的字體引擎能夠在同一時間正確的顯示各種不同的書寫系統(tǒng)。并且Qt內(nèi)部使用Unicode編碼來存儲文字。Qt的多國語言支持技術(shù),可以讓應(yīng)用程序中的文字全部使用英文撰寫,能夠在完全不需修改程序的狀況下,改變整個應(yīng)用程序中的文字為另一個語系的文字,并能夠協(xié)助處理不同語言的單、復(fù)數(shù)問題。獨立的翻譯文件使得新增支持語言相當(dāng)容易,同時翻譯文件(.ts)為XML格式可以直接編輯或使用QtLiguist進行翻譯,可讓無程序開發(fā)能力的翻譯者亦能獨自完成翻譯。Qt附帶的工具程序就能夠自動抽取需要翻譯的文字產(chǎn)生翻譯文件。7.線程支持Qt的線程支持是獨立于平臺的線程類型,采用信號與槽機制,實現(xiàn)類型安全的線程間通訊。這使得它易于開發(fā)具可移植性的多線程Qt應(yīng)用程序。并能充分利用多核架構(gòu),獲得最佳運行性能,還能根據(jù)可用的處理器內(nèi)核數(shù)自動調(diào)整使用的線程數(shù)。多線程程序設(shè)計也是一個執(zhí)行耗時操作而不會凍結(jié)用戶界面的有效典范。8.語言綁定除了C++外,Qt還為其它多種計算機語言提供了應(yīng)用程序接口,您也可以使用這些語言開發(fā)Qt應(yīng)用程序。2.2ZigBee簡介2.2.1ZigBee概念ZigBee是一種基于標(biāo)準(zhǔn)的遠程監(jiān)控、控制和傳感器網(wǎng)絡(luò)應(yīng)用技術(shù)。為滿足人們對支持低數(shù)據(jù)速率、低功耗、安全性和可靠性,而且經(jīng)濟高效的標(biāo)準(zhǔn)型無線網(wǎng)絡(luò)解決方案的需求,ZigBee標(biāo)準(zhǔn)應(yīng)運而生。Zigbee是部署無線傳感器網(wǎng)絡(luò)的新技術(shù)。它是一種短距離、低速率無線網(wǎng)絡(luò)技術(shù),是一種介于無線標(biāo)記技術(shù)和BlueTooth之間的技術(shù)提案。Zigbee一詞源自蜜蜂群在發(fā)現(xiàn)花粉位置時,通過跳ZigZag形舞蹈來告知同伴,達到交換信息的目的。借此稱呼一種專注于低功耗、低成本、低復(fù)雜度、低速率的近程無線網(wǎng)絡(luò)通信技術(shù)。ZigBee是一種低速短距離傳輸?shù)臒o線網(wǎng)絡(luò)協(xié)議。ZigBee協(xié)議從下到上分別為物理層(PHY)、媒體訪問控制層(MAC)、傳輸層(TL)、網(wǎng)絡(luò)層(NWK)、應(yīng)用層(APL)等。其中物理層和媒體訪問控制層遵循IEEE802.15.4標(biāo)準(zhǔn)的規(guī)定。2.2.2ZigBee技術(shù)特點(1)數(shù)據(jù)傳輸速率低:10Kb/s~250Kb/s,專注于低速率傳輸應(yīng)用。(2)功耗低:在低功耗待機模式下,兩節(jié)普通5號電池可使用6~24個月。(3)成本低:Zigbee數(shù)據(jù)傳輸速率低,協(xié)議簡單,大大降低了成本。(4)網(wǎng)絡(luò)容量大:網(wǎng)絡(luò)可容納6萬多個設(shè)備。(5)延時短:典型搜索設(shè)備時延為30ms,休眠激活時延為15ms,活動設(shè)備信道接入時延為15ms。(6)網(wǎng)絡(luò)的自組織、自愈能力強,通信可靠。(7)數(shù)據(jù)安全:Zigbee提供了數(shù)據(jù)完整性檢查和健全功能,采用AES-128加密算法(美國新加密算法,是目前最好的文本加密算法之一),各個應(yīng)用可靈活確定其安全屬性。(8)ZigBee技術(shù)在低功耗、低成本和組網(wǎng)能力具有無可比擬的應(yīng)用優(yōu)勢。2.2.3ZigBee的應(yīng)用及前景隨著國內(nèi)經(jīng)濟的高速發(fā)展,城市的規(guī)模在不斷擴大,尤其是各種交通工具的增長更迅速,從而使城市交通需求與供給的矛盾日益突出,而單靠擴大道路交通基礎(chǔ)設(shè)施來緩解矛盾的做法已難以為繼。在這種情況下,智能公交系統(tǒng)(AdvancedPublicTransportationSystems,APTS)也就應(yīng)運而生,并且成為國內(nèi)研究的熱點。在智能公交系統(tǒng)所涉及的各種技術(shù)中,無線通信技術(shù)尤為引人注目。而ZigBee作為一種新興的短距離、低速率的無線通信技術(shù),更是得到了越來越廣泛的關(guān)注和應(yīng)用。市場上也出現(xiàn)了大量與ZigBee相關(guān)的各種產(chǎn)品,根據(jù)中國物聯(lián)網(wǎng)校企聯(lián)盟的統(tǒng)計分析表明:ZigBee雖然廣受推崇,但是在數(shù)據(jù)中,推出ZigBee相關(guān)產(chǎn)品的中小型企業(yè)在2012年的發(fā)展并不可觀。其中,比較有競爭力的ZigBee解決方案主要有下面幾種:(1)Freescale:MC1319X平臺;(2)Chipcon:SoC解決方案CC2530;(3)Ember:EM250ZigBee系統(tǒng)晶片及EM260網(wǎng)絡(luò)處理器;(4)Jennic的JN5121芯片;經(jīng)過市場調(diào)研,發(fā)現(xiàn)Freescale的MC1319X平臺功耗低、價格低廉、硬件集成度高,方便二次開發(fā),射頻通信系統(tǒng)的穩(wěn)定性高。所以,在本文的設(shè)計中選用了MaxStream公司與ZigBee兼容的以FreescaleMC1319x芯片組為核心的XBeeProRF模塊。下面主要介紹XbeePro的特性、接口應(yīng)用、操作模式以及在智能公交無線網(wǎng)絡(luò)中的應(yīng)用。1.XBeePro模塊的特性與接口XBee模塊的基本性能參數(shù)如下:(1)發(fā)送功率:100mW;(2)接收靈敏度:-92dBm;(3)室內(nèi)傳輸距離為100m,室外傳輸距離為1500m;(4)RF數(shù)據(jù)傳輸速率為250kbps;(5)在3.3V電源下,發(fā)送電流為215mA,接收電流為55mA:(6)在網(wǎng)絡(luò)性能方面,具有DSS(直接序列擴頻)功能,可以組成對等網(wǎng)、點對點及點對多點網(wǎng)絡(luò),具有12個軟件可選的直接序列信道,每個信道有65000個可用網(wǎng)絡(luò)地址。XBeePro模塊體積小,功耗低,接口簡單,容易使用,非常適用于低數(shù)據(jù)速率的短距離通信應(yīng)用,尤其是無線傳感網(wǎng)絡(luò)的設(shè)計應(yīng)用。XBeePro模塊還提供有免費X-CTU測試軟件以便能夠輕松測試和配置網(wǎng)絡(luò)。該模塊還可以通過下載該公司最新的固件(Firmware),使用戶在使用原有硬件模塊的基礎(chǔ)上,獲得最新的功能,從而為設(shè)計提供了極大的靈活性。2.XBeePro模塊的操作模式XBeePro有空模式、接收模式、發(fā)送模式、睡眠模式和命令模式等5種操作模式,如圖3所示。每一種操作模式都有透明方式和應(yīng)用程序接口(API)方式兩種操作方式。當(dāng)工作在透明方式時,模塊可起到替代串口線的作用,并以字節(jié)為單位來處理各種信息;當(dāng)工作在API方式下,所有進出模塊的數(shù)據(jù)均被包含在定義模塊的操作和事件的幀結(jié)構(gòu)中。3.XBeePro模塊在智能公交系統(tǒng)中的應(yīng)用在站牌處通常會有多輛公交車同時到達,一個站牌對應(yīng)多輛公交車,適合使用星狀網(wǎng)布線網(wǎng)絡(luò)。但為了保證網(wǎng)絡(luò)的可靠性,當(dāng)公交車站牌外的通道阻塞時,可以通過其它公交車路由節(jié)點轉(zhuǎn)發(fā)到站牌,本設(shè)計采用網(wǎng)狀(Mesh)網(wǎng)模型??蓪⒎植荚诠痪€路上的電子站牌配置為協(xié)調(diào)器,而將到達的公交車配置為路由器。當(dāng)站牌上ZigBee網(wǎng)絡(luò)協(xié)調(diào)器選擇一個信道和PANID并啟動時,便建立了一個ZigBee個人局網(wǎng)(PAN)。一旦協(xié)調(diào)器已啟動PAN,便可允許路由器和終端設(shè)備結(jié)點加入PAN。路由器加入PAN時,將收到一個16位的網(wǎng)絡(luò)地址,并且能夠發(fā)送和接收來自PAN內(nèi)其他設(shè)備的數(shù)據(jù)。PAN協(xié)調(diào)器的網(wǎng)絡(luò)地址總是0。由于站牌上ZigBee模塊的網(wǎng)絡(luò)物理地址是唯一的,可以通過物理地址向站牌發(fā)送信息。
3CC2530解決方案3.1描述CC2530是用于IEEE802.15.4、ZigBee和RF4CE應(yīng)用的一個真正的片上系統(tǒng)(SoC)解決方案。它能夠以非常低的總的材料成本建立強大的網(wǎng)絡(luò)節(jié)點。CC2530結(jié)合了領(lǐng)先的RF收發(fā)器的優(yōu)良性能,業(yè)界標(biāo)準(zhǔn)的增強型8051CPU,系統(tǒng)內(nèi)可編程閃存,8-KBRAM和許多其他強大的功能。CC2530有四種不同的閃存版本:CC2530F32/64/128/256,分別具有32/64/128/256的閃存。CC2530具有不同的運行模式,使得它尤其適應(yīng)超低功耗要求的系統(tǒng)。運行模式之間的轉(zhuǎn)換時間短進一步確保了低能源消耗。CC2530F256結(jié)合了德州儀器的業(yè)界領(lǐng)先的黃金單元協(xié)議棧(Z-StackTM),提供了一個強大和完整的ZigBee解決方案。CC2530F256結(jié)合了德州儀器的黃金單元,更好地提供了一個強大和完整的遠程控制解決方案。3.2引腳描述CC2530引腳如圖3-1所示,引腳的簡短描述如表3-1所示。圖3-1引腳頂視圖注意:暴露的接地襯墊必須連接到一個堅固的接地面,因為這是芯片的接地連接點。表3-1引腳描述引腳名稱引腳引腳類型描述AVDD128電源(模擬)2-V-3.6-V模擬電源連接AVDD227電源(模擬)2-V-3.6-V模擬電源連接AVDD324電源(模擬)2-V-3.6-V模擬電源連接AVDD429電源(模擬)2-V-3.6-V模擬電源連接AVDD521電源(模擬)2-V-3.6-V模擬電源連接AVDD631電源(模擬)2-V-3.6-V模擬電源連接DCOUPL40電源(數(shù)字)1.8V數(shù)字電源去耦。不使用外部電路供應(yīng)。DVDD139電源(數(shù)字)2-V-3.6-V數(shù)字電源連接DVDD110電源(數(shù)字)2-V-3.6-V數(shù)字電源連接GND-接地接地襯墊必須連接到一個堅固的接地面。GND1,2,3,4未使用的引腳連接到GNDP0_019數(shù)字I/O端口0.0P0_118數(shù)字I/O端口0.1P0_217數(shù)字I/O端口0.2P0_316數(shù)字I/O端口0.3P0_415數(shù)字I/O端口0.4P0_514數(shù)字I/O端口0.5P0_613數(shù)字I/O端口0.6P0_712數(shù)字I/O端口0.7P1_011數(shù)字I/O端口1.0-20-mA驅(qū)動能力P1_19數(shù)字I/O端口1.1-20-mA驅(qū)動能力P1_28數(shù)字I/O端口1.2P1_37數(shù)字I/O端口1.3P1_46數(shù)字I/O端口1.4P1_55數(shù)字I/O端口1.5P1_638數(shù)字I/O端口1.6P1_737數(shù)字I/O端口1.7P2_036數(shù)字I/O端口2.0P2_135數(shù)字I/O端口2.1P2_234數(shù)字I/O端口2.2P2_3/33數(shù)字I/O端口2.3/32.768kHzXOSCP2_4/32數(shù)字I/O端口2.4/32.768kHzXOSCRBIAS30模擬I/O參考電流的外部精密偏置電阻RESET_N20數(shù)字輸入復(fù)位,活動到低電平RF_N26RFI/ORX期間負RF輸入信號到LNARF_P25RFI/ORX期間正RF輸入信號到LNAXOSC_Q122模擬I/O32-MHz晶振引腳1或外部時鐘輸入XOSC_Q223模擬I/O32-MHz晶振引腳23.3電路描述圖3-2CC2530方框圖圖3-2是的方框圖。這些模塊大致可以分為三類:CPU和內(nèi)存相關(guān)的模塊;外設(shè)、時鐘和電源管理相關(guān)的模塊,以及無線電相關(guān)的模塊。下面給出了圖中出現(xiàn)的各個模塊的簡短描述。3.2.1CPU和內(nèi)存CC253x芯片系列中使用的8051CPU內(nèi)核是一個單周期的8051兼容內(nèi)核。它有三種不同的內(nèi)存訪問總線(SFR,DATA和CODE/XDATA),單周期訪問SFR,DATA和主SRAM。它還包括一個調(diào)試接口和一個18輸入擴展中斷單元。中斷控制器總共提供了18個中斷源,分為六個中斷組,每個與四個中斷優(yōu)先級之一相關(guān)。當(dāng)設(shè)備從活動模式回到空閑模式,任一中斷服務(wù)請求就被激發(fā)。一些中斷還可以從睡眠模式(供電模式1-3)喚醒設(shè)備。內(nèi)存仲裁器位于系統(tǒng)中心,因為它通過SFR總線把CPU和DMA控制器和物理存儲器以及所有外設(shè)連接起來。內(nèi)存仲裁器有四個內(nèi)存訪問點,每次訪問可以映射到三個物理存儲器之一:一個8-KB、閃存存儲器和XREG/SFR寄存器。它負責(zé)執(zhí)行仲裁,并確定同時訪問同一個物理存儲器之間的順序。8-KBSRAM映射到DATA存儲空間和部分XDATA存儲空間。8-KBSRAM是一個超低功耗的SRAM,即使數(shù)字部分掉電(供電模式2和3)也能保留其內(nèi)容。這是對于低功耗應(yīng)用來說很重要的一個功能。32/64/128/256KB閃存塊為設(shè)備提供了內(nèi)電路可編程的非易失性程序存儲器,映射到XDATA存儲空間。除了保存程序代碼和常量以外,非易失性存儲器允許應(yīng)用程序保存必須保留的數(shù)據(jù),這樣設(shè)備重啟之后可以使用這些數(shù)據(jù)。使用這個功能,例如可以利用已經(jīng)保存的網(wǎng)絡(luò)具體數(shù)據(jù),就不需要經(jīng)過完全啟動、網(wǎng)絡(luò)尋找和加入過程。3.2.2時鐘和電源管理、外設(shè)數(shù)字內(nèi)核和外設(shè)由一個1.8-V低差穩(wěn)壓器供電。它提供了電源管理功能,可以實現(xiàn)使用不同供電模式的長電池壽命的低功耗運行。有五種不同的復(fù)位源來復(fù)位設(shè)備。CC2530包括許多不同的外設(shè),允許應(yīng)用程序設(shè)計者開發(fā)先進的應(yīng)用。調(diào)試接口執(zhí)行一個專有的兩線串行接口,用于內(nèi)電路調(diào)試。通過這個調(diào)試接口,可以執(zhí)行整個閃存存儲器的擦除、控制使能哪個振蕩器、停止和開始執(zhí)行用戶程序、執(zhí)行8051內(nèi)核提供的指令、設(shè)置代碼斷點,以及內(nèi)核中全部指令的單步調(diào)試。使用這些技術(shù),可以很好地執(zhí)行內(nèi)電路的調(diào)試和外部閃存的編程。設(shè)備含有閃存存儲器以存儲程序代碼。閃存存儲器可通過用戶軟件和調(diào)試接口編程。閃存控制器處理寫入和擦除嵌入式閃存存儲器。閃存控制器允許頁面擦除和4字節(jié)編程。I/O控制器負責(zé)所有通用I/O引腳。CPU可以配置外設(shè)模塊是否控制某個引腳或它們是否受軟件控制,如果是的話,每個引腳配置為一個輸入還是輸出,是否連接襯墊里的一個上拉或下拉電阻。CPU中斷可以分別在每個引腳上使能。每個連接到I/O引腳的外設(shè)可以在兩個不同的I/O引腳位置之間選擇,以確保在不同應(yīng)用程序中的靈活性。系統(tǒng)可以使用一個多功能的五通道DMA控制器,使用XDATA存儲空間訪問存儲器,因此能夠訪問所有物理存儲器。每個通道(觸發(fā)器、優(yōu)先級、傳輸模式、尋址模式、源和目標(biāo)指針和傳輸計數(shù))用DMA描述符在存儲器任何地方配置。許多硬件外設(shè)(AES內(nèi)核、閃存控制器、USART、定時器、ADC接口)通過使用DMA控制器在SFR或XREG地址和閃存/SRAM之間進行數(shù)據(jù)傳輸,獲得高效率操作。定時器1是一個16位定時器,具有定時器/PWM功能。它有一個可編程的分頻器,一個16位周期值,和五個各自可編程的計數(shù)器/捕獲通道,每個都有一個16位比較值。每個計數(shù)器/捕獲通道可以用作一個PWM輸出或捕獲輸入信號邊沿的時序。它還可以配置在IR產(chǎn)生模式,計算定時器3周期,輸出是ANDed,定時器3的輸出是用最小的CPU互動產(chǎn)生調(diào)制的消費型IR信號。MAC定時器(定時器2)是專門為支持IEEE802.15.4MAC或軟件中其他時槽的協(xié)議設(shè)計。定時器有一個可配置的定時器周期和一個8位溢出計數(shù)器,可以用于保持跟蹤已經(jīng)經(jīng)過的周期數(shù)。一個16位捕獲寄存器也用于記錄收到/發(fā)送一個幀開始界定符的精確時間,或傳輸結(jié)束的精確時間,還有一個16位輸出比較寄存器可以在具體時間產(chǎn)生不同的選通命令(開始RX,開始TX,等等)到無線模塊。定時器3和定時器4是8位定時器,具有定時器/計數(shù)器/PWM功能。它們有一個可編程的分頻器,一個8位的周期值,一個可編程的計數(shù)器通道,具有一個8位的比較值。每個計數(shù)器通道可以用作一個PWM輸出。睡眠定時器是一個超低功耗的定時器,計算32-kHz晶振或32-kHzRC振蕩器的周期。睡眠定時器在除了供電模式3的所有工作模式下不斷運行。這一定時器的典型應(yīng)用是作為實時計數(shù)器,或作為一個喚醒定時器跳出供電模式1或2。ADC支持7到12位的分辨率,分別在30kHz或4kHz的帶寬。DC和音頻轉(zhuǎn)換可以使用高達八個輸入通道(端口0)。輸入可以選擇作為單端或差分。參考電壓可以是內(nèi)部電壓、AVDD或是一個單端或差分外部信號。ADC還有一個溫度傳感輸入通道。ADC可以自動執(zhí)行定期抽樣或轉(zhuǎn)換通道序列的程序。隨機數(shù)發(fā)生器使用一個16位來LFSR產(chǎn)生偽隨機數(shù),這可以被CPU讀取或由選通命令處理器直接使用。例如隨機數(shù)可以用作產(chǎn)生隨機密鑰,用于安全。AES加密/解密內(nèi)核允許用戶使用帶有128位密鑰的AES算法加密和解密數(shù)據(jù)。這一內(nèi)核能夠支持IEEE802.15.4MAC安全、ZigBee網(wǎng)絡(luò)層和應(yīng)用層要求的AES操作。 一個內(nèi)置的看門狗允許CC2530在固件掛起的情況下復(fù)位自身。當(dāng)看門狗定時器由軟件使能,它必須定期清除;否則,當(dāng)它超時就復(fù)位它就復(fù)位設(shè)備。或者它可以配置用作一個通用32-kHz定時器。USART0和USART1每個被配置為一個SPI主/從或一個UART。它們?yōu)镽X和TX提供了雙緩沖,以及硬件流控制,因此非常適合于高吞吐量的全雙工應(yīng)用。每個都有自己的高精度波特率發(fā)生器,因此可以使普通定時器空閑出來用作其他用途。3.2.3無線設(shè)備具有一個兼容無線收發(fā)器。內(nèi)核控制模擬無線模塊。另外,它提供了和無線設(shè)備之間的一個接口,這使得可以發(fā)出命令,讀取狀態(tài),自動操作和確定無線設(shè)備事件的順序。無線設(shè)備還包括一個數(shù)據(jù)包過濾和地址識別模塊。
4串口通訊程序的編寫4.1編程環(huán)境在windowsXP編程環(huán)境下,在QtCreator中進行。如果在Linux下或直接用源碼編寫,程序稍有不同,需要改動。在Qt中并沒有特定的串口控制類,大部分人使用的是第三方的qextserialport類。可以在一下網(wǎng)站下載。下載文件為qextserialport-1.2win-alpha.zip。/projects/qextserialport/files/在windows下只需要使用其中的6個文件:qextserialbase.cpp和qextserialbase.h,qextserialport.cpp和qextserialport.h,win_qextserialport.cpp和win_qextserialport.h。4.2串口操作流程4.2.1設(shè)置串口參數(shù)在win_qextserialport.cpp文件中,在最后一個構(gòu)造函數(shù)里,我們可以進行串口的初始化。如:波特率,數(shù)據(jù)位,奇偶校驗,停止位,數(shù)據(jù)流控制等。Win_QextSerialPort::Win_QextSerialPort(constQString&name,constPortSettings&settings,QextSerialBase::QueryModemode){Win_Handle=INVALID_HANDLE_VALUE;setPortName(name);setBaudRate(settings.BaudRate);setDataBits(settings.DataBits);setStopBits(settings.StopBits);setParity(settings.Parity);setFlowControl(settings.FlowControl);setTimeout(settings.Timeout_Millisec);setQueryMode(mode); init();}它共有三個參數(shù)。第一個參數(shù)constQString&name,是串口的名字,QString類型,我們可以用串口1即“com1”。第二個參數(shù)constPortSettings&settings,經(jīng)過查找可以看出PortSettings是一個結(jié)構(gòu)體,是多個枚舉變量,它定義了串口初始化的各個參數(shù),這個結(jié)構(gòu)體可以實現(xiàn)串口參數(shù)的設(shè)置。第三個參數(shù)QextSerialBase::QueryModemode,它也是枚舉變量,可以完成串口的選擇和串口的初始化。4.2.2選擇串口如windows下的串口1為“com1”,Linux下為“ttyS0”等,并打開串口。4.2.3讀或?qū)懘诓榭磜in_qextserialport.h文件,我們會發(fā)現(xiàn)Win_QextSerialPort類繼承自QextSerialBase類。查看qextserialbase.h文件,我們會發(fā)現(xiàn)QextSerialBase類繼承自QIODevice類。在QIODevice類中,有enumOpenModeFlag{NotOpen,ReadOnly,WriteOnly,ReadWrite,...,Unbuffered},virtualboolopen(OpenModemode)等內(nèi)容。所以,用這個類里面的函數(shù)進行串口操作。程序如下:myCom->open(QIODevice::ReadWrite);connect(myCom,SIGNAL(readyRead()),this,SLOT(readMyCom()));voidMainWindow::readMyCom()//自己寫的讀串口函數(shù){QByteArraytemp=myCom->readAll();ui->textBrowser->insertPlainText(temp);}我們調(diào)用了其中的open函數(shù),用ReadWrite可讀寫的方式進行打開串口,這個open函數(shù)在win_qextserialport.cpp中被重定義了。接下來關(guān)聯(lián)信號readyRead(),和自己寫的槽函數(shù)readMyCom(),當(dāng)串口有數(shù)據(jù)傳來時進行讀串口操作。我們調(diào)用readAll()函數(shù),讀取串口中所有數(shù)據(jù),在上面可以看到其返回值是QByteArray類型。調(diào)用insertPlainText()函數(shù),是窗口上的文本瀏覽器中連續(xù)輸出數(shù)據(jù),而不是每次寫數(shù)據(jù)前都清除以前的數(shù)據(jù)。4.2.4關(guān)閉串口myCom->close();關(guān)閉串口,該函數(shù)在win_qextserialport.cpp文件中定義。4.3串口參數(shù)的設(shè)置參數(shù)PortSettings的機構(gòu)體如下:structPortSettings{BaudRateTypeBaudRate;//波特率設(shè)置,設(shè)置為9600,即程序中用BAUD9600;DataBitsTypeDataBits;//數(shù)據(jù)位設(shè)置,我們設(shè)置為8位數(shù)據(jù)位,即DATA_8;ParityTypeParity;//奇偶校驗設(shè)置,我們設(shè)置為無校驗,即PAR_NONE;StopBitsTypeStopBits;//停止位設(shè)置,我們設(shè)置為1位停止位,即STOP_1;FlowTypeFlowControl;//數(shù)據(jù)流控制設(shè)置,設(shè)置為無數(shù)據(jù)流控制,即FLOW_OFF;longTimeout_Millisec;//延時設(shè)置,我們設(shè)置為延時500ms,即500;};structPortSettingsmyComSetting={BAUD9600,DATA_8,PAR_NONE,STOP_1,FLOW_OFF,500};定義了一個結(jié)構(gòu)體變量myComSetting,并對其進行了初始化。4.4串口通訊程序打開QtCreator,新建Qt4GuiApplication,工程名設(shè)置為mycom。將上面所說的6個文件復(fù)制到工程文件夾下,在QtCreator中左側(cè)的文件列表上,鼠標(biāo)右擊工程文件夾,在彈出的菜單中選擇AddExistingFiles,選擇工程文件夾里的那6個文件,進行添加。點擊mainwindow.ui,在窗口上加入一個TextBrowser,用來顯示信息。在mainwindow.h的相應(yīng)位置添加頭文件#include"win_qextserialport.h",添加對象聲明Win_QextSerialPort*myCom;添加槽函數(shù)聲明voidreadMyCom()。在mainwindow.cpp的類的構(gòu)造函數(shù)中添加如下語句:MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(newUi::MainWindow){ui->setupUi(this);structPortSettingsmyComSetting={BAUD9600,DATA_8,PAR_NONE,STOP_1,FLOW_OFF,500};myCom=newWin_QextSerialPort("com1",myComSetting,QextSerialBase::EventDriven);myCom->open(QIODevice::ReadWrite);connect(myCom,SIGNAL(readyRead()),this,SLOT(readMyCom()));}在下面添加readMyCom()函數(shù)的定義,代碼如下:voidMainWindow::readMyCom(){QByteArraytemp=myCom->readAll();ui->textBrowser->insertPlainText(temp);}簡單的串口通信程序就完成了,下面繼續(xù)對程序進行進一步的完善。點擊mainwindow.ui,加入了“打開串口”,“關(guān)閉串口”“傳送數(shù)據(jù)”三個按鈕,加入了一個行編輯框LineEdit。它們的命名如下:“打開串口”按鈕命名為:openMyComBtn“關(guān)閉串口”按鈕命名為:closeMyComBtn“傳送數(shù)據(jù)”按鈕命名為:sendMsgBtn要傳送數(shù)據(jù)的行編輯框命名為:sendMsgLineEdit在“打開串口”按鈕上右擊,選擇Gotoslot選項,然后選擇clicked()選項,進入它的單擊事件槽函數(shù)中,將上面在構(gòu)造函數(shù)里寫的語句全部剪切到這里。然后加入幾句按鈕的狀態(tài)設(shè)置語句。voidMainWindow::on_openMyComBtn_clicked(){structPortSettingsmyComSetting= {BAUD9600,DATA_8,PAR_NONE,STOP_1,FLOW_OFF,500};myCom=newWin_QextSerialPort("com1",myComSetting,QextSerialBase::EventDriven);myCom->open(QIODevice::ReadWrite);connect(myCom,SIGNAL(readyRead()),this,SLOT(readMyCom()));ui->openMyComBtn->setEnabled(false);//打開串口后“打開串口”按鈕不可用ui->closeMyComBtn->setEnabled(true);//打開串口后“關(guān)閉串口”按鈕可用ui->sendMsgBtn->setEnabled(true);//打開串口后“發(fā)送數(shù)據(jù)”按鈕可用}在構(gòu)造函數(shù)里也添加幾句按鈕初始狀態(tài)設(shè)置語句,如下:MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(newUi::MainWindow){ui->setupUi(this);ui->closeMyComBtn->setEnabled(false);//開始“關(guān)閉串口”按鈕不可用ui->sendMsgBtn->setEnabled(false);//開始“發(fā)送數(shù)據(jù)”按鈕不可用按上面的方法進入“關(guān)閉串口”按鈕和“發(fā)送數(shù)據(jù)”按鈕的單擊事件的槽函數(shù),代碼如下:voidMainWindow::on_closeMyComBtn_clicked()//關(guān)閉串口槽函數(shù){myCom->close();//關(guān)閉串口,該函數(shù)在win_qextserialport.cpp文件中定義ui->openMyComBtn->setEnabled(true);//關(guān)閉串口后“打開串口”按鈕可用ui->closeMyComBtn->setEnabled(false);//關(guān)閉串口后“關(guān)閉串口”按鈕不可用ui->sendMsgBtn->setEnabled(false);//關(guān)閉串口后“發(fā)送數(shù)據(jù)”按鈕不可用}voidMainWindow::on_sendMsgBtn_clicked()//發(fā)送數(shù)據(jù)槽函數(shù){myCom->write(ui->sendMsgLineEdit->text().toAscii());//以ASCII碼形式將行編輯框中的數(shù)據(jù)寫入串口}這樣,串口通訊程序就完成了。5ZigBee模塊的電路5.1ZigBee第一次使用(組網(wǎng))流程模塊出廠時的默認(rèn)設(shè)置:節(jié)點類型全部為Router(從節(jié)點),PINID=0x199B,頻道=22(2460MHz)。只保持當(dāng)前模塊上電,其他模塊斷電。設(shè)置如下:1.將某一模塊設(shè)置成Coordinator,波特率:3400,PADID:1234,頻道:20。將其他剩余模塊設(shè)置成Router,波特率:38400,PADID:1234,頻道:20。如圖5-1所示.圖5-1ZigBee模塊設(shè)置設(shè)置Router的PANID后,如果該Router還沒有加入網(wǎng)絡(luò),則PANID,短地址讀取的數(shù)據(jù)為FFFE。設(shè)置完成后,使Coordinator先上電,其他Router模塊依次上電,全部模塊可自動組網(wǎng)。當(dāng)Coordinator:1長亮,1閃爍;Router:2閃爍到2長亮(或1長亮,1閃爍),表示已經(jīng)加入網(wǎng)絡(luò)。本設(shè)計中主節(jié)點與pc機相連,作為信號的發(fā)送者。從節(jié)點與小車相連,作為信號的接受者。2個節(jié)點的相連起到一個串口的作用。5.2ZigBee接收器電路ZigBee接收器電路如圖5-2所示。其中,SW1以及LED燈都不是必須的,如果要加LED燈,必須要串聯(lián)1K歐電阻。RESET_N不是必須的,最好控制,低電平復(fù)位,高電平正常運行。電源需要一個10U電容。如果MCU是5V,要加電平轉(zhuǎn)換,否則會燒壞模塊。ZigBee模塊應(yīng)用最小系統(tǒng)如圖5-3所示。ZigBee模塊各串口如圖5-4所示。圖5-2ZigBee電路圖圖5-3ZigBee模塊應(yīng)用最小系統(tǒng)圖5-4ZigBee串口圖62.4G點對點通訊模塊(無線串口)6.1概述及功能特點2.4G無線技術(shù),其頻段處于2.405GHz-2.485GHz(科學(xué)、醫(yī)藥、農(nóng)業(yè))之間。所以簡稱為2.4G無線技術(shù)。2.4GHz是工作在ISM頻段的一個頻段。ISM頻段是工業(yè)、科學(xué)和醫(yī)用頻段。一般來說世界各國均保留了一些無線頻段,以用于工業(yè),科學(xué)研究,和微波醫(yī)療方面的應(yīng)用。應(yīng)用這些頻段無需許可證,只需要遵守一定的發(fā)射功率(一般低于1W),并且不要對其它頻段造成干擾即可。2.4GHz傳輸速率可媲美藍牙,功耗卻大大降低,采用完全開放式的網(wǎng)絡(luò)協(xié)議2.4G點對通訊模塊使用簡化的Zigbee協(xié)議,不需要組網(wǎng),沒有主從模塊之分,可以點對點,一對多,多對一。適合于簡單通訊使用。6.2基本概念多個點之間構(gòu)成一個對等通訊網(wǎng)絡(luò);(1)任何一個點可以廣播發(fā)送到所有點;(2)任何兩點之間可以點對點傳輸;每個模塊有5個參數(shù),如表4-1所示。表4-1模塊參數(shù)配置參數(shù)說明范圍PANID互相通訊的模塊必須具有相同的PANID0x0001-0xFF00無線電頻道互相通訊的模塊必須具有相同的的無線電頻道,不同的頻道區(qū)分不同的網(wǎng)絡(luò)Channel11-26自身地址0x0001-0xFF00目標(biāo)地址如果為0xFFFF,則廣播發(fā)送至所有模塊0x0001-0x0001-0xFF00串口波特率與模塊連接設(shè)備的波特率9600,19200,38400,57600,1152006.3使用說明模塊第一次使用時,必須配置參數(shù),使用指令1,該指令修改參數(shù)后,會寫入模塊FLASH,掉電不丟失,重啟后生效;模塊使用過程中,可隨時修改的目標(biāo)地址指令2,
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)備買賣合同簽訂倉儲保管要求
- 農(nóng)藥行業(yè)購銷合同簽訂要點
- 教育機構(gòu)飲水機租賃合同
- 生態(tài)修復(fù)維修保養(yǎng)室外施工合同
- 企業(yè)擴張期聘用總經(jīng)理合同模板
- 老街特色民宿租賃合同
- 珠寶設(shè)計加盟協(xié)議
- 戶外演唱會音響租賃協(xié)議
- 醫(yī)療聘用合同醫(yī)院安全保衛(wèi)
- 住宅小區(qū)綠化專業(yè)施工合同范本
- 酒店食材供應(yīng)合同范例
- 人文智能學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 中國急性缺血性卒中診治指南(2023版)
- 牛津書蟲系列1-6級 雙語 3B-01.圣誕歡歌中英對照
- 三年級上冊《貴州省生態(tài)文明城市建設(shè)讀本》小學(xué)中年級版教案
- 電網(wǎng)工程勞務(wù)分包投標(biāo)方案(技術(shù)方案)
- 過敏性休克完整版本
- 計算機類面試專業(yè)問題
- 山東省濟寧市魚臺縣2023-2024學(xué)年二年級上學(xué)期期末數(shù)學(xué)試題
- 稅務(wù)管理專項測試題附答案
- 人工智能營銷(第2版)課件全套 陽翼 第1-8章 邁入人工智能領(lǐng)域-人工智能營銷的倫理與法律問題
評論
0/150
提交評論