鄭詩(shī)程,李星月,郎佳紅
(安徽工業(yè)大學(xué) 電氣與信息工程學(xué)院,安徽 馬鞍山 243002)
我國(guó)太陽(yáng)能資源豐富,多地都在大面積利用太陽(yáng)能,利用太陽(yáng)能可以減少對(duì)不可再生能源的浪費(fèi),降低對(duì)環(huán)境的污染。在我國(guó)對(duì)太陽(yáng)能的利用形式中,承壓式太陽(yáng)能熱水器占據(jù)重要地位,為居民提供了充足的熱水資源。雖然太陽(yáng)能熱水器產(chǎn)業(yè)發(fā)展迅速,但仍面臨著諸多問(wèn)題,比如智能化、人性化和節(jié)能方面的不足。隨著科學(xué)技術(shù)的不斷創(chuàng)新以及物聯(lián)網(wǎng)技術(shù)的快速發(fā)展,物聯(lián)網(wǎng)已經(jīng)成為全球研究的熱點(diǎn)[1-2]。本文設(shè)計(jì)了一種以STC15單片機(jī)作為控制中心,結(jié)合物聯(lián)網(wǎng)技術(shù)的太陽(yáng)能熱水器控制系統(tǒng)。一個(gè)完整的承壓式太陽(yáng)能熱水器控制器主要由單片機(jī)、電源、按鍵、溫度傳感器、顯示模塊、遠(yuǎn)程監(jiān)控模塊等組成。遠(yuǎn)程監(jiān)控模塊是結(jié)合物聯(lián)網(wǎng)技術(shù)通過(guò)機(jī)智云平臺(tái)創(chuàng)建手機(jī)APP來(lái)實(shí)現(xiàn)的。機(jī)智云平臺(tái)為開(kāi)發(fā)者提供了自助式智能硬件開(kāi)發(fā)工具與開(kāi)放的云端服務(wù)[3]。通過(guò)“傻瓜化”的自助工具、SDK與API服務(wù)能力最大限度降低了物聯(lián)網(wǎng)硬件開(kāi)發(fā)的技術(shù)門檻,幫助開(kāi)發(fā)者進(jìn)行硬件智能化升級(jí),降低了研發(fā)成本,加快了開(kāi)發(fā)者的產(chǎn)品投產(chǎn)速度。該系統(tǒng)中STC15F2K60S2單片機(jī)通過(guò)WiFi無(wú)線通信模塊將太陽(yáng)能熱水器相關(guān)參數(shù)和狀態(tài)傳輸至手機(jī)APP,通過(guò)對(duì)手機(jī)APP的使用實(shí)現(xiàn)遠(yuǎn)程監(jiān)控和操作。用戶無(wú)須親臨設(shè)備現(xiàn)場(chǎng)就可以監(jiān)視并控制家用太陽(yáng)能熱水器的運(yùn)行狀態(tài)及各種參數(shù),方便用戶使用,智能化、人性化程度得到提高。
承壓式太陽(yáng)能熱水器系統(tǒng)結(jié)構(gòu)框圖如圖1所示,系統(tǒng)主要由溫度傳感器、驅(qū)動(dòng)電路、單片機(jī)、按鍵、數(shù)碼管、WiFi模塊、報(bào)警裝置和手機(jī)APP等組成。溫度傳感器通過(guò)溫度探頭測(cè)量水箱溫度,并將數(shù)據(jù)傳送至單片機(jī)進(jìn)行處理。驅(qū)動(dòng)電路通過(guò)單片機(jī)控制繼電器吸合與斷開(kāi),從而控制加熱裝置工作[4]。根據(jù)需要設(shè)計(jì)按鍵,實(shí)現(xiàn)設(shè)置加熱溫度、控制加熱裝置開(kāi)關(guān)、復(fù)位和配網(wǎng)等功能。數(shù)碼管用來(lái)顯示傳感器測(cè)得的溫度和用戶設(shè)置的溫度。報(bào)警裝置在熱水器工作異常時(shí),通過(guò)LED燈閃爍和蜂鳴器發(fā)聲提醒用戶。通過(guò)WiFi模塊借助機(jī)智云平臺(tái)創(chuàng)建手機(jī)APP,使用戶能夠通過(guò)手機(jī)界面遠(yuǎn)程監(jiān)控家用熱水器。用戶可以通過(guò)手機(jī)APP設(shè)定加熱溫度,如果符合加熱條件,手機(jī)APP傳輸數(shù)據(jù)至單片機(jī),單片機(jī)會(huì)傳輸信息給驅(qū)動(dòng)電路,從而控制加熱裝置進(jìn)行工作。如果不符合加熱條件,單片機(jī)會(huì)發(fā)出信號(hào)控制繼電器斷開(kāi),使加熱裝置停止工作。系統(tǒng)中還設(shè)計(jì)了掉電保存功能,當(dāng)單片機(jī)斷電后再打開(kāi)電源,用戶之前設(shè)置的溫度值仍保存不變。本系統(tǒng)結(jié)合了物聯(lián)網(wǎng)技術(shù),并通過(guò)機(jī)智云平臺(tái)創(chuàng)建了手機(jī)APP,具備智能家居的特點(diǎn),有針對(duì)性地解決了傳統(tǒng)控制系統(tǒng)的不足,提升了用戶對(duì)熱水器的使用體驗(yàn),同時(shí)提高了熱水器的智能化程度。
圖1 承壓式太陽(yáng)能熱水器系統(tǒng)結(jié)構(gòu)框圖
本系統(tǒng)溫度檢測(cè)電路中采用DS18B20數(shù)字型溫度傳感器。它采用單線接口方式,僅需一個(gè)端口引腳來(lái)發(fā)送和接收信息,在單片機(jī)和DS18B20之間僅需一條數(shù)據(jù)線和一條地線進(jìn)行接口。DS18B20內(nèi)部有3個(gè)主要數(shù)字部件:64位激光ROM、溫度傳感器、非易失性溫度報(bào)警觸發(fā)器TH和TL[5]。本設(shè)計(jì)中DS18B20采用3~5.5 V電源供電,其原理如圖2所示。該溫度傳感器測(cè)量的結(jié)果以數(shù)字量方式串行傳送,由于其數(shù)模轉(zhuǎn)換已經(jīng)在DS18B20內(nèi)部完成,因此不需要連接A/D轉(zhuǎn)換器的輸入通道。將DS18B20置于水箱合適位置處,確保測(cè)得溫度的精度較高。
圖2 DS18B20數(shù)字型溫度傳感器原理
承壓式太陽(yáng)能熱水器是采用承壓式水箱的太陽(yáng)能熱水器,水箱可以提供強(qiáng)勁的水壓,直接利用給水管網(wǎng)壓力作為熱水出水壓力,使熱水壓力等同于冷水壓力[6]。因此,在驅(qū)動(dòng)電路中只需要通過(guò)繼電器實(shí)現(xiàn)加熱操作,其驅(qū)動(dòng)電路和報(bào)警裝置原理如圖3所示。
圖3 驅(qū)動(dòng)電路和報(bào)警裝置原理
繼電器是具有隔離功能的自動(dòng)開(kāi)關(guān)元件,廣泛應(yīng)用于自動(dòng)控制和電力電子等其他設(shè)備中[7]。經(jīng)過(guò)分析,本系統(tǒng)選擇了OZ-SH-112LM1型繼電器。在驅(qū)動(dòng)回路中,IO端口連接STC15單片機(jī)的P0.4引腳,用于控制繼電器通斷;繼電器的1端和2端并聯(lián)一個(gè)二極管,用于吸收和釋放繼電器線圈斷電時(shí)產(chǎn)生的反向電動(dòng)勢(shì),防止反向電動(dòng)勢(shì)擊穿三極管并干擾其他電路;報(bào)警裝置由LED燈和蜂鳴器組成。
由圖3可知,當(dāng)單片機(jī)控制IO端口為高電平時(shí),三極管導(dǎo)通,繼電器K1端通電吸合,CN1-L端口接入220 V電源,CN2端口與電加熱棒相連,電加熱棒工作;當(dāng)單片機(jī)控制IO端口為低電平時(shí),三極管不導(dǎo)通,繼電器K1端斷電釋放,電加熱棒停止工作。在滿足設(shè)置溫度大于測(cè)得實(shí)時(shí)溫度,并需要打開(kāi)加熱開(kāi)關(guān)時(shí),單片機(jī)使P0.4引腳輸出高電平,此時(shí)繼電器K1通電吸合,使得繼電器輸出側(cè)A和B導(dǎo)通,輸出回路中的加熱棒通電工作,系統(tǒng)開(kāi)始對(duì)水箱中的水進(jìn)行加熱,同時(shí)伴隨LED2燈亮。當(dāng)加熱溫度達(dá)到設(shè)置溫度值,單片機(jī)使P0.4引腳輸出低電平,此時(shí)繼電器K1斷電釋放,使得繼電器輸出側(cè)A和B斷開(kāi),輸出回路中的加熱棒停止工作,同時(shí)LED2燈熄滅。如果系統(tǒng)出現(xiàn)以下異常,報(bào)警裝置會(huì)給用戶發(fā)出異常提醒。第一種異常情況,當(dāng)設(shè)置溫度小于或者等于測(cè)得實(shí)時(shí)溫度時(shí),用戶按下加熱按鈕,控制單片機(jī)使P0.4引腳輸出高電平,則系統(tǒng)會(huì)控制單片機(jī)的P1.4引腳輸出高電平,控制P3.4引腳輸出低電平,此時(shí)蜂鳴器發(fā)聲以及LED3燈亮,系統(tǒng)控制單片機(jī)使P0.4引腳輸出低電平,禁止加熱棒工作。第二種異常情況,當(dāng)加熱溫度達(dá)到設(shè)置溫度時(shí),加熱棒仍然繼續(xù)加熱,此時(shí)系統(tǒng)會(huì)控制單片機(jī)的P1.4引腳輸出高電平,控制P3.4引腳輸出低電平,此時(shí)蜂鳴器發(fā)聲以及LED3燈亮。不斷檢測(cè)P0.4引腳輸出電平狀態(tài),直至P0.4引腳輸出低電平,蜂鳴器停止發(fā)聲,LED3燈熄滅。待用戶操作正確后,系統(tǒng)恢復(fù)正常。
本方案通過(guò)數(shù)碼管顯示傳感器測(cè)得的溫度和設(shè)置的加熱溫度,根據(jù)數(shù)碼管的特點(diǎn),選擇利用兩級(jí)74HC595芯片驅(qū)動(dòng)數(shù)碼管,其原理如圖4所示。74HC595是一款漏極開(kāi)路輸出的CMOS一位寄存器,具有可控的三態(tài)輸出端口、標(biāo)準(zhǔn)SPI串行接口[8]。
圖4 74HC595驅(qū)動(dòng)兩位八段數(shù)碼管原理
74HC595在正常使用時(shí)10端復(fù)位端接高電平,13端輸出允許端接低電平。在14端串行數(shù)據(jù)輸入端輸入數(shù)據(jù),每輸入一位,11端移位寄存器輸入時(shí)鐘上升沿有效一次,直到8位數(shù)據(jù)輸入完畢;然后,12端存儲(chǔ)器輸入時(shí)鐘上升沿有效一次,輸入的數(shù)據(jù)就被送到了輸出端。上一級(jí)74HC595芯片的9端級(jí)聯(lián)輸出端,與下一級(jí)74HC595芯片的14端串行數(shù)據(jù)輸入端相連,實(shí)現(xiàn)了兩個(gè)芯片的級(jí)聯(lián)。通過(guò)移位寄存器的時(shí)鐘輸入時(shí)鐘上升沿并將數(shù)據(jù)移入和通過(guò)存儲(chǔ)寄存器的時(shí)鐘輸入時(shí)鐘上升沿并將數(shù)據(jù)輸出,這是兩個(gè)獨(dú)立的過(guò)程,實(shí)際應(yīng)用時(shí)互不干擾,在輸出數(shù)據(jù)的同時(shí)可以移入數(shù)據(jù)。
在硬件電路中設(shè)計(jì)了多個(gè)按鍵,按鍵主要是用來(lái)設(shè)置溫度,控制溫度加法計(jì)數(shù)和減法計(jì)數(shù),以及用來(lái)控制加熱裝置、配網(wǎng)和復(fù)位。按鍵設(shè)計(jì)原理如圖5所示。
圖5 按鍵設(shè)計(jì)原理
由圖5可知,按鍵SW1是對(duì)當(dāng)前設(shè)置加熱溫度進(jìn)行減法計(jì)數(shù),按鍵SW2是對(duì)當(dāng)前設(shè)置加熱溫度進(jìn)行加法計(jì)數(shù)。在按鍵短按時(shí),程序跳轉(zhuǎn)至溫度設(shè)置子程序,此時(shí)數(shù)碼管顯示設(shè)置的加熱溫度,并伴隨LED燈的LED1或LED2閃爍,經(jīng)過(guò)5 s后,跳出溫度設(shè)置子程序,數(shù)碼管繼續(xù)顯示傳感器測(cè)得的實(shí)時(shí)溫度。按鍵SW3用來(lái)控制加熱裝置,在按鍵SW3短按時(shí),程序跳轉(zhuǎn)至溫度加熱子程序,系統(tǒng)控制單片機(jī)使P0.4引腳輸出高電平,此時(shí)繼電器K1通電吸合,輸出回路中的加熱棒通電工作,系統(tǒng)開(kāi)始對(duì)水箱中的水進(jìn)行加熱,同時(shí)伴隨LED2燈亮。當(dāng)加熱溫度達(dá)到設(shè)置溫度值時(shí),單片機(jī)使P0.4引腳輸出低電平,此時(shí)繼電器K1斷電釋放,輸出回路中的加熱棒停止工作,同時(shí)LED2燈熄滅,跳出溫度加熱子程序。按鍵SW4控制WiFi模塊進(jìn)行配置入網(wǎng),實(shí)現(xiàn)單片機(jī)與手機(jī)APP的遠(yuǎn)程通信。按鍵SW5按鍵短按,進(jìn)入模組復(fù)位。
遠(yuǎn)程通信部分選用ATK-ESP8266-V1.3 WiFi模塊,采用串口與MCU通信,內(nèi)置TCP/IP協(xié)議棧,能夠?qū)崿F(xiàn)串口與WiFi之間的數(shù)據(jù)傳輸[9]。如果要實(shí)現(xiàn)單片機(jī)與手機(jī)APP的通信,必須在WiFi模塊中下載GAgent固件庫(kù)。GAgent主要作用是數(shù)據(jù)轉(zhuǎn)發(fā),是設(shè)備數(shù)據(jù)、機(jī)智云、應(yīng)用端的數(shù)據(jù)交互橋梁。GAgent固件庫(kù)下載完成后,該系統(tǒng)中主控制芯片STC15通過(guò)WiFi無(wú)線通信模塊將承壓式太陽(yáng)能熱水器相關(guān)參數(shù)和狀態(tài)發(fā)送給基于機(jī)智云平臺(tái)開(kāi)發(fā)的手機(jī)APP,從而實(shí)現(xiàn)遠(yuǎn)程通信監(jiān)控。同時(shí),在機(jī)智云平臺(tái)上可以查看歷史和實(shí)時(shí)的設(shè)備交互數(shù)據(jù)。
對(duì)系統(tǒng)上電后,控制器開(kāi)始工作。在主程序中,控制器首先進(jìn)行初始化,完成后進(jìn)行溫度采集,并對(duì)采集的數(shù)據(jù)進(jìn)行處理;隨后,進(jìn)行配網(wǎng),實(shí)現(xiàn)主控制器與手機(jī)APP之間的網(wǎng)絡(luò)通信;之后,進(jìn)行信息的收發(fā)以及響應(yīng)。當(dāng)主控制器接收到控制命令時(shí),控制單片機(jī)執(zhí)行命令;當(dāng)主控制器未接收到控制命令時(shí),控制器繼續(xù)保持信息收發(fā)狀態(tài)。當(dāng)主控制器接收到異常狀態(tài)提醒時(shí),控制單片機(jī)觸發(fā)報(bào)警裝置;當(dāng)主控制器未接收到異常狀態(tài)提醒時(shí),控制器繼續(xù)保持信息收發(fā)狀態(tài)。主程序控制流程如圖6所示。
圖6 主程序控制流程
完成配網(wǎng)后,進(jìn)行上報(bào)協(xié)議和控制協(xié)議處理。協(xié)議處理完成后進(jìn)行用戶數(shù)據(jù)采集。獲取用戶區(qū)的上報(bào)型數(shù)據(jù),用戶調(diào)用相關(guān)接口可以完成設(shè)備數(shù)據(jù)的變化上報(bào)以及用戶區(qū)數(shù)據(jù)到上報(bào)型數(shù)據(jù)的轉(zhuǎn)換,并將上報(bào)數(shù)據(jù)發(fā)送給模組。完成后進(jìn)入控制反饋,進(jìn)行相應(yīng)數(shù)據(jù)類型的轉(zhuǎn)換,根據(jù)已生成的“控制型事件”進(jìn)行相應(yīng)事件處理。其中,網(wǎng)絡(luò)通信控制流程如圖7所示。
圖7 網(wǎng)絡(luò)通信控制流程
在熱水器加熱功能開(kāi)啟過(guò)程中,當(dāng)系統(tǒng)上電后,溫度傳感器會(huì)檢測(cè)水箱溫度,并將數(shù)據(jù)送至控制加熱子程序。首先,對(duì)加熱指令進(jìn)行監(jiān)聽(tīng)。當(dāng)檢測(cè)到的水箱溫度小于用戶設(shè)置的加熱溫度,同時(shí)檢測(cè)加熱按鍵按下,控制器發(fā)出加熱信號(hào),執(zhí)行加熱指令;當(dāng)不符合加熱條件時(shí),一直處于監(jiān)聽(tīng)加熱指令狀態(tài)。然后,在執(zhí)行加熱指令時(shí)對(duì)停止加熱指令進(jìn)行監(jiān)聽(tīng)。當(dāng)檢測(cè)到的水箱溫度大于或等于用戶設(shè)置的加熱溫度,執(zhí)行停止加熱指令;當(dāng)檢測(cè)到的水箱溫度未達(dá)到用戶設(shè)置的加熱溫度,繼續(xù)執(zhí)行加熱指令。熱水器的加熱程序流程如圖8所示。
圖8 熱水器加熱程序流程
對(duì)于實(shí)現(xiàn)遠(yuǎn)程通信,機(jī)智云平臺(tái)是數(shù)據(jù)交互的橋梁。因此,需要對(duì)機(jī)智云平臺(tái)進(jìn)行配置,創(chuàng)建出符合用戶需求的手機(jī)APP。登錄機(jī)智云官網(wǎng),選擇對(duì)應(yīng)項(xiàng)創(chuàng)建新產(chǎn)品,填寫設(shè)備產(chǎn)品基本信息。技術(shù)方案選擇WiFi/移動(dòng)網(wǎng)絡(luò)方案;選擇通信方式為WiFi;數(shù)據(jù)傳輸方式為定長(zhǎng)。產(chǎn)品創(chuàng)建成功后,機(jī)智云為該產(chǎn)品分配Product Key和Product Secret參數(shù)。Product Key參數(shù)由開(kāi)發(fā)者寫入設(shè)備MCU,并告知WiFi模塊,WiFi模塊登錄機(jī)智云后,機(jī)智云將會(huì)識(shí)別該P(yáng)roduct Key的產(chǎn)品。產(chǎn)品創(chuàng)建完成后,需要?jiǎng)?chuàng)建數(shù)據(jù)點(diǎn)。結(jié)合設(shè)備的功能需求,共配置了5個(gè)對(duì)應(yīng)的數(shù)據(jù)點(diǎn)。
數(shù)據(jù)點(diǎn)創(chuàng)建完成后,自動(dòng)生成MCU SDK代碼包,對(duì)需要的程序進(jìn)行移植。需要移植的程序主要有機(jī)智云協(xié)議層和工具層[10]。代碼移植完成后,調(diào)用相應(yīng)的API接口和添加相應(yīng)的邏輯處理。移植好的程序還不能實(shí)現(xiàn)通信,需要根據(jù)實(shí)現(xiàn)的功能進(jìn)行相關(guān)配置,包括串口配置、定時(shí)器配置、下行處理、上行處理和配置入網(wǎng)。
配置串口1實(shí)現(xiàn)日志打印,配置串口2實(shí)現(xiàn)數(shù)據(jù)的接收與發(fā)送,配置定時(shí)器1為毫秒級(jí)中斷。上行處理:首先要完成傳感器驅(qū)動(dòng)開(kāi)發(fā),然后在Gizwits目錄下的gizwits_pro duct.c文件userHandle()函數(shù)中實(shí)現(xiàn)傳感器數(shù)據(jù)采集,只需要將采集到的數(shù)值賦給對(duì)應(yīng)用戶區(qū)的設(shè)備狀態(tài)結(jié)構(gòu)體數(shù)據(jù)位。下行處理:首先要完成傳感器驅(qū)動(dòng)開(kāi)發(fā),然后在Gizwits目錄下的gizwits_product.c文件中找到相應(yīng)函數(shù)進(jìn)行修改。在該控制系統(tǒng)中,只選用了兩種模式即WIFI_AIRLINK_MODE和WIFI_RESET_MODE,配置按鍵,通過(guò)按鍵進(jìn)入AirLink模式和實(shí)現(xiàn)模組復(fù)位功能。
本文基于STC15單片機(jī)設(shè)計(jì)了一款承壓式太陽(yáng)能熱水器智能控制系統(tǒng),以STC15作為核心板塊,通過(guò)WiFi模塊借助機(jī)智云平臺(tái)與手機(jī)APP建立連接,實(shí)現(xiàn)遠(yuǎn)程通信。采用DS18B20測(cè)量水溫,使用繼電器控制加熱棒實(shí)現(xiàn)加熱。利用數(shù)碼管、LED燈、手機(jī)APP等作為人機(jī)交互界面,整體模塊化設(shè)計(jì)優(yōu)化了功能,簡(jiǎn)化了安裝。