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