這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。
今天,我們將利用ROHM傳感器評(píng)估套件打造一套智能花園系統(tǒng)。在此項(xiàng)目中,我們整合接近/環(huán)境光傳感器(ALS)和其他傳感器,實(shí)現(xiàn)植物培育設(shè)備的自動(dòng)化操作!
有關(guān)ROHM傳感器的更多信息,請(qǐng)參閱我們的文章ROHM傳感器評(píng)估套件概覽!
此外,我們將使用Arduino Create對(duì)系統(tǒng)進(jìn)行編程。
Arduino Create是一個(gè)多合一的在線平臺(tái),可以編寫代碼、配置電路板、共享項(xiàng)目。該平臺(tái)于2016年8月18日正式發(fā)布。
Arduino Create 提供以下服務(wù):
Arduino Web Editor
Arduino Web Editor 是一款在線編輯器,用戶可以編寫代碼并將程序從網(wǎng)頁瀏覽器上傳至任何Arduino開發(fā)板上。
將代碼寫入或?qū)?Arduino
上傳/分享程序
使用Arduino庫
通過云連接服務(wù)
Arduino Project Hub
Arduino Project Hub 是一個(gè)hackstar.io提供的教程平臺(tái)。該Hub擁有大量不同難度和人氣的項(xiàng)目。
Arduino Cloud
憑借Arduino Cloud,用戶可以通過互聯(lián)網(wǎng)在云中管理項(xiàng)目。Arduino Cloud執(zhí)行亞馬遜的云計(jì)算服務(wù),能夠?yàn)橛脩籼峁┌踩拈_發(fā)環(huán)境。
將Arduino直接連接到互聯(lián)網(wǎng)
通過MQTT在Arduino之間進(jìn)行互通
采用AWS IoT和AWS Lambda
今天的電子食譜
預(yù)計(jì)完成時(shí)間:120分鐘
所需部件:
Arduino 主體 (Arduino UNO R3)
Rohm 傳感器評(píng)估套件https://www.rohm.com/web/global/sensor-shield-support
電阻 (220 歐姆) × 2
紅色 / 藍(lán)色 LED
土壤傳感器https://www.dfrobot.com/wiki/index.php/Moisture_Sensor_(SKU:SEN0114)
伺服電機(jī) (SG90)
※ 您可以從以下站點(diǎn)購買羅姆傳感器評(píng)估套件!
Chip One Stop
Mouser Electronics
打造智能花園系統(tǒng)的第一步就是要確定需要集成的內(nèi)容。我們?nèi)绾问褂眠@些傳感器打造一套有利于植物培育的設(shè)備呢?首先,我們看一下各種傳感器的功能和用法以及它們?cè)谠擁?xiàng)目中的潛在用途。
傳感器評(píng)估套件提供8種不同的傳感器。我們應(yīng)將哪些傳感器集成到植物培育系統(tǒng)中呢?我們來復(fù)習(xí)一下每個(gè)傳感器的功能,看看系統(tǒng)可以采用哪些傳感器。
圖1 傳感器評(píng)估套件包含的傳感器
加速度計(jì): 檢測(cè)傾斜、運(yùn)動(dòng)、振動(dòng)等?!覀兛赡懿粫?huì)用此器件來測(cè)量加速度。
氣壓傳感器:檢測(cè)大氣壓力→壓力與天氣之間的關(guān)系似乎與室內(nèi)植物沒有關(guān)系
地磁傳感器:檢測(cè)方向→可以根據(jù)太陽的方向改變植物的朝向嗎(?)
接近傳感器:檢測(cè)正在接近的物體;檢測(cè)亮度→如果我們的系統(tǒng)只是在白天(或明亮?xí)r)而不是在黑暗中工作,那么這個(gè)器件很有用。
顏色傳感器:檢測(cè)顏色→葉子是否枯萎,等等……我們以后再研究這個(gè)功能吧……
霍爾傳感器:通過磁鐵檢測(cè)物體→我覺得這個(gè)項(xiàng)目可能不會(huì)使用接近開關(guān)或定位功能…
溫度傳感器:檢測(cè)溫度→我們可以用溫度數(shù)據(jù)來控制植物的澆水情況(比如溫度較高時(shí)應(yīng)該多澆水,等等)。
紫外線傳感器:檢測(cè)紫外線→日光太強(qiáng)/太弱時(shí)可通知用戶相關(guān)情況。
根據(jù)各個(gè)傳感器的功能簡(jiǎn)述,為了完成此項(xiàng)目,我們可能需要在系統(tǒng)中整合多個(gè)傳感器。那么我們應(yīng)該集成哪些傳感器呢?
圖2 一般植物生長注意事項(xiàng)
如圖2所示,種植健康的植物必須滿足一定條件。一般來講,植物在通風(fēng)良好、陽光充足和溫度適中的地方生長最好。當(dāng)然,它們需要水。
根據(jù)這些信息,我們可以縮小傳感器的選擇范圍:
日光條件→利用紫外線傳感器和溫度傳感器檢查溫度是否過高/紫外線強(qiáng)度是否過大,并采取必要的措施以減少日光照射。
澆水原則→利用土壤傳感器,我們可以確定土壤中的水分含量,并根據(jù)盆的大小為植物澆水。
關(guān)于溫度→如果溫度過高或過低,我們可以檢查植物含量并觸發(fā)警報(bào)。
通風(fēng)→我們可以測(cè)量室內(nèi)空氣流速,如果室內(nèi)風(fēng)量不夠,我們可以用風(fēng)扇來產(chǎn)生風(fēng)。
現(xiàn)在,我們開始構(gòu)造這個(gè)系統(tǒng)吧!
類似的設(shè)備……
說到植物培育設(shè)備……已經(jīng)有人制作過大型植物培育系統(tǒng)。比如FarmBot。從外觀上看,F(xiàn)armBot就像是一臺(tái)巨大的激光切割機(jī)或3D打印機(jī)。正如下面的視頻所示,該機(jī)器還可以幫忙播種,似乎我們通過電腦或移動(dòng)應(yīng)用程序就能控制播種過程。長時(shí)間在室外管理和控制這些設(shè)備會(huì)比較困難,尤其是在天氣比較惡劣的情況下。不管怎樣,這些非??岬脑O(shè)備在改善可持續(xù)發(fā)展農(nóng)業(yè)領(lǐng)域具有巨大的潛力。
FARMBOT GENESIS – https://farmbot.io/
Arduino Create × Rohm 傳感器評(píng)估套件!
接下來我們看一下如何用Arduino Create編寫程序。
圖3 Arduino Create
Arduino Create 網(wǎng)站
Arduino Create 入門
我們循序漸進(jìn)地看一下Arduino Create如何使用。Arduino Create的迷人之處就在于您可以直接在瀏覽器中在線編寫代碼并進(jìn)行共享(比如在社交媒體上)。通常,如果您要使用Arduino,您得在電腦上下載并安裝Arduino IDE,但是Arduino Create無需這個(gè)步驟。
打開瀏覽器,然后轉(zhuǎn)到Arduino Create 網(wǎng)站。
如果您是首次使用Arduino,那么必須創(chuàng)建一個(gè)用戶帳戶。請(qǐng)進(jìn)入用戶注冊(cè)頁面以創(chuàng)建您的帳戶(如果您有Arduino帳戶,那么可以直接用現(xiàn)有帳戶登錄)。
(僅適用于初次使用的用戶)完成注冊(cè)后,您會(huì)收到一封包含一個(gè)URL的電子郵件,點(diǎn)擊該鏈接完成注冊(cè)。
(僅適用于初次使用的用戶)安裝“Arduino Web Editor Plugin”(或“ArduinoCreateAgent”),以便瀏覽器可以連接到Arduino主機(jī)。
打開Arduino Web Editor。
PC版和網(wǎng)絡(luò)版之間的主要區(qū)別是什么呢?
只要可以上網(wǎng),您幾乎能在任何地方查看/編輯您的程序。
網(wǎng)絡(luò)版還支持多個(gè)庫,因此即使更換電腦,您也不必重新安裝原來使用的庫。
Arduino Create非常有用。唯一的缺點(diǎn)是:要使用Web Editor,您必須連接互聯(lián)網(wǎng),否則是無法使用的。我覺得介紹的差不多了。此時(shí),您可以簡(jiǎn)單地在電腦上使用現(xiàn)有的Arduino軟件。
運(yùn)行Arduino Create主屏幕和傳感器評(píng)估套件庫
首先打開Arduino Web Editor.
圖 4. Arduino Create Web Editor
您會(huì)看到編輯器在瀏覽器中打開。值得一提的是,與Arduino Software IDE相比,這些菜單更易于查看和定位。有時(shí),在電腦上使用IDE并打開太多帶有很多程序的窗口時(shí),它們會(huì)變得雜亂無章;但是這個(gè)編輯器的窗口整潔有序,您可以輕松地找到所需文件。
菜單欄位于編輯器的左側(cè)。
圖5 Arduino Create Web Editor – 基本功能
我們來查看一些常用功能。我們從“Blink.ino”開始(路徑:Examples →BUILT IN→01.BASICS→Blink)。使用屏幕上方中央的下拉菜單,選擇要連接的Arduino開發(fā)板和端口。然后,點(diǎn)擊“Verify”→“Upload”(通常在Arduino軟件中執(zhí)行此操作)。
添加傳感器評(píng)估套件庫
接下來,我們將添加傳感器評(píng)估套件庫。要添加庫,您可以點(diǎn)擊左側(cè)菜單的“Libraries”,并單擊“ADD ZIP LIBRARY”。然后,選擇要添加的庫的zip文件完成添加。您可以從此處為每個(gè)傳感器下載傳感器評(píng)估套件庫(zip文件)。
圖6 Arduino Create Web Editor – 添加庫
傳感器評(píng)估套件已成功連接?,F(xiàn)在,我們進(jìn)行連線和編程!
整個(gè)系統(tǒng)的設(shè)計(jì)理念如下:
日光條件→利用紫外線傳感器和溫度傳感器檢查溫度是否過高/紫外線強(qiáng)度是否過大,并采取必要的措施以減少日光照射。
→ 用伺服電機(jī)遮陽!
澆水原則→利用土壤傳感器,我們可以確定土壤中的水分含量,并根據(jù)盆的大小為植物澆水。
→ 使用土壤傳感器和噴壺!
關(guān)于溫度→如果溫度過高或過低,我們可以檢測(cè)植物的環(huán)境溫度并觸發(fā)警報(bào)。
→ 用LED觸發(fā)警報(bào)?。ㄒ苍S將來我們可以通過網(wǎng)絡(luò)通知程序來實(shí)現(xiàn)這個(gè)功能!)
通風(fēng)→我們可以測(cè)量室內(nèi)空氣流速,如果室內(nèi)風(fēng)量不夠,我們可以用扇子來產(chǎn)生風(fēng)。
→ 用伺服電機(jī)操作扇子扇風(fēng)。
圖7 電路框圖(假設(shè)傳感器評(píng)估套件已連接到Arduino)
至于程序,在循環(huán)的前半部分獲取每個(gè)傳感器的值后,我們將根據(jù)每個(gè)傳感器的值啟動(dòng)伺服電機(jī)和LED燈。由于每個(gè)傳感器的激活閾值因設(shè)備大小而異,因此您可以自己的喜好調(diào)整具體數(shù)值。
程序–植物培育設(shè)備
#include #include #include #include #include #include //*********************************************** //Set threshold //*********************************************** int moi_threshold = 500; //set the moisture threshold (moist←0~1023→dry) int upper_temp_threshold = 30; //high temperature-red LED int under_temp_threshold = 10; //low temperature-blue LED int uv_threshold = 4; //set the intensity of ultraviolet light, shade if exceeded int send_wind_sec = 30; //wind blowing interval (in seconds) //*********************************************** Servo uvServo; Servo windServo; Servo waterServo; int redLedPin = 13; int blueLedPin = 12; int moisture_pin = A0; int tempout_pin = A2; int uvout_pin = A0; int counter = 0; bool uvFlg = false; BD1020 bd1020; RPR0521RS rpr0521rs; ML8511A ml8511a; BM1383GLV bm1383; //*********************************************************** void setup() { Serial.begin(9600); while (!Serial); Wire.begin(); byte rc; rc = rpr0521rs.init(); rc = bm1383.init(); pinMode(redLedPin,OUTPUT); pinMode(blueLedPin,OUTPUT); uvServo.attach(9); windServo.attach(10); waterServo.attach(11); bd1020.init(tempout_pin); ml8511a.init(uvout_pin); } //*********************************************************** void loop() { //********************************* //Soil Sensor int moi = analogRead(moisture_pin); Serial.write("MOISTURE = "); Serial.println(moi); Serial.println(); //********************************* //Temperature sensor float temp; bd1020.get_val(&temp); Serial.print("BD1020HFV Temp="); Serial.print(temp); Serial.print(" [degrees Celsius], ADC="); Serial.println(bd1020.temp_adc); //********************************* //UV sensor float uv; ml8511a.get_val(&uv); Serial.write("ML8511A UV = "); Serial.print(uv); Serial.println(" [mW/cm2]"); Serial.println(); //********************************* //Barometric pressure sensor byte cp; float press; cp = bm1383.get_val(&press); if (cp == 0) { Serial.write("BM1383GLV (PRESS) = "); Serial.print(press); Serial.println(" [hPa]"); Serial.println(); } //********************************* //ALS/proximity sensor byte rc; unsigned short ps_val; float als_val; byte near_far; rc = rpr0521rs.get_psalsval(&ps_val, &als_val); if (rc == 0) { Serial.print(F("RPR-0521RS (Proximity) = ")); Serial.print(ps_val); Serial.print(F(" [count]")); near_far = rpr0521rs.check_near_far(ps_val); if (near_far == RPR0521RS_NEAR_VAL) { Serial.println(F(" Near")); } else { Serial.println(F(" Far")); } if (als_val != RPR0521RS_ERROR) { Serial.print(F("RPR-0521RS (Ambient Light) = ")); Serial.print(als_val); Serial.println(F(" [lx]")); Serial.println(); } } //*********************************** //depending on the sensor value each time //the water level will rise when the soil dries if(moi > moi_threshold){ Serial.println("Water Servo start."); for(int m=0;m < 10;m++){ waterServo.write(0); //move servomotor to 0 degree delay(1500); //wait 1.5 seconds waterServo.write(90); //move the servomotor to 90 degrees } } //Temperature activate if(upper_temp_threshold > temp){ digitalWrite(redLedPin, HIGH); //turn on LED delay(moi); //set the moisture to LED flashing time digitalWrite(redLedPin, LOW); //turn off LED } if(under_temp_threshold < temp){ digitalWrite(blueLedPin, HIGH); //turn on LED delay(moi); //set the moisture to LED flashing time digitalWrite(blueLedPin, LOW); //turn off LED } //shades when the sunlight is too strong if(uv < uv_threshold && !uvFlg){ waterServo.write(90); uvFlg = true; } else if(uv >= uv_threshold && uvFlg){ waterServo.write(0); uvFlg = false; } //create wind at a specific time if(counter > send_wind_sec){ Serial.println("Wind Servo start."); for(int n=0;n < 10;n++){ waterServo.write(0); delay(1000); waterServo.write(90); } counter = 0; } counter++; delay(1000); }
組裝植物培育系統(tǒng)!
現(xiàn)在,接線和編程已經(jīng)完成,我們來把系統(tǒng)組合在一起。
圖8 迷你盆栽植物
首先,您需要一棵植物(當(dāng)然)!
圖9 組裝遮陽部件
當(dāng)紫外線太強(qiáng)時(shí),安裝在伺服電機(jī)上的遮光板將旋轉(zhuǎn)90度,從而擋住窗戶上的陽光。
圖10 裝有伺服電機(jī)的噴壺
我們可以根據(jù)濕度水平利用伺服電機(jī)拉動(dòng)噴壺進(jìn)行噴水。
我們的吹風(fēng)設(shè)備是一把東方折扇!
圖11 組裝完成的植物培育系統(tǒng)
整個(gè)系統(tǒng)仍有很大的改進(jìn)空間。如果您想要科技感更高一些,您可以使用小型水泵、PC風(fēng)扇等設(shè)備。此外,如果房間中沒有窗戶,那么可以同時(shí)利用LED與照度傳感器,在房間變暗時(shí)關(guān)閉植物的LED。
總結(jié)
在本項(xiàng)目中,我們組合使用傳感器評(píng)估套件中的多個(gè)傳感器來打造智能花園系統(tǒng)。市面上已經(jīng)出現(xiàn)了一些很酷的植物培育設(shè)備(教程中做了簡(jiǎn)要介紹),我相信本教程能夠?yàn)殚_發(fā)更先進(jìn)的植物培育設(shè)備奠定堅(jiān)實(shí)的基礎(chǔ)。
在下一個(gè)教程中,我們將更詳細(xì)地介紹Arduino Create,并嘗試使用傳感器評(píng)估套件中的加速度計(jì)。
DevicePlus 編輯團(tuán)隊(duì)
設(shè)備升級(jí)版適用于所有熱愛電子和機(jī)電一體化的人。
審核編輯黃宇
-
傳感器
+關(guān)注
關(guān)注
2553文章
51407瀏覽量
756632 -
Arduino
+關(guān)注
關(guān)注
188文章
6477瀏覽量
187834
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論