史旭丹
摘? 要:該設(shè)計核心內(nèi)容為通過8051單片機(jī)與ESP8266-01模塊的串口通信,實現(xiàn)基于51單片機(jī)物聯(lián)網(wǎng)智能家居手機(jī)Wi-Fi控制開關(guān)系統(tǒng)。主要需要將物聯(lián)網(wǎng)技術(shù)與傳統(tǒng)的單片機(jī)技術(shù)相結(jié)合,以較低的成本實現(xiàn)物聯(lián)網(wǎng)技術(shù)的核心部分:無線通信與遠(yuǎn)程控制,通過ESP8266-01串口Wi-Fi通信模塊與STC89C52-RC單片機(jī),實現(xiàn)手機(jī)通過Wi-Fi通信協(xié)議操作單片機(jī)的指示燈模塊燈的亮滅。
關(guān)鍵詞:ESP8266-01? STC89C52-RC? Wi-Fi通信
中圖分類號:TN925 ? ?文獻(xiàn)標(biāo)識碼:A 文章編號:1672-3791(2019)09(a)-0022-02
1? 項目概述
1.1 項目研究目的與意義
傳統(tǒng)家電的控制模式逐漸無法滿足現(xiàn)有的生活節(jié)奏,傳統(tǒng)的按鈕/紅外控制式的半自動控制已不適合現(xiàn)代的快節(jié)奏與生活水平的提升,人們逐漸開始追求家電的智能化,主要體現(xiàn)在家電的自動控制、遠(yuǎn)程控制、家電控制的整合等。該項目旨在設(shè)計一個與傳統(tǒng)技術(shù)相結(jié)合的智能網(wǎng)關(guān),實現(xiàn)物聯(lián)網(wǎng)的核心部分——網(wǎng)關(guān)通信與遠(yuǎn)程控制。
1.2 項目的研究現(xiàn)狀
智能家居是物聯(lián)網(wǎng)的一種典型應(yīng)用,在物聯(lián)網(wǎng)的短暫發(fā)展史中,其協(xié)議、通信技術(shù)等依賴技術(shù)都已經(jīng)歷過多次更新?lián)Q代,但在國內(nèi)卻少有實例或產(chǎn)品。在市場上也可以找到少量的通過手機(jī)與Wi-Fi協(xié)議控制的物聯(lián)網(wǎng)智能家居系統(tǒng),但往往存在著價格過高、不易使用或維護(hù)困難等或多或少的問題,該設(shè)計旨在依托現(xiàn)有的理論,創(chuàng)造更高性價比的實際應(yīng)用方案。
2? 系統(tǒng)概述
2.1 系統(tǒng)方案概述
基于STC89C52RC單片機(jī)、ESP8266-01串口Wi-Fi通信模塊與指示燈顯示電路為主設(shè)計一款基于Wi-Fi協(xié)議通信的智能網(wǎng)關(guān)。系統(tǒng)啟動時,單片機(jī)進(jìn)行初始化,并通過串口向ESP8266-01串口Wi-Fi通信模塊發(fā)送初始化信息,初始化時指示燈全亮,初始化結(jié)束后指示燈全滅。此時可通過手機(jī)連接ESP8266-01模塊建立的無線局域網(wǎng),并與ESP8266-01通信模塊的預(yù)設(shè)IP與端口建立TCP通信,發(fā)送指定信息完成數(shù)個指示燈的開關(guān)操作。
2.2 主要功能
單片機(jī)通電后指示燈全亮,通過串口與ESP8266-01模塊進(jìn)行通信,使用ESP8266-01模塊的AT指令集對模塊初始化,初始化過程為:設(shè)置為多連接模式,建立TCP服務(wù)器。初始化完成后指示燈全滅。此時可用有Wi-Fi功能的手機(jī)或個人計算機(jī)連接Wi-Fi“ESP8266-01”,密碼為“12345678”(預(yù)設(shè),可通過串口連接電腦修改)。連接成功后,與ESP8266-01模塊建立TCP連接,模塊的默認(rèn)IP為”192.168.4.1”,預(yù)設(shè)端口號為”8080”,建立成功后,可通過發(fā)送信息控制指示燈模塊。具體表現(xiàn)為:發(fā)送“1”時,L1亮起;發(fā)送“2”時,L2亮起;發(fā)送“3”時,L3亮起;發(fā)送“4”時,L4亮起;發(fā)送“5”時,L1、L2、L3、L4亮起。
3? 軟件概述
3.1 程序入口函數(shù)邏輯
開始程序后,首先打開總中斷開關(guān)(EA=1),執(zhí)行串口9600波特率的初始化,通過AT指令集執(zhí)行ESP8266的TCP服務(wù)初始化后,進(jìn)入空循環(huán)等待中斷。
3.2 串口通信實現(xiàn)
3.2.1 串口初始化實現(xiàn)
串口初始化的實現(xiàn)調(diào)用了ConfigUART函數(shù),此參數(shù)是一個有參函數(shù),調(diào)用方法通常為ConfigUART(baud值),需要引入一個baud值(即初始化使用的頻段)后,可實現(xiàn)對STC89C52RC單片機(jī)的串口通信0進(jìn)行初始化。
3.2.2 串口發(fā)送數(shù)據(jù)的實現(xiàn)
串口發(fā)送分為兩部分;一部分為實現(xiàn)單字節(jié)發(fā)送的Sent_UART函數(shù);另一部分為多字節(jié)發(fā)送的Uart_Send_String函數(shù)。Sent_UART函數(shù)是一個有參函數(shù),調(diào)用時需要引入一個dat值(即自定義數(shù)據(jù))后,可實現(xiàn)單字節(jié)的發(fā)送。
Uart_Send_String函數(shù)是一個有參函數(shù),調(diào)用時需要引入一個*string值(即字符串),可實現(xiàn)多字節(jié)的發(fā)送。
3.2.3 串口接收數(shù)據(jù)實現(xiàn)
串口接收的實現(xiàn)主要使用了中斷函數(shù)InterruptUART,中斷源為4(串口中斷)。此函數(shù)執(zhí)行過程為,首先根據(jù)串口接收標(biāo)志位(RI)判斷是否接收到字節(jié),如接收到,則手動將RI設(shè)置為0,將接收到的數(shù)據(jù)保存到變量中。然后判斷是否為有效數(shù)據(jù),如是則執(zhí)行相應(yīng)操作。數(shù)據(jù)接收執(zhí)行結(jié)束后,判斷是否為字節(jié)發(fā)送完畢,如是則手動清零中斷標(biāo)志位,接收結(jié)束。
3.3 ESP8266-01 Wi-Fi模塊的控制
3.3.1 AT指令
在該項目的ESP8266-01模塊初始化中,分為了一次性初始化與每次單片機(jī)啟動時的初始化,一次性的初始化使用CH340G芯片(USB轉(zhuǎn)TTL)將模塊與計算機(jī)之間連接。一次性初始化包括:將ESP8266-01初始的波特率從默認(rèn)出廠的115200修改為9600,調(diào)用的方法為:AT+UART=9600,8,1,0,0。將模塊設(shè)置為AP模式,調(diào)用的方法為:AT+CWMODE=2。
3.3.2 單片機(jī)控制下的初始化
單片機(jī)初始化主要包括ESP8266_Init函數(shù)。此函數(shù)是一個無參函數(shù),主要實現(xiàn)ESP8266-01串口Wi-Fi通信模塊的初始化。主要過程為:將ESP8266-01設(shè)置為多連接模式,調(diào)用方法為:AT+CIPMUX=1,在ESP8266-01模塊的8080端口上建立TCP服務(wù),調(diào)用方法為:AT+CIPSERVER=1,8080。
3.3.3 單片機(jī)與模塊之間的通信
單片機(jī)與ESP8266-01Wi-Fi通信模塊的通信主要通過串口中斷處理程序來完成。單片機(jī)的RxD與模塊的TX連接,單片機(jī)的TxD與模塊的RX連接。詳見上文3.2.2與3.2.3串口的接收與串口的發(fā)送部分。
參考文獻(xiàn)
[1] 陳海宴.單片機(jī)原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2010.
[2] 劉文濤.C51程序設(shè)計[M].北京:原子能出版社,2004.
[3] 賀思婷,馬銘,許曉容.無線溫度采集預(yù)警系統(tǒng)設(shè)計[J]. 智能建筑,2017(11):62-64.