李澤豪
(華南師范大學,廣東廣州,510006)
當今快節(jié)奏的生活方式,使得人們在忙于各類事工作事物時,常常忘記了按時飲用杯中的水來給自己身體補充水分,而當人們想起要飲用時,杯中的水的水溫早已不適宜飲用了。在這種背景下,許多保溫杯墊應時而生。但是目前的保溫杯墊,功能較為單一,不具備手機端APP遠程控制功能,還存在著以下的不足:沒有定時提醒用戶飲水的功能;不具備飲水量監(jiān)測功能;不能依據個人喜好設定自己的飲水習慣等。而本文設計的智能杯墊,在改進了以上問題的基礎上,還加入了物聯網功能,使得用戶可以在手機端APP查看每日的飲水量和設定補水提醒的時間間隔,大大提升了使用的便捷性和用戶的體驗感。
基于物聯網的智能杯墊由STC15F2系列微控制器和各類傳感器及外圍電路構成,其構成框圖如圖1所示。
圖1 基于物聯網的智能杯墊的構成框圖
為了最大化降低生產成本和提高產品落地的可行性,本智能杯墊采用了晶宏STC15F2K60S2系列MCU作為控制器。它的內部集成了RC振蕩電路,因此無需外接晶振,有利于減少產品的體積和生產成本。不僅如此,它在集成了38個I/O口、2路UART和2K字節(jié)的大容量SRAM的同時,還具有超低價位、超低功耗和高可靠性的特點[1],能夠滿足智能杯墊的數據采集和控制的要求。
為了監(jiān)測用戶的飲水量,該杯墊使用了精度達24bits的 HX711模數轉換模塊來采集壓力傳感器的數據[2]。由于水的密度是不變的,所以可以從水杯重量的變化值,推導出飲水量的多少。具體計算如下:
式中:Vi為第i次飲用后水杯中剩余的水的體積,mi為第i次飲用后水杯和水的總重量,VΔ為本次的飲水量。并為了計算方便,取ρ水=1.0g/cm3。
溫度檢測功能使用了DS18B20數字溫度傳感器[3],其測量范圍為-55℃~125℃,分辨率達±0.5℃,能夠滿足水杯溫度的精確采集要求,使得控制器能夠根據水杯底部的溫度值與設定的閾值作對比,完成自動加熱保溫功能。
為實現高質量地、穩(wěn)定地與服務器無線通信,該杯墊選用了安可信公司的ESP-01模塊。該WiFi模塊的傳輸距離可達400米左右[4],同時它采用AT指令與單片機進行通信[5],通信時只需要1路UART口即可完成,減少了不必要的連接線,有利于集成化設計,減小產品的體積。
為確保能夠安全地、較快地加熱杯中的水,該杯墊選直徑為48 mm、最大功率可達12 W的MCH氧化鋁陶瓷加熱片。但因為氧化鋁陶瓷加熱片的溫度特性曲線不夠平滑,且加熱過程中容易受到外界的干擾,存在測量傳送的滯后問題,所以該杯墊使用了PID控制的思想對加熱過程進行調控,使得陶瓷加熱片的功率可隨水溫的高低而動態(tài)調整,防止因為某些因素導致過度加熱的情況發(fā)生[6]。PID模型的具體參數計算方法如下:將溫度傳感器作為PID控制系統(tǒng)的閉環(huán)反饋回路,求出當前的溫度值與設定的溫度值之間的偏差,代入PID的計算公式即可求出相應的參數[7]。
本文選擇的機智云平臺是廣州杰升信息科技有限公司開發(fā)的一款物聯網服務平臺,它具有友好的開發(fā)環(huán)境,能幫助開發(fā)者在短時間內完成產品的開發(fā)[8]。在機智云開發(fā)者中心創(chuàng)建好“智能杯墊”的工程后,需要根據自己的需求創(chuàng)建相關的數據點,以便實現從平臺到手機端數據類型和功能的匹配。在本文中,共設定了5個數據點,具體如表1所示。
表1 機智云平臺設定的數據點
當設定好數據點后,便可在機智云平臺自動生成SCT15F2K60S2系列MCU的Keil C51底層代碼,減少產品開發(fā)的時間和工作量,降低開發(fā)成本。為了使智能杯墊能夠被機智云平臺唯一識別,需要將機智云平臺的產品號(Product Key)和產品密鑰(Product Secret)添加到Keil C51工程下的gizwits_product.h頭文件中,并在主循環(huán)中添加以下的語句,以便實現飲水量數據的上傳。
currentDataPoint.valueToday_Water = Water;
//將本地測量的飲水量上傳到機智云服務器
完成上述操作后,智能杯墊才能通過WiFi網絡接入到機智云服務器中,并將數據點的數據發(fā)送到服務器。
在溫度測量方面,使用DS18B20進行水杯底部的溫度采集時,為了盡可能的減少其他不確定因素對溫度數據的影響,采用了多次測量取平均值的方法,即:連續(xù)對水杯底部的溫度測量3次,然后用3次的平均值作為本次測量的結果,再進行相關處理分析。溫度數據處理的代碼如下:
在測量飲水量方面,由于是根據水杯的重量變化量來間接獲取用戶的飲水量大小,因此需要MCU不斷掃描壓力傳感器的重量值,以確保能夠及時捕捉到重量發(fā)生變化的事件。而當壓力傳感器讀取到一個變化的壓力值后,會將上一次測量的重量值減去當前的重量值,以便得到本次變化量的大小。由于飲水后,水杯的重量會減少,因此只有這個變化量為正值時,才能判定為用戶進行了一次飲水行為,否則判定為用戶往杯中加入了水的行為。當判定為飲水行為后,根據重量的變化量,代入(1)、(2)式中便可求出本次用戶的飲水量,并將其記錄到機智云服務器,即可實現飲水量的監(jiān)測功能。若判定為往水杯中加水的行為后,則將本次的重量值更新為下一次重量差值計算的被減數,以便下次監(jiān)測到用戶飲水時能正確求得飲水量。具體的采集流程如圖2所示。
圖2 溫度與飲水量的采集流程圖
為實現定時提醒用戶飲水功能,本文選用了MCU內部集成定時器0(T0)來完成定時計時功能。當用戶在手機端APP設定好提醒間隔并開啟定時提醒功能后,將會使能MCU的計時標志位counter_flag,使得計時值在定時器0的作用下從0開始每隔一秒鐘便加1。
當計時值與用戶設定的提醒時長相等時,將通過杯墊內置的蜂鳴器提醒用戶按時飲水,同時也會在手機端APP發(fā)出相應的提示,確保用戶不會錯過任何一次補水提醒。如果在計時途中,計時值未到提醒時長便監(jiān)測到用戶進行了一次飲水行為時,將會自動重置計時值,使計時器能從用戶飲水后的時刻開始,重新計時,避免了一個提醒周期內重復提醒用戶飲水的情況發(fā)生。
恒溫功能主要由快速加熱控制和PID控制構成。為了使較低的水溫能夠迅速地達到設定的保溫溫度值,此處采用了分段控制的思想,即:溫度低時不采用PID控制,而是采用快速加熱控制使加熱片處于最大功率狀態(tài)。只有當水溫高于15℃時,PID控制才會介入,從而改變PWM的占空比使得陶瓷加熱片的加熱功率隨著水溫的改變而變化。這樣做的好處是,使得對水杯中的水快速加熱之外,也能使得水溫最終維持在一個固定的值。
當水溫高于15℃后,PID控制介入,此時溫度傳感器采集到的當前溫度值將作為PID控制的反饋量,PID控制函數會反復地將其與目標溫度值進行比較,每次比較后都會返回一個PID控制量。PID控制量與上次的定時器計數值共同決定本次的PWM占空比,進而實現動態(tài)控制陶瓷加熱片的加熱功率,達到恒溫控制的目標。PID算法的部分代碼如下所示:
主程序包含以下幾個部分,首先是對內部資源(定時器T0和T1)、外部設備(按鍵、DS18B20溫度傳感器、HX711模數轉換模塊等)進行初始化,然后才開始執(zhí)行主循環(huán)中的各個子函數。其中主循環(huán)中的按鍵掃描用于識別智能杯墊上的各個按鍵狀態(tài),機智云數據點的傳輸函數負責MCU與服務器之間的數據點交互,定時飲水提醒函數則會按照設定的飲水提醒間隔自動提醒用戶飲水,恒溫控制函數現實PID恒溫控制。
每執(zhí)行一次主循環(huán),就會采集一次溫度數據和壓力傳感器的數據,避免遺漏任何一次數據的變化。采集完后,再根據溫度和飲水量的相關計算方法,對采集到的數據進行處理分析。主程序的具體流程如圖3所示。
圖3 主程序流程圖
為了檢驗所設計的智能杯墊能否按照設想的功能正常執(zhí)行,評估智能杯墊恒溫控制和飲水量監(jiān)測功能的誤差大小,以方便后期對智能杯墊加以優(yōu)化與改進,本文對智能杯墊的各個功能分別作了測試。測試時的環(huán)境溫度為17℃,水杯中的水溫為20℃,具體測試方法與結果如下:
打開手機端的機智云APP并綁定該智能杯墊,然后在手機上觀察“今日的飲水量”,同時調節(jié)各個參數的值,觀察智能杯墊能否正確按照所設定的參數值給予相應的反饋。由圖4可以看到,智能杯墊能按照各個參數值,正確執(zhí)行相應的功能。
圖4 手機端APP實測圖
在玻璃杯中加入100mL、20℃的溫水,打開恒溫功能,并設定恒溫溫度為30℃。等待10分鐘,再用溫度計測量杯中的水溫,測得水溫在29°附近。雖然有些許偏差,但是總體上實現了PID恒溫控制功能,誤差在用戶能夠接受的范圍內。
設定定時提醒的時間間隔為30分鐘。當放下水杯后,用秒表開始計時,靜待杯墊的蜂鳴器報警提醒。經過多次測試,杯墊均能在30分鐘后,精確地發(fā)出提醒信號,定時飲水提醒功能可達到預期的設想。
將盛有500mL水的水杯放置在智能杯墊上,每次倒去100mL的水再放回杯墊上,觀察并記錄杯墊測量的飲水量大小,測試結果如表2所示。從表中可以看到,該智能杯墊能夠較好地測量飲水量,雖然存在一定的誤差,但誤差均比較小,不影響用戶的體驗。
表2 飲水量監(jiān)測結果
本文設計的基于機智云物聯網平臺的智能杯墊,通過溫度傳感器來獲取水溫并作為PID控制的反饋參數,達到恒溫功能;通過HX711采集壓力傳感器的重量變化,實現飲水量監(jiān)測功能;通過機智云物聯網平臺的接入,實現了手機端APP控制和定時補水提醒功能。以上功能的增加,既解決了現有的加熱保溫杯墊存在的不足,又提升了產品的智能程度和使用的便捷性。此外,該智能杯墊還兼具生產成本低,制造簡單,可靠性高的特點,使得它具有較好的市場前景。若后期對手機端APP的界面加以優(yōu)化,令整體界面更加整潔高效,同時改進飲水量測量算法和PID控制算法,還能進一步提高產品的競爭力。