朱俊濤 郭莉莉 張展 李璇



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