盆栽守護神

七月 15, 2014
Facebook
Twitter

為你最愛的植物們打造一個數位守護神吧!只要使用Arduino開發板和一些價格不貴的感測器,就可以讓植物們處在最「快樂」適當的濕度、溫度與光環境中

最簡易版的盆栽守護神其實就是感測植物所處環境受的的照明度、土壤濕度和氣溫,將讀數透過USB回傳,並顯示到電腦螢幕上。我們將從最簡單的顯示監視器開始,再慢慢接觸更進階的設計,比如納入LED甚至液晶顯示LCD等等,這些都可以透過Arduino來完成,不過我們得先學一點Arduino和電子設備的知識

所有電子零件都可以在Radio Shack網頁的Make: 終極微控制器套件包」購買到;,當然,也可以分別購買。
所需材料:

 Make: 終極微控制器套件包加上ArduinoRadioShack #277-077,包含本專題需要的所有電子零件,包含Arduino Uno微控制器開發板、9V電池座、免焊麵包板、10kΩ電阻器(3)、跳線、溫度感測器、光度感測器、三色LED330Ω電阻器(3)16×2液晶螢幕和10kΩ電壓計。

塑膠,用來作土壤探針的間隔裝置,你也可以透過雷射切割壓克力材料來製作(詳見步驟#1)。

9V電池RadioShack#23-853

#6-32機械螺絲RadioShack#64-3012。你可以用其他螺栓或鋼條代替,不過最好是不鏽鋼或鍍鋅的。

#6-32螺帽RadioShack#64-3019
 工具:

 有安裝Arduino IDE軟體(可從www.arduino.cc網頁下載)的電腦

剪線鉗/剝線鉗RadioShack #64-224

焊鐵和焊料RadioShack #64-053#64-2055或者#64-2184,焊料則是#64-009

A-B USB連接線RadioShack #26-713

图片

步驟#1基本構造:光度、溫度與濕度感測器

 l   主體的部分會需要用到Arduino Uno微控制器、免焊接麵包板、310kΩ電阻器、跳線、溫度感測器、光度感測器、鋼製螺栓          與螺帽。

l   同時,你還會需要為土壤探針(螺栓)製作兩個間隔裝置,請在一塊塑膠上鑽出兩個1/2″的洞來放螺栓,接著,請再製作一個間隔裝置,並將兩個螺栓穿過這兩個間隔裝置,使得它們間隔固定的距離

l   另外,我還作了一個更酷的土壤感測器,方法是雷射切割一些1/16”的壓克力作為分隔裝置,擺在一些直徑1/16”不鏽鋼棒的中間,這種作法常常在TIGTungsten Inert Gas鎢極惰性氣體保護)焊接上看到,至於壓克力板的切割檔案則可以在這裡找到。

步驟#2:製作感測器線路

l   這個專題裡用到的三種感測器運作方式相同,也就是依據感測到的土壤濕度、氣溫或光度的數值改變電阻;基本上,你只需要像第一張電路圖那樣簡單的設計就可以讓Arduino讀取電阻讀數了。

l   所以,我們會把這個設計套用在三種(土壤濕度、氣溫與光度)感測器上,並用這些東西拼湊出第二張電路圖上的結構。

請依循電路圖的指示,在麵包板上製作線路(如第三張照片)。溫度感測器和光度感測器都裝在麵包板上,土壤探針其實就是兩條長的電線,纏繞在螺栓上、並用螺帽固定。土壤探針連接到Arduino的類比腳位A0、溫度感測器連到A1、光度感測器則連接到A2

图片

步驟#3Arduino編寫程式

l   基本上,只要在Arduino上輸入以下的程式碼,就可以讀取連接在Arduino類比腳位上可變電阻的資料了:

sensorValue = analogRead(inputPin);

 其中,sensorValue是感測器上傳來的讀數,inputPin是感測器連接的腳位編號。

要讀取來自3個感測器的資料,只要將程式碼重複三次、宣稱新的變數、設定序列埠就行了。在這裡可以下載寫好的程式碼,請從連結中下載、在Arduino IDE裡面開啟,並上傳到Arduino上。

步驟#4感測器放置與校準

l   將土壤感測器插到植物旁邊的泥土中,並在能夠與植物葉片受到同等光照的位置擺放光度感測器,至於溫度感測器則放在光度感測器旁邊。接著,將Arduino啟動,電腦螢幕中的序列監視器應該會即時更新讀數。

l   為了達到盆栽守護神的最大功效,最好的辦法就是依照你栽種的植物進行個別的生長環境調整,設定適當的數據範圍到感測器裡。身邊的園藝專家會是一個很好的資源,比如說你可以請教他:「你認為對這個植物來說,泥土濕度怎麼樣最好?」「如果泥土乾燥到這個程度,是不是就該澆水了?」然後,再透過盆栽守護神來將這些數值量化記錄。

l   你也可以直接借一個較好的感測器來校準,以下是我的工業用的土壤濕度感測器與自製不鏽鋼棒土壤探針在Arduino上的讀數:

Ø   在空氣中:兩個感測器讀數都是0

Ø   非常乾的泥土: 2% Vegetronix5 DIY

Ø   些微潮濕:7%150

Ø   些微濕潤:8%250

Ø   濕土:28%,370

Ø   非常濕潤的泥土:51%385

Ø   將探針插入水中:85%480

所以,如果我希望土壤濕度大約是28%,那感測器讀數的臨界值就可以設在385左右。

步驟#5中階組裝:加入三色LED指示裝置

l   現在,你需要加入LED燈來回報植物的狀態,我用藍色來表示水的需求、綠色代表陽光、紅色則是溫度,這些都只需要用到同一個三色LED就能完成(當然,還有很多方式可以作到這一點)。所以,請拿出1個三色LED以及3330Ω電阻。

l   通常,只要像電路圖畫的那樣將LED連到Arduino上就行了,在電路圖上,LED圖形的三角形尖端指向陽極,在真正的LED上,較長的那一根電線要接地(我曾經因為安裝方向錯誤使好多很貴的LED報銷!)

電阻的功能則是控管流向LED的電流強度:如果電流太強,LED過幾秒就會燒掉,讓原本幾千小時的壽命毀於一旦。

步驟#6LED納入電路

 l   在三色LED上,通常紅色、綠色、藍色的燈光會有共用的正極或負極,因此,總共加起來會有四個針腳(至於三個顏色到底是共用的正極還是負極,可以參考規格表)。在Make: 終極微控制器套件包裡的三色LED是共用正極,所以連接方式如電路圖。

遵循電路圖的設計,將LED連接到+5V電源以及Arduino的數位I/O腳位D9D10D11上。
图片

步驟#7:編寫 Arduino程式

這裡要談到一個概念,也就是函數呼叫:原理很簡單,只要把某些常用到的功能寫進函數裡,之後就只要呼叫函數,就不需要重複寫出函數的內容。舉例來說,如果要把三個顏色的燈光都關掉,需要以下的指令:

digitalWrite(redPin, HIGH);

digitalWrite(greenPin, HIGH);

digitalWrite(bluePin, HIGH);

其實,我們不需要每次都輸入這些指令,只要把這些功能放進一個函數裡就行了:

void off()

{

digitalWrite(redPin, HIGH);

digitalWrite(greenPin, HIGH);

digitalWrite(bluePin, HIGH);

}

l   現在,如果要關閉LED,只要呼叫off()這個函數就行了,這是函數最簡單的應用方式,當你對程式語言了解程度越來越高之後,就可以做出更加有趣、更加複雜的應用了!

l   所以,程式碼會變成這樣,你可以從這裡下載,用Arduino IDE開啟,並上傳到你的Arduino上。

l   這樣一來,LED就會以5秒鐘為單位,展示植物目前的代表溫度、濕度與陽光的訊息。

 Ø   如果土壤濕潤,LED會閃爍1秒的藍色燈光。

Ø   如果植物溫度夠高,LED則會閃爍紅色燈光。

如果植物有接受到陽光,LED會閃爍綠色燈光。

步驟#8進階設定:在液晶顯示器上顯示讀數

 l   現在,我們要加入一段文字,搭配LED的燈光訊息在液晶螢幕上循環

播放,每個讀數播放4秒鐘,這樣才能與LED燈光閃爍的時間搭配(詳見前一步驟),請從Make:終極微控制器套件包拿出16針腳液晶顯示器與10kΩ電壓計。

要接上液晶顯示器的,會需要焊接某些零件,如果你以前從來沒有焊接的經驗,那也不用擔心,只要使用良好的工具和適當的技巧,焊接其實並不困難,我們的焊接新手指南是很好的開始喔!

步驟#9:液晶顯示器連接與測試

 l   在這個專題中,液晶顯示器的設定會有一些不同,不過請別擔心,我們這裡有指南可以參考!如果有興趣的話,可以到http://arduino.cc/en/Tutorial/LiquidCrystalDisplay網頁看看。

l   接著,請依照線路圖,將液晶顯示器連接到你的電路上。

 Ø   液晶顯示器的#1針腳連接到麵包板上的地線。

Ø   液晶顯示器的#2針腳連接到5V電源和電壓計的外側針腳,哪一支都沒關係,選一支就行了。

Ø   液晶顯示器的#3針腳連到電位計的電刷上(也就是中間的針腳)。

Ø   液晶顯示器的#4針腳連接到Arduino#7數位腳位,請注意,這和液晶顯示器預設程式庫的設定不符。

Ø   液晶顯示器的#5針腳連接到GND腳位和電壓計的另外一支外側針腳。

Ø   液晶顯示器的#6針腳連到Arduino #6數位腳位,注意,這和液晶顯示器預設程式庫的設定不符。

Ø   液晶顯示器的#7#10針腳不會用到。

Ø   液晶顯示器的#11針腳連到Arduino#5數位腳位。

Ø   液晶顯示器的#12針腳連到Arduino#4數位腳位。

Ø   液晶顯示器的#13針腳連到Arduino#3數位腳位。

Ø   液晶顯示器的#14針腳連到Arduino#2數位腳位。

Ø   液晶顯示器的#14#15不會用到。

 上面提到的Arduino使用指南中可以看到驅動液晶顯示器的所有方法,而如果需要測試的話,這裡有範例程式碼,已經針對我們專題的針腳編號做了調整。請從這個連結下載程式碼,並上傳到Arduino上。請確認電壓計打開,然後看到螢幕上應該會出現「hello world」的字樣,如果液晶顯示器有正確連接的話,應該會每一秒閃爍一次。

图片

步驟#10:Arduino重新編寫程式

所以,這就是加入液晶顯示器的盆栽守護神程式碼,如果你對成果還算滿意,可以從這個連結下載程式碼並上傳到Arduino上。

步驟#11:更進一步

l   好了!一切大功告成。現在你的植物會在對的時間、地點告訴你他的一切需求。接下來,還有什麼可以讓你的盆栽守護神功能更上一層樓呢?

l   控制:加入繼電器擴充板(RadioShack#277-067)來控制植物用的打水泵浦、暖氣機或光照程度,你可以玩玩看Arduino的時間程式庫(http://playground.arduino.cc/Code/time),試著達成「在日落時照光,使得每日光照總數達到16小時」這類的任務。

l   電源供應:讓你的Arduino進入睡眠狀態,每隔幾分鐘才顯示一次讀數,使得電池的壽命大幅提升!在網路上可以看到簡單版(http://hwstartup.wordpress.com/2013/03/11/how-to-run-an-arduino-on-a-9v-battery-for-weeks-or-months/)的操作指南,而且,這麼一來,土壤探針的壽命也會大大延長,不會這麼快就壞掉。

l   太陽能電源:在專題中加入太陽能板和太陽能電池,就可以達到能源的自給自足(http://voltaicsystems.com/blog/solar-powered-automated-garden/)!

l   連接網路:你可以透過Ethernet擴充板(RadioShack#276-241), Wi-Fi擴充板(http://growerbot.com)、甚至是Cellular擴充板來遠端分享資料!

更好的感測器:可以去探索其他感測器的功能,像是感測pH值、光譜或濕度等等,讓你的盆栽守護神在科學的領域中百尺竿頭,更進一步!

Picture

LUKE ISEMAN

Luke Iseman喜歡動手做些小玩意兒,其中只有某些部分真的能用。他有許多興趣想跟大家分享,包括單車生活(dirtnailpedicab.com)、拯救垂死的花園(growerbot.com)、和改造貨櫃屋 (boxouse.com)等等。




(譯:劉允中)
[原文]

Social media & sharing icons powered by UltimatelySocial