王琰 郭燕



摘要:針對物聯網家居行業日新月異的市場需求,文章提出了一種基于MCU的智能家居控制系統方案。該系統以AT89S51單片機為控制核心,通過與WiFi芯片ESP8266的通訊,采集并發送傳感器信號、接收并執行手機APP的指令,實現家用電器開關的無線遠程控制。
關鍵詞:AT89S51;智能家居;ESP8266;手機APP
隨著物聯網及無線網絡技術的發展,無線數據采集、傳輸因準確、快速、可靠,系統開發成本低和周期短,越來越成為研究熱點[1]。本文介紹了如何通過AT89S51單片機實現家用電器開關的無線遠程控制,同時從硬件和軟件兩個層面論述了系統方案的可行性。
1 總體設計方案
本系統通過單片機控制繼電器的方式實現家用電器的通斷控制,通過WiFi模塊ESP8266將微控制單元(Microcontroller Unit,MCU)鏈接上外網,由手機APP發送信息,WiFi模塊接收到信息后,再向MCU發送信號,MCU經過對信息的處理實現家電的智能控制,形成了一個控制通信網絡。控制系統采用DHTir溫濕度傳感器和MQ-2煙霧氣敏傳感器檢測室內環境數據,通過AT89S51進行傳感器信號采集并通過WiFi模塊傳輸到手機端顯示,采用LCD液晶顯示模塊實時顯示溫濕度和每個繼電器的工作狀態,使用戶實時了解室內環境。系統的總體設計如圖1所示。手機通過安裝APP文件作為上位機控制軟件,登錄服務器賬號,連接主機(由AT89S51芯片組成)控制的UART-WiFi模塊,用戶根據室內環境情況對其發送指令,進行連接。單片機接收到信號控制繼電器吸合或者斷開實現家電開關。
2 硬件設計
2.1 MCU模塊
MCU模塊選用ATMEL公司的AT89S51芯片為核心的最小系統組成,AT89S51是一種低功耗、高性能CMOS的8位微控制器,在單芯片上,擁有靈巧的8位CPU和在線系統可編程Flash,為眾多嵌入式控制應用系統提供高靈活有效的解決方案。本設計需要使用P3.0和P3.1 實現與WiFi模塊的串口通信,其他I/O分別用于連接繼電器控制信號、傳感器數據信號以及LCD液晶顯示數據信號。
2.2 ESP8266模塊
WiFi模塊選擇樂鑫公司的基于UART接口的ESP8266-12芯片,該芯片具有價格低、配置高和兼容性強等優勢,同時開發模式豐富簡單[2]。該芯片使用ASCII碼與手機進行通信,手機把編碼變為ASCII碼進行發射,UART-WiFi會接收ASCII碼并產生中斷給單片機。此WiFi模塊可以通過終端像普通路由器一樣設置和修改密碼,也可以通過配置軟件進行修改和設置,安全性能高。ESP8266-12與單片機串口通信接口及電源電路,TXD和RXD分別接單片機的P3.0和P3.1。ESP8266-12的9和11腳通過1 K上拉電阻接3.3 V電源。5 V電壓經LM1117的電壓變換后輸出得到一個穩定平滑的邏輯數字3.3 V直流電壓給WiFi模塊供電。二極管IN4148反向截止起到保護電路的作用。撥動開關S1正常運行時接通P3.0接收模塊發送的數據,下載程序時用S1斷開WiFi模塊,以防數據干擾。
2.3 室內環境采集模塊
室內環境主要采集溫濕度和可燃氣體等環境狀態,采用DHTir溫濕度傳感器檢測室內溫濕度,采用MQ-2煙霧氣敏傳感器檢測室內可燃氣體的濃度。傳感器檢測信號發送給單片機進行處理和顯示。DHT11和MQ-2與AT89S51的連接相對簡單。單片機的I/O口用來發收DATA串行數據,DATA用于微處理器與DHT11之間的通信和同步,采用單總線串行數據格式,一次通信時間4 ms左右。MQ-2傳感器數字量輸出信號端DO接到單片機I/O 口。傳感器的電源端口分別接單片機的VDD和GND端。
2.4 LCD1602液晶顯示電路
采用LCD1602液晶顯示器顯示網絡連接、室內氣體、溫濕度以及開關狀態等信息。1腳接地,2腳接+5 V電源,3腳為液晶顯示器對比度調整端,通過一個10 K電位器調整對比度。4腳RS接P2.7用于寄存器的選擇。5腳R/W接P2.6用于讀寫信號的控制,6腳EN為使能端接P2.5用于液晶模塊的使能控制。7—14腳D0 — D7為8為雙向數據線接單片機P0口。15和16腳分別為背光源正、負極。
2.5 繼電器驅動模塊
控制系統通過繼電器的方式實現家電的通斷控制或者燈的開關控制。單片機P2.0引腳輸出一個低電平時,PNP型三極管9012導通,電流從+5 V電源經線圈再經9012回到GND形成回路,此時繼電器線圈得電吸合,與線圈并聯的LED燈點亮,2.2K分壓電阻保證LED的3 V工作電壓,IN4148二極管起到保護作用,接線端子J坷外接負載,通過WiFi控制,驅動負載的通斷相當于一個智能開關。
2.6 手機APP
智能手機APP為網絡調試助手安卓版。網絡調試助手集成了 TCP/UDP客戶端服務器,服務器端支持透明傳輸方式、自動反饋方式和手動發送方式。采用TCP客戶端模式,通過配置IP地址和COM端口號實現APP與ESP8266通信[3]。手機APP界面包括室內環境值、家電的開關控制按鈕等內容。
3 軟件設計
采用ESP8266實現遠程控制基本流程(見圖2):單片機對ESP8266進行初始化,再將手機連上ESP8266的WiFi,然后再通過手機端發送指令,ESP8266接收到命令發給單片機,單片機根據執行相應的操作。單片機檢測室內環境在液晶屏上顯示并通過ESP8266將采集的室內環境參數發送到手機APP顯示。
3.1 主程序設計
控制系統軟件部分主要分為WiFi配置與通信、室內環境檢測、繼電器驅動、LCD液晶顯示4部分。系統上電后進入初始化階段讀取系統參數,傳感器模塊啟用,APP配網設置后,ESP8266配網成功直連數據服務器,傳送相應的控制指令到MCU驅動繼電器動作,同時實時回傳數據到服務器,APP可以即時查看相關的數據。
第一步:單片機串口進行初始化。
第二步:單片機通過串口通信對ESP8266芯片進行初始化配置,使ESP8266工作在softAP模式,即無線接入點模式。ESP8266發射一個WiFi熱點將手機或電腦等終端設備接入熱點組建一個局域網。配置ESP8266WiFi熱點SSID和密碼等。
第三步:采集并發送室內環境參數,等待控制指令,接收到指令后執行相應的操作。
3.2 關鍵函數設計
關鍵函數包括主函數、串口處理函數、定時中斷函數、室內環境讀取子函數、顯示子函數等5個部分,具體功能描述如表1所示。
4 結語
本文設計了一種基于單片機和ESP8266芯片的智能家居控制系統,從軟件和硬件兩個層面論述了該方案的可行性。在該系統基礎之上,還可以增設定時打開與關閉家用電器、燈光的自動調節等其他智能控制功能。通過后期的不斷改進和完善,該控制的功能將更加多樣化,市場前景也會更加廣闊。
[參考文獻]
[1]吳允強,吳由松基于ESP8266的智能家居控制系統設計[J].電子測試,2017(21):9, 24.
[2]邵青青,周建華,徐晨,等.基于ESP8266+STM32的智能升降桌控制器[J].機械工程與自動化,2017(6):155-156.
[3]屈良潘,唐曼玲,劉靜,等.基于ESP8266的LED燈無線遠程控制設計[J].電子世界,2017(9):179, 181.