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