陳楷暉,尹 令,吳正豪,王永福,陳振旭,林穎詩
(華南農(nóng)業(yè)大學(xué)數(shù)學(xué)與信息學(xué)院,廣東 廣州 510642)
隨著人們生活水平和文化素養(yǎng)的提高,人們追求更加精致高雅的生活環(huán)境,常常在家居擺設(shè)上花費(fèi)心思。盆栽作為一種綠色天然的家居裝飾,既能吸收空氣中的苯和甲醛等空氣污染[1-2],營造清新干凈的空氣環(huán)境,又為都市人親近自然提供最好的選擇,能夠有效緩解工作的壓力,是現(xiàn)代家居中必不可少的一部分。養(yǎng)植的樂趣,在于看到盆栽能朝氣蓬勃的生長,然而人們疏忽管理或過度照理等行為很容易對(duì)盆栽生長狀況造成不良影響。因此,開發(fā)一套智能盆栽系統(tǒng),滿足用戶的個(gè)性化需求,具有突出的市場價(jià)值。
目前大多數(shù)自動(dòng)澆水系統(tǒng)主要以滲透或虹吸原理主動(dòng)定時(shí)澆水,自動(dòng)完成室內(nèi)盆栽植物的灌溉任務(wù)[3-4],多數(shù)采用的是適用于大多數(shù)植物的溫濕度數(shù)據(jù),沒有考慮不同植物對(duì)溫濕度、光照程度的喜好特性[5-6],這樣的澆灌方式無法控制不同植物的澆水量,降低了盆栽的土壤質(zhì)量,不利于植物的生長。本文提出智能盆栽設(shè)計(jì)方案,在精確采集空氣溫濕度,土壤溫濕度,光照強(qiáng)度數(shù)據(jù)基礎(chǔ)上,能依據(jù)植物不同生長特性通過決策樹算法做出準(zhǔn)確適宜的澆水方案,避免出現(xiàn)只為了滿足“干透澆透”而出現(xiàn)的只澆表面的“腰截水”的現(xiàn)象[7]。Arduino UNO控制器通過獲取各個(gè)傳感器采集的數(shù)據(jù),并進(jìn)行計(jì)算分析,識(shí)別植物基本狀態(tài),判斷植物是否需要進(jìn)行澆灌。同時(shí),為了滿足用戶對(duì)盆栽的個(gè)性化需求,本系統(tǒng)硬件端使用藍(lán)牙作為數(shù)據(jù)和控制接口。用戶可以通過Android端通過藍(lán)牙設(shè)備[8],遠(yuǎn)程查看了解盆栽,實(shí)現(xiàn)種植交互。
圖1 智能盆栽系統(tǒng)結(jié)構(gòu)
智能盆栽系統(tǒng)由數(shù)據(jù)采集、數(shù)據(jù)傳輸、決策分析、控制和數(shù)據(jù)存儲(chǔ)模塊5個(gè)模塊構(gòu)成,各個(gè)模塊完成不同功能。系統(tǒng)結(jié)構(gòu)如圖1所示,數(shù)據(jù)采集模塊由SHT11空氣溫濕度傳感器、YL-69土壤濕度傳感器、DS18B20土壤溫度傳感器、BH1750環(huán)境光傳感器組成實(shí)現(xiàn)對(duì)植物的土壤溫濕度、環(huán)境溫濕度和環(huán)境光照強(qiáng)度的自動(dòng)采集;數(shù)據(jù)傳輸模塊包括兩部分,一部分是采集數(shù)據(jù)傳輸?shù)經(jīng)Q策分析模塊,另一部分是移動(dòng)端和硬件端進(jìn)行雙向數(shù)據(jù)傳輸;決策分析模塊由Arduino UNO控制器組成,可以根據(jù)植物生長喜干濕等特性,運(yùn)用模糊決策樹算法判斷植物澆水是否需要澆水;控制模塊由決策分析模塊進(jìn)行數(shù)據(jù)分析得出是否澆水和需要的澆水量,并且自動(dòng)控制水泵送水完成澆水操作;數(shù)據(jù)存儲(chǔ)模塊由Arduino的SD卡或者云服務(wù)器構(gòu)成,實(shí)現(xiàn)對(duì)各種數(shù)據(jù)表的存儲(chǔ)。
智能盆栽系統(tǒng)數(shù)據(jù)采集模塊由1個(gè)ArduinoUNO控制器、1個(gè)SHT11溫濕度傳感器、3個(gè)YL-69土壤濕度傳感器、1個(gè)防水DS18B20土壤溫度傳感器和1個(gè)BH1750環(huán)境光傳感器組成,實(shí)現(xiàn)對(duì)各種數(shù)據(jù)的自動(dòng)采集。
Arduino主控板原理如圖2所示。Arduino能通過溫濕度傳感器、土壤濕度傳感器等各種傳感器來感知環(huán)境[9-10],并通過控制水泵、藍(lán)牙模塊和其他的裝置來反饋、影響環(huán)境。本盆栽系統(tǒng)采用Arduino是因其具有廉價(jià)、跨平臺(tái)及簡單清晰等特點(diǎn)。Arduino開發(fā)板的價(jià)格低于其他開發(fā)板的價(jià)格,且Arduino IDE可以運(yùn)行于Windows、Macintosh OS X、Linux三大主流操作系統(tǒng),同時(shí)由于Arduino的編程語言是建立在C/C++語言基礎(chǔ)上,又能夠?qū)VR單片機(jī)相關(guān)的一些參數(shù)設(shè)置模塊化[11],不需要開發(fā)人員處理底層系統(tǒng),能夠提高程序的開發(fā)效率,更有利于在智能盆栽的開發(fā)和應(yīng)用,使智能盆栽得到更好的普及。
SHT11溫濕度傳感模塊將溫度、濕度感測、信號(hào)變換、A/D轉(zhuǎn)換等功能集成到一個(gè)芯片上,能感應(yīng)到智能盆栽周圍環(huán)境的濕度溫度,并將所得溫濕度數(shù)據(jù)轉(zhuǎn)換為電信號(hào),放大后經(jīng)A/D轉(zhuǎn)換變成數(shù)字信號(hào)輸出,傳送到Arduino主控板上;YL-69土壤濕度傳感器模塊可用于檢測盆栽土壤中的水分含量,工作時(shí)直接將傳感器探頭埋入盆栽土壤中,探頭電阻隨土壤濕度變化,傳感器預(yù)先設(shè)定閥值,當(dāng)盆栽中土壤水分含量低于閥值時(shí)傳感器輸出高電平,反之輸出低電平[12];DS18B20溫度傳感器具有超小的體積、超低的硬件開銷、抗干擾能力強(qiáng)、精度高、附加功能強(qiáng)等特點(diǎn),用于采集盆栽中土壤溫度,是本盆栽系統(tǒng)土壤溫度傳感器的最佳選擇;BH1750環(huán)境光傳感器通過光度計(jì)來測量盆栽周圍環(huán)境的光照強(qiáng)度,通過計(jì)算電壓來獲取有效數(shù)字,直接輸出數(shù)字信號(hào);Arduino UNO主控板配有數(shù)據(jù)存儲(chǔ)器,可將采集到的傳感器數(shù)據(jù)經(jīng)過適當(dāng)處理后,直接存儲(chǔ),實(shí)現(xiàn)數(shù)據(jù)采集[13]。
圖2 Arduino主控板原理
數(shù)據(jù)傳輸主要由HC-06藍(lán)牙模塊、數(shù)據(jù)存儲(chǔ)器和Android移動(dòng)設(shè)備構(gòu)成。手機(jī)端通過搜索硬件藍(lán)牙進(jìn)行連接,實(shí)現(xiàn)數(shù)據(jù)傳輸通路的搭建[8]。在連接之后手機(jī)可以通過發(fā)送命令給盆栽系統(tǒng),系統(tǒng)硬件端對(duì)命名進(jìn)行解析返回需要的信息給移動(dòng)端;盆栽系統(tǒng)固定一段時(shí)間將所獲取的植物基本信息進(jìn)行實(shí)時(shí)傳輸給移動(dòng)端,實(shí)現(xiàn)數(shù)據(jù)的雙向通信。
為設(shè)計(jì)信息傳輸?shù)母袷?,要求時(shí)間跨度有相應(yīng)的最大跨度——定義為MAX-SPAN,包括:命令信息格式,在需要數(shù)據(jù)時(shí)進(jìn)行發(fā)送,請求數(shù)據(jù)的類型即表中request-type,如表1所示;實(shí)時(shí)信息格式,盆栽固定一段時(shí)間需要傳送給移動(dòng)端的數(shù)據(jù)信息,如表2所示;歷史信息格式,當(dāng)命令信息的request-type= “history”時(shí)返回歷史信息,如表3所示;空氣溫度信息格式,當(dāng)命令信息的request-type= “atop”時(shí)返回空氣溫度信息如表4所示;空氣濕度信息格式,當(dāng)命令信息的request-type= “ahop”時(shí)返回空氣濕度信息;土壤溫度信息格式,當(dāng)命令信息的request-type= “stop”時(shí)返回土壤溫度信息;土壤濕度信息格式,當(dāng)命令信息的requesttype= “shop”時(shí)返回土壤濕度信息。其中空氣濕度、土壤溫度、土壤濕度的信息格式與空氣溫度信息格式相似。
表1 信息格式
2.3.1 數(shù)據(jù)存儲(chǔ)結(jié)構(gòu) (1)植物數(shù)據(jù)庫設(shè)計(jì)。系統(tǒng)使用數(shù)據(jù)庫結(jié)構(gòu)化地存儲(chǔ)系統(tǒng)數(shù)據(jù),存儲(chǔ)不同植物的種類信息、采集的溫濕度信息、澆灌用水量數(shù)據(jù)等。
(2)主要數(shù)據(jù)表。包含植物種類信息數(shù)據(jù)表、植物基本狀態(tài)信息表、算法訓(xùn)練數(shù)據(jù)表、澆灌用水量數(shù)據(jù)表及決策樹表。
植物種類信息數(shù)據(jù)表[14]:用于存儲(chǔ)植物種類信息主要有植物種分類群信息 (種所在的門、綱、目、科、屬的信息,包括相應(yīng)的名稱和特征)、種名信息 (包括種的拉丁名、中文名和異名)、形態(tài)特征、生活環(huán)境或生態(tài)習(xí)性、地理分布。該表首先是在用戶在APP端將植物的名稱輸入之后,系統(tǒng)自動(dòng)查詢該植物的所屬的界、門、綱、目、科、屬和種的信息,并生成一個(gè)ID號(hào)唯一標(biāo)識(shí)該植物,然后將這些植物基本信息保存進(jìn)數(shù)據(jù)庫中,以實(shí)現(xiàn)不同植物的個(gè)性化澆灌(表2)。
植物基本狀態(tài)信息表(Basic Plant State Information Table, BPSIT):用于存儲(chǔ)由傳感器采集到的盆栽在某一時(shí)刻的環(huán)境溫濕度信息、土壤溫濕度信息和光照強(qiáng)度信息。該表中ID號(hào)是識(shí)別植物的標(biāo)識(shí),在一定時(shí)間間隔Arduino主板將會(huì)獲取各個(gè)傳感器的實(shí)時(shí)盆栽狀態(tài)信息,包括環(huán)境溫度(ATOP),環(huán)境濕度(AHOP)、土壤溫度(STOP)、土壤濕度(SHOP)和光照強(qiáng)度(ALIOP)等基本狀態(tài)信息,并將其保存進(jìn)數(shù)據(jù)庫,可供數(shù)據(jù)分析,實(shí)現(xiàn)盆栽的自動(dòng)化澆灌(表3)。
表2 植物種類信息數(shù)據(jù)
表3 植物基本狀態(tài)信息
算法訓(xùn)練數(shù)據(jù)表(Algorithm Training Data Table, ATDT):記錄多種植物在不同生命狀態(tài)下的是否需要澆水(Watering)。該表主要存儲(chǔ)不同類別植物(數(shù)據(jù)表中以pot_id區(qū)分)在不同環(huán)境溫濕度、土壤溫濕度和光照強(qiáng)度,其對(duì)應(yīng)判斷,植物是否需要澆水的樣本數(shù)據(jù)。根據(jù)數(shù)據(jù)表中某一類別植物的充分的數(shù)據(jù)信息,利用模糊分類模型進(jìn)行模型構(gòu)建,即能獲得特定植物模型結(jié)果,該結(jié)果能夠用以判斷植物在特定環(huán)境溫濕度、土壤溫濕度和光照強(qiáng)度下是否需要澆水(表4)。
表4 算法訓(xùn)練數(shù)據(jù)
澆灌用水量數(shù)據(jù)表(Water Consumption Table, WCT):用于存放澆灌用水量歷史數(shù)據(jù),實(shí)現(xiàn)對(duì)用水量預(yù)測模型的修正。該表中ID號(hào)作為識(shí)別植物的標(biāo)識(shí),Arduino主板對(duì)每一次澆灌的時(shí)間和時(shí)長進(jìn)行記錄,根據(jù)澆水時(shí)長可以計(jì)算得到植物的澆水量(表5),并將這些記錄用于數(shù)據(jù)分析。
表5 澆灌用水量數(shù)據(jù)
決策樹表(Decision Tree Table):用于存放算法訓(xùn)練后得到各種植物對(duì)應(yīng)決策樹表。決策樹表是某一類別植物利用ATDT數(shù)據(jù)表進(jìn)行分類模型構(gòu)建后得到的模型結(jié)果。由于算法訓(xùn)練數(shù)據(jù)表的數(shù)據(jù)的改動(dòng)較小,因此盆栽硬件端模型構(gòu)建后得到的決策樹結(jié)果,在一段時(shí)間內(nèi)都具有有效性,并且規(guī)定一次訓(xùn)練得到的決策樹有效時(shí)間為30 d(表6)。
表6 決策樹表
2.3.2 數(shù)據(jù)存儲(chǔ)載體 數(shù)據(jù)表以文件形式存儲(chǔ)于Arduino的SD卡,由于Arduino UNO自身的硬件架構(gòu)特性,其內(nèi)存僅為32KB,數(shù)據(jù)庫軟件無法在平臺(tái)上運(yùn)行。因此數(shù)據(jù)表存儲(chǔ)以文件形式存儲(chǔ)在SD卡中,主控板通過讀寫SD卡中的文件操作數(shù)據(jù)表。
2.4.1 狀態(tài)分類回歸決策樹 智能盆栽硬件端從各個(gè)傳感器獲取的數(shù)據(jù),如土壤溫濕度、環(huán)境溫濕度、光照強(qiáng)度等盆栽的基本生命狀態(tài)信息集合(記為infos)。根據(jù)infos查找ATDT表,判斷植物的干渴程度,既而判斷植物是否需要澆灌。
式中,f表示查表,表示infos條件下的植物是否需要澆水。
由于盆栽infos的數(shù)據(jù)屬性的數(shù)值型和變化性,ATDT無法包含植物所有狀態(tài)下的干渴程度信息。因此,結(jié)合ATDT中數(shù)據(jù)特征,系統(tǒng)采用適合機(jī)器學(xué)習(xí)分類算法[15],充分有效的利用ATDT,同時(shí)實(shí)現(xiàn)系統(tǒng)功能的健全性。分類方法的選擇決定著植物狀態(tài)識(shí)別的正確性高低。決策樹模型具有高效性、易構(gòu)建性、計(jì)算復(fù)雜度不高等特性,針對(duì)本系統(tǒng)信息集合infos的特點(diǎn),選擇決策樹模型進(jìn)行澆灌決策。
決策樹有分類樹和回歸樹兩種[16],分類樹對(duì)離散變量做決策樹,回歸樹對(duì)連續(xù)變量做決策樹[17]。infos數(shù)據(jù)的數(shù)值型特性,系統(tǒng)進(jìn)一步選擇決策樹模型中以Gini指數(shù)來選擇劃分屬性的分類回歸樹(ClassificationAndRegression Tree,CART)模型。其中Gini指數(shù)反映從數(shù)據(jù)集中隨機(jī)選擇兩個(gè)樣本,其類別標(biāo)記不一致的概率,即盆栽樣本數(shù)據(jù)集中類別標(biāo)記Watering不一致的概率。因此,Gini指數(shù)越小,則數(shù)據(jù)集純度越高[18],即劃分后的數(shù)據(jù)集中類別標(biāo)記Watering一致性更高。所以,在進(jìn)行算法訓(xùn)練時(shí),選擇Gini指數(shù)最小的分類方案的分類效果更好。在運(yùn)用決策樹算法模型后,式(1)修正為:
式中,CART(ATDT)表示使用訓(xùn)練數(shù)據(jù)ATDT訓(xùn)練CART;f表示利用CART的結(jié)果,計(jì)算得出infos狀態(tài)下植物的。
2.4.2 系統(tǒng)應(yīng)用 以 “盆栽綠蘿訓(xùn)練數(shù)據(jù)表”(表7)為例,對(duì)盆栽是否需要澆水進(jìn)行分析。該表數(shù)據(jù)參考文獻(xiàn)及其他數(shù)據(jù)庫等[19]由實(shí)驗(yàn)所得,取多盆綠蘿盆栽進(jìn)行實(shí)驗(yàn),分別于每天的8:00、14:00、20:00由盆栽傳感器獲得數(shù)據(jù)后求平均值,通過模糊決策樹對(duì)所得數(shù)據(jù)進(jìn)行分析。選用綠蘿作為實(shí)驗(yàn)物種,是因其具有廣大的市場,在盆栽植物中具有代表性。
ATDT數(shù)據(jù)庫中植物物種ID號(hào)為盆栽綠蘿(001)的共有100條記錄,其中正例50個(gè),即Watering為1的數(shù)據(jù),表示植物需要補(bǔ)水;反例50個(gè),即Watering為0的數(shù)據(jù),表示不需要澆水。表7顯示了其中一部分記錄。將ATDT表中該類別植物的所有數(shù)據(jù)作為輸入,應(yīng)用CART算法處理數(shù)據(jù)后得到?jīng)Q策樹(圖3)。根據(jù)得到的決策樹,再結(jié)合數(shù)據(jù)采集模塊返回的傳感器數(shù)據(jù)信息,Arduino UNO便能進(jìn)行決策,判斷出植物是否需要澆水。
表7 盆栽綠蘿植物訓(xùn)練部分?jǐn)?shù)據(jù)表(數(shù)據(jù)庫中植物物種ID號(hào)—001)
以數(shù)據(jù)采集模塊采集到的陽臺(tái)盆栽綠蘿下午14:00傳感器實(shí)時(shí)數(shù)據(jù)ATOP 35.50℃、AHOP 67%、STOP28.65℃、SHOP 76%、ALIOP 780為例,系統(tǒng)的決策過程如下。按照圖3決策樹逐屬性進(jìn)行決策判斷,首先,獲得決策數(shù)根節(jié)點(diǎn)的屬性為SHOP,比較實(shí)時(shí)數(shù)據(jù)表中土壤濕度SHOP數(shù)值76小于根節(jié)點(diǎn)分支條件87,因此,需要進(jìn)入分支節(jié)點(diǎn)STOP繼續(xù)比較,按照同樣的方法繼續(xù)判斷,所經(jīng)過的樹節(jié)點(diǎn)依次為SHOPSTOP-ATOP-SHOP-AHOP,最終可以到達(dá)葉節(jié)點(diǎn)Watering為1,判斷得到植物需要澆水,決策模塊發(fā)出澆水信號(hào),Arduino UNO控制器控制水泵對(duì)盆栽植物澆水。
2.4.3 算法改進(jìn) 為滿足用戶的個(gè)性化需求,算法提供了多種模式。其中:
模式0(Automatic):系統(tǒng)根據(jù)自帶數(shù)據(jù)庫中的信息(ATDT),使用CART算法得到的構(gòu)建決策樹,應(yīng)用于盆栽決策過程。
模式1(Semi-Automatic):系統(tǒng)根據(jù)自帶數(shù)據(jù)庫的信息(ATDT),同時(shí)結(jié)合本地?cái)?shù)據(jù)庫記錄的用戶澆水時(shí)的盆栽信息(BPSIT和WCT),再構(gòu)建決策樹。
圖3 數(shù)據(jù)處理后得到的決策樹
模式2(Customize):系統(tǒng)根據(jù)本地?cái)?shù)據(jù)庫記錄的用戶澆水信息(WCT),再構(gòu)建決策樹。
以上3種模式適用于不同需求和背景的用戶,提供了個(gè)性化的方案,具有一定的實(shí)用性。
通過Arduino控制板自動(dòng)澆灌或通過用戶Android端手動(dòng)控制水泵對(duì)盆栽進(jìn)行個(gè)性化澆灌;通過傳感器將盆栽實(shí)時(shí)生長環(huán)境信息傳送到Arduino主板中[20],利用數(shù)據(jù)庫及數(shù)據(jù)分析模塊中模糊決策樹算法對(duì)數(shù)據(jù)傳送的數(shù)據(jù)進(jìn)行分析是否需要澆水和澆水量,而后反饋回Arduino控制板,再根據(jù)所得反饋信息控制水泵進(jìn)行自動(dòng)澆水;同時(shí)也會(huì)將盆栽實(shí)時(shí)生長環(huán)境信息傳送到用戶Android端中,用戶可以通過移動(dòng)設(shè)備視頻遠(yuǎn)程了解到盆栽實(shí)時(shí)情況,也可以在移動(dòng)端進(jìn)行操控,將信息傳送到Arduino控制板控制水泵進(jìn)行手動(dòng)澆水,同時(shí)提醒用戶澆水是否澆水不足或過量,讓用戶體驗(yàn)到養(yǎng)殖盆栽的樂趣,也能讓盆栽更好地生長。
本智能盆栽模型采用Arduino UNO主板,配置SHT11溫濕度傳感器、YL-69土壤濕度傳感器以及BH1750環(huán)境光傳感器進(jìn)行數(shù)據(jù)采集,通過藍(lán)牙通信模塊將數(shù)據(jù)無線傳輸?shù)绞謾C(jī)客戶端,用戶通過應(yīng)用程序?qū)ε柙赃M(jìn)行遠(yuǎn)程操作。在硬件方面獲取數(shù)據(jù)方便,及時(shí),有效,且操作簡單,實(shí)用性強(qiáng),成本低廉;使用決策樹算法,透析植物特性,對(duì)不同植物做出不同選擇,實(shí)現(xiàn)因植物而異的差異化照看。設(shè)想改進(jìn)數(shù)據(jù)采集小車和數(shù)據(jù)存儲(chǔ)容量上稍加擴(kuò)張,采用更精確的傳感器,系統(tǒng)還可拓展到溫室大棚蔬菜澆水等,應(yīng)用于農(nóng)業(yè)種植場和實(shí)驗(yàn)基地。
隨著人們的購買力日益提升,盆栽市場具有廣闊的前景。個(gè)性化智能盆栽系統(tǒng)迎合大眾需求,根據(jù)不同植物的生活習(xí)性,實(shí)現(xiàn)智能操作,使植物的種植變得更加現(xiàn)代化,專業(yè)化?,F(xiàn)代人不用再像傳統(tǒng)花農(nóng)一樣常規(guī)常矩,按時(shí)按點(diǎn)打理,便可輕輕松松坐擁綠色生活。未來人工智能技術(shù)不斷完善,逐步滲透生活,智能家居將得到進(jìn)一步推廣,相信智能綠化設(shè)計(jì)會(huì)更加深入人心,為人們所接受。