南京科技職業學院 電氣與控制學院 薛 翔 王 琰
隨著網絡技術的迅猛發展,WIFI技術得到了廣泛的應用。WIFI是一種可以將個人電腦、手持設備等終端以無線方式進行互連的技術,為用戶提供了無線的寬帶互聯網訪問。本文介紹了如何通過ESP8266芯片和STC單片機實現家用電器開關的無線遠程控制,提出了一種基于ESP8266的智能開關控制系統方案,并從硬件和軟件兩個層面論述了系統方案的可行性。
本系統主要由WIFI模塊和MCU模塊兩部分組成,通過WIFI模塊ESP8266將單片機MCU鏈接上外網,由手機App發送信息WIFI模塊接收到信息后,再向MCU發送信號,MCU經過對信息的處理,通過繼電器的方式實現家電的通斷控制或者燈的開關控制,形成了一個控制通信網絡。硬件電路主要有STC89C51芯片、DHT11溫濕度傳感器采集電路、LCD液晶顯示電路、繼電器驅動電路、WIFI模塊以及穩壓電路等組成。系統的總體設計框圖如圖1所示。WIFI模塊收發通訊數據,MCU完成數據的采集和外設的驅動。用戶使用手機APP將系統的WIFI模塊連接到指定的路由器后,通過UART串口傳送和接收MCU的相關指令信息,繼電器接負載并通過WIFI控制其通斷。

圖1 系統總體框圖
MCU模塊由以STC89C51芯片為核心的最小系統組成,STC89C51芯片在單芯片上,擁有靈巧的8位CPU和在系統可編程Flash,使得STC89C51在嵌入式控制應用系統中的得到了廣泛應用。本設計使用TXD和RXD引腳實現與WIFI模塊的串口通信,其他I/O引腳主要用于連接繼電器控制信號、溫濕度傳感器輸出信號以及LCD液晶顯示數據及控制等信號。
WIFI模塊選擇樂鑫公司的基于UART接口的ESP8266-12芯片,該芯片內置32位CPU,能夠獨立運行,也可以作為從機搭載于其他主機MCU運行,可以廣泛應用于智能家居、工業無線控制、無線傳感器等領域。

圖2 ESP8266-12接口及電源電路

圖3 繼電器驅動電路
ESP8266模塊能夠實現用戶串口數據到無線網絡之間的交換。有2種使用方案:一是直接使用內部自帶的處理器,對芯片進行二次開發,通過I/O口控制設備,例如繼電器、傳感器等,此方案節省成本,但開發難度較大;二是ESP8266模塊外接單片機,而其僅用來完成網絡相關的任務,使用AT命令操作,通過串口和外接的單片機通信,此方案開發快,性能穩定,但成本相對較高。本文選用第二種方案。
圖2為ESP8266-12與單片機串口通信接口及電源電路,TXD和RXD分別接單片機的P3.0和P3.1。ESP8266-12的9和11腳通過1K上拉電阻接3.3V電源。采用AMS1117 穩壓芯片將5V電源轉換成3.3V直流電壓,給WIFI和繼電器模塊供電。二極管IN4148反向截止起到保護電路的作用。撥動開關S1正常運行時接通TXD接收模塊發送的數據,下載程序時用S1斷開WIFI模塊,以防數據干擾。
控制系統通過繼電器的方式實現開關的通斷控制。繼電器通過PNP型三極管驅動,當閥值超過設定時,單片機會由高電平跳變成低電平,三極管導通繼電器吸合,繼電器起開關作用,可以驅動負載。圖3為單個繼電器驅動電路,單片機P2.0引腳輸出一個低電平時,PNP型三極管9012導通,電流從+5V電源經線圈再經9012回到GND形成回路,此時繼電器線圈得電吸合,與線圈并聯的LED燈點亮,2.2K分壓電阻保證LED的3V工作電壓,二極管用于消除繼電器吸合時產生的瞬間反相電動勢,接線端子CON2可外接負載電源線,驅動負載的通斷相當于一個智能開關。
采用DHT11溫濕度傳感器用于檢測室內溫濕度并發送給單片機進行處理和顯示,DHT11與STC89C51單片機連接相對簡單。如圖4所示,DHT11為 4 針單排引腳封裝。單片機的P2.7口用來發收串行數據,即data數據口。DATA 用于微處理器與 DHT11之間的通訊和同步,采用單總線串行數據格式,一次通訊時間4ms左右。上拉電阻10K起到信號穩定的作用。傳感器的電源端口Pin1和Pin4分別接單片機的VDD和GND端。傳感器的第三腳懸浮放置。

圖4 DHT11接口電路

圖5 LCD接口電路
LCD1602能夠同時顯示16x02即32個字符,采用LCD1602液晶顯示器顯示網絡連接情況、室內溫濕度值以及開關狀態等信息,LCD與單片機接口連接如圖5所示。1腳接地,2腳接+5v電源,3腳為液晶顯示器對比度調整端,通過一個10K電位器調整對比度。4腳RS接P2.7用于寄存器的選擇。5腳R/W接P2.6用于讀寫信號的控制,6腳EN為使能端接P2.5用于液晶模塊的使能控制。7~14腳即D0~D7為8位雙向數據線接P0口,用于數據的讀寫。
智能手機APP為網絡調試助手安卓版。網絡調試助手集成了TCP/UDP客戶端服務器,服務器端支持透明傳輸方式、自動反饋方式和手動發送方式。采用TCP客戶端模式,通過配置IP地址和COM端口號實現APP與ESP8266通信。
采用ESP8266實現遠程控制基本流程:ESP8266進行初始化,將手機連上ESP8266的WIFI,然后再通過手機端發送指令,ESP8266接收到命令發給單片機,單片機根據執行相應的操作。STC單片機每2秒鐘從DHT11溫濕度傳感器中讀入溫度和濕度,在液晶屏上顯示并通過ESP8266將采集的溫濕度數據發送到手機APP顯示??刂屏鞒倘鐖D6所示。
控制系統軟件部分主要分為WIFI配置與通信、溫濕度讀取、繼電器驅動、LCD液晶顯示四部分。系統上電后進入初始化階段讀取系統參數,溫濕度傳感模塊啟用,APP配網設置后,ESP8266配網成功直連數據服務器,傳送相應的控制指令到MCU驅動繼電器動作,同時實時回傳數據到服務器,APP可以即時查看相關的數據。主程序流程如圖7所示。
設置WIFI 的工作模式,ESP8266 支持softAP 模式、station 模式、softAP+station 共存模式三種模式。本文采用SoftAP模式,即無線接入點模式,ESP8266發射一個WIFI熱
點將手機或電腦等終端設備接入熱點組建一個局域網。STC89C51單片機通過AT指令對ESP8266進行是初始化配置。
配置指令為:
AT+CWMODE=2,設置SoftAP模式。
AT+CWSAP=“NAME”,“password”,設置WIFI名稱和密碼。
AT+CIPSTART=“TCP”,“ X1.X2.X3.X4”,9999;讓模塊連上服務器X1.X2.X3.X4 為IP 地址,9999為端口。
AT+CWJAP=“ssid”,“pwd”;連接路由器,在程序中輸入路由器名稱ssid和密碼pwd;此時,WIFI 模塊就必須重啟,發送指令“AT+RST”給WIFI 模塊。

圖6 控制流程

圖7 主程序流程圖
void main() ;//主函數,完成系統初始化,溫濕度讀取調用和顯示,開關的WIFI控制。
void uart_RX(void) interrupt 4;//串口中斷處理函數,如果串口接收到數據,執行相應的操作,控制繼電器的動作,直到收到下一個數據指令。
void Timer0 (void) interrupt 1 using 0;//定時中斷函數,單片機每2秒鐘從DHT11溫濕度傳感器中讀入溫度和濕度,用于MCU與DHT11的通訊。
void Uart_init( );// 單片機串口初始化函數,波特率9600,設置T0和T1工作方式,允許串口接收數據,開中斷,啟動定時器。T0用于定時器,T1用于波特率發生器。
uchar DHT11(void);// 溫濕度讀取子程序,采用單總線數據格式。
void LCDdisplay();// 液晶顯示子函數,包括初始化、寫指令、寫數據、顯示字符串和數據等。
本文設計了一種基于ESP8266 WIFI芯片的智能開關系統,以STC單片機為主控制器,從軟件和硬件兩個層面論述了該方案的可行性。在該系統基礎之上,還可以增設家用電器定時開關、燈光的自動調節等其他智能控制功能。通過后期的不斷改進和完善,該控制器的功能將更加多樣化,市場前景也會更加廣闊。