朱俊濤 郭莉莉 張展 李璇
摘要:針對傳統(tǒng)插座功能簡單、不能定時的問題,設(shè)計了一款基于STM32單片機(jī)的插座定時系統(tǒng)。該插座定時系統(tǒng)具有短路保護(hù)、遠(yuǎn)程控制等功能,通過搭建消息隊列遙測傳輸(Message Queuing Telemetry Transport,MQTT)通信服務(wù)器,配合微信小程序?qū)崿F(xiàn)了遠(yuǎn)程控制,也可通過實體按鍵實現(xiàn)插座的定時功能,最后將插座通電狀態(tài)顯示在OLED屏幕上。
關(guān)鍵詞:定時插座;STM32;ESP8266;MQTT
1 ? ?系統(tǒng)總體描述
本系統(tǒng)以STM32F103C8T6為主控芯片,使用ESP8266模塊連接MQTT服務(wù)器,實現(xiàn)插座系統(tǒng)和外界通信與控制。通過按鍵模塊及OLED顯示屏,實現(xiàn)通過按鍵和顯示屏完成插座的定時設(shè)置。交流電控制部分使用繼電器完成,采用降壓模塊連接220 V交流電源供電。直接使用STM32模塊上的RTC晶振來定時。為使用時更靈活,MQTT通信部分使用自建服務(wù)器。系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
2 ? ?硬件設(shè)計
2.1 ? ?單片機(jī)主控模塊
本設(shè)計使用的是STM32F103C8T6單片機(jī)。STM32F103系列單片機(jī)是ST公司使用ARM公司設(shè)計的Cortex-M3架構(gòu)生產(chǎn)的32 bit單片機(jī),其更接近計算機(jī)中的CPU,具有運(yùn)行速度較快,穩(wěn)定性強(qiáng)且價格較低等特點(diǎn)[1]。
2.2 ? ?電源模塊
交流轉(zhuǎn)直流電源模塊采用SM-PLG06A-4 W型開關(guān)電源模塊,該模塊支持85~264 V交流輸入,輸出直流電壓5 V、電流800 mA,最高輸出功率4 W足以帶動插座定時系統(tǒng)的全部組件。本設(shè)計在電源電路中添加了多級濾波電容,提高了電源的穩(wěn)定性。在輸入端火線處添加5 A/AC250 V的保險絲,作用是在電源模塊出現(xiàn)問題時及時熔斷保護(hù)電路。使用AMS1117穩(wěn)壓器,將5 V直流穩(wěn)壓至3.3 V直流并為單片機(jī)供電。
2.3 ? ?顯示模塊
顯示模塊使用0.96寸128×64點(diǎn)陣的OLED顯示屏,SCL為IIC通信中的時鐘管腳,而SDA則是IIC通信中的數(shù)據(jù)管腳。使用IIC通信協(xié)議,STM32僅需兩根線就能控制其顯示。
2.4 ? ?繼電器模塊
參考文獻(xiàn)[2]設(shè)計了繼電器驅(qū)動電路。STM32通過PB1引腳控制繼電器,輸出高電平時繼電器導(dǎo)通,低電平時繼電器斷開,從而實現(xiàn)弱電控制強(qiáng)電。在繼電器處并聯(lián)的發(fā)光二極管可以起到顯示繼電器狀態(tài)的作用[3],繼電器接通則LED發(fā)光,反之LED熄滅。
2.5 ? ?Wi-Fi模塊
插座定時系統(tǒng)是通過ESP8266 Wi-Fi模塊輸出高低電平給STM32,STM32收到高電平時接通繼電器,反之繼電器斷開。
2.6 ? ?按鍵模塊
使用4個獨(dú)立按鍵與STM32單片機(jī)的IO口PA0~PA3相連,按鍵為低電平觸發(fā),當(dāng)按下與單片機(jī)IO口相連的按鍵時該IO口將接地,即向單片機(jī)輸入低電平信號。通過編程實現(xiàn)定時時間設(shè)定的功能。
按下一次按鍵K1則定時1 min,類似地按鍵K2是定時10 min,按鍵K3對應(yīng)定時60 min,定時方式為累加。按鍵K4的作用是將定時時間清零。插座定時系統(tǒng)處于定時狀態(tài)且定時時間不為0時將接通繼電器。系統(tǒng)電路原理圖如圖2所示。
3 ? ?軟件設(shè)計
3.1 ? ?服務(wù)器端搭建
Wi-Fi模塊和小程序與服務(wù)器通信的方式采用了MQTT協(xié)議,它是客戶端與服務(wù)器之間基于消息發(fā)布及訂閱的傳輸協(xié)議。
本設(shè)計中服務(wù)器端安裝的操作系統(tǒng)為CentOS7.6,為便于調(diào)試,在服務(wù)器安全組中放行全部端口。微信小程序連接MQTT服務(wù)器需要通過Web Socket協(xié)議。首先需要搭建Nginx環(huán)境,接著安裝EMQ公司的MQTT軟件。安裝完成后設(shè)置Nginx代理MQTT的Web Socket的端口號8083,至此MQTT服務(wù)器搭建完成。
3.2 ? ?主程序設(shè)計
在STM32單片機(jī)中首先運(yùn)行OLED顯示屏和定時器的初始化,初始化完成后OLED屏幕會點(diǎn)亮。接著進(jìn)入循環(huán),先掃描獨(dú)立按鍵,如果有按鍵按下則進(jìn)行相應(yīng)的操作,例如開啟定時;接著判斷ESP8266 Wi-Fi模塊輸出的電平,高電平接通繼電器,低電平斷開繼電器。Wi-Fi模塊輸出的電平判斷在按鍵掃描之后進(jìn)行,因此通過按鍵定時且定時時間不為0時不能通過Wi-Fi模塊關(guān)閉繼電器,僅在按鍵定時時間為0時可通過Wi-Fi模塊遠(yuǎn)程控制。OLED顯示通電狀態(tài),若使用按鍵定時,還會顯示定時時間,最后返回按鍵掃描循環(huán)。系統(tǒng)流程圖如圖3所示。
3.3 ? ?微信小程序設(shè)計
本系統(tǒng)中微信小程序的作用接近于一個MQTT的客戶端,簡化了收發(fā)消息的過程。正因如此,只需記下相應(yīng)的消息模板和訂閱的主題,即可使用任何能收發(fā)MQTT消息的程序?qū)崿F(xiàn)定時插座遠(yuǎn)程控制,包括但不限于PC端、Android端、iOS端[4]。
3.4 ? ?Wi-Fi模塊程序設(shè)計
ESP8266 Wi-Fi模塊中運(yùn)行的程序流程如下:在接通電源后先進(jìn)行初始化。初始完成后掃描附近的Wi-Fi,在發(fā)現(xiàn)已存儲的Wi-Fi后建立連接,如果未發(fā)現(xiàn)已存儲的Wi-Fi,延時1 s后重復(fù)連接Wi-Fi的步驟。Wi-Fi連接完成后與MQTT服務(wù)器建立連接,如果連接失敗,重復(fù)嘗試,MQTT服務(wù)器連接成功后訂閱MQTT主題。
4 ? ?整體調(diào)試
將插座定時系統(tǒng)接通電源,待Wi-Fi模塊連接上Wi-Fi后開始調(diào)試。先按下K1,OLED屏幕顯示定時1 min,繼電器接通,負(fù)載LED燈點(diǎn)亮。1 min后繼電器斷開,負(fù)載LED燈熄滅。在微信小程序端點(diǎn)擊接通電源按鈕,負(fù)載LED燈點(diǎn)亮,小程序端的電源圖標(biāo)從空心變成實心。點(diǎn)擊關(guān)閉電源按鈕,負(fù)載LED燈熄滅,小程序端的電源圖標(biāo)從實心變成空心。在小程序端選擇定時1 min,其效果同點(diǎn)擊接通電源按鈕,1 min后效果同點(diǎn)擊關(guān)閉電源按鈕。至此,系統(tǒng)整體調(diào)試成功。
設(shè)計的插座定時系統(tǒng)實物圖如圖4所示。
5 ? ?結(jié)語
本插座定時系統(tǒng)采用STM32F103C8T6,單片機(jī)通過編程控制繼電器模塊實現(xiàn)控制插座的供電。通過按鍵設(shè)置定時時間,也可通過微信小程序遠(yuǎn)程調(diào)整插座電源狀態(tài)或設(shè)置定時時間,并用OLED屏幕顯示插座電源狀態(tài)和定時時間等信息。經(jīng)過調(diào)試,插座定時系統(tǒng)運(yùn)行正常,具有操作簡單的特點(diǎn)。
[參考文獻(xiàn)]
[1] MA M,HUANG B,WANG B,et al.Development of an energy-
efficient smart socket based on STM32F103[J]. Applied Sciences,2018,8(11):2276-2290.
[2] 林炳炎,廖華平,楊堅,等.基于智能插座的家居系統(tǒng)[J].微型機(jī)與應(yīng)用,2014,33(22):27-29.
[3] 蔣宏杰.智能家居控制系統(tǒng)軟硬件設(shè)計與實現(xiàn)[D].昆明:云南大學(xué),2017.
[4] 顧新萍.基于微信小程序的智能家居控制系統(tǒng)設(shè)計與實現(xiàn)[D].青島:青島大學(xué),2019.
收稿日期:2020-07-06
作者簡介:朱俊濤(1997—),男,江蘇蘇州人,研究方向:信號處理、單片機(jī)技術(shù)。
通信作者:郭莉莉(1986—),女,江蘇邳州人,博士研究生,講師,研究方向:信號處理、協(xié)作通信。