戴晶華
(內(nèi)蒙古自治區(qū)法治培訓(xùn)中心,內(nèi)蒙古呼和浩特,010070)
在學(xué)習(xí)和工作之余,人們通常養(yǎng)花來豐富自己的生活,可以凈化空氣,給人們帶來了舒適的生活環(huán)境。通常的花盆需要人工澆水,費(fèi)時(shí)費(fèi)力,為了克服傳統(tǒng)養(yǎng)花的一些缺點(diǎn),設(shè)計(jì)一種自動澆花系統(tǒng)為養(yǎng)花者提供更為智能便捷的智能澆花設(shè)備。隨著5G和物聯(lián)網(wǎng)技術(shù)的深入發(fā)展,將會有越來越多的智能設(shè)備進(jìn)入人們的日常生活。
本設(shè)計(jì)是運(yùn)用物聯(lián)網(wǎng)技術(shù)對花盆進(jìn)行改造,實(shí)現(xiàn)溫度和濕度的遠(yuǎn)程實(shí)時(shí)監(jiān)測。本設(shè)計(jì)提供了兩種澆水模式,即遠(yuǎn)程手動澆水模式和自動澆水模式。在遠(yuǎn)程手動澆水模式下,可以隨時(shí)隨地進(jìn)行遠(yuǎn)程澆花,避免了由于澆水不及時(shí)導(dǎo)致的植株枯萎;在自動模式下,在儲水裝置水量充足時(shí),自動澆花系統(tǒng)可通過對花盆土壤濕度的實(shí)時(shí)監(jiān)測,在花盆的土壤濕度較低時(shí)自動啟動澆水泵進(jìn)行澆水,該模式為可養(yǎng)花者提供便捷的服務(wù)。
本系統(tǒng)主要由花盆智能控制板、云服務(wù)器消息代理、手機(jī)APP三部分組成?;ㄅ柚悄芸刂瓢逯饕?fù)責(zé)底層硬件的數(shù)據(jù)采集以及澆水泵和照明燈的控制,云服務(wù)器上的消息代理軟件負(fù)責(zé)控制信息和采集數(shù)據(jù)的接收和轉(zhuǎn)發(fā),從而實(shí)現(xiàn)硬件數(shù)據(jù)通過互聯(lián)網(wǎng)傳輸?shù)绞謾C(jī)APP,手機(jī)APP進(jìn)行相關(guān)數(shù)據(jù)參數(shù)的數(shù)據(jù)顯示及控制按鈕的實(shí)現(xiàn),主要顯示的參數(shù)有土壤溫度數(shù)據(jù)的顯示,當(dāng)前土壤濕度是否需要澆花的顯示,主要實(shí)現(xiàn)的控制按鈕有澆水泵控制按鈕和照明燈控制按鈕,系統(tǒng)整體設(shè)計(jì)框圖如圖1所示。
圖1 系統(tǒng)整體設(shè)計(jì)框圖
花盆智能控制板可以連接溫度傳感器和濕度傳感器,實(shí)現(xiàn)土壤溫度和土壤濕度數(shù)據(jù)采集。土壤溫度傳感器采用DS18B20防水傳感器,通過單總線協(xié)議實(shí)現(xiàn)數(shù)據(jù)傳輸。濕度傳感器通過連接AD轉(zhuǎn)換模塊實(shí)現(xiàn)濕度數(shù)據(jù)的模數(shù)轉(zhuǎn)換,可以寬范圍控制土壤的濕度,通過電位器調(diào)節(jié)控制相應(yīng)的閾值,濕度低于設(shè)定值時(shí),DO端口輸出高電平,高于設(shè)定值時(shí),DO端口輸出低電平?;ㄅ柚悄芸刂瓢宓腃C3200分別通過端口PIN_08和PIN_01輸出高低電平實(shí)現(xiàn)繼電器的閉合與斷開,從而實(shí)現(xiàn)澆水泵和照明燈的控制,硬件功能框圖如圖2所示。
圖2 硬件功能框圖
通過對CC3200進(jìn)行編程實(shí)現(xiàn)對土壤溫濕度數(shù)據(jù)采集,并進(jìn)行分析和處理,將采集到數(shù)據(jù)進(jìn)行遠(yuǎn)程發(fā)送,實(shí)現(xiàn)土壤溫度和當(dāng)前濕度是否需要澆水的數(shù)據(jù)遠(yuǎn)程發(fā)送,CC3200實(shí)時(shí)接收控制信息,實(shí)現(xiàn)澆水泵和照明燈的遠(yuǎn)程控制。CC3200通過WiFi配置入網(wǎng),實(shí)現(xiàn)上行環(huán)境數(shù)據(jù)和下行控制信號的傳輸,硬件設(shè)備傳輸?shù)臄?shù)據(jù)格式為JSON格式。
1.1.1 溫度傳感器
本設(shè)計(jì)中土壤溫度數(shù)據(jù)的采集使用DS18B20溫度傳感器實(shí)現(xiàn),首先進(jìn)行溫度傳感器初始化,溫度傳感器反饋初始化是否成功的信息,寫入控制數(shù)據(jù),并等待溫度傳感器做出應(yīng)答,待溫度傳感器做出應(yīng)答后,開始接收溫度低8位數(shù)據(jù),緊接著接收溫度高8位數(shù)據(jù),當(dāng)溫度數(shù)據(jù)接收完成后,進(jìn)行數(shù)據(jù)的格式轉(zhuǎn)換,將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制數(shù)據(jù),并將轉(zhuǎn)換完成的數(shù)據(jù)儲存到temp變量中,此時(shí)溫度數(shù)據(jù)采集完成。
1.1.2 濕度傳感器
本設(shè)計(jì)中所采用的濕度傳感器適用于土壤的濕度檢測,模塊中藍(lán)色的電位器是用于土壤濕度的閾值調(diào)節(jié),順時(shí)針調(diào)節(jié),控制的濕度會越大,逆時(shí)針調(diào)節(jié),控制的濕度會越小。數(shù)字量輸出引腳DO與CC3200的PIN_06相連,通過CC3200檢測高低電平,由此來檢測土壤濕度,并確定是否需要澆水。在檢測到的電平中,其中高電平代表需要澆水,低電平表示不需要澆水,編寫程序?qū)C3200的PIN_06引腳配置為讀模式,并讀取電平。
1.1.3 澆水電路設(shè)計(jì)
澆水泵由一個(gè)365直流抽水馬達(dá)(12V微型自吸水水泵)實(shí)現(xiàn),該水泵有入水口和出水口,用途十分廣泛,在家電,醫(yī)療,模型DIY,水族器材等方面都得以應(yīng)用,主要實(shí)現(xiàn)抽水,冷水循環(huán)等功能。本設(shè)計(jì)主要通過繼電器實(shí)現(xiàn)其控制,首先CC3200將接收到的控制數(shù)據(jù)進(jìn)行解析,當(dāng)變量watering為1時(shí),表示開啟澆水泵,此時(shí)將CC3200的PIN_01引腳置為1,輸出高電平,繼電器模塊接收到高電平后,繼電器吸合,澆水泵開始工作。當(dāng)變量watering為0時(shí),表示關(guān)閉澆水泵,此時(shí)將CC3200的引腳置為0,輸出低電平,繼電器模塊接收到低電平后,繼電器斷開,澆水泵停止工作。
服務(wù)器上安裝Mosquitto消息代理軟件,MQTT協(xié)議提供了使用發(fā)布/訂閱模型執(zhí)行消息傳遞的輕量級方法。這使得它適用于物聯(lián)網(wǎng)信息傳遞,即低功耗傳感器或移動設(shè)備,如手機(jī)、嵌入式計(jì)算機(jī)或微控制器。本設(shè)計(jì)通過MQTT協(xié)議實(shí)現(xiàn)數(shù)據(jù)傳輸,實(shí)現(xiàn)了高效準(zhǔn)確的數(shù)據(jù)傳輸。硬件設(shè)備與服務(wù)器之間的通信的數(shù)據(jù)格式為JSON格式,服務(wù)器與硬件設(shè)備通信的端口號設(shè)定為1883,服務(wù)器與手機(jī)APP通信的端口號為9000。
手機(jī)APP基于React Native進(jìn)行開發(fā)。主要實(shí)現(xiàn)的功能有土壤溫度數(shù)據(jù)和當(dāng)前濕度是否需要澆水的實(shí)時(shí)顯示,澆水泵和照明燈的開關(guān)控制,以及與服務(wù)器之間的實(shí)時(shí)數(shù)據(jù)通信。手機(jī)APP的界面主要有土壤溫度數(shù)據(jù)顯示、土壤濕度是否需要澆水顯示、澆水泵狀態(tài)顯示、照明燈狀態(tài)顯示、澆水泵的開關(guān)按鈕和照明燈的開關(guān)按鈕,手機(jī)APP功能框圖如圖3所示。
圖3 手機(jī)APP功能框圖
本設(shè)計(jì)中所采用的芯片是德州儀器公司的CC3200,該器件集成了ARM Cortex-M4。在本設(shè)計(jì)中,使用了4個(gè)通用輸入輸出(GPIO)引腳,分別是實(shí)現(xiàn)溫度數(shù)據(jù)采集的PIN_03引腳;實(shí)現(xiàn)土壤濕度澆水反饋的PIN_06引腳;實(shí)現(xiàn)澆水泵控制的PIN_08引腳;實(shí)現(xiàn)照明燈控制的PIN_01引腳。
CC3200定義發(fā)布主題,即/SmartPot/send,主題的數(shù)據(jù)格式為JSON格式,主題的內(nèi)容為{"temp":"00.00","moisture":"0","watering":"0","LED":"0"}。當(dāng)溫度傳感器采集到土壤的溫度數(shù)據(jù)信息后,對其中的temp數(shù)據(jù)進(jìn)行更新;當(dāng)濕度傳感器采集到土壤的濕度數(shù)據(jù)信息后,對其中的moisture數(shù)據(jù)進(jìn)行更新;當(dāng)澆水水泵開啟時(shí),將其中watering的值更新為1,表示水泵為開啟狀態(tài),當(dāng)澆水泵關(guān)閉時(shí),將其中watering的值更新為0,表示水泵為關(guān)閉狀態(tài);當(dāng)照明燈開啟時(shí),將其中LED的值更新為1,表示照明燈為開啟狀態(tài),當(dāng)照明燈關(guān)閉時(shí),將其中LED的值更新為0,表示照明燈為關(guān)閉狀態(tài),并每隔0.3秒上傳一次土壤溫濕度數(shù)據(jù)及硬件的狀態(tài)數(shù)據(jù),這樣就達(dá)到了數(shù)據(jù)的實(shí)時(shí)上傳,硬件打包程序框圖如圖4所示。
圖4 硬件打包數(shù)據(jù)上傳程序框圖
MQTT(Message Queuing Telemetry Transport)協(xié)議是一個(gè)基于TCP的發(fā)布訂閱協(xié)議。在云端和傳感器、醫(yī)療設(shè)備、家居及一些小型化設(shè)備通信中已得到了廣泛使用。新版本的MQTT協(xié)議具有更好的錯(cuò)誤報(bào)告、共享訂閱、消息屬性、消息過期、會話到期、主題別名等亮點(diǎn)。本設(shè)計(jì)MQTT協(xié)議通過mosquitto消息代理軟件進(jìn)行實(shí)現(xiàn)。MQTT協(xié)議用來支持將CC3200上的數(shù)據(jù)用1883端口發(fā)送到服務(wù)器的broker上。同時(shí)MQTT協(xié)議用來支持手機(jī)APP和硬件之間的通信,當(dāng)mosquitto broker收到服務(wù)端消息后,broker繼續(xù)將消息通過MQTT協(xié)議用9000端口發(fā)送給訂閱端。
本設(shè)計(jì)中手機(jī)APP與服務(wù)器使用的通信協(xié)議為基于WebSocket 的MQTT 跨平臺推送服務(wù)方案。MQTT WebSocket JavaScript API 的功能描述如下:Connect 連接、 DisConnect 斷開連接、Subscribe 訂購、UnSubscribe 取消訂購、Publish 發(fā)布。
硬件設(shè)備通過MQTT協(xié)議上傳相關(guān)數(shù)據(jù)到服務(wù)器,手機(jī)APP通過MQTT協(xié)議接收服務(wù)器轉(zhuǎn)發(fā)的數(shù)據(jù),即{"tem p":"00.00","moisture":"0","watering":"0","LED":"0"},首先進(jìn)行溫度數(shù)據(jù)顯示、是否需要澆水顯示、澆水泵開關(guān)狀態(tài)顯示、照明燈開關(guān)狀態(tài)顯示,手機(jī)APP的控制按鈕有澆水泵開關(guān)按鈕和照明燈開關(guān)按鈕,APP提供了兩種工作模式,即手動澆水模式和自動澆水模式。
在手動澆水模式下,當(dāng)用戶點(diǎn)擊開啟澆水泵按鈕后,手機(jī)app發(fā)送開啟澆水泵控制指令,即"watering":"1",硬件設(shè)備收到開啟澆水泵控制指令,啟動澆水泵進(jìn)行澆水,當(dāng)用戶點(diǎn)擊關(guān)閉澆水按鈕后,手機(jī)app發(fā)送關(guān)閉澆水泵控制指令,即"watering":"0",硬件設(shè)備收到關(guān)閉澆水泵控制指令,關(guān)閉澆水泵停止?jié)菜?;?dāng)用戶點(diǎn)擊開啟照明燈按鈕后,手機(jī)app發(fā)送開啟照明燈控制指令,即"LED":"1",硬件設(shè)備收到開啟照明燈控制指令,啟動照明燈,當(dāng)用戶點(diǎn)擊關(guān)閉照明燈按鈕后,手機(jī)app發(fā)送關(guān)閉照明燈控制指令,即"LED":"0",硬件設(shè)備收到關(guān)閉照明燈控制指令,關(guān)閉照明燈。
在自動澆水模式下,當(dāng)watering值為1時(shí),并且當(dāng)溫度小于25℃時(shí),APP自動發(fā)送開啟澆水泵控制命令,即"watering":"1",直到硬件上傳的數(shù)據(jù)中watering值變?yōu)?,APP自動發(fā)送"watering":"0",關(guān)閉澆水泵。
本設(shè)計(jì)中通過paho軟件進(jìn)行硬件設(shè)備與服務(wù)器間的數(shù)據(jù)通信調(diào)試,首先硬件設(shè)備上電,硬件指示燈閃爍幾秒后熄滅,表示硬件設(shè)備已經(jīng)成功連接WiFi,按下SW3按鍵開始土壤溫度和濕度是否需要澆水?dāng)?shù)據(jù)上傳,在調(diào)試軟件上輸入服務(wù)器地址和端口號,并訂閱主題,可以看到土壤溫度和濕度是否需要澆水?dāng)?shù)據(jù)成功發(fā)送到了服務(wù)器上,并通過調(diào)試軟件顯示到電腦屏幕上,土壤溫度和濕度是否需要澆水?dāng)?shù)據(jù)為設(shè)定好的JSON格式數(shù)據(jù)。
手機(jī)APP與服務(wù)器之間的通信采用MQTT協(xié)議,當(dāng)啟動硬件設(shè)備后,可以看到手機(jī)APP成功顯示了土壤的溫度數(shù)據(jù)、目前濕度是否需要澆水、燈光狀態(tài)和水泵狀態(tài),點(diǎn)擊澆水控制按鈕,可以看到硬件設(shè)備澆水泵開啟,并可以看到手機(jī)APP上反饋到澆水泵為開啟狀態(tài),點(diǎn)擊關(guān)閉澆水泵按鈕,可以看到澆水泵關(guān)閉;點(diǎn)擊照明燈按鈕,可以看到照明燈開啟,手機(jī)APP中顯示照明燈開啟,點(diǎn)擊關(guān)閉照明燈按鈕,可以看到手機(jī)APP顯示照明燈關(guān)閉。
圖5 手機(jī)APP界面
本設(shè)計(jì)提供的智能控制板與花盆采用分離式設(shè)計(jì),通過溫度和濕度傳感器檢測實(shí)時(shí)數(shù)據(jù),實(shí)現(xiàn)自動澆花的功能,也可以通過手機(jī)APP實(shí)現(xiàn)澆花的遠(yuǎn)程手動控制的功能,是物聯(lián)網(wǎng)技術(shù)應(yīng)用到智能家居的典型應(yīng)用,可以推廣到其他領(lǐng)域,具有一定的實(shí)用價(jià)值。