黑龍江大學(xué)電子工程學(xué)院 王志玉 楊 鵬 張仔龍 沈永良
中央空調(diào)控制器專為控制中央空調(diào)的風(fēng)機(jī)盤管開發(fā)設(shè)計(jì)。目前中央空調(diào)控制器還是以遙控器和按鍵控制為主,只能實(shí)現(xiàn)近距離控制未能實(shí)現(xiàn)遠(yuǎn)距離控制。
本文設(shè)計(jì)了一種基于微信小程序控制的中央空調(diào)控制器,在任何有網(wǎng)絡(luò)的地方即可輕松控制。微信作為常見的聊天工具已經(jīng)被廣泛普及,市場(chǎng)上的物聯(lián)網(wǎng)產(chǎn)品都需要下載專用的App才能控制,但由于大多數(shù)智能手機(jī)均可安裝微信客戶端,所以不用考慮兼容性問題,大大縮短了開發(fā)周期,也為用戶的使用提供了方便[1],微信小程序控制無需下載多余的App即可輕松控制。
本系統(tǒng)由中央空調(diào)控制器、騰訊云服務(wù)器、微信小程序組成。微信小程序負(fù)責(zé)作為中央空調(diào)控制器的控制端負(fù)責(zé)命令信息的發(fā)送,云服務(wù)器端負(fù)責(zé)命令的傳輸以及命令信息和數(shù)據(jù)信息的存儲(chǔ),作為微信小程序與硬件通信之間的紐帶,中央空調(diào)控制器負(fù)責(zé)數(shù)據(jù)請(qǐng)求和接受服務(wù)器端的傳過來的數(shù)據(jù),實(shí)現(xiàn)控制中央空調(diào)控制器,最終實(shí)現(xiàn)了微信小程序控制中央空調(diào)控制器的應(yīng)用。系統(tǒng)結(jié)構(gòu)如圖1所示:
圖1 系統(tǒng)的結(jié)構(gòu)圖
中央空調(diào)控制器包含有控制器板和電源供電板兩塊電路板組成,電源供電板是將220V市電經(jīng)過變壓、整流、濾波、穩(wěn)壓轉(zhuǎn)化為5V直流電壓為控制器板上的STM8單片機(jī)供電以及接受STM8單片機(jī)信號(hào)驅(qū)動(dòng)繼電器觸發(fā)風(fēng)機(jī)排管工作,控制器板包含NTC溫度獲取電路、斷碼液晶屏的驅(qū)動(dòng)電路、按鍵電路、WIFI模塊等。本硬件電路用于控制風(fēng)機(jī)排管的通斷,斷碼液晶屏顯示以及請(qǐng)求服務(wù)器MySQL數(shù)據(jù)庫中的數(shù)據(jù)等,中央空調(diào)控制器的實(shí)物圖如圖2所示。
圖2 中央空調(diào)控制器實(shí)物圖
服務(wù)器是網(wǎng)絡(luò)環(huán)境中高性能計(jì)算機(jī),它的高性能主要體現(xiàn)在高速度的運(yùn)算能力、長(zhǎng)時(shí)間的可靠運(yùn)行、強(qiáng)大的外部數(shù)據(jù)吞吐能力等方面[2]。在騰訊云上申請(qǐng)騰訊云服務(wù)器,獲得騰訊云服務(wù)器之后得到相應(yīng)的公網(wǎng)IP和內(nèi)網(wǎng)IP。PHP腳本語言socket編程綁定云服務(wù)器對(duì)應(yīng)的內(nèi)網(wǎng)IP,中央空調(diào)控制器的WIFI模塊使用TCP/IP協(xié)議經(jīng)路由器連接云服務(wù)器,綁定云服務(wù)器公網(wǎng)IP。
本系統(tǒng)的設(shè)計(jì)需要控制中央空調(diào)控制器的溫度、關(guān)機(jī)以及背光開啟和關(guān)閉。首先在利用遠(yuǎn)程桌面登錄騰訊云服務(wù)器,在管理員權(quán)限下進(jìn)入命令行之后連接數(shù)據(jù)庫,建立數(shù)據(jù)庫和數(shù)據(jù)表,然后插入字段4個(gè)字段id、set_temp、bk_ground、close_eqv然后插入一條記錄id=1、set_temp=26、bk_ground=0、close_eqv=0,表示設(shè)置中央空調(diào)控制器的溫度為26度,bk_ground=0表示背光的關(guān)閉,等于1表示背光開啟,close_eqv=0則表示關(guān)機(jī)。服務(wù)器端與STM8鏈路用TCP/IP協(xié)議,PHP的socket編程監(jiān)聽STM8請(qǐng)求命令。微信與服務(wù)器通信時(shí),將微信端作為HTTP客戶端,通過POST方式向服務(wù)器提交命令,服務(wù)器獲取微信端提交的命令并存入MySQL數(shù)據(jù)庫。
2.2.1 服務(wù)器與中央空調(diào)控制器通信
PHP的socket編程,用于建立網(wǎng)絡(luò)服務(wù)的客戶端和服務(wù)端之間通信鏈路。通過php的socket_create函數(shù)創(chuàng)建一個(gè)socket套接字,建立網(wǎng)絡(luò)數(shù)據(jù)流(在本系統(tǒng)中WIFI模塊作為客戶端連接服務(wù)器),然后綁定騰訊云服務(wù)器的內(nèi)網(wǎng)IP地址與需要監(jiān)聽的端口號(hào),監(jiān)聽相應(yīng)套接字,阻塞直到客戶端連接上,WIFI模塊連接上服務(wù)器之后可以進(jìn)行數(shù)據(jù)的收發(fā)。在管理員模式進(jìn)入命令行,運(yùn)行編寫好的PHP程序,socket通信的流程如圖3所示。
圖3 socket通信的流程
WIFI模塊與服務(wù)器通信編寫了一套通信協(xié)議,WIFI模塊與服務(wù)器通信采用一發(fā)一回的模式,當(dāng)下位機(jī)請(qǐng)求數(shù)據(jù)時(shí),服務(wù)器收到請(qǐng)求返回?cái)?shù)據(jù)給下位機(jī),通信協(xié)議如下:
下位機(jī)請(qǐng)求時(shí)發(fā)送數(shù)據(jù):START
服務(wù)器響應(yīng)為:RTART XX A B C
其中START表示數(shù)據(jù)請(qǐng)求命令(START后的+++代表WIFI退出透?jìng)髂J剑?,RTART表示返回的數(shù)據(jù),XX代表發(fā)送給空調(diào)控制器的溫度設(shè)定的數(shù)字字符,A的位置若為字符‘a(chǎn)’代表關(guān)機(jī),其他值忽略,B的位置若為字符‘b’代表關(guān)閉背光,C的位置若為‘c’,代表關(guān)閉背光,其中B與C的位置不能同時(shí)為‘b’和‘c’,數(shù)據(jù)發(fā)送和接收過程如圖4所示。
圖4 數(shù)據(jù)發(fā)送和接收過程
2.2.2 微信小程序與服務(wù)器通信
微信小程序與服務(wù)器之間通過HTTP協(xié)議進(jìn)行通信,微信小程序作為HTTP協(xié)議的客戶端,通過POST方式向服務(wù)器發(fā)送HTTP請(qǐng)求并上傳數(shù)據(jù),服務(wù)器接收到請(qǐng)求命令之后首先判斷POST方式獲取的id或者set_temp、bk_ground、close_eqv中三者之一的值是否為空,若為空則忽略,否者連接MySQL數(shù)據(jù)庫并將獲得的數(shù)據(jù)更新到相應(yīng)id對(duì)應(yīng)的數(shù)據(jù)表中。
利用微信開發(fā)者工具進(jìn)行微信小程序的程序編寫,小程序框架提供了一個(gè)名為wx.request()的方法,用于發(fā)起HTTP請(qǐng)求,并且發(fā)送相應(yīng)的命令給服務(wù)器,服務(wù)器將此命令下發(fā)給下位機(jī),進(jìn)而實(shí)現(xiàn)遠(yuǎn)程控制的作用,搭建好的微信小程序如圖5。
圖5 微信小程序
本文設(shè)計(jì)了一款基于微信小程序控制的中央空調(diào)控制器。其中用到了微信小程序開發(fā)技術(shù)、PHP、MySQL數(shù)據(jù)庫、STM8單片機(jī)等,微信小程序與服務(wù)器通過HTTP協(xié)議通信,服務(wù)器與單片機(jī)通過TCP/IP協(xié)議通信,最終實(shí)現(xiàn)了微信小程序遠(yuǎn)程控制中央空調(diào)。