外出旅行,家里的花盆沒人管,怎么辦?忙于工作,經常忘記給花盆里澆水,導致植物經常死掉...類似這樣的情況,在生活中經常發生。有沒有什么辦法呢?當花盆植物缺水的時候,能夠自己澆水,那就再好不過了。今天我們就來做一個人工智能花盆吧!
結合家庭盆栽因不可控因素疏于打理的現實及期望植株健康成長的需求,提出一款由感知模塊,交互模塊,執行模塊,電源模塊以及微處理器模塊構成的智能花盆。該花盆通過傳感器采集植物狀態數據,利用esp8266發送至物聯網平臺,使得在線檢測和云端控制成為可能;并通過繼電器驅動電磁閥與補光燈,實現智能灌溉與自動補光。
本文目錄結構: 版本更新內容 總體設計 硬件設計 軟件設計 轉配與測試 存在問題與改進意見
主要使用的硬件有STM32F103C8、電阻式土壤濕度傳感器、溫度傳感器DS18B20、光照強度傳感器 GY-3-(BH1750)、補光燈、WiFi模塊ESP8266、OLED、串口調試模塊 CH340
總體設計
2.1整體模型
總體設計框圖
2.2硬件結構
一、版本更新內容 1)增加傳感器:光照強度傳感器GY-30(BH1750) 2)增加交互模塊:0.96寸OLED(SSD1306) 3)執行部分:水泵更換為電磁閥、增加LED補光燈(紅&藍) 4)搭建花盆外殼支架 5)增加自動模式
二、總體設計 2.1整體模型
2.2硬件結構
1)STM32F103最小系統。包括微處理器、帶電容穩壓的電源接口、復位電路、無源晶振與起振電路一起組成的時鐘源以及調試接口等構成最小系統。 2)環境輸入檢測。主要包括DS18B20溫度檢測部分、內置ADC轉換的數字式光照強度檢測部分和使用AD數據采集的土壤濕度檢和水位檢測部分。 3)執行部分主要包括電磁閥與基于植物光譜吸收峰值的藍紅LED補光燈等繼電器驅動部分。 4)數據交互。主要包括MCU 與 ESP8266 的網絡通信部分、方便用戶查看數據的OLED部分以及調試過程中用到的USB轉TTL模塊。
2.3軟件結構
為方便實現MCU與硬件的通訊引入驅動層負責實現底層硬件支持的通訊協議,并為上層提供方便使用的函數調用接口。主要包括基于“1-Wire”協議的DS18B20驅動程序、基于HAL庫的USART 驅動程序、與SSD1306通訊的OLED驅動程序以及數字式光照強度的BH1750驅動程序等。其中 I/O 驅動主要實現了STM32F103C8T6微處理器GPIO引腳的定義和初始化;UART除”printf”函數重定義到串口外還須與ESP8266的通訊;剩余的該部分則是溫度、土壤濕度、水位傳感器的驅動程序。
執行層通過調用驅動層和機智云協議層提供的函數調用接口來實現智能花盆軟件的邏輯控制。它包括初始化部分、數據掃描、上行下行通訊、自動化控制等部分。
網絡層實現將數據封裝上傳、數據包解析等工作。
三、硬件設計 3.1硬件資源布局 3.2主控芯片 3.2.1主控選型 結合當前接觸過的芯片以及對市場的淺薄了解,列舉了意法半導體(ST)的STM系列、意大利Massimo Banzi的arduino、AT89C51以及微型電腦Raspberry Pi作比較。最終選用STM32F103C8系列。
3.2.2 引腳配置
3.3數據采集部分 3.3.1土壤濕度傳感器
其原理圖如下:
該模塊主要利用三極管的電流放大原理。土壤中存在水分時形成導體使得三極管的基極B與電源的VCC導通,這時在三極管的基極B和發射極E之間將產生電流,集電極C和發射極E之間則產生以一定倍數放大的電流,經發射極E電阻產生較大壓降,送入A/D轉換電路。
3.3.2溫度傳感器 選用DALLAS公司推出的一種使用l-Wire通訊的數字式溫度傳感器DS18B20。
DS18B20引腳示意及實物圖 其具有以下優點: 1)DS18B20 溫度傳感器的工作電壓為+3.0V ~ +5.5V,無需電壓轉換,可直接用于市面上大多數開發板; 2)接口簡單,1-Wire 總線結構簡潔,只需一根線即可進行通訊,有效減少硬件開銷; 3)溫度測量范圍廣,最低可測得-55℃,最高可測得125℃,最高精度可達 0.0625℃; 4)自帶 EEPROM,開發者設定的采集分辨率以及報警溫度信息都將存儲在其中,掉電重啟后依然保存相應配置。 3.3.3水位傳感器
本文采用的是水位傳感器/雨滴檢測傳感器Water Sensor,其原理與土壤濕度傳感器相同。
3.3.4光照強度傳感器
市面上可用的光照強度檢測模塊主要分為兩種,一種是利用光敏電阻獲得光照強度的模擬信號輸出,該傳感器價格最為低廉,但需要自己構建光照強度與模擬信號直接的對應公式。另一為內置ADC轉換的數字式光照強度傳感器,我們采用的就是該類型傳感器---BH1750。其不區分環境光源,可忽略復雜計數與標定。利用內置16bit的AD轉換電路,直接輸出0 ~ 65535lx。
3.4執行部分 3.4.1補光燈 植物的生長離不開陽光,若長期缺乏光照則會出現生長緩慢,葉片小而色淡,莖細長不開花等問題。為了解決以上困擾同時避免花盆的頻繁搬動,我們采用LED燈補光的解決方案。
結合常見LED光譜波段表及植物吸收的光譜,采用紅:藍 = 2:1的LED組合燈帶。 3.4.2電磁閥
土壤濕度的補償方面,若采用傳統的水泵,則需要較大功率的輸出,為我們的供電模塊帶來較大的壓力,因而改用電磁閥與高水位勢能做工的方式,減少控制部分的總功率。
3.5數據交互部分 3.5.1WiFi模塊

該模塊接口較多,可支持IIC、PWM、GPIO 以及 ADC 等接口,可輕松實現數據透傳。引腳描述如下所示:

該ESP8266模塊的工作頻段為全球共用的2.4GHz,信號發射功率僅為 15dbm,其主要特性如下表所示:該ESP8266模塊的工作頻段為全球共用的2.4GHz,信號發射功率僅為 15dbm,其主要特性如下表所示:

3.5.2OLED模塊

增加該模塊的初衷為1.0版本的交互方式較少,若不打開APP查看,則無法獲取花盆實時數據。因而添加該模塊,目前僅作數據顯示使用,尚無菜單與按鍵等互動。
簡單五步,實現串口屏接入機智云【廣州大彩物聯網串口屏】
3.5.3CH340模塊
該模塊主要用于串口調試。
四、軟件設計 4.1驅動 4.1.1DS18B20驅動 4.1.2GY-30(BH1750)驅動 4.1.3OLED(SSD1306)驅動 <此處文字、代碼所占篇幅較多,需要跳轉鏈接,建議或搜索 智能花盆2.0驅動,或查看原文> 4.2主控邏輯
系統在上電后開始工作:首先完成的是各模塊的初始化以及機智云協議初始化,隨后在OLED上顯示開機動畫,ESP8266開啟機智云一鍵配置。繼而進入循環檢測傳感器數據,并將數據發送至OLED顯示;隨后進行模式判斷,實現自動化智能化。為避免頻繁的數據上傳導致APP端控制命令沖突,在數據上傳前,需獲取計數器的值,實現非阻塞的延時上傳。最后檢測是否有云端控制命令,如有則進行對應的處理。在步入下一循環之前,須檢測是否系統異常,如存在異常則結束工作,如無異常則開始下一次循環。
4.3機智云物聯網平臺的協議 4.3.1數據格式
1) 包頭(header)固定為0xFFFF; 2) 長度(len)是指從cmd 開始到整個數據包結束所占用的字節數; 3) 命令字(cmd)表示具體的命令含義,詳見協議舉例; 4) 消息序號(sn)由發送方給出,接收方響應命令時需把消息序號返回給發送方; 5) 標志位(flag),本產品填寫默認0; 6) payload(p0數據區),詳細參見p0 數據區約定; 7) 檢驗和(checksum)的計算方式為從len~DATA,按字節求和; 8) 所有發送的命令都帶有確認,如在200 毫秒內沒有收到接收方的響應,發送方;應重發,最多重發3 次; 9) 多于一個字節的整型數字以大端字節序編碼(網絡字節序);
“p0 數據區約定”有如下功能: 1) WiFi模塊向MCU發送控制命令時攜帶p0 命令和命令標志位以及可寫數據區 2) MCU主動發送狀態時或者回復模塊的狀態查詢時攜帶p0命令和完整數據區 3) 數據區會自動合并布爾和枚舉變量,且有嚴格的順序,不可任意改變

上傳協議P0區:action(1B) + dev_status(11B) ; 下達協議p0區:action(1B) + attr_flags(1B) + attr_vals(6B)
4.3.2數據上報
4.3.3下行控制 4.4Gizwits運作流程
起始工作是對外設、用戶和協議等的初始化。當 WiFi 通過串口設備配置并成功連接云平臺后,ESP8266將不斷收到來自云端的數據點和狀態信息。這些信息在接收完成后,會以GAgent協議幀的方式傳遞給主控芯片,而主控芯片再則將其放入緩沖區,之后進行抓包解析,并進行事件的處理,也就是下行的動作執行。如果再有上行數據采集,主控芯片將收到到數據處理為協議幀發送給WiFi 設備,再由WiFi負責將數據傳輸到服務器。
五、裝配與測試 本文使用的方法是先將各模塊調通,再組合在一起,組合時電源問題凹顯,于是買了一個多路電源模塊。外型部分目前僅用角鋼切割組成支架,算是半成品吧。
機智云APP互動界面與實物圖
視頻地址:https://www.bilibili.com/video/av53274806
六、存在問題與改進建議 6.1傳感器數據異常 解決辦法,數據采集后經濾波處理,立Flag,近期出。
6.2運行日志 改用SD卡存儲設備運行日志
6.3外型改進 智能花盆支架--->將設備整合到花盆內,為此應該要自己畫PCB..
6.4傳感器升級 持續優化傳感器部分,例如采用博世BME280環境溫濕度大氣壓三合一傳感器替代DS18B20實現數據采集寬度上的升級。 6.5交互升級 未來可增加按鍵實現OLED菜單選擇;增加蜂鳴器實現報警提醒,增加LED狀態指示燈提示供電狀態與工作模式。 6.6自建服務器 使用自建服務器,數據庫存儲常見植株的最適宜生長環境,為自動化控制提供更智能的選擇。 ———————————————— 版權聲明:本文為CSDN博主「JYU_hsy」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。 原文鏈接:https://blog.csdn.net/weixin_40774605/article/details/90416456
|