版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
摘要隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,物聯(lián)網(wǎng)概念的提出,以及智能家居的飛速發(fā)展,人們正處在傳統(tǒng)家電向物聯(lián)網(wǎng)智能家居過(guò)渡階段,各大廠商都對(duì)自己的產(chǎn)品注入了智能芯片。但是,他們的標(biāo)準(zhǔn)不統(tǒng)一,不能很好的集成到一個(gè)平臺(tái)上。SmartPlug(智能插頭)正是這樣一個(gè)繞過(guò)了家電廠商直接在家電外部實(shí)現(xiàn)物聯(lián)網(wǎng)智能家居的遠(yuǎn)程監(jiān)測(cè)與控制的設(shè)備,實(shí)現(xiàn)由傳統(tǒng)家電向智能化家居過(guò)渡。本文詳細(xì)介紹了SmartPlug(智能插頭)硬件電路的設(shè)計(jì)、電路的實(shí)現(xiàn)、代碼編寫(xiě)以及相關(guān)實(shí)驗(yàn)的關(guān)鍵技術(shù),最后介紹了詳盡的系統(tǒng)測(cè)試過(guò)程。本系統(tǒng)采用51單片機(jī)作為微處理芯片,Wi-Fi作為物聯(lián)網(wǎng)的RFID與通信模塊,C語(yǔ)言編寫(xiě)51單片機(jī)的控制與通信代碼。在實(shí)現(xiàn)電腦端軟件與51單片機(jī)通信功能后進(jìn)行了系統(tǒng)測(cè)試。系統(tǒng)測(cè)試結(jié)果證明SmartPlug(智能插頭)能夠穩(wěn)定運(yùn)行,達(dá)到了設(shè)計(jì)目的與需求。關(guān)鍵詞:物聯(lián)網(wǎng);射頻識(shí)別技術(shù);智能插頭;片上系統(tǒng);51單片機(jī);無(wú)線模塊Abstract目錄TOC\o"1-2"\h\z\u第1章概述 11.1選題目的 11.2選題背景 11.3選題意義 21.4國(guó)內(nèi)外研究現(xiàn)狀及發(fā)展趨勢(shì) 21.5本章小結(jié) 3第2章硬件平臺(tái)的組件選擇 42.18051系列單片機(jī)簡(jiǎn)介 42.2Wi-Fi簡(jiǎn)介 52.351單片機(jī)最小系統(tǒng)組件與實(shí)現(xiàn) 62.4其他電路元器件的選擇 72.5本章小結(jié) 8第3章硬件平臺(tái)的電路設(shè)計(jì) 93.1計(jì)算機(jī)輔助設(shè)計(jì)軟件Protel99簡(jiǎn)介 93.2電路原理圖的設(shè)計(jì) 93.3電路圖的設(shè)計(jì) 123.4電路板的制作 133.5電子元器件的焊接 163.6本章小結(jié) 17第4章單片機(jī)片內(nèi)軟件設(shè)計(jì) 184.1Keil簡(jiǎn)介 184.2智能插頭通信數(shù)據(jù)分析 194.3智能插頭工作流程分析 214.4智能插頭通信函數(shù)的編寫(xiě) 224.5智能插頭片內(nèi)程序主函數(shù) 314.6本章小結(jié) 32第5章系統(tǒng)測(cè)試 335.1系統(tǒng)參數(shù)配置 335.1.1Wi-Fi模塊參數(shù)設(shè)置 335.2系統(tǒng)測(cè)試 375.3本章小結(jié) 38結(jié)論 39參考文獻(xiàn) 40致謝 41第1章概述1.1選題目的物聯(lián)網(wǎng)作為當(dāng)前迅猛發(fā)展的新技術(shù),已經(jīng)成為當(dāng)前的熱點(diǎn)話題。物聯(lián)網(wǎng)技術(shù)必將帶來(lái)一場(chǎng)深刻的科技變革,帶來(lái)人類(lèi)科技文明的飛躍。但是,作為新興的產(chǎn)業(yè)存在,發(fā)展物聯(lián)網(wǎng)產(chǎn)業(yè)存在各個(gè)方面的問(wèn)題。從物聯(lián)網(wǎng)的概念和應(yīng)用領(lǐng)域入手,認(rèn)為發(fā)展物聯(lián)網(wǎng)產(chǎn)業(yè)存在政策法規(guī)、技術(shù)方面以及商業(yè)模式方面的問(wèn)題。借此分析,物聯(lián)網(wǎng)的普及并不是一個(gè)短暫的時(shí)期,因此需要一個(gè)過(guò)渡型產(chǎn)品,來(lái)解決生活中的各種物聯(lián)問(wèn)題[1]。1.2選題背景信息產(chǎn)業(yè)經(jīng)過(guò)多年的高速發(fā)展,經(jīng)歷了計(jì)算機(jī)、互聯(lián)網(wǎng)與移動(dòng)通信網(wǎng)兩次浪潮,2000年后開(kāi)始步入疲軟階段,整個(gè)行業(yè)的下一桶金在哪里?在此背景下,物聯(lián)網(wǎng)、智慧地球概念的提出立即得到全球的熱捧,其最大的動(dòng)因就在于政府、企業(yè)各方都從中遠(yuǎn)望到下桶金的影子。物聯(lián)網(wǎng)被稱(chēng)為世界信息產(chǎn)業(yè)第三次浪潮,代表了下一代信息發(fā)展技術(shù),被世界各國(guó)當(dāng)作應(yīng)對(duì)國(guó)際金融危機(jī)、振興經(jīng)濟(jì)的重點(diǎn)技術(shù)領(lǐng)域。實(shí)際上,物聯(lián)網(wǎng)概念起源于比爾蓋茨1995年《未來(lái)之路》一書(shū),只是當(dāng)時(shí)受限于無(wú)線網(wǎng)絡(luò)、硬件及傳感設(shè)備的發(fā)展,并未引起重視。隨著技術(shù)不斷進(jìn)步,互聯(lián)網(wǎng)、通信網(wǎng)發(fā)展到了較高的層次,國(guó)際電信聯(lián)盟于2005年正式提出物聯(lián)網(wǎng)概念,發(fā)布了《ITU2005互聯(lián)網(wǎng)報(bào)告:物聯(lián)網(wǎng)》,指出“永遠(yuǎn)在線”的通信及其中的一些新技術(shù):如RFID、智能計(jì)算帶來(lái)的網(wǎng)絡(luò)化的世界、設(shè)備互聯(lián),從輪胎到牙刷,每個(gè)物體可能很快被納人通信領(lǐng)域,從今天的互聯(lián)網(wǎng)到未來(lái)的物聯(lián)網(wǎng)預(yù)示著一個(gè)新時(shí)代的來(lái)臨。但物聯(lián)網(wǎng)的發(fā)展依然沒(méi)有得到廣泛關(guān)注。直到2009年1從這個(gè)過(guò)程來(lái)看,物聯(lián)網(wǎng)的提出,既有人類(lèi)對(duì)物品信息網(wǎng)絡(luò)化的需求,也有當(dāng)前技術(shù)發(fā)展的推動(dòng),如傳感技術(shù)、身份識(shí)別技術(shù)、通信技術(shù)、網(wǎng)絡(luò)技術(shù)、海量數(shù)據(jù)分析技術(shù)等,但最終還是振興經(jīng)濟(jì)這個(gè)大旗使物聯(lián)網(wǎng)得到廣泛追捧。1.3選題意義21世紀(jì)是信息化的世紀(jì),各種電信和互聯(lián)網(wǎng)新技術(shù)推動(dòng)了人類(lèi)文明的巨大進(jìn)步。智能家居的出現(xiàn)使得人們可以通過(guò)手機(jī)或者互聯(lián)網(wǎng)在任何時(shí)候、任意地點(diǎn)對(duì)家中的任意電器(空調(diào)、熱水器、電飯煲、燈光、音響、DVD錄像機(jī))進(jìn)行遠(yuǎn)程控制;也可以在下班途中,預(yù)先將家中的空調(diào)打開(kāi)、讓熱水器提前燒好熱水、電飯煲煮好香噴噴的米飯,而這一切的實(shí)現(xiàn)都僅僅是輕輕的點(diǎn)幾下鼠標(biāo),或者打一個(gè)簡(jiǎn)單的電話或者發(fā)一個(gè)簡(jiǎn)單的短信。此外,該系統(tǒng)還可使家庭具有多途徑報(bào)警、遠(yuǎn)程監(jiān)聽(tīng)、數(shù)字留言等多種功能,如果不幸出現(xiàn)某種險(xiǎn)情,您和110可以在第一時(shí)間獲得通知以便進(jìn)一步采取行動(dòng)。舒適的家居生活是進(jìn)步的標(biāo)志,智能家居系統(tǒng)能夠在不改變家中任何家電的情況下,對(duì)家里的電器、燈光、電源、家庭環(huán)境進(jìn)行方便地控制,使人們盡享高新技術(shù)帶來(lái)的簡(jiǎn)便、時(shí)尚的生活。1.4國(guó)內(nèi)外研究現(xiàn)狀及發(fā)展趨勢(shì)進(jìn)入21世紀(jì)以來(lái),現(xiàn)代技術(shù)的發(fā)展帶動(dòng)了智能住宅的發(fā)展,使建筑電氣、計(jì)算機(jī)技術(shù)與建筑融為一體,使人們的工作和生活更加舒適、便捷和安全。但是由于智能裝飾的發(fā)展受技術(shù)和經(jīng)濟(jì)兩個(gè)因素的制約,長(zhǎng)期以來(lái)使家庭難以接受,國(guó)內(nèi)僅在辦公樓宇、賓館、酒店和少數(shù)特殊場(chǎng)合中有些應(yīng)用。近幾年隨著科技的發(fā)展,人們的購(gòu)買(mǎi)力不斷提高,而產(chǎn)品成本不斷降低,使智能產(chǎn)品走向家庭成為可能。例如近幾年出現(xiàn)了一些智能化小區(qū),一些高檔住宅和別墅也安裝了智能系統(tǒng);一些家庭在進(jìn)行家庭裝飾中已經(jīng)考慮預(yù)埋線路組建網(wǎng)絡(luò),有的已經(jīng)安裝可視門(mén)鈴,有的安裝了家庭影院等。隨著智能家居市場(chǎng)的迅速膨脹,國(guó)內(nèi)外許多企業(yè)將大量的資金和人才投入到智能家居產(chǎn)品的研發(fā)和生產(chǎn)領(lǐng)域。但是智能家居畢竟是一個(gè)新的領(lǐng)域,缺乏統(tǒng)一的行業(yè)標(biāo)準(zhǔn),市場(chǎng)上的產(chǎn)品普遍存在兼容性差、運(yùn)行穩(wěn)定性難以保證等弱點(diǎn)。智能家居是住宅智能化的核心部分,目前我國(guó)的智能家居市場(chǎng)有三個(gè)特點(diǎn):一是市場(chǎng)潛力大,現(xiàn)在的房地產(chǎn)業(yè)在全國(guó)的發(fā)展都很火爆,作為其下游產(chǎn)業(yè),智能家居市場(chǎng)前景還是非常樂(lè)觀的[2]。第二點(diǎn)就是產(chǎn)品多,廠家多,大部分集中在上海、北京、深圳、廣州等地。但到目前為止還沒(méi)有一家形成規(guī)?;?。第三,就是目前國(guó)家對(duì)智能家居行業(yè)還沒(méi)有實(shí)施統(tǒng)一的行業(yè)標(biāo)準(zhǔn),使得很多中小企業(yè)各自為政,按自己對(duì)市場(chǎng)的理解來(lái)開(kāi)發(fā)產(chǎn)品,相互間的產(chǎn)品不具備兼容性,這種局面有點(diǎn)春秋戰(zhàn)國(guó)時(shí)代諸侯爭(zhēng)霸的感覺(jué)。因此,今后幾年智能家居市場(chǎng)會(huì)進(jìn)入一個(gè)行業(yè)整合階段,最終可能會(huì)出現(xiàn)幾家規(guī)模比較大,品牌影響力好的廠家。從產(chǎn)品角度來(lái)講,以后的智能家居產(chǎn)品會(huì)朝著實(shí)用化、傻瓜化(操作簡(jiǎn)單)、模塊化的方向發(fā)展,所謂模塊化就是產(chǎn)品開(kāi)發(fā)商把智能家居產(chǎn)品做成模塊化的,可以根據(jù)用戶的實(shí)際需求任意搭配。這樣不僅可滿足不同層次用戶的需要,而且可以節(jié)約成本,也可以節(jié)約不必要的端口模塊的浪費(fèi)。2009年10月,歐盟委員會(huì)以政策文件的形式對(duì)外發(fā)布了物聯(lián)網(wǎng)戰(zhàn)略,提出要讓歐洲在基于互聯(lián)網(wǎng)的智能基礎(chǔ)設(shè)施發(fā)展上領(lǐng)先全球,除了通過(guò)ICT研發(fā)計(jì)劃投資4億歐元,啟動(dòng)90多個(gè)研發(fā)項(xiàng)目以提高網(wǎng)絡(luò)智能化水平外,歐盟委員會(huì)還將于2011年~2013年間每年新增2億歐元進(jìn)一步加強(qiáng)研發(fā)力度,同時(shí)拿出3億歐元專(zhuān)款,專(zhuān)門(mén)支持物聯(lián)網(wǎng)相關(guān)公私合作短期項(xiàng)目建設(shè)。歐洲智能系統(tǒng)集成技術(shù)平臺(tái)(EPoSS)在其報(bào)告InternetofThingsin2020中分析預(yù)測(cè),未來(lái)物聯(lián)網(wǎng)的發(fā)展將經(jīng)歷4個(gè)階段,2010年之前RFID[3]被廣泛應(yīng)用于物流、零售和制藥領(lǐng)域,2011年~2015年物體互聯(lián),2015年~2020年物體進(jìn)入半智能化,2020年之后物體進(jìn)入全智能化。就目前而言,許多物聯(lián)網(wǎng)相關(guān)技術(shù)仍在開(kāi)發(fā)測(cè)試階段,離不同系統(tǒng)之間融合、物與物之間的普遍鏈接的遠(yuǎn)期目標(biāo)還存在一定差距[4]。日本政府自20世紀(jì)90年代中期以來(lái)相繼制定了"e-Japan"、"u-Japan"、"i-Japan"等多項(xiàng)國(guó)家信息技術(shù)發(fā)展戰(zhàn)略,從大規(guī)模開(kāi)展信息基礎(chǔ)設(shè)施建設(shè)入手,穩(wěn)步推進(jìn),不斷拓展和深化信息技術(shù)應(yīng)用,以此帶動(dòng)本國(guó)社會(huì)、經(jīng)濟(jì)發(fā)展[5]。韓國(guó)政府自1997年起出臺(tái)了一系列推動(dòng)國(guó)家信息化建設(shè)的產(chǎn)業(yè)政策,包括RFID先導(dǎo)計(jì)劃、RFID全面推動(dòng)計(jì)劃、USN領(lǐng)域測(cè)試計(jì)劃等。實(shí)現(xiàn)建設(shè)U化社會(huì)的愿景,韓國(guó)政府持續(xù)推動(dòng)各項(xiàng)相關(guān)基礎(chǔ)建設(shè)、核心產(chǎn)業(yè)技術(shù)發(fā)展,RFID/USN(傳感器網(wǎng))就是其中之一。繼日本提出u-Japan戰(zhàn)略后,韓國(guó)也在2006年確立了u-Korea戰(zhàn)略,并制定了詳盡的"IT839戰(zhàn)略",重點(diǎn)支持泛在網(wǎng)建設(shè)。u-Korea旨在建立無(wú)所不在的社會(huì)(UbiquitousSociety),也就是在民眾的生活環(huán)境里布建智能型網(wǎng)絡(luò)(如IPv6、BcN、USN)、最新的技術(shù)應(yīng)用[6]。1.5本章小結(jié)本章首先介紹了選題目的、選題背景及選題意義,然后介紹了智能家居系統(tǒng)的國(guó)內(nèi)外研究現(xiàn)狀及發(fā)展趨勢(shì),這樣對(duì)整個(gè)選題就有了整體的了解與把握。為接下來(lái)的智能插頭的設(shè)計(jì)與開(kāi)發(fā)進(jìn)行充分的市場(chǎng)調(diào)查與可行性分析,在此基礎(chǔ)上進(jìn)行的技術(shù)路線定位以及技術(shù)原理支持變得有理有據(jù)、條理清晰。第2章硬件平臺(tái)的組件選擇本系統(tǒng)的硬件選擇是整個(gè)課題的核心部分,決定著智能插頭這套系統(tǒng)的工作原理、工作方式,同時(shí)也決定著軟件開(kāi)發(fā)中的結(jié)構(gòu)與模塊,因此極為重要。兼顧前一章節(jié)的市場(chǎng)調(diào)查與需求分析,決定本套系統(tǒng)應(yīng)該本著低成本,高效率、高穩(wěn)定率、可拓展性強(qiáng)、后期維護(hù)方便、代碼更新簡(jiǎn)便的原則來(lái)進(jìn)行設(shè)計(jì)與開(kāi)發(fā)的。本智能插頭系統(tǒng)采用的邏輯電子元器件主要為:51單片機(jī)(80C51)、WI-FI模塊,輔助元器件有:固態(tài)繼電器(SSD)、電源模塊、穩(wěn)壓芯片、以及用做接口電路耦合的電阻電容等。接下來(lái)介紹有關(guān)本系統(tǒng)中應(yīng)用的有關(guān)硬件的歷史背景、技術(shù)參數(shù)、發(fā)展?fàn)顩r以及目前主要的應(yīng)用領(lǐng)域。2.18051系列單片機(jī)簡(jiǎn)介MCS-51單片機(jī)是美國(guó)INTE公司于1980年推出的產(chǎn)品,典型產(chǎn)品有8031(內(nèi)部沒(méi)有程序存儲(chǔ)器,實(shí)際使用方面已經(jīng)被市場(chǎng)淘汰)、8051(芯片采用HMOS,功耗是630mW,是89C51的5倍,實(shí)際使用方面已經(jīng)被市場(chǎng)淘汰)和8751等通用產(chǎn)品,一直到現(xiàn)在,MCS-51內(nèi)核系列兼容的單片機(jī)仍是應(yīng)用的主流產(chǎn)品(比如目前流行的89S51、已經(jīng)停產(chǎn)的89C51等)[7],各高校及專(zhuān)業(yè)學(xué)校的培訓(xùn)教材仍以MCS-51單片機(jī)作為代表進(jìn)行理論基礎(chǔ)學(xué)習(xí)。有些文獻(xiàn)甚至也將8051泛指MCS-51系列單片機(jī),8051是早期的最典型的代表作,由于MCS-51單片機(jī)影極其深遠(yuǎn),許多公司都推出了兼容系列單片機(jī),就是說(shuō)MCS-51內(nèi)核實(shí)際上已經(jīng)成為一個(gè)8位單片機(jī)的標(biāo)準(zhǔn)。STC89C52RC為中國(guó)宏晶科技研發(fā)生產(chǎn)的新一代51單片機(jī)(如圖2-1),其中包含中央處理器(CPU)、程序存儲(chǔ)器(Flash)、數(shù)據(jù)存儲(chǔ)器(SRAM)、定時(shí)/計(jì)數(shù)器、UART串口、I/O接口、EEPROM、看門(mén)狗等模塊。該構(gòu)架單片機(jī)具有PDIP、TQFP和PLCC三種封裝形式,提供4組8位并行I/O端口,一個(gè)EA(訪存控制)端口,一個(gè)VCC(電源正極)、一個(gè)GND(電源接地)、一對(duì)外部無(wú)源晶振端口,和一個(gè)RST(復(fù)位端口)。該單片機(jī)工作電壓3.3V~5.5V,時(shí)鐘頻率范圍0~80MHz,F(xiàn)lash程序存儲(chǔ)器8K,SRAM為512字節(jié),定時(shí)器3個(gè),UART串口一個(gè),EEPROM為4K。目前,單片機(jī)的應(yīng)用領(lǐng)域主要包括:辦公自動(dòng)化設(shè)備;單片機(jī)在機(jī)電一體化中的應(yīng)用;在實(shí)時(shí)過(guò)程控制中的應(yīng)用;單片機(jī)在日常生活及家用電器領(lǐng)域的應(yīng)用;在各類(lèi)儀器儀表中引入單片機(jī),使儀器儀表智能化,提高測(cè)試的自動(dòng)化程度和精度,簡(jiǎn)化儀器儀表的硬件結(jié)構(gòu),提高其性能價(jià)格比;在計(jì)算機(jī)網(wǎng)絡(luò)和通信領(lǐng)域中的應(yīng)用;商業(yè)營(yíng)銷(xiāo)設(shè)備;單片機(jī)在醫(yī)用設(shè)備領(lǐng)域中的應(yīng)用;汽車(chē)電子產(chǎn)品;航空航天系統(tǒng)和國(guó)防軍事、尖端武器等領(lǐng)域。圖2-1PDIP40封裝標(biāo)準(zhǔn)的STC89C52單片機(jī)2.2Wi-Fi簡(jiǎn)介所謂Wi-Fi,其實(shí)就是IEEE802.11b的別稱(chēng),是由一個(gè)名為“無(wú)線以太網(wǎng)相容聯(lián)盟”(WirelessEthernetCompatibilityAlliance,WECA)的組織所發(fā)布的業(yè)界術(shù)語(yǔ),中文譯為“無(wú)線相容認(rèn)證”。它是一種短程無(wú)線傳輸技術(shù),能夠在300英尺左右(約合90米)范圍內(nèi)支持互聯(lián)網(wǎng)接入的無(wú)線電信號(hào)。辦公室自不用說(shuō),就是在小一點(diǎn)的整棟大樓中也可使用。因此,Wi-Fi一直是企業(yè)或家庭實(shí)現(xiàn)自己無(wú)線局域網(wǎng)所青睞的技術(shù)隨著技術(shù)的發(fā)展,以及IEEE802.11a及IEEE802.11g等標(biāo)準(zhǔn)的出現(xiàn),現(xiàn)在IEEE802.11這個(gè)標(biāo)準(zhǔn)已被統(tǒng)稱(chēng)作Wi-Fi。IEEE802.11第一個(gè)版本發(fā)表于1997年,其中定義了介質(zhì)訪問(wèn)接入控制層(MAC層)和物理層。物理層定義了工作在2.4GHz的ISM頻段上的兩種無(wú)線調(diào)頻方式和一種紅外傳輸?shù)姆绞?,總?shù)據(jù)傳輸速率設(shè)計(jì)為2Mbit/s。兩個(gè)設(shè)備之間的通信可以用自由直接(adhoc)的方式進(jìn)行,也可以在基站(BaseStation,BS)或者訪問(wèn)點(diǎn)(AccessPoint,AP)的協(xié)調(diào)下進(jìn)行。1999年加上了兩個(gè)補(bǔ)充版本:802.11a定義了一個(gè)在5GHz的ISM頻段上的數(shù)據(jù)傳輸速率可達(dá)54Mbit/s的物理層,802.11b定義了一個(gè)在2.4GHz的ISM頻段上但數(shù)據(jù)傳輸速率高達(dá)11Mbit/s的物理層。2.4GHz的ISM頻段被世界上絕大多數(shù)國(guó)家所使用,因此802.11b得到了最為廣泛的應(yīng)用。蘋(píng)果公司把自己開(kāi)發(fā)的802.11標(biāo)準(zhǔn)起名叫AirPortWi-Fi聯(lián)盟成立于1999年,當(dāng)時(shí)的名稱(chēng)叫做WirelessEthernetCompatibilityAlliance(WECA)。在2002年10月,正式改名為Wi-FiAlliance。致力解決符合802.11標(biāo)準(zhǔn)的產(chǎn)品的生產(chǎn)和設(shè)備兼容性問(wèn)題。Wi-Fi為制定802.11無(wú)線網(wǎng)絡(luò)的組織,并非代表無(wú)線網(wǎng)絡(luò)。從應(yīng)用層面來(lái)說(shuō),要使用Wi-Fi,用戶首先要有Wi-Fi兼容的用戶端裝置。SmartPlug使用由Hi-Link公司生產(chǎn)的Wi-Fi模塊(如圖2-2),該模塊基于Wi-Fi802.11b技術(shù),采用3.3V的TTL電平,接口信號(hào)為:5V、GND(地)、RXD、TXD四線連接,性能穩(wěn)定,內(nèi)置Wi-Fi協(xié)議棧和串口傳輸協(xié)議,發(fā)射功率最大100mW,接收靈敏度-90dBm。圖2-2Hi-Link公司制造的TTL電平Wi-Fi模塊2.351單片機(jī)最小系統(tǒng)組件與實(shí)現(xiàn)所謂單片機(jī)最小系統(tǒng),或者稱(chēng)為最小應(yīng)用系統(tǒng),是指用最少的元件組成的單片機(jī)可以工作的系統(tǒng)。對(duì)于51系列單片機(jī)來(lái)說(shuō),最小系統(tǒng)一般應(yīng)該包括:51單片機(jī)、晶振電路、復(fù)位電路[9](如圖2-3)。復(fù)位電路:?jiǎn)纹瑱C(jī)復(fù)位電路就好比電腦的重啟部分,當(dāng)電腦在使用過(guò)程中出現(xiàn)死機(jī)情況,按下重啟按鈕,電腦內(nèi)部的程序就從頭開(kāi)始執(zhí)行。單片機(jī)也是一樣的,當(dāng)單片機(jī)系統(tǒng)在運(yùn)行過(guò)程中,受到環(huán)境干擾出現(xiàn)程序跑飛的時(shí)候,按下復(fù)位按鈕,內(nèi)部的程序就會(huì)自動(dòng)從頭開(kāi)始執(zhí)行。復(fù)位電路由電容串聯(lián)電阻構(gòu)成,由圖2-3并結(jié)合"電容電壓不能突變"的性質(zhì),可以知道:當(dāng)系統(tǒng)一上電,RST腳將會(huì)出現(xiàn)高電平,并且這個(gè)高電平持續(xù)的時(shí)間由電路的RC值來(lái)決定。典型的51單片機(jī)當(dāng)RST腳的高電平持續(xù)兩個(gè)機(jī)器周期以上就將復(fù)位。所以,適當(dāng)組合RC的取值就可以保證可靠的復(fù)位。經(jīng)查閱大量資料表明C取10uf,R取8.2K即可完成復(fù)位。當(dāng)然也有其他取法的,原則就是要讓RC組合可以在RST腳上產(chǎn)生不少于2個(gè)機(jī)器周期的高電平,這樣51單片機(jī)才能復(fù)位。至于如何具體定量計(jì)算,須參考電路分析相關(guān)書(shū)籍。晶振電路:典型的晶振取11.0592MHz(因?yàn)榭梢詼?zhǔn)確地得到9600波特率和19200波特率,用于有串口通訊的場(chǎng)合)/12MHz(產(chǎn)生精確的us級(jí)時(shí)歇,方便定時(shí)操作),本系統(tǒng)采用19200作為T(mén)TL[10]通信的波特率,固選擇11.0592MHz的無(wú)源晶振。另外,單片機(jī)最小系統(tǒng)起振電容一般采用15~33pF,并且電容離晶振越近越好,晶振離單片機(jī)越近越好。因此,再配上兩片30pf的瓷片電容或貼片電容。單片機(jī):一片AT89S51/52或其他51系列兼容單片機(jī)。特別注意的是,對(duì)于31腳(EA/Vpp),當(dāng)接高電平時(shí),單片機(jī)在復(fù)位后從內(nèi)部ROM開(kāi)始執(zhí)行;當(dāng)接低電平時(shí),復(fù)位后直接從外部ROM開(kāi)始執(zhí)行。圖2-351單片機(jī)最小系統(tǒng)2.4其他電路元器件的選擇Wi-Fi降壓芯片:由于本實(shí)驗(yàn)采用Hi-Link公司3.3V的TTL電平Wi-Fi模塊,為航天與軍用級(jí)的低壓低功耗CMOS電路,需要3.3V供電系統(tǒng)。因此采用AMS1117-3.3V三端穩(wěn)壓模塊(如圖2-4右上)將單片機(jī)使用的5V電源穩(wěn)壓至3.3V,并輸送給Wi-Fi模塊。其中加入兩塊標(biāo)號(hào)為106的10uf電容,起到對(duì)電源的濾波作用??刂评^電器:由于考慮到SmartPlug將有可能控制電流過(guò)大的家用電器例如電熱水器等家用電器,因此采用比較先進(jìn)的固態(tài)繼電器(如圖2-4右下)。固態(tài)繼電器(SolidStateRelay,縮寫(xiě)SSR),是由微電子電路,分立電子器件,電力電子功率器件組成的無(wú)觸點(diǎn)開(kāi)關(guān)。用隔離器件實(shí)現(xiàn)了控制端與負(fù)載端的隔離。固態(tài)繼電器的輸入端用微小的控制信號(hào),達(dá)到直接驅(qū)動(dòng)大電流負(fù)載的目的。耐振耐機(jī)械沖擊,安裝位置無(wú)限制,具有良好的防潮防霉防腐蝕性能,在防爆和防止臭氧污染方面的性能也極佳。另外還有輸入功率小,靈敏度高,控制功率小,電磁兼容性好,噪聲低和工作頻率高等特點(diǎn)。目前已廣泛應(yīng)用于計(jì)算機(jī)外圍接口設(shè)備,調(diào)溫、調(diào)速、調(diào)光、電機(jī)控制、電爐加溫控制、電力石化、醫(yī)療器械、金融設(shè)備、煤炭、儀器儀表、交通信號(hào)等領(lǐng)域。電源模塊:由于是計(jì)算機(jī)專(zhuān)業(yè)出身,對(duì)電子電路知識(shí)并不熟知,雖然運(yùn)用阻容降壓電路可以實(shí)現(xiàn)將交流220V電源降壓整流為直流5V,但穩(wěn)定性欠佳。因此,本實(shí)驗(yàn)采用市售技術(shù)成熟的開(kāi)關(guān)電源模塊(如圖2-4左下),保證系統(tǒng)的穩(wěn)定性。LED指示燈:采用耐高壓無(wú)色玻璃封裝的LED發(fā)光二極管作為系統(tǒng)狀態(tài)指示燈(如圖左上)。圖2-4其他四種電路主要元器件2.5本章小結(jié)本章先介紹了SmartPlug系統(tǒng)各主要模塊的選擇、性能參數(shù)與技術(shù)指標(biāo),以及51單片機(jī)最小系統(tǒng)的結(jié)構(gòu)。最后列出電路主要元器件的選擇原因與主要參數(shù)。為接下來(lái)即將要進(jìn)行的SmartPlug電路的實(shí)驗(yàn)與設(shè)計(jì)做硬件準(zhǔn)備理論分析與技術(shù)支持。第3章硬件平臺(tái)的電路設(shè)計(jì)硬件平臺(tái)的電路設(shè)計(jì),就是指由電氣設(shè)備和元器件按一定方式聯(lián)接起來(lái),為電流流通提供了路徑的總體。本系統(tǒng)采用Protel99計(jì)算機(jī)輔助設(shè)計(jì)軟件進(jìn)行設(shè)計(jì)。其中包括:元器件的封裝、元件庫(kù)的調(diào)用、電路的布局、電路的鋪設(shè)、以及電氣化測(cè)試,經(jīng)過(guò)這一些列的步驟才能完成一塊電路板的基本設(shè)計(jì)。本章首先將要說(shuō)明Protel99計(jì)算機(jī)輔助設(shè)計(jì)軟件的發(fā)展歷程、應(yīng)用領(lǐng)域、使用方法以及電路原理圖的設(shè)計(jì)、電子元器件的封裝、電路板的繪制方法。最后將介紹如何將電路圖制作成電路板。下面將介紹具體的設(shè)計(jì)與制作步驟。3.1計(jì)算機(jī)輔助設(shè)計(jì)軟件Protel99簡(jiǎn)介Protel99SE是Protel公司近10年來(lái)致力于Windows平臺(tái)開(kāi)發(fā)最新結(jié)晶,能實(shí)現(xiàn)從電學(xué)概念設(shè)計(jì)到輸出物理生產(chǎn)數(shù)據(jù),以及這之間所有分析、驗(yàn)證和設(shè)計(jì)數(shù)據(jù)管理。因而今天Protel最新產(chǎn)品已不是單純PCB(印制電路板)設(shè)計(jì)工具,而是一個(gè)系統(tǒng)工具,覆蓋以PCB為核心整個(gè)物理設(shè)計(jì)。Protel設(shè)計(jì)系統(tǒng)是一套建立在IBM兼容PC環(huán)境下EDA電路集成設(shè)計(jì)系統(tǒng),由于其高度集成性與擴(kuò)展性,一經(jīng)推出,立即為廣大用戶所接受,很快就成為世界PC平臺(tái)上最流行電子設(shè)計(jì)自動(dòng)化軟件。Protel99SE共分5個(gè)模塊,分別是原理圖設(shè)計(jì)、PCB(印刷電路板)設(shè)計(jì)(包含信號(hào)完整性分析)、自動(dòng)布線器、原理圖混合信號(hào)仿真、PLD設(shè)計(jì)。本系統(tǒng)的電路設(shè)計(jì)采用:原理圖——PCB圖的步驟設(shè)計(jì)[11]。3.2電路原理圖的設(shè)計(jì)電路原理圖主要是將電路原理表示在圖上,用來(lái)生成后綴名為“.NET”的電路網(wǎng)絡(luò)表,而并非是實(shí)際的電路圖。電路網(wǎng)絡(luò)表能表示每一個(gè)電子元器件的連接情況,每一條電流通路連接的起始元件與終止元件。每一條鏈路都是唯一的、不重復(fù)的(如圖3-1)。電路網(wǎng)絡(luò)表的生成為接下來(lái)的硬件電路設(shè)計(jì)及布局創(chuàng)造了先決條件。SmartPlug的電路原理圖設(shè)計(jì)分為兩大部分,即應(yīng)用電路設(shè)計(jì)與電源部分,由于自己設(shè)計(jì)的電源電路安全性與穩(wěn)定性欠佳,故采用已經(jīng)集成好的交流220V轉(zhuǎn)直流5V穩(wěn)壓模塊,簡(jiǎn)化硬件電路設(shè)計(jì)。應(yīng)用電路設(shè)計(jì)部分中,分為51單片機(jī)最小系統(tǒng)電路、繼電器電路、指示燈電路、Wi-Fi模塊接口電路、Wi-Fi模塊穩(wěn)壓電路、3.3VWi-Fi與5V單片機(jī)通信線電壓適配電路,此外還預(yù)留了方便以后更新51單片機(jī)片內(nèi)程序的程序燒寫(xiě)預(yù)留口電路。51單片機(jī)最小系統(tǒng)在前面已經(jīng)闡述了構(gòu)成與原理,在此不再說(shuō)明。繼電器電路即為控制單元,主要負(fù)責(zé)控制電路的接通與斷開(kāi)。由單片機(jī)向繼電器的GND端發(fā)送低電平信號(hào),繼電器方可接通電路。指示燈電路的使用,主要是因?yàn)閱纹瑱C(jī)運(yùn)行起來(lái)無(wú)法像微型計(jì)算機(jī)上的程序一樣設(shè)立斷點(diǎn)來(lái)監(jiān)視與控制程序運(yùn)行,只能由指示燈的亮滅來(lái)判斷程序的正確執(zhí)行,因此采用指示燈電路對(duì)日后的代碼編寫(xiě)以及系統(tǒng)調(diào)試起到了至關(guān)重要的作用。Wi-Fi模塊的接口電路,主要是將已有的Wi-Fi模塊接入電路,電源接口、發(fā)送與接收數(shù)據(jù)線要一一對(duì)應(yīng)避免接錯(cuò)造成系統(tǒng)無(wú)法運(yùn)行[12]51單片機(jī)程序燒寫(xiě)預(yù)留口電路的應(yīng)用,主要目的是解決日后程序燒寫(xiě)的方便,由于電路平臺(tái)搭建完成后,51單片機(jī)即將被焊接到電路中,若想取下來(lái)放到開(kāi)發(fā)板上重新燒寫(xiě)、更改、調(diào)試程序,其過(guò)程及其復(fù)雜,因此設(shè)計(jì)了51單片機(jī)程序的程序燒寫(xiě)預(yù)留口[13]。整套系統(tǒng)(除電源部分)的原理圖如圖3-2所示:3.3電路圖的設(shè)計(jì)由于protel99軟件的元件庫(kù)并不能完整包含日益增長(zhǎng)的眾多電子元器件,因此部分電子元器件要自行封裝。所謂封裝,就是將電子元器件的物理尺寸以及針腳定義、針腳編號(hào)錄入protel99的元件庫(kù)中,然后再在PCB電路設(shè)計(jì)中使用。元器件的物理尺寸以及針腳距離用游標(biāo)卡尺度量,在Protel99設(shè)計(jì)中借助標(biāo)尺將電子元器件的真實(shí)尺寸繪制進(jìn)去,單位為毫米(mm)。圖3-3電源模塊封裝圖電路圖的設(shè)計(jì)是基于原理圖產(chǎn)生的。首先創(chuàng)建PCB工程,然后將前面生成的后綴名為“.NET”的電路網(wǎng)絡(luò)表文件導(dǎo)入到PCB工程中,這時(shí)即已產(chǎn)生帶提示連接線的電路網(wǎng)絡(luò)。接下來(lái)大致勾畫(huà)出電路板的外型尺寸,采用手動(dòng)布線的方式先將原件合理的分配到電路板上,最后手動(dòng)將電路連線連接完畢并修改電路板尺寸以致適合電路大小。完成以上工作后,檢查所有連接線是否全部正確,正負(fù)極是否有接反的情況發(fā)生,以及元器件是否有重疊現(xiàn)象、焊盤(pán)是否離得太近等。最后要進(jìn)行地線的布置。完成以上設(shè)計(jì)工作后,接下來(lái)要進(jìn)行電氣規(guī)則測(cè)試,原則是符合電子電路設(shè)計(jì)規(guī)則,并要人為考慮電路通信線路的干擾問(wèn)題,繞線不可交叉問(wèn)題等。最終產(chǎn)生PCB電路圖[14],如圖3-4所示:圖3-4SmartPlugPCB電路圖3.4電路板的制作手工制作電路板的過(guò)程一般是:首先將protel99產(chǎn)生的1:1的PCB電路圖打印在熱轉(zhuǎn)印紙(光面紙,不干膠后面的那層黃色的紙)上,如圖3-5。因?yàn)閜rotel99使用的尺寸單位為米爾(mil)或毫米(mm),因此打印時(shí)要嚴(yán)格打印1:1的電路圖,以防止制作出來(lái)的PCB板尺寸不符合要求,造成元器件無(wú)法焊接的情況發(fā)生。圖3-5打印PCB圖然后用熱轉(zhuǎn)印機(jī)或電熨斗將光面紙上的碳粉轉(zhuǎn)印到覆銅電路板上,如圖3-6所示。圖3-6熱轉(zhuǎn)印PCB圖接下來(lái)將轉(zhuǎn)印過(guò)的覆銅電路板放到硫酸亞鐵溶液中進(jìn)行腐蝕,由于二價(jià)的鐵離子有還原性可與銅反應(yīng)生成藍(lán)色硫酸銅溶液并且有鐵被置換出。因?yàn)楸惶挤鄹采w的銅被隔離,不參與化學(xué)反應(yīng),得以保留下來(lái),形成最終的電路。如圖3-7。圖3-7覆銅板的蝕刻然后,打印電路焊盤(pán)圖。由于阻焊綠油具有曝光的特性,在焊盤(pán)圖上黑色焊點(diǎn)覆蓋的情況下,不被暴露在強(qiáng)光下,因此不被固化,可以輕易被擦拭掉。接下來(lái)涂上阻焊漆(俗稱(chēng)綠油),將焊點(diǎn)圖對(duì)齊電路板邊緣覆蓋電路板,并暴露在強(qiáng)光之下30分鐘。完成后取下焊盤(pán)圖,擦拭電路板,被強(qiáng)光照射固化的綠油對(duì)電路板起到阻焊、防止銅質(zhì)電路板氧化的作用。被擦拭掉的部分用來(lái)完成接下來(lái)的焊接工作。最后,用電烙鐵將元件焊接到電路板的焊盤(pán)上完成整個(gè)PCB電路板的制作。但是局限于手工工藝問(wèn)題,最終研究采用代工廠家制作的電路板,如圖3-8所示。圖3-8SmartPlug電路板空板3.5電子元器件的焊接電氣焊接本著焊點(diǎn)飽滿、焊點(diǎn)結(jié)實(shí)、不虛焊、不缺焊、不讓不該連接的焊盤(pán)連接的原則進(jìn)行手工焊接操作,焊接工具為25W尖頭電烙鐵。焊接時(shí)使用松香助焊劑保證烙鐵頭無(wú)氧化物附著到焊點(diǎn)上,影響焊點(diǎn)質(zhì)量。在完成焊接工作時(shí)用萬(wàn)用表測(cè)試每一條電路的導(dǎo)通性是否良好,每一個(gè)元器件的正負(fù)極連接是否正確。最后,由于電路涉及到220V不安全電壓,因此將高電壓裸露部分用熱熔膠覆蓋,避免實(shí)驗(yàn)人員面臨觸電危險(xiǎn)。圖3-9SmartPlug電路板焊接完成圖3.6本章小結(jié)本章通過(guò)protel99電路原理圖、電路圖的設(shè)計(jì)與電路板的制作、焊接對(duì)SmartPlug的硬件電路進(jìn)行詳細(xì)介紹,為后續(xù)的軟件,也就是51單片機(jī)片內(nèi)程序的編寫(xiě)與調(diào)試做好了硬件設(shè)備的平臺(tái)構(gòu)架。對(duì)SmartPlug整套系統(tǒng)的完成起到至關(guān)重要的作用。第4章單片機(jī)片內(nèi)軟件設(shè)計(jì)單片機(jī)軟件設(shè)計(jì)是比較重要的階段,俗話說(shuō)得好:“硬件搭臺(tái),軟件唱戲”,一套系統(tǒng)的靈魂與精髓全在于軟件穩(wěn)定的運(yùn)行與強(qiáng)大的功能。本章將詳細(xì)介紹智能插頭51單片機(jī)系統(tǒng)的軟件設(shè)計(jì),整個(gè)系統(tǒng)的總體設(shè)計(jì),各功能函數(shù)、模塊的設(shè)計(jì)思路、設(shè)計(jì)原理、設(shè)計(jì)過(guò)程、性能分析。從Wi-Fi模塊加入網(wǎng)絡(luò)、建立TCP鏈接到接收數(shù)據(jù),從數(shù)據(jù)處理到發(fā)出控制命令完成控制功能。本系統(tǒng)軟件開(kāi)發(fā)環(huán)境采用單片機(jī)類(lèi)專(zhuān)業(yè)設(shè)計(jì)軟件Keil,編程語(yǔ)言采用硬件C語(yǔ)言,在某些高級(jí)函數(shù)應(yīng)用上與普通C語(yǔ)言有些許差別[15]。4.1Keil簡(jiǎn)介KeilC51是美國(guó)KeilSoftware公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。用過(guò)匯編語(yǔ)言后再使用C來(lái)開(kāi)發(fā),體會(huì)更加深刻。KeilC51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開(kāi)發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到KeilC51生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開(kāi)發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)。下面詳細(xì)介紹KeilC51開(kāi)發(fā)系統(tǒng)各部分功能和使用。C51工具包的整體結(jié)構(gòu),uVision與Ishell分別是C51forWindows和forDos的集成開(kāi)發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開(kāi)發(fā)流程。開(kāi)發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及C51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫(kù)文件,也可以與庫(kù)文件一起經(jīng)C51連接定位生成絕對(duì)目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫(xiě)入程序存貯器,如EPROM中[16]。圖4-1Keil編程環(huán)境4.2智能插頭通信數(shù)據(jù)分析用戶終端設(shè)備與WLAN模塊之間傳輸?shù)臄?shù)據(jù),其數(shù)據(jù)格式及傳輸機(jī)制由相應(yīng)的接口協(xié)議規(guī)定。我們的客戶端設(shè)備51單片機(jī)與Wi-Fi通訊采用UART接口協(xié)議,首先我們先了解一下這個(gè)通訊協(xié)議。通訊以SYN(0xAA)為第一個(gè)字節(jié)開(kāi)始,最后以PADDING結(jié)束,數(shù)據(jù)采用十六進(jìn)制表示。具體的數(shù)據(jù)格式解釋如下:圖4-2數(shù)據(jù)格式SYN:同步字段,表示一個(gè)數(shù)據(jù)幀的開(kāi)始,值固定為‘0xAA’。CTL:控制字段,其含義如下。圖4-3控制字段格式TYPE:幀類(lèi)型,000b:表示DATA是控制數(shù)據(jù)001b:表示DATA是普通數(shù)據(jù)010b:表示對(duì)接收到的前一幀的Ack確認(rèn),LENGTH字段必須為0其它:保留A:在數(shù)據(jù)幀中該位設(shè)為‘1’表示此幀中的DATA字段包含CRC,且接收方需返回Ack確認(rèn);在ACK幀中無(wú)意義SN:幀序號(hào),取值范圍0~15,在數(shù)據(jù)幀中,如果是重傳前一幀則幀序號(hào)保持不變,否則幀序號(hào)每次遞加1;在ACK確認(rèn)幀中,SN等于其接收到的前一幀的序號(hào)LENGTH:長(zhǎng)度字段,表示后面的DATA字段長(zhǎng)度,單位字節(jié)數(shù),最大長(zhǎng)度1400。CHK:幀頭校驗(yàn)字段,其計(jì)算的為CTL和LENGTH兩個(gè)字段的8位循環(huán)冗余校驗(yàn)和。DATA:實(shí)際傳輸?shù)臄?shù)據(jù),如果A設(shè)為‘1’,則DATA最后一個(gè)字節(jié)為前面(LENGTH-1)個(gè)數(shù)據(jù)的8位循環(huán)冗余校驗(yàn)和PADDING:幀結(jié)束填充字段,其值為6個(gè)連續(xù)的‘0x00’??蛻舳?1單片機(jī)與Wi-Fi模塊本來(lái)是并不相關(guān)的硬件設(shè)配,t通過(guò)UART接口協(xié)議搭建起來(lái)兩者通訊的橋梁,兩者有了僅屬于他們的交流方式,這樣大家以后都用同一門(mén)語(yǔ)言來(lái)交流也就只有他們才知道具體表達(dá)的含義,提高了通訊的安全性。我們可以靈活的控制通訊的整個(gè)流程,通過(guò)使用UART接口協(xié)議我們可以規(guī)定具體的數(shù)據(jù)內(nèi)容來(lái)傳達(dá)我們的命令,每個(gè)人都可以規(guī)定自己的命令方式來(lái)控制客戶端與Wi-Fi通訊。其他人根本不知道通訊的具體含義。按照通訊協(xié)議我們?cè)陬^文件中定義了自己的協(xié)議具體內(nèi)容,具體命令如下:#defineCTL_DATA 0X00 ////控制數(shù)據(jù) #defineNOA_DATA 0X10 ////普通數(shù)據(jù)#defineACK_DATA 0X20 ////Ack#defineSCANNETWORK_DATA0x00 //開(kāi)始掃描網(wǎng)絡(luò)命令#defineLINKNETWORK_DATA0X01 //開(kāi)始連接網(wǎng)絡(luò)命令#defineCLOSENETWORK_DATA0x02 //開(kāi)始斷開(kāi)網(wǎng)絡(luò)命令#defineSETNETPARA_DATA0X03 //設(shè)置參數(shù)命令#defineQUERYNETPARA_DATA0X04 //查詢參數(shù)命令#defineRESTWIFI_DATA0X05 //復(fù)位命令#defineTCPLINK_DATA0x06 //TCP連接命令#defineTCPSENDFAILED_DATA0x07 //TCP發(fā)送失敗#defineSCANNET_END 0X40 //掃描網(wǎng)絡(luò)結(jié)果消息#defineLINKNET_END 0X41 //網(wǎng)絡(luò)已連接消息#defineCLOSENET_END 0x42 //網(wǎng)絡(luò)已斷開(kāi)消息#defineSETNETPARA_END0X43 //設(shè)置參數(shù)結(jié)果消息#defineQUERYNETPARA_END0X44 //查詢參數(shù)結(jié)果消息#defineRESTWIFI_END0X45 //初始化完成消息#defineTCPLINK_END0x46 //TCP連接狀態(tài)消息4.3智能插頭工作流程分析完成了具體通訊命令的制定后通過(guò)編寫(xiě)51單片機(jī)里面的程序,下面我就具體介紹一下單片機(jī)中的程序。程序的整體框架由通過(guò)完成不同功能的函數(shù)組成,具體的功能模塊完成后,在main函數(shù)中完成整個(gè)流程的調(diào)用。執(zhí)行的流程主要分為:1.硬件初始化2.發(fā)送Wi-Fi加入網(wǎng)絡(luò)命令3.發(fā)送TCP連接命令4.連接成功等待用戶控制命令執(zhí)行流程圖如下所示:串口初始化串口初始化wifi加入網(wǎng)絡(luò)TCP連接PC端口main開(kāi)始PC端用戶用戶發(fā)送指令返回執(zhí)行結(jié)果連接成功,等待處理用戶指令T關(guān)閉電源T打開(kāi)電源T重置51圖4-4智能插頭工作流程圖4.4智能插頭通信函數(shù)的編寫(xiě)通過(guò)執(zhí)行流程圖初步了解執(zhí)行流程后,我們來(lái)詳細(xì)介紹一下程序中的功能函數(shù),通過(guò)功能函數(shù)我最后再詳細(xì)介紹一下調(diào)用流程。硬件初始化函數(shù)HardWareInit()主要負(fù)責(zé)初始化51單片機(jī)串口通信前的參數(shù)配置,下面我們來(lái)介紹一下串口通信中比較重要的幾個(gè)概念。波特率選擇波特率(BoudRate)就是在串口通信中每秒能夠發(fā)送的位數(shù)(bits/second)。MSC-
51串行端口在四種工作模式下有不同的波特率計(jì)算方法。其中,模式0和模式2波特率計(jì)算很簡(jiǎn)單,請(qǐng)同學(xué)們參看教科書(shū);模式1和模式3的波特率選擇相同,故在此僅以工作模式1為例來(lái)說(shuō)明串口通信波特率的選擇。在串行端口工作于模式1,其波特率將由計(jì)時(shí)/計(jì)數(shù)器1來(lái)產(chǎn)生,通常設(shè)置定時(shí)器工作于模式2(自動(dòng)再加模式)。在此模式下波特率計(jì)算公式為:波特率=(1+SMOD)*晶振頻率/(384*(256-TH1)),其中,SMOD——寄存器PCON的第7位,稱(chēng)為波特率倍增位;TH1——定時(shí)器的重載值。在選擇波特率的時(shí)候需要考慮兩點(diǎn):首先,系統(tǒng)需要的通信速率。這要根據(jù)系統(tǒng)的運(yùn)作特點(diǎn),確定通信的頻率范圍。然后考慮通信時(shí)鐘誤差。使用同一晶振頻率在選擇不同的通信速率時(shí)通信時(shí)鐘誤差會(huì)有很大差別。為了通信的穩(wěn)定,我們應(yīng)該盡量選擇時(shí)鐘誤差最小的頻率進(jìn)行通信。假設(shè)系統(tǒng)要求的通信頻率在20000bit/s以下,晶振頻率為12MHz,設(shè)置SMOD=1(即波特率倍增)。則TH1=256-62500/波特率。2、數(shù)據(jù)緩沖寄存器和串行口控制寄存器SBUF數(shù)據(jù)緩沖寄存器這是一個(gè)可以直接尋址的串行口專(zhuān)用寄存器。有朋友這樣問(wèn)起過(guò)“為何在串行口收發(fā)中,都只是使用到同一個(gè)寄存器SBUF?而不是收發(fā)各用一個(gè)寄存器?!睂?shí)際上SBUF包含了兩個(gè)獨(dú)立的寄存器,一個(gè)是發(fā)送寄存,另一個(gè)是接收寄存器,但它們都共同使用同一個(gè)尋址地址-99H。CPU在讀SBUF時(shí)會(huì)指到接收寄存器,在寫(xiě)時(shí)會(huì)指到發(fā)送寄存器,而且接收寄存器是雙緩沖寄存器,這樣可以避免接收中斷沒(méi)有及時(shí)的被響應(yīng),數(shù)據(jù)沒(méi)有被取走,下一幀數(shù)據(jù)已到來(lái),而造成的數(shù)據(jù)重疊問(wèn)題。發(fā)送器則不需要用到雙緩沖,一般情況下我們?cè)趯?xiě)發(fā)送程序時(shí)也不必用到發(fā)送中斷去外理發(fā)送數(shù)據(jù)。操作SBUF寄存器的方法則很簡(jiǎn)單,只要把這個(gè)99H地址用關(guān)鍵字sfr定義為一個(gè)變量就可以對(duì)其進(jìn)行讀寫(xiě)操作了,如sfrSBUF=0x99;當(dāng)然你也可以用其它的名稱(chēng)。通常在標(biāo)準(zhǔn)的reg51.h或at89x51.h等頭文件中已對(duì)其做了定義,只要用#include引用就可以了。SCON串行口控制寄存器通常在芯片或設(shè)備中為了監(jiān)視或控制接口狀態(tài),都會(huì)引用到接口控制寄存器。SCON就是51芯片的串行口控制寄存器。它的尋址地址是98H,是一個(gè)可以位尋址的寄存器,作用就是監(jiān)視和控制51芯片串行口的工作狀態(tài)。51芯片的串口可以工作在幾個(gè)不同的工作模式下,其工作模式的設(shè)置就是使用SCON寄存器。它的各個(gè)位的具體定義如下:SM0、SM1為串行口工作模式設(shè)置位,這樣兩位可以對(duì)應(yīng)進(jìn)行四種模式的設(shè)置。看表8-2串行口工作模式設(shè)置。在這里只說(shuō)明最常用的模式1,其它的模式也就一一略過(guò),有興趣的朋友可以找相關(guān)的硬件資料查看。表中的fosc代表振蕩器的頻率,也就是晶振的頻率。UART為(UniversalAsynchronousReceiver)的英文縮寫(xiě)。REM為允許接收位,REM置1時(shí)串口允許接收,置0時(shí)禁止接收。REM是由軟件置位或清零。如果在一個(gè)電路中接收和發(fā)送引腳P3.0,P3.1都和上位機(jī)相連,在軟件上有串口中斷處理程序,當(dāng)要求在處理某個(gè)子程序時(shí)不允許串口被上位機(jī)來(lái)的控制字符產(chǎn)生中斷,那么可以在這個(gè)子程序的開(kāi)始處加入REM=0來(lái)禁止接收,在子程序結(jié)束處加入REM=1再次打開(kāi)串口接收。大家也可以用上面的實(shí)際源碼加入REM=0來(lái)進(jìn)行實(shí)驗(yàn)。TB8發(fā)送數(shù)據(jù)位8,在模式2和3是要發(fā)送的第9位。該位可以用軟件根據(jù)需要置位或清除,通常這位在通信協(xié)議中做奇偶位,在多處理機(jī)通信中這一位則用于表示是地址幀還是數(shù)據(jù)幀。RB8接收數(shù)據(jù)位8,在模式2和3是已接收數(shù)據(jù)的第9位。該位可能是奇偶位,地址/數(shù)據(jù)標(biāo)識(shí)位。在模式0中,RB8為保留位沒(méi)有被使用。在模式1中,當(dāng)SM2=0,RB8是已接收數(shù)據(jù)的停止位。TI發(fā)送中斷標(biāo)識(shí)位。在模式0,發(fā)送完第8位數(shù)據(jù)時(shí),由硬件置位。其它模式中則是在發(fā)送停止位之初,由硬件置位。TI置位后,申請(qǐng)中斷,CPU響應(yīng)中斷后,發(fā)送下一幀數(shù)據(jù)。在任何模式下,TI都必須由軟件來(lái)清除,也就是說(shuō)在數(shù)據(jù)寫(xiě)入到SBUF后,硬件發(fā)送數(shù)據(jù),中斷響應(yīng)(如中斷打開(kāi)),這時(shí)TI=1,表明發(fā)送已完成,TI不會(huì)由硬件清除,所以這時(shí)必須用軟件對(duì)其清零。RI接收中斷標(biāo)識(shí)位。在模式0,接收第8位結(jié)束時(shí),由硬件置位。其它模式中則是在接收停止位的半中間,由硬件置位。RI=1,申請(qǐng)中斷,要求CPU取走數(shù)據(jù)。但在模式1中,SM2=1時(shí),當(dāng)未收到有效的停止位,則不會(huì)對(duì)RI置位。同樣RI也必須要靠軟件清除。常用的串口模式1是傳輸10個(gè)位的,1位起始位為0,8位數(shù)據(jù)位,低位在先,1位停止位為1。它的波特率是可變的,其速率是取決于定時(shí)器1或定時(shí)器2的定時(shí)值(溢出速率)。AT89C51和AT89C2051等51系列芯片只有兩個(gè)定時(shí)器,定時(shí)器0和定時(shí)器1,而定時(shí)器2是89C52系列芯片才有的。4.4通過(guò)上面對(duì)串口通信過(guò)程中知識(shí)的講解我們按照串口通信原則通過(guò)初始化函數(shù)HardWareInit()完成串口通信前的準(zhǔn)備。HardWareInit(){TMOD=0x20;TL1=0xfd;//T1波特率9600bpsTH1=0xfd;//串行工作在方式3 PCON=0x80; //若SMOD=1,波特率倍增 SCON=0x50; //8位TR1=1;//啟動(dòng)T1 IP=0x10; ES=1; EA=1;}4.4.2加入網(wǎng)絡(luò)命令函數(shù)WIFIJoinAp()函數(shù)為控制Wi-Fi加入網(wǎng)絡(luò)命令的函數(shù),參數(shù)cIdx代表控制Wi-Fi加入網(wǎng)絡(luò)的組號(hào),0代表默認(rèn)組第0組。參數(shù)AckFlag代表是否需要命令完成后的Ack確認(rèn),0代表不需要Ack確認(rèn),這樣命令執(zhí)行完Wi-Fi返回給客戶終端數(shù)據(jù);1代表需要Ack確認(rèn),這樣命令執(zhí)行完后Wi-Fi會(huì)返回給客戶終端一組數(shù)據(jù),通過(guò)數(shù)據(jù)的具體內(nèi)容我們可以分析出Wi-Fi加入網(wǎng)絡(luò)是否成功。這里我們都是需要Ack確認(rèn)的,通過(guò)Ack返回的數(shù)據(jù)我們可以獲得命令的執(zhí)行成功與否。變量LINKNETWORK_DATA是根據(jù)通訊協(xié)議制定賦值的變量,代表的具體含義為開(kāi)始連接網(wǎng)絡(luò)命令,例如我們可以聲明“#defineLINKNETWORK_DATA0X01”這樣Wi-Fi通過(guò)分析收到的數(shù)據(jù)控制字段為0X01就代表要求它加入網(wǎng)絡(luò)。參數(shù)都準(zhǔn)備好后調(diào)用SendDataToWifi()函數(shù)將準(zhǔn)備好數(shù)據(jù)發(fā)送給Wi-FiWIFIJoinAp(INunsignedcharcIdx,INunsignedcharAckFlag){unsignedcharcBuf[2];cBuf[0]=LINKNETWORK_DATA;////CommandcBuf[1]=cIdx;SendDataToWifi(CTL_DATA,cBuf,2,AckFlag);}WIFILinkOrCloseServer()主要功能是發(fā)送TCP連接命令,參數(shù)cType為0時(shí)代表發(fā)送關(guān)閉TCP連接命令,為1時(shí)代表啟動(dòng)TCP連接命令,參數(shù)AckFlag同樣為Ack確認(rèn)。TCPLINK_DATA為我們通訊協(xié)議中定義的TCP連接命令。準(zhǔn)備好所有數(shù)據(jù)后通過(guò)調(diào)用函數(shù)SendDataToWifi()將數(shù)據(jù)發(fā)送出去。voidWIFILinkOrCloseServer(INunsignedcharcType, INunsignedcharAckFlag){ unsignedcharcBuf[2]; cBuf[0]= TCPLINK_DATA; cBuf[1]= cType; SendDataToWifi(CTL_DATA,cBuf,2,AckFlag);}發(fā)送加入網(wǎng)絡(luò)命令和TCP連接命令都是用到了函數(shù)SendDataToWifi(),下面我們就來(lái)看看這個(gè)函數(shù)。SendDataToWifi()函數(shù)獲得參數(shù)后,按照通訊協(xié)議來(lái)生成具體欲傳送的16進(jìn)制數(shù)據(jù)。數(shù)據(jù)以0xAA開(kāi)始,最后以連續(xù)六個(gè)0x00結(jié)束,根據(jù)傳過(guò)來(lái)的具體參數(shù)來(lái)形成數(shù)據(jù)控制字段。Wi-Fi接到數(shù)據(jù)后通過(guò)分析數(shù)據(jù)的內(nèi)容來(lái)獲得相關(guān)的控制信息。具體的數(shù)據(jù)格式參見(jiàn)UART通訊協(xié)議。當(dāng)生成所有字節(jié)的數(shù)據(jù)后調(diào)用函數(shù)UART_SendData()將數(shù)據(jù)的首字節(jié)放入緩沖區(qū)。SendDataToWifivoidSendDataToWifi(INunsignedcharcCtl,INunsignedchar*DataBuf, INunsignedintiLength,INunsignedcharAckFlag){unsignedcharxdatacBuf[20];////51hasonly256datainsoc memset(cBuf,0x00,300); cBuf[0]=WIFI_SYN; //SYNC if(AckFlag) { cBuf[1]=0x80|cCtl|gcSN; //Wctrl iLength++; } else cBuf[1]=cCtl|gcSN; //Wctrl gcSN++; //Value:0-15 gcSN=gcSN&0x0f; //0-15 cBuf[2]=(iLength)>>8; cBuf[3]=(iLength)&0x00ff; cBuf[4]=GetCrc8(&cBuf[1],3); if(iLength!=0) memcpy(&cBuf[5],DataBuf,iLength); if(AckFlag)///NeedCheck { cBuf[iLength+4]=GetCrc8(&cBuf[5],iLength-1); } UART_SendData(cBuf,iLength+11); }UART_SendData()函數(shù)將接收到的通訊數(shù)據(jù)的首字節(jié)數(shù)據(jù)放入緩沖區(qū),由于數(shù)據(jù)并沒(méi)有完全傳送完,因此中斷函數(shù)中的TI參數(shù)將自動(dòng)置為1并將一個(gè)字節(jié)的數(shù)據(jù)放入緩沖區(qū)并將TI置為0,如果數(shù)據(jù)并沒(méi)有傳送完成TI會(huì)自動(dòng)的置為1直到數(shù)據(jù)完全傳送后才變?yōu)?。Wi-Fi通過(guò)緩沖區(qū)來(lái)讀取單片機(jī)發(fā)送過(guò)來(lái)的數(shù)據(jù)。voidUART_SendData(unsignedchar *data_buf,unsignedintiCount){iUartSendLen=iCount-1; iSendCounter=0; SBUF=data_buf[0]; cpSendBufPtr=&data_buf[1];}中斷函數(shù)是Wi-Fi和51單片機(jī)通訊的樞紐,通過(guò)中斷函數(shù)我們將命令發(fā)送給Wi-Fi,Wi-Fi執(zhí)行命令后會(huì)返回Ack等確認(rèn)的信息,我們同樣通過(guò)中斷函數(shù)來(lái)獲取這些信息并逐個(gè)字節(jié)解析命令的具體內(nèi)容。當(dāng)RI=1時(shí)表明Wi-Fi已將一個(gè)字節(jié)的數(shù)據(jù)放入緩沖區(qū),我們?nèi)〕鼍彌_區(qū)中的一個(gè)字節(jié)的數(shù)據(jù)后賦值給cBuf并調(diào)用ProcessUARTData函數(shù)逐個(gè)字節(jié)解析命令同時(shí)將RI置為0,每當(dāng)緩沖區(qū)中出現(xiàn)Wi-Fi欲發(fā)送的數(shù)據(jù)時(shí)RI會(huì)自動(dòng)的置為一接收數(shù)據(jù)并進(jìn)行判斷。通過(guò)返回的數(shù)據(jù)內(nèi)容我們可以分獲得我們加入網(wǎng)絡(luò)和TCP連接命令執(zhí)行的結(jié)果,當(dāng)加入網(wǎng)絡(luò)失敗我們會(huì)繼續(xù)發(fā)送加入網(wǎng)絡(luò)命令,同時(shí)再接收數(shù)據(jù)進(jìn)行判斷。TCP命令同理也是這樣。voidCOMM_INT()interrupt4using3{if(RI)//接收數(shù)據(jù){RI=0; cBuf=SBUF; ProcessUARTData(cBuf); }elseif(TI) { TI=0; if(iSendCounter<iUartSendLen) SBUF=cpSendBufPtr[iSendCounter++]; } }GetCrc8函數(shù)按照UART接口協(xié)議來(lái)生成通訊協(xié)議中CHK字節(jié)的數(shù)據(jù),該函數(shù)由SendDataToWifi()函數(shù)再生成CHK字節(jié)數(shù)據(jù)的時(shí)候調(diào)用,計(jì)算的為CTL和LENGTH兩個(gè)字段的8位循環(huán)冗余校驗(yàn)和。unsignedcharGetCrc8(INunsignedchar*ptr, INunsignedcharlen){ unsignedcharcrc8,cdata; crc8=0; while(len--!=0) { cdata=*ptr++; crc8=__crc8_tbl[crc8^cdata]; } returncrc8;}ProcessUARTData函數(shù)主要來(lái)處理Wi-Fi返回的數(shù)據(jù),當(dāng)我們從通過(guò)中斷函數(shù)每接到一個(gè)字節(jié)數(shù)據(jù)時(shí)就調(diào)用ProcessUARTData函數(shù)一次進(jìn)行解析,通過(guò)解析的結(jié)果我們可以獲得Wi-Fi發(fā)送過(guò)來(lái)的數(shù)據(jù)的具體含義,按照通訊協(xié)議的規(guī)定當(dāng)CTL字節(jié)中的TYPE三位是000b時(shí)代表數(shù)據(jù)為控制數(shù)據(jù):通過(guò)控制數(shù)據(jù)我們可以獲得發(fā)送的加入網(wǎng)絡(luò)和TCP連接命令的執(zhí)行結(jié)果,當(dāng)數(shù)據(jù)為控制數(shù)據(jù)時(shí)我們將實(shí)際傳輸?shù)臄?shù)據(jù)存入變量ATReceBuffer[0].gcATReceData[5+endFlag](這個(gè)變量在頭文件中定義)中,通過(guò)判斷這個(gè)變量的值我們就可以獲得命令的執(zhí)行結(jié)果的信息,根據(jù)頭文件中的定義變量的值為L(zhǎng)INKNET_END時(shí)代表加入網(wǎng)絡(luò)成功,當(dāng)變量的值為T(mén)CPLINK_END時(shí)代表TCP連接成功,否則表示命令執(zhí)行失敗,重新發(fā)送請(qǐng)求;CTL字節(jié)中的TYPE三位是001b時(shí)代表數(shù)據(jù)為普通數(shù)據(jù),通過(guò)分析普通數(shù)據(jù)我們可以獲得用戶發(fā)送給51單片機(jī)的請(qǐng)求,當(dāng)數(shù)據(jù)為普通數(shù)據(jù)時(shí)我們將收到的數(shù)據(jù)存入變量rBuf[0]中,并通過(guò)函數(shù)ProcessWIFIData()來(lái)判斷用戶的具體命令。voidProcessUARTData(INunsignedcharUartData){switch(gcWifiCommunState){caseWIFI_WAIT_SYN: if(UartData==WIFI_SYN) gcWifiCommunState=WIFI_WAIT_CTL; break;caseWIFI_WAIT_CTL: //控制字段 gcWIFICTL=UartData; gcWifiCommunState=WIFI_LENGTH1; break; caseWIFI_LENGTH1: //數(shù)據(jù)長(zhǎng)度1 gcWifiCommunState=WIFI_LENGTH2; break; caseWIFI_LENGTH2: //數(shù)據(jù)長(zhǎng)度2 giWIFILength=UartData; if(giWIFILength>1400)// { gcWifiCommunState=WIFI_WAIT_SYN; } else { gcWifiCommunState=WIFI_CHCK; } break; caseWIFI_CHCK: gcWifiCommunState=WIFI_RECEDATA; if(giWIFILength==0) { gcWifiCommunState=WIFI_WAITPADDING; } endFlag=0; break; caseWIFI_RECEDATA: ATReceBuffer[0].gcATReceData[5+endFlag]=UartData; if((gcWIFICTL&NOA_DATA)==NOA_DATA) {rBuf[0]=UartData; } endFlag++; if(endFlag==giWIFILength) { gcWifiCommunState=WIFI_WAITPADDING; } break;caseWIFI_WAITPADDING: if(UartData==0) { endFlag++; if(endFlag-giWIFILength==6) { gcWifiCommunState=WIFI_WAIT_SYN; } } else { gcWifiCommunState=WIFI_WAIT_SYN; } break; default: gcWifiCommunState=WIFI_WAIT_SYN; }}4.4.3當(dāng)連接建立起來(lái)后客戶端可以傳送數(shù)據(jù)來(lái)操作51,我們通過(guò)ProcessUARTData函數(shù)將數(shù)據(jù)中的具體內(nèi)容存儲(chǔ)到變量rBuf[0]中并通過(guò)下面的ProcessWIFIData函數(shù)來(lái)判斷用戶命令要求并進(jìn)行相應(yīng)的操作,例如當(dāng)rBuf[0]==0x31時(shí)我們通過(guò)控制繼電器將電源打開(kāi)。voidProcessWIFIData(void){ if(rBuf[0]==0x31) { P1=0xfe; } elseif(rBuf[0]==0x32) { P1=0xff; } elseif(rBuf[0]==0x33) { P1=0xff; test(); }}4.5智能插頭片內(nèi)程序主函數(shù)以上我們介紹了我們51程序用到的所有功能函數(shù),下面我們要通過(guò)main函數(shù)來(lái)執(zhí)行我們所有的操作,在初始化函數(shù)后,串口通信前的準(zhǔn)備工作已經(jīng)就緒,可以進(jìn)行串口通信,第一步就是要控制Wi-Fi加入到無(wú)線路由的網(wǎng)絡(luò)中,按照上述原則通過(guò)一個(gè)循環(huán)向Wi-Fi發(fā)送加入網(wǎng)絡(luò)的命令,當(dāng)Wi-Fi加入網(wǎng)絡(luò)成功,Wi-Fi會(huì)通過(guò)緩沖區(qū)發(fā)送加入成功的數(shù)據(jù),我們通過(guò)ProcessUARTData()函數(shù)判斷Wi-Fi返回的數(shù)據(jù)命令詳情,當(dāng)是加入成功命令時(shí)我們通過(guò)將變量gcReceComm1OK置為1退出循環(huán),當(dāng)不成功時(shí),51會(huì)每隔30毫秒繼續(xù)發(fā)送同樣的命令直到加入網(wǎng)絡(luò)成功才跳出循環(huán)。這樣處理能準(zhǔn)確而穩(wěn)定的控制Wi-Fi,確保每一步平穩(wěn)的運(yùn)行。第二步和加入網(wǎng)絡(luò)命令同樣的原理控制Wi-Fi通過(guò)無(wú)線路由與PC上的客戶端進(jìn)行連接,當(dāng)連接成功時(shí),跳出循環(huán)。連接建立后,PC上的客戶端就可以發(fā)送的命令通過(guò)Wi-Fi到達(dá)來(lái)控制51單片機(jī),單片機(jī)通過(guò)解析指令的數(shù)據(jù)內(nèi)容來(lái)獲得用戶的指令詳情。在程序的最后進(jìn)行一個(gè)死循環(huán)執(zhí)行函數(shù)ProcessWIFIData(),不斷地處理客戶端用戶的請(qǐng)求,并做出相應(yīng)的響應(yīng)。voidmain(void){HardWareInit(); while(!gcReceComm1OK) { WIFIJoinAp(1,1); delay(300000);if((ATReceBuffer[0].gcATReceData[5]==LINKNET_END)&&(ATReceBuffer[0].gcATReceData[6]==0)) { gcReceComm1OK=1; } } delay(300000); gcReceComm1OK=0; while(!gcReceComm1OK) { WIFILinkOrCloseServer(0,1); delay(300000);if((ATReceBuffer[0].gcATReceData[5]==TCPLINK_END)&&(ATReceBuffer[0].gcATReceData[6]==0)) { gcReceComm1OK=1; } } while(1){ ProcessWIFIData(); }}4.6本章小結(jié)本章首先介紹了51單片機(jī)片內(nèi)程序的開(kāi)發(fā)環(huán)境,然后介紹了本系統(tǒng)用到的所有功能函數(shù),最后,介紹了主函數(shù)對(duì)各功能函數(shù)的調(diào)用以實(shí)現(xiàn)智能插頭的預(yù)期設(shè)計(jì)功能。第5章系統(tǒng)測(cè)試系統(tǒng)測(cè)試是將已經(jīng)確認(rèn)的軟件、計(jì)算機(jī)硬件、外設(shè)、網(wǎng)絡(luò)等其他元素結(jié)合在一起,進(jìn)行信息系統(tǒng)的各種組裝測(cè)試和確認(rèn)測(cè)試,系統(tǒng)測(cè)試是針對(duì)整個(gè)產(chǎn)品系統(tǒng)進(jìn)行的測(cè)試,目的是驗(yàn)證系統(tǒng)是否滿足了需求規(guī)格的定義,找出與需求規(guī)格不符或與之矛盾的地方,從而提出更加完善的方案。系統(tǒng)測(cè)試發(fā)現(xiàn)問(wèn)題之后要經(jīng)過(guò)調(diào)試找出錯(cuò)誤原因和位置,然后進(jìn)行改正。是基于系統(tǒng)整體需求說(shuō)明書(shū)的黑盒類(lèi)測(cè)試,應(yīng)覆蓋系統(tǒng)所有聯(lián)合的部件。對(duì)象不僅僅包括需測(cè)試的軟件,還要包含軟件所依賴的硬件、外設(shè)甚至包括某些數(shù)據(jù)、某些支持軟件及其接口等。5.1系統(tǒng)參數(shù)配置5.1.1Wi-Fi模塊參數(shù)設(shè)置網(wǎng)絡(luò)參數(shù)參數(shù)索引:第一組信道號(hào):13BSSID:00-21-27-41-7D-B2SSID:TP-LINK鏈路層數(shù)據(jù)格式:TCP設(shè)備IP地址:01子網(wǎng)掩碼:網(wǎng)關(guān)IP地址:服務(wù)器IP地址:00服務(wù)端口號(hào):6000系統(tǒng)參數(shù)聯(lián)網(wǎng)模式:手動(dòng)TCP監(jiān)聽(tīng)模式:使能串口波特率:115200UDP透?jìng)髂J剑菏鼓軋D5-1Wi-Fi模塊參數(shù)設(shè)置5.1.2路由器參數(shù)設(shè)置圖5-2路由器LAN口參數(shù)設(shè)置圖5-3路由器LAN口狀態(tài)圖5-4路由器無(wú)線參數(shù)設(shè)置圖5-5路由器無(wú)線參數(shù)狀態(tài)5.2系統(tǒng)測(cè)試5.2.11.對(duì)于51單片機(jī)系統(tǒng)的最小化測(cè)試在51單片機(jī)最小系統(tǒng)下,即:51單片機(jī)、晶振電路、復(fù)位電路、供電電路、以及控制電路,整套系統(tǒng)能夠穩(wěn)定運(yùn)行,在每次上電復(fù)位時(shí)均能初始化成功并進(jìn)入執(zhí)行代碼階段,正確執(zhí)行代碼。系統(tǒng)發(fā)熱量低,出錯(cuò)率可以忽略不計(jì)。說(shuō)明整套單片機(jī)最小系統(tǒng)復(fù)位電阻的阻值與復(fù)位電容的容值選取恰當(dāng),晶振電路起振電容的容值合適,電路設(shè)計(jì)合理,各電路線之間無(wú)干擾現(xiàn)象現(xiàn)象或可以忽略不計(jì)。單片機(jī)最小系統(tǒng)達(dá)到了預(yù)期目的測(cè)試通過(guò)。2.對(duì)于Wi-Fi模塊與51單片機(jī)通信的測(cè)試首先進(jìn)行測(cè)試的是Wi-Fi模塊與51單片機(jī)之間的硬件控制幀傳輸,將Wi-Fi模塊的TXD與51單片機(jī)的RXD相連,Wi-Fi模塊的RXD與51單片機(jī)的TXD相連,構(gòu)成數(shù)據(jù)通路。并分別給Wi-Fi模塊和51單片機(jī)供電。將編譯過(guò)的十六進(jìn)制的單片機(jī)終端軟件通過(guò)燒寫(xiě)口燒錄到51單片機(jī)內(nèi)。接通電源,將計(jì)算機(jī)雙絞線插入到路由器的用戶端口上,配置計(jì)算機(jī)IP地址為00,在計(jì)算機(jī)上打開(kāi)客戶端軟件并開(kāi)啟6000端口進(jìn)入掃描等待接入狀態(tài)。此時(shí)單片機(jī)正不停地發(fā)送請(qǐng)求連接命令,一旦握手成功6000端口即被占用,連接創(chuàng)建成功,51單片機(jī)端綠色指示燈點(diǎn)亮,指示連接成功。整套系統(tǒng)即初步達(dá)到設(shè)計(jì)要求。接下來(lái)測(cè)試用戶系統(tǒng)控制幀命令,在先前的前提下在計(jì)算機(jī)上運(yùn)行的客戶端軟件內(nèi)打上測(cè)試命令,例如:“1”,即表示打開(kāi)1#端口電源?!?”表示關(guān)閉1#端口電源。51單片機(jī)片內(nèi)軟件在經(jīng)過(guò)數(shù)十次的修改與調(diào)試后系統(tǒng)整體性能表現(xiàn)優(yōu)異,客戶端軟件識(shí)別Wi-Fi模塊率大幅上升,51單片機(jī)也幾乎不再出現(xiàn)程序跑飛,無(wú)法進(jìn)入循環(huán)等錯(cuò)誤。測(cè)試表明:硬件平臺(tái)是軟件的基礎(chǔ),軟件優(yōu)化才可以使硬件最大限度的發(fā)揮出其應(yīng)有的性能,軟件與硬件是相輔相成的,不可剝離開(kāi)來(lái)開(kāi)發(fā)。經(jīng)過(guò)本環(huán)節(jié)的測(cè)試,也驗(yàn)證了本系統(tǒng)的開(kāi)發(fā)理念基本正確。3.對(duì)于SmartPlug整套系統(tǒng)的測(cè)試在測(cè)試2的基礎(chǔ)上,將計(jì)算機(jī)上的測(cè)試客戶端關(guān)閉,打開(kāi)由史勝?gòu)?qiáng)同學(xué)開(kāi)發(fā)的集成了飛信客戶端的客戶端軟件,輸入手機(jī)號(hào)與密碼點(diǎn)擊登錄,登錄后由軟件內(nèi)設(shè)置的有權(quán)限的用戶手機(jī)發(fā)送控制命令,如:“啟動(dòng)端口”,“打開(kāi)電源”等。整套系統(tǒng)完全通過(guò)了測(cè)試,達(dá)到了預(yù)期目標(biāo)。5.2.2測(cè)試分析總結(jié)及說(shuō)明在測(cè)試過(guò)程中,我們經(jīng)過(guò)模塊測(cè)試和組裝測(cè)試,排除了系統(tǒng)的大部分錯(cuò)誤。例如51單片機(jī)片內(nèi)程序存在的各種兼容性與數(shù)據(jù)通信的錯(cuò)誤,繼電器存在電流大發(fā)熱量大的風(fēng)險(xiǎn)等
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 民間借貸安全指南
- 《GBT 2374-2017 染料 染色測(cè)定的一般條件規(guī)定》專(zhuān)題研究報(bào)告
- 《GB-T 13161-2015輻射防護(hù)儀器 測(cè)量X、γ、中子和β輻射個(gè)人劑量當(dāng)量Hp(10)和Hp(0.07) 直讀式個(gè)人劑量當(dāng)量?jī)x》專(zhuān)題研究報(bào)告
- 《GBT 31555-2015 鑄造用機(jī)械手》專(zhuān)題研究報(bào)告
- 《AQ 4132-2025煙花爆竹用煙火藥和生產(chǎn)機(jī)械設(shè)備安全論證導(dǎo)則》專(zhuān)題研究報(bào)告
- 融資租賃設(shè)備所有權(quán)回購(gòu)擔(dān)保協(xié)議
- 中式茶點(diǎn)制作技師(初級(jí))考試試卷及答案
- 2025年傳染病疫情信息管理培訓(xùn)題(含答案)
- 呱呱龍課件教學(xué)課件
- 員工隱私保護(hù)課件
- 如何樹(shù)立消防員榮譽(yù)觀
- 2026中國(guó)高校實(shí)驗(yàn)室危險(xiǎn)品智能管理平臺(tái)市場(chǎng)滲透分析報(bào)告
- 深圳市龍崗區(qū)2025年生物高一上期末調(diào)研模擬試題含解析
- (2025年)法院聘用書(shū)記員試題及答案
- 具身智能+醫(yī)療康復(fù)中多模態(tài)感知與自適應(yīng)訓(xùn)練系統(tǒng)研究報(bào)告
- 廣東省深圳市寶安區(qū)2026屆高一上生物期末聯(lián)考試題含解析
- ISO14644-5-2025潔凈室及相關(guān)受控環(huán)境-第5部分運(yùn)行中文版
- 2025年國(guó)家開(kāi)放大學(xué)《法學(xué)導(dǎo)論》期末考試備考題庫(kù)及答案解析
- 物業(yè)公司動(dòng)火安全管理制度
- 幕墻創(chuàng)優(yōu)工程匯報(bào)材料
- 老年人穿衣搭配課件
評(píng)論
0/150
提交評(píng)論