本文是由開(kāi)發(fā)者設(shè)計(jì)的一個(gè)基于 Android +機(jī)智云的室內(nèi)植物墻智能控制系統(tǒng),打造室內(nèi)的小型化的可智能監(jiān)控的植物墻,完成在線監(jiān)測(cè)溫濕度、二氧化碳濃度、甲醛濃度、光照強(qiáng)度,并可控制水泵進(jìn)行灌溉等。
基于arduino 平臺(tái)設(shè)計(jì)一個(gè)多傳感器的硬件系統(tǒng),并利用WiFi 芯片與機(jī)智云平臺(tái)連接,通過(guò)云平臺(tái)與 Android 手機(jī)移動(dòng)端進(jìn)行交互,從而實(shí)現(xiàn)在手機(jī)上查看當(dāng)前數(shù)據(jù)并控制系統(tǒng)的功能。
系統(tǒng)總體方案設(shè)計(jì)室內(nèi)植物墻智能控制系統(tǒng)的設(shè)計(jì)目的是為想要在室內(nèi)養(yǎng)護(hù)較多花草植物卻又沒(méi)有充足的時(shí)間與精力的人群提供一個(gè)符合需求的解決方案。 為此室內(nèi)植物墻智能控制系統(tǒng)功能實(shí)現(xiàn)有: ① 實(shí)時(shí)獲取當(dāng)前溫濕度、甲醛濃度、光照強(qiáng)度、二氧化碳濃度等數(shù)據(jù),以便清楚得知室內(nèi)空氣環(huán)境變化,更加科學(xué)的養(yǎng)護(hù)植物; ② 將實(shí)時(shí)獲取到的數(shù)據(jù)展現(xiàn)在移動(dòng)端,提高養(yǎng)護(hù)植物的樂(lè)趣,調(diào)動(dòng)人群的積極性; ③ 能夠由移動(dòng)端遠(yuǎn)程控制水泵澆水等動(dòng)作,將養(yǎng)護(hù)植物的難度進(jìn)一步降低,提高植物存活能力。 系統(tǒng)總體結(jié)構(gòu)可以分為植物墻設(shè)計(jì)、硬件電路設(shè)計(jì)、軟件服務(wù)設(shè)計(jì)三個(gè)部分,具體設(shè)計(jì)如圖所示: 智能控制系統(tǒng)硬件及電路設(shè)計(jì)1、室內(nèi)植物墻設(shè)計(jì) 結(jié)合市面植物墻產(chǎn)品設(shè)計(jì)的優(yōu)缺點(diǎn),確定本系統(tǒng)所使用的植物墻方案,墻架主體包括循環(huán)灌水式水箱、可移動(dòng)式鐵架、自由擺放植物木架三個(gè)部分,其組合實(shí)物圖如下所示。 2、硬件選擇及電路設(shè)計(jì) ◆ 中央處理器: 整個(gè)硬件部分以 Arduino Uno R3板為核心,搭配各種傳感器及相應(yīng)配套電路。 ◆ 溫濕度傳感器: 本系統(tǒng)采用DHT11傳感器,其供電電壓與 Arduino板的輸出電壓相對(duì)應(yīng)。 ◆ 甲醛濃度檢測(cè)傳感器: 選擇檢測(cè)方法為電化學(xué)法的DS-HCHO數(shù)字式傳感器。 DS-HCHO 引腳說(shuō)明: ◆ 光照強(qiáng)度傳感器: 選用TSL2561 傳感器,實(shí)現(xiàn)自行編程設(shè)置光照閾值,當(dāng)實(shí)際光強(qiáng)超過(guò)閾值時(shí)能夠產(chǎn)生中斷信號(hào)。 ◆ 二氧化碳濃度傳感器: 采用MG811的檢測(cè)傳感器,可探測(cè)的濃度范圍為 0 到 10000ppm,具有溫度補(bǔ)償功能,能夠?qū)崿F(xiàn)全溫度范圍下檢測(cè)二氧化碳濃度。 ◆ 水泵開(kāi)關(guān)電路設(shè)計(jì): 選用電磁式的繼電器,輸入電流只需要 5V 直流電流,可以對(duì) 220V、10A 交流的電路進(jìn)行控制,與 Arduino 板搭配使用很合適,其接線示意圖如圖所示。 ◆ WiFi電路設(shè)計(jì): 本系統(tǒng)采用樂(lè)鑫的 esp8266 芯片作為 WiFi 通信芯片。 ESP8266 引腳說(shuō)明:
系統(tǒng)軟件程序設(shè)計(jì)1、溫濕度檢測(cè)程序 引用了DHT11庫(kù)文件后的驅(qū)動(dòng)程序編寫(xiě)如下: //引用 DHT11 的庫(kù)文件#include <DHT11.h> //創(chuàng)建實(shí)例化對(duì)象DHT11 DHT;//定義 2 號(hào)引腳為溫濕度測(cè)量的引腳#define DHTPIN 2//設(shè)置波特率為 9600void setup(){Serial.begin(9600);}//循環(huán)函數(shù)void loop(){//將讀取到的值賦給 ckint ck = DHT.read(DHTPIN);//若無(wú)問(wèn)題就打印 OK if (ck == DHTLIB_OK){Serial.println(“OK”);}//出現(xiàn)校驗(yàn)和錯(cuò)誤else if(ck == DHTLIB_ERROR_CHECKSUM){Serial.println(“CHECKSUM ERROR”);}//出現(xiàn)超時(shí)錯(cuò)誤else if(ck == DHTLIB_ERROR_TIMEOUT){Serial.println(“TIMEOUT ERROR”);}//出現(xiàn)未知錯(cuò)誤 else{ Serial.println(“UKNOWN ERROR”)}//打印溫度及濕度值Serial.println(“Temperature: ” + DHT.temperature);Serial.println(“Humidity(%):” + DHT.humidity);//延時(shí) 1000 毫秒開(kāi)始下一次循環(huán)delay(1000);}
2、甲醛濃度檢測(cè)程序
分析清楚傳感器通信格式后,可編寫(xiě)代碼如下:
參考原文:https://mp.weixin.qq.com/s/A3GgcayTV23xf_dVWB1AVw 3、光照強(qiáng)度檢測(cè)程序 TSL2561傳感器能夠?qū)⒐鈴?qiáng)直接轉(zhuǎn)換為數(shù)字信號(hào)輸出,其具體傳輸流程如下所示: 其部分程序代碼如下: 參考原文:https://mp.weixin.qq.com/s/A3GgcayTV23xf_dVWB1AVw
4、二氧化碳濃度檢測(cè)程序 基于二氧化碳傳感器相關(guān)變量的對(duì)應(yīng)關(guān)系,可以設(shè)計(jì)二氧化碳濃度檢測(cè)程序,部分代碼如下:
參考原文:https://mp.weixin.qq.com/s/A3GgcayTV23xf_dVWB1AVw
6、WiFi連接程序
Wi-Fi 模塊作為連接客戶(hù)端與 Arduino 平臺(tái)的中間模塊,在程序上選擇刷入機(jī)智云的固件,這樣的好處在于能使用機(jī)智云的云平臺(tái)服務(wù),具體內(nèi)容會(huì)在后續(xù)介紹。 系統(tǒng)服務(wù)端及移動(dòng)端設(shè)計(jì)本系統(tǒng)的軟件部分可為服務(wù)端與移動(dòng)端,系統(tǒng)服務(wù)端采用機(jī)智云物聯(lián)網(wǎng)云平臺(tái),移 動(dòng)端基于機(jī)智云的 Android SDK 進(jìn)行深度二次開(kāi)發(fā)設(shè)計(jì)。 1、服務(wù)端設(shè)計(jì) ◆ 機(jī)智云物聯(lián)網(wǎng)云平臺(tái)介紹 機(jī)智云提供一站式的物聯(lián)網(wǎng)服務(wù)平臺(tái),包含硬件開(kāi)發(fā)及云服務(wù),并且面向個(gè)人及企業(yè)開(kāi)發(fā)者,開(kāi)發(fā)者通過(guò)物聯(lián)網(wǎng)云平臺(tái),可以實(shí)現(xiàn)從硬件開(kāi)發(fā)到應(yīng)用開(kāi)發(fā)及云端開(kāi)發(fā)的功能,其云平臺(tái)的架構(gòu)如下所示。 ◆ 設(shè)備接入設(shè)計(jì) 機(jī)智云提供多種硬件設(shè)備接入方案,例如購(gòu)買(mǎi)官方開(kāi)源套件就可自動(dòng)實(shí)現(xiàn)接入云端,也可通過(guò)將 GAgent 固件燒錄進(jìn) WiFi模組中,從而實(shí)現(xiàn)與機(jī)智云平臺(tái)的連接。 GAgent 固件可以看作是一款運(yùn)行在通信模塊中的軟件,提供模塊與上層應(yīng)用(包括移動(dòng)客戶(hù)端及云端等)的雙向通信,無(wú)需關(guān)注通信的具體協(xié)議及細(xì)節(jié),也不需要進(jìn)行專(zhuān)門(mén)的 TCP傳輸設(shè)計(jì)。 考慮到本系統(tǒng)以 Arduino 板為核心,以 ESP8266 為通信模塊,完美契合機(jī)智云給出的解決方案中燒錄固件的形式,因此,本系統(tǒng)采用燒錄固件的方案、 具體接入步驟如下: ►在機(jī)智云官方網(wǎng)站上找到所需的固件資源,選擇與通訊模塊相匹配的 GAgent 固件及燒錄軟件進(jìn)行下載,選即擇第二個(gè)GAgent for ESP8266 進(jìn)行下載,如圖 所示。 ►下載燒寫(xiě)軟件工具:https://www.espressif.com/zh-hans/support/download/other-tools ►將 WiFi 模塊與 USB 轉(zhuǎn) TTL 模塊相連接,進(jìn)入燒錄模式,需要注意的是,在進(jìn)入燒錄模式后,USB 轉(zhuǎn) TTL 模塊提供的電壓已無(wú)法滿足 WiFi 模塊的供電需求,此時(shí)需要有外部電源對(duì) WiFi 模塊提供 3.3V 的電壓,兩個(gè)模塊具體的接線如圖所示。 ►具體而言就是兩個(gè)模塊的 TX 與 RX 交叉連接,外部電源正極與 Wi-Fi 模塊的 VCC 及 EN相連,外部電源的負(fù)極與 Wi-Fi 模塊的 IO0、IO2、GND 及轉(zhuǎn)串模塊的 GND 相連,在RST 于 GND 之間連接一個(gè)開(kāi)關(guān)。 ►在硬件電路連接好,需要用到的軟件及固件都下載好后,打開(kāi)燒錄軟件,依據(jù)說(shuō)明選擇相應(yīng)的選項(xiàng),點(diǎn)擊 START 鍵后按下復(fù)位開(kāi)關(guān)即可開(kāi)始進(jìn)行燒錄,最后燒錄成功后如圖所示。 ►創(chuàng)建產(chǎn)品:接下來(lái)在機(jī)智云平臺(tái)創(chuàng)建一個(gè)產(chǎn)品,命名為“智能植物墻”,技術(shù)方案選擇 WiFi方案,數(shù)據(jù)傳輸方式為定長(zhǎng),完成創(chuàng)建后如圖所示。 ►下一步是設(shè)置數(shù)據(jù)點(diǎn),所謂數(shù)據(jù)點(diǎn)即是希望系統(tǒng)采集或者控制的數(shù)據(jù),讀寫(xiě)類(lèi)型分為只讀與可寫(xiě)兩類(lèi),數(shù)據(jù)類(lèi)型分為數(shù)值與布爾值等,本系統(tǒng)設(shè)置了六個(gè)數(shù)據(jù)點(diǎn),如表所示。 ►在機(jī)智云平臺(tái)上創(chuàng)建數(shù)據(jù),完成后如圖所示。 ►設(shè)置好數(shù)據(jù)點(diǎn)后進(jìn)入 MCU 開(kāi)發(fā)環(huán)節(jié),選擇獨(dú)立 MCU 方案,硬件平臺(tái)選擇Arduino UNO R3,如圖所示。 ►填寫(xiě)產(chǎn)品密鑰,產(chǎn)品密鑰在產(chǎn)品基本信息一欄,是作為 APP 開(kāi)發(fā)和服務(wù)器對(duì)接時(shí)需要使用的參數(shù),如圖所示。 ►輸入密碼后即可顯示完整密鑰,然后復(fù)制粘貼即可。完成后點(diǎn)擊生成代碼包,稍等片刻即完成,如圖所示。 2、移動(dòng)端設(shè)計(jì) 關(guān)于移動(dòng)APP的設(shè)計(jì),可以采用基于機(jī)智云開(kāi)源框架二次開(kāi)發(fā)設(shè)計(jì)智能控制系統(tǒng)APP。 從實(shí)際需求出發(fā),移動(dòng)端應(yīng)該具有以下幾個(gè)功能: ① 用戶(hù)注冊(cè)及登錄:智能植物墻系統(tǒng)作為一個(gè)物聯(lián)網(wǎng)項(xiàng)目,對(duì)每個(gè)用戶(hù)而言,基于信息保密原則需要有自己的賬號(hào),賬號(hào)與設(shè)備一一對(duì)應(yīng),因此用戶(hù)注冊(cè)及登錄功能必不可少; ② 設(shè)備綁定與解除綁定:用戶(hù)在登錄移動(dòng)端后首先需要做的就是與自己的設(shè)備進(jìn)行綁定,以便進(jìn)行下一步的操作,在綁定了設(shè)備后還需要能夠解綁; ③ 數(shù)據(jù)采集及設(shè)置:與設(shè)備綁定后需要能夠?qū)崿F(xiàn)實(shí)時(shí)顯示采集到的數(shù)據(jù),并且能夠控制硬件設(shè)備。 移動(dòng)端完整的工作流程如下: 點(diǎn)擊移動(dòng)端,展示歡迎界面,調(diào)用登錄接口讓用戶(hù)通過(guò)注冊(cè)或者直接登錄的方法登錄移動(dòng)端,設(shè)備提前接入網(wǎng)絡(luò),調(diào)用設(shè)備綁定接口在移動(dòng)端配置設(shè)備并與之綁定,綁定設(shè)備完成后,展示設(shè)備列表,點(diǎn)擊具體綁定的設(shè)備,實(shí)時(shí)查看當(dāng)前數(shù)據(jù),并能與設(shè)備進(jìn)行交互。 移動(dòng)APP端的登錄及注冊(cè)界面效果: 最終完整配置流程界面: 在完成設(shè)備的綁定后該設(shè)備就會(huì)出現(xiàn)在移動(dòng)端中,需要對(duì)云端返回的設(shè)備采集到的數(shù)據(jù)進(jìn)行可視化處理,設(shè)計(jì)展示界面及開(kāi)關(guān)控制功能。 最終的參數(shù)查詢(xún)及控制界面: 其部分程序代碼如下: - 參考原文:https://mp.weixin.qq.com/s/A3GgcayTV23xf_dVWB1AVw
- 系統(tǒng)設(shè)計(jì)總結(jié)
基于Android +機(jī)智云平臺(tái)的室內(nèi)植物墻智能控制系統(tǒng)由植物墻、硬件電路及移動(dòng)控制端等組成,通過(guò)市場(chǎng)調(diào)研確定植物墻的設(shè)計(jì)方案,以 Arduino 作為硬件平臺(tái)并輔以各類(lèi)傳感器,組成環(huán)境信息探測(cè)采集系統(tǒng)。 以ESP8266 為 Wi-Fi 芯片并刷入機(jī)智云固件,作為橋梁將硬件系統(tǒng)與機(jī)智云平臺(tái)相連接。以 Android 平臺(tái)作為移動(dòng)端的選擇,以機(jī)智云開(kāi)源框架為基礎(chǔ)設(shè)計(jì)移動(dòng)端,以實(shí)現(xiàn)對(duì)硬件系統(tǒng)的遠(yuǎn)程控制。在實(shí)時(shí)監(jiān)測(cè)室內(nèi)環(huán)境數(shù)據(jù)的同時(shí)遠(yuǎn)程控制水泵灌溉開(kāi)關(guān),降低了綠植養(yǎng)護(hù)的難度,提高了綠植養(yǎng)護(hù)的樂(lè)趣。 設(shè)計(jì)完善的植物墻養(yǎng)護(hù)植物圖: 由于繼電器端口的原因,水泵無(wú)法直接與之相連,因此用一個(gè)改裝過(guò)的插座來(lái)代替,通過(guò)繼電器控制插座的通斷電從而控制插在插座上的水泵,以此起到開(kāi)關(guān)的作用。 完整的硬件電路連接圖: 將項(xiàng)目代碼編譯打包運(yùn)行,通過(guò) Android Studio 的調(diào)試功能將生成的完整移動(dòng)端安裝到手機(jī)上并打開(kāi),如圖所示從左到右依次為移動(dòng)端下載安裝完成圖、移動(dòng)端打開(kāi)后歡迎頁(yè)、登錄頁(yè)、點(diǎn)擊跳過(guò)后移動(dòng)端內(nèi)容頁(yè),即為移動(dòng)端首次運(yùn)行的頁(yè)面。 測(cè)試注冊(cè)及登錄功能圖: 在經(jīng)過(guò)配置——選擇無(wú)線網(wǎng)絡(luò)——選擇無(wú)線模組——搜索設(shè)備并連接的流程后,在移動(dòng)端中出現(xiàn)了“智能植物墻”這一設(shè)備,這表明設(shè)備能夠順利完成與移動(dòng)端的綁定操作。 測(cè)試綁定后的設(shè)備實(shí)現(xiàn)遠(yuǎn)程查看數(shù)據(jù)并控制水泵開(kāi)關(guān)。
|