構(gòu)建一個(gè)基于pocketbeagle的植物狀況監(jiān)視器
這個(gè)項(xiàng)目是為萊斯大學(xué)的EDES 301:實(shí)用電氣工程導(dǎo)論而開發(fā)的。
正如這篇文章所描述的,我設(shè)計(jì)并制造了一個(gè)基于pocketbeagle的植物狀況監(jiān)視器,它可以測(cè)量土壤濕度和溫度等環(huán)境條件,并將它們顯示在LCD屏幕上,并通過(guò)led提供視覺(jué)反饋。該系統(tǒng)旨在幫助防止常見(jiàn)的植物護(hù)理錯(cuò)誤,如澆水過(guò)多或疏忽,這是我過(guò)去一直感到內(nèi)疚的。我想在我的植物枯萎和死亡之前找到一種方法來(lái)跟蹤和改善它的狀況。
設(shè)備概述
這是一個(gè)嵌入式系統(tǒng),旨在幫助用戶通過(guò)持續(xù)監(jiān)測(cè)環(huán)境條件來(lái)保持室內(nèi)植物的健康。該設(shè)備使用PocketBeagle微控制器,測(cè)量土壤濕度和溫度,在LCD屏幕上顯示實(shí)時(shí)數(shù)據(jù),并通過(guò)led提供視覺(jué)反饋。按鈕控制的界面允許用戶在顯示模式之間循環(huán)。該設(shè)備以自動(dòng)啟動(dòng)方式運(yùn)行,被設(shè)計(jì)為嵌入式系統(tǒng)和電氣工程概念的實(shí)用和簡(jiǎn)單應(yīng)用。
對(duì)于我的系統(tǒng),土壤濕度以百分比測(cè)量,我將這種情況分為四類:土壤濕潤(rùn)(≥70%),最佳(40-69%),干燥(20-39%)和非常干燥(<20%)。溫度以攝氏度為單位監(jiān)測(cè),以確保安全的操作條件并提供環(huán)境背景,幫助我了解熱量如何影響土壤干燥/植物健康。
硬件
在我的項(xiàng)目中,我使用了PocketBeagle作為微控制器。下面是它的引腳圖。
所有PocketBeagle引腳(P1和P2)到組件引腳(無(wú)論是在組件上還是在面包板上)都被捕獲在下面以方便參考。當(dāng)我測(cè)試我的系統(tǒng)時(shí),這些pin是根據(jù)PocketBeagle的響應(yīng)情況決定的。
我開始這個(gè)項(xiàng)目首先連接3.3 V從PB (P1_14)到我的面包板的正電源軌。我還將GND從PB (P1_15)連接到負(fù)電源軌。這樣所有的傳感器,led,按鈕,電位器和其他組件都可以共享一個(gè)共同點(diǎn),并且都提供3.3 V。
LCD顯示屏(HD44780, 16x2)
我使用圖2所示的連接將LCD屏幕連接到PB。我使用GPIO引腳以4位模式連接:RS, Enable (E)和數(shù)據(jù)線(D4-D7)連接到PB GPIO (P2_24, P2_22, P2_18, P2_20, P2_17, P2_10)。然后我將BLK, RW和接地引腳連接到地(接地面包板導(dǎo)軌)。在VO引腳上使用電位器來(lái)控制對(duì)比度。LCD屏幕本身(VDD)使用5v供電(來(lái)自USB的5v, P1_5)。此外,背光(BLA)連接到5v使用220歐姆電阻。
我使用電位器作為分壓器來(lái)控制LCD對(duì)比度,中間引腳連接到LCD的VO引腳,一側(cè)連接到3.3 V,另一側(cè)連接到地。然后我通過(guò)轉(zhuǎn)動(dòng)鍋手動(dòng)調(diào)整對(duì)比度,而液晶顯示器是用我的電腦供電的。布線類似于下面的圖3(注意,由于初始引腳連接無(wú)響應(yīng),在此迭代之后,布線發(fā)生了變化,但是為了方便視覺(jué),插入了圖像)。
土壤濕度傳感器(STEMMA I2C)
參考圖2并使用隨附的JST PH 2mm 4針到公頭電纜,我將傳感器SDA連接到P1_26,將SCL連接到P1_28。GND接地,VIN接3.3 V電源軌。這些連接如圖4所示。
土壤濕度傳感器與我設(shè)備中PB上的I2C總線2(地址0x36)通信。
溫度傳感器(BMP280)
使用公對(duì)公跳線,我將SDA連接到P2_11, SCL連接到P2_09, GND和SDO連接到地,VCC連接到3.3 V。溫度傳感器與I2C總線1(地址0x76)通信。我最初打算使用BME280溫度和濕度傳感器,但bmp280(溫度和壓力)是我油炸原始BME280后唯一可用的傳感器。
發(fā)光二極管
每個(gè)LED使用一個(gè)220歐姆電阻串聯(lián)陽(yáng)極(長(zhǎng)腿)。然后,從電阻器,紅色LED連接到P2_19,黃色LED連接到P2_25,綠色LED連接到P2_29。led的陰極(短腿)接地。布線如下圖5所示。
按鈕
使用公對(duì)公跳線,我在下拉配置中連接了一個(gè)瞬時(shí)按鈕。按鈕一端接P2_27 (GPIO輸入),另一端接3.3 V導(dǎo)軌。同一個(gè)GPIO節(jié)點(diǎn)(P2_27)通過(guò)一個(gè)10 Kohms的下拉電阻連接到地,以確保在未按下按鈕時(shí)處于定義的LOW狀態(tài)。當(dāng)按下時(shí),按鈕驅(qū)動(dòng)P2_27 HIGH,允許PocketBeagle檢測(cè)到屏幕切換的干凈上升邊緣輸入。
代碼
為了實(shí)現(xiàn)系統(tǒng)的功能,我為L(zhǎng)CD、土壤濕度傳感器、BMP280、led和按鈕編寫了python驅(qū)動(dòng)程序。然后,主驅(qū)動(dòng)程序讀取土壤濕度,計(jì)算狀態(tài)+干燥程度(使用簡(jiǎn)單的計(jì)算器),更新led(基于濕度),讀取溫度并更新LCD屏幕。按鈕代碼的編寫允許在4個(gè)顯示屏幕之間切換/循環(huán):
?屏幕0 -顯示土壤水分百分比和整體狀態(tài)。
?屏幕1 -顯示一個(gè)簡(jiǎn)化的干燥水平和狀態(tài)。
?屏幕2 -提供一個(gè)簡(jiǎn)短的項(xiàng)目標(biāo)題和用戶提示按下一個(gè)屏幕。
?屏幕3 -顯示溫度和土壤濕度的組合監(jiān)測(cè)。
我首先使用自定義configure_pins.sh腳本配置了PocketBeagle引腳,以便在啟動(dòng)時(shí)將所有GPIO、I2C和外設(shè)引腳設(shè)置為正確的模式。然后,我創(chuàng)建了一個(gè)run.sh腳本,該腳本將更改為項(xiàng)目目錄,運(yùn)行引腳配置,等待電源和I2C設(shè)備穩(wěn)定,然后啟動(dòng)主python程序。最后,我通過(guò)創(chuàng)建一個(gè)在啟動(dòng)時(shí)調(diào)用run.sh的systemd服務(wù)啟用了自動(dòng)引導(dǎo),確保在PocketBeagle開機(jī)時(shí)(使用5伏特USB充電適配器)工廠監(jiān)視器自動(dòng)運(yùn)行,而不需要連接計(jì)算機(jī)?;蛘?,您可以使用日志和cronlog文件設(shè)置自動(dòng)引導(dǎo),并使用命令sudo crontab -e編輯cron。
實(shí)現(xiàn)
只需使用Micro USB轉(zhuǎn)USB- a電纜和5伏USB充電適配器將PocketBeagle連接到5V電源即可。
未來(lái)的工作
還有很多改進(jìn)的空間,包括修復(fù)LCD的電氣穩(wěn)定性和初始化,以消除長(zhǎng)時(shí)間運(yùn)行后偶爾出現(xiàn)的顯示故障。我還想增加一個(gè)操縱桿輸入來(lái)取代單一的按鈕,讓屏幕之間的導(dǎo)航更流暢、更直觀。擴(kuò)展傳感器套件,包括濕度、環(huán)境光和額外的溫度探頭,也將提供一個(gè)更完整的植物健康圖景。通過(guò)增加一個(gè)Wi-Fi模塊,當(dāng)環(huán)境變得不利時(shí),該系統(tǒng)可以向手機(jī)發(fā)送實(shí)時(shí)警報(bào)或通知。最后,我會(huì)激光切割或3d打印一個(gè)外殼,以提高耐用性,組織和設(shè)備的整體呈現(xiàn)。
本文編譯自hackster.io





