鄭詩程,李星月,郎佳紅
(安徽工業大學 電氣與信息工程學院,安徽 馬鞍山 243002)
我國太陽能資源豐富,多地都在大面積利用太陽能,利用太陽能可以減少對不可再生能源的浪費,降低對環境的污染。在我國對太陽能的利用形式中,承壓式太陽能熱水器占據重要地位,為居民提供了充足的熱水資源。雖然太陽能熱水器產業發展迅速,但仍面臨著諸多問題,比如智能化、人性化和節能方面的不足。隨著科學技術的不斷創新以及物聯網技術的快速發展,物聯網已經成為全球研究的熱點[1-2]。本文設計了一種以STC15單片機作為控制中心,結合物聯網技術的太陽能熱水器控制系統。一個完整的承壓式太陽能熱水器控制器主要由單片機、電源、按鍵、溫度傳感器、顯示模塊、遠程監控模塊等組成。遠程監控模塊是結合物聯網技術通過機智云平臺創建手機APP來實現的。機智云平臺為開發者提供了自助式智能硬件開發工具與開放的云端服務[3]。通過“傻瓜化”的自助工具、SDK與API服務能力最大限度降低了物聯網硬件開發的技術門檻,幫助開發者進行硬件智能化升級,降低了研發成本,加快了開發者的產品投產速度。該系統中STC15F2K60S2單片機通過WiFi無線通信模塊將太陽能熱水器相關參數和狀態傳輸至手機APP,通過對手機APP的使用實現遠程監控和操作。用戶無須親臨設備現場就可以監視并控制家用太陽能熱水器的運行狀態及各種參數,方便用戶使用,智能化、人性化程度得到提高。
承壓式太陽能熱水器系統結構框圖如圖1所示,系統主要由溫度傳感器、驅動電路、單片機、按鍵、數碼管、WiFi模塊、報警裝置和手機APP等組成。溫度傳感器通過溫度探頭測量水箱溫度,并將數據傳送至單片機進行處理。驅動電路通過單片機控制繼電器吸合與斷開,從而控制加熱裝置工作[4]。根據需要設計按鍵,實現設置加熱溫度、控制加熱裝置開關、復位和配網等功能。數碼管用來顯示傳感器測得的溫度和用戶設置的溫度。報警裝置在熱水器工作異常時,通過LED燈閃爍和蜂鳴器發聲提醒用戶。通過WiFi模塊借助機智云平臺創建手機APP,使用戶能夠通過手機界面遠程監控家用熱水器。用戶可以通過手機APP設定加熱溫度,如果符合加熱條件,手機APP傳輸數據至單片機,單片機會傳輸信息給驅動電路,從而控制加熱裝置進行工作。如果不符合加熱條件,單片機會發出信號控制繼電器斷開,使加熱裝置停止工作。系統中還設計了掉電保存功能,當單片機斷電后再打開電源,用戶之前設置的溫度值仍保存不變。本系統結合了物聯網技術,并通過機智云平臺創建了手機APP,具備智能家居的特點,有針對性地解決了傳統控制系統的不足,提升了用戶對熱水器的使用體驗,同時提高了熱水器的智能化程度。

圖1 承壓式太陽能熱水器系統結構框圖
本系統溫度檢測電路中采用DS18B20數字型溫度傳感器。它采用單線接口方式,僅需一個端口引腳來發送和接收信息,在單片機和DS18B20之間僅需一條數據線和一條地線進行接口。DS18B20內部有3個主要數字部件:64位激光ROM、溫度傳感器、非易失性溫度報警觸發器TH和TL[5]。本設計中DS18B20采用3~5.5 V電源供電,其原理如圖2所示。該溫度傳感器測量的結果以數字量方式串行傳送,由于其數模轉換已經在DS18B20內部完成,因此不需要連接A/D轉換器的輸入通道。將DS18B20置于水箱合適位置處,確保測得溫度的精度較高。

圖2 DS18B20數字型溫度傳感器原理
承壓式太陽能熱水器是采用承壓式水箱的太陽能熱水器,水箱可以提供強勁的水壓,直接利用給水管網壓力作為熱水出水壓力,使熱水壓力等同于冷水壓力[6]。因此,在驅動電路中只需要通過繼電器實現加熱操作,其驅動電路和報警裝置原理如圖3所示。

圖3 驅動電路和報警裝置原理
繼電器是具有隔離功能的自動開關元件,廣泛應用于自動控制和電力電子等其他設備中[7]。經過分析,本系統選擇了OZ-SH-112LM1型繼電器。在驅動回路中,IO端口連接STC15單片機的P0.4引腳,用于控制繼電器通斷;繼電器的1端和2端并聯一個二極管,用于吸收和釋放繼電器線圈斷電時產生的反向電動勢,防止反向電動勢擊穿三極管并干擾其他電路;報警裝置由LED燈和蜂鳴器組成。
由圖3可知,當單片機控制IO端口為高電平時,三極管導通,繼電器K1端通電吸合,CN1-L端口接入220 V電源,CN2端口與電加熱棒相連,電加熱棒工作;當單片機控制IO端口為低電平時,三極管不導通,繼電器K1端斷電釋放,電加熱棒停止工作。在滿足設置溫度大于測得實時溫度,并需要打開加熱開關時,單片機使P0.4引腳輸出高電平,此時繼電器K1通電吸合,使得繼電器輸出側A和B導通,輸出回路中的加熱棒通電工作,系統開始對水箱中的水進行加熱,同時伴隨LED2燈亮。當加熱溫度達到設置溫度值,單片機使P0.4引腳輸出低電平,此時繼電器K1斷電釋放,使得繼電器輸出側A和B斷開,輸出回路中的加熱棒停止工作,同時LED2燈熄滅。如果系統出現以下異常,報警裝置會給用戶發出異常提醒。第一種異常情況,當設置溫度小于或者等于測得實時溫度時,用戶按下加熱按鈕,控制單片機使P0.4引腳輸出高電平,則系統會控制單片機的P1.4引腳輸出高電平,控制P3.4引腳輸出低電平,此時蜂鳴器發聲以及LED3燈亮,系統控制單片機使P0.4引腳輸出低電平,禁止加熱棒工作。第二種異常情況,當加熱溫度達到設置溫度時,加熱棒仍然繼續加熱,此時系統會控制單片機的P1.4引腳輸出高電平,控制P3.4引腳輸出低電平,此時蜂鳴器發聲以及LED3燈亮。不斷檢測P0.4引腳輸出電平狀態,直至P0.4引腳輸出低電平,蜂鳴器停止發聲,LED3燈熄滅。待用戶操作正確后,系統恢復正常。
本方案通過數碼管顯示傳感器測得的溫度和設置的加熱溫度,根據數碼管的特點,選擇利用兩級74HC595芯片驅動數碼管,其原理如圖4所示。74HC595是一款漏極開路輸出的CMOS一位寄存器,具有可控的三態輸出端口、標準SPI串行接口[8]。

圖4 74HC595驅動兩位八段數碼管原理
74HC595在正常使用時10端復位端接高電平,13端輸出允許端接低電平。在14端串行數據輸入端輸入數據,每輸入一位,11端移位寄存器輸入時鐘上升沿有效一次,直到8位數據輸入完畢;然后,12端存儲器輸入時鐘上升沿有效一次,輸入的數據就被送到了輸出端。上一級74HC595芯片的9端級聯輸出端,與下一級74HC595芯片的14端串行數據輸入端相連,實現了兩個芯片的級聯。通過移位寄存器的時鐘輸入時鐘上升沿并將數據移入和通過存儲寄存器的時鐘輸入時鐘上升沿并將數據輸出,這是兩個獨立的過程,實際應用時互不干擾,在輸出數據的同時可以移入數據。
在硬件電路中設計了多個按鍵,按鍵主要是用來設置溫度,控制溫度加法計數和減法計數,以及用來控制加熱裝置、配網和復位。按鍵設計原理如圖5所示。

圖5 按鍵設計原理
由圖5可知,按鍵SW1是對當前設置加熱溫度進行減法計數,按鍵SW2是對當前設置加熱溫度進行加法計數。在按鍵短按時,程序跳轉至溫度設置子程序,此時數碼管顯示設置的加熱溫度,并伴隨LED燈的LED1或LED2閃爍,經過5 s后,跳出溫度設置子程序,數碼管繼續顯示傳感器測得的實時溫度。按鍵SW3用來控制加熱裝置,在按鍵SW3短按時,程序跳轉至溫度加熱子程序,系統控制單片機使P0.4引腳輸出高電平,此時繼電器K1通電吸合,輸出回路中的加熱棒通電工作,系統開始對水箱中的水進行加熱,同時伴隨LED2燈亮。當加熱溫度達到設置溫度值時,單片機使P0.4引腳輸出低電平,此時繼電器K1斷電釋放,輸出回路中的加熱棒停止工作,同時LED2燈熄滅,跳出溫度加熱子程序。按鍵SW4控制WiFi模塊進行配置入網,實現單片機與手機APP的遠程通信。按鍵SW5按鍵短按,進入模組復位。
遠程通信部分選用ATK-ESP8266-V1.3 WiFi模塊,采用串口與MCU通信,內置TCP/IP協議棧,能夠實現串口與WiFi之間的數據傳輸[9]。如果要實現單片機與手機APP的通信,必須在WiFi模塊中下載GAgent固件庫。GAgent主要作用是數據轉發,是設備數據、機智云、應用端的數據交互橋梁。GAgent固件庫下載完成后,該系統中主控制芯片STC15通過WiFi無線通信模塊將承壓式太陽能熱水器相關參數和狀態發送給基于機智云平臺開發的手機APP,從而實現遠程通信監控。同時,在機智云平臺上可以查看歷史和實時的設備交互數據。
對系統上電后,控制器開始工作。在主程序中,控制器首先進行初始化,完成后進行溫度采集,并對采集的數據進行處理;隨后,進行配網,實現主控制器與手機APP之間的網絡通信;之后,進行信息的收發以及響應。當主控制器接收到控制命令時,控制單片機執行命令;當主控制器未接收到控制命令時,控制器繼續保持信息收發狀態。當主控制器接收到異常狀態提醒時,控制單片機觸發報警裝置;當主控制器未接收到異常狀態提醒時,控制器繼續保持信息收發狀態。主程序控制流程如圖6所示。

圖6 主程序控制流程
完成配網后,進行上報協議和控制協議處理。協議處理完成后進行用戶數據采集。獲取用戶區的上報型數據,用戶調用相關接口可以完成設備數據的變化上報以及用戶區數據到上報型數據的轉換,并將上報數據發送給模組。完成后進入控制反饋,進行相應數據類型的轉換,根據已生成的“控制型事件”進行相應事件處理。其中,網絡通信控制流程如圖7所示。

圖7 網絡通信控制流程
在熱水器加熱功能開啟過程中,當系統上電后,溫度傳感器會檢測水箱溫度,并將數據送至控制加熱子程序。首先,對加熱指令進行監聽。當檢測到的水箱溫度小于用戶設置的加熱溫度,同時檢測加熱按鍵按下,控制器發出加熱信號,執行加熱指令;當不符合加熱條件時,一直處于監聽加熱指令狀態。然后,在執行加熱指令時對停止加熱指令進行監聽。當檢測到的水箱溫度大于或等于用戶設置的加熱溫度,執行停止加熱指令;當檢測到的水箱溫度未達到用戶設置的加熱溫度,繼續執行加熱指令。熱水器的加熱程序流程如圖8所示。

圖8 熱水器加熱程序流程
對于實現遠程通信,機智云平臺是數據交互的橋梁。因此,需要對機智云平臺進行配置,創建出符合用戶需求的手機APP。登錄機智云官網,選擇對應項創建新產品,填寫設備產品基本信息。技術方案選擇WiFi/移動網絡方案;選擇通信方式為WiFi;數據傳輸方式為定長。產品創建成功后,機智云為該產品分配Product Key和Product Secret參數。Product Key參數由開發者寫入設備MCU,并告知WiFi模塊,WiFi模塊登錄機智云后,機智云將會識別該Product Key的產品。產品創建完成后,需要創建數據點。結合設備的功能需求,共配置了5個對應的數據點。
數據點創建完成后,自動生成MCU SDK代碼包,對需要的程序進行移植。需要移植的程序主要有機智云協議層和工具層[10]。代碼移植完成后,調用相應的API接口和添加相應的邏輯處理。移植好的程序還不能實現通信,需要根據實現的功能進行相關配置,包括串口配置、定時器配置、下行處理、上行處理和配置入網。
配置串口1實現日志打印,配置串口2實現數據的接收與發送,配置定時器1為毫秒級中斷。上行處理:首先要完成傳感器驅動開發,然后在Gizwits目錄下的gizwits_pro duct.c文件userHandle()函數中實現傳感器數據采集,只需要將采集到的數值賦給對應用戶區的設備狀態結構體數據位。下行處理:首先要完成傳感器驅動開發,然后在Gizwits目錄下的gizwits_product.c文件中找到相應函數進行修改。在該控制系統中,只選用了兩種模式即WIFI_AIRLINK_MODE和WIFI_RESET_MODE,配置按鍵,通過按鍵進入AirLink模式和實現模組復位功能。
本文基于STC15單片機設計了一款承壓式太陽能熱水器智能控制系統,以STC15作為核心板塊,通過WiFi模塊借助機智云平臺與手機APP建立連接,實現遠程通信。采用DS18B20測量水溫,使用繼電器控制加熱棒實現加熱。利用數碼管、LED燈、手機APP等作為人機交互界面,整體模塊化設計優化了功能,簡化了安裝。