前言
本文將說明如何使用 Wio Terminal 搭配相關周邊裝置來組裝智慧植栽系統,材料清單請參考以下:
| 撰寫/攝影 | 邱柏憲 | ||
| 前情提要 | |||
| 時間 | 2小時 | 材料表 |
|
| 成本 | 請到機器人王國商城選購 | 難度 | **** (最高10顆星) |
先前已經介紹過許多 wio terminal 智慧植栽的應用,但最重要的硬體要如何架設呢?
在開始之前,請先準備好十字螺絲起子、剪刀(或斜口鉗)以及您覺得順手的工具。由於部分組裝有方向的問題,為了講述方便,本文會以 Wio Terminal 螢幕的那面稱為正面,而有接腳的稱為背面,組裝時還請多多注意。請做好安全防護措施並按照以下步驟組裝,開始吧!
組裝步驟
STEP 1.
撕取壓克力背板的保護膜(如果有的話),再將Wio Termial用金屬螺絲M2*8鎖在壓克力板上。這裡要注意上下不要顛倒,且Wio Termial背面的腳位需對準壓克力挖空的部分。
STEP 2.
把剛剛的壓克力板先放到一邊。用M2*5塑膠隔離柱3個和M2*5塑膠螺帽3個如圖2所示個別鎖在MOSFET模組上。
STEP 3.
把STEP1完成的壓克力拿過來轉到背面,接著將MOSFET模組利用M2*5塑膠隔離柱3個鎖於壓克力板上,要特別注意MOSFET模組的OUT和GND須朝外才能順利接上沉水馬達,如圖3-1所示
完成後將壓克力板翻至正面應如圖3-2所示
STEP 4.
下一步拿出DHT20模組並利用塑膠螺絲M2*5鎖在塑膠隔離柱上,完成後如圖4所示。
STEP 5.
使用兩條GROVE線,分別將DHT20與MOSFET模組跟Wio Terminal連接,請注意接線的位置。以Wio Terminal面朝自己的情況,DHT20接左邊,MOSFET接右邊,如下圖
STEP 6.
完成後拿出PVC水管將孔離邊緣較近的那端朝上,接著將束線帶穿過PVC水管的對位的兩個孔,再穿過壓克力板上對位的兩孔,成功後拉緊束線帶以確保PVC水管不會輕易晃動。
上端完成後下端也是相同的做法,兩端都完成再確認水管不會輕易晃動後,將束線帶多餘的部分剪掉,如下兩圖
STEP 7.
先使用杜邦線(公公)與Wio Terminal的腳位連接,連接的位置如下:(也可查詢Wio Terminal的腳位圖自行更改接線)
- 紅線接於上排右2的位置 (5V)
- 黑線接於上排右3的位置 (GND)
- 黃線接於上排右8的位置 (A2)

接著再將杜邦線的另一端,按照對應的顏色與土壤溼度感測器的線連接。(橘>橘、紅>紅、黑>黑)
STEP 8.
拿出沉水馬達,將紅黑兩條線分別接在MOSFET模組的OUT端。紅色(正極)接OUT,黑色(負極)接GND。接完線路後再將矽膠管與沉水馬達對接就完成了。矽膠管不太好裝須多用點力氣,要注意一下有沒有裝緊,太鬆在運作時有可能會鬆脫,導致水到處噴喔
STEP 9.
將土壤濕度感測器剩餘的線用大束線帶綁在水管上,您可以視使用的環境來決定線要留多長。
使用此裝置時請依照實際情況調整相關線材的長度,沉水馬達運作時一定要放在水中,否則容易損毀。PVC水管需插入土中到一定深度,否則可能會讓裝置不穩倒下。預祝大家照著本文說明都能順利完成。
實際安裝圖片如下,歡迎與我們分享您的智慧植栽喔!
範例程式
在此提供範例程式,可於 wio terminal LCD 上顯示各感測器讀數,也可控制 MOSFET 模組所連接的沉水馬達。
[pastacode lang=”java” manual=”%23include%20%22Wire.h%22%0A%23include%20%22TFT_eSPI.h%22%20%2F%2FTFT%20LCD%20library%20%0A%23include%20%22DHT.h%22%20%2F%2F%20DHT%20library%20%0A%23define%20DHTTYPE%20DHT20%20%2F%2FDefine%20DHT%20sensor%20type%20%0ADHT%20dht(DHTTYPE)%3B%20%0A%0ATFT_eSPI%20tft%3B%20%2F%2FInitializing%20TFT%20LCD%0ATFT_eSprite%20spr%20%3D%20TFT_eSprite(%26tft)%3B%20%2F%2FInitializing%20buffer%0A%0A%2F%2FSoil%20Moisture%20Sensor%20definitions%0Aint%20motorPin%20%3D%200%3B%20%20%2F%2FGrove%20port%20-%20pin%200%0Aint%20sensorPin%20%3D%20A2%3B%20%2F%2FDefine%20variable%20to%20store%20soil%20moisture%20sensor%20pin%0Aint%20sensorValue%20%3D%200%3B%20%2F%2FDefine%20variable%20to%20store%20soil%20moisture%20sensor%20value%0A%0Avoid%20setup()%20%7B%0A%20%20Serial.begin(9600)%3B%20%2F%2FStart%20serial%20communication%0A%20%20Wire.begin()%3B%0A%20%20pinMode(WIO_LIGHT%2C%20INPUT)%3B%20%2F%2FSet%20light%20sensor%20pin%20as%20INPUT%0A%20%20pinMode(WIO_BUZZER%2C%20OUTPUT)%3B%20%2F%2FSet%20buzzer%20pin%20as%20OUTPUT%0A%20%20pinMode(motorPin%2C%20OUTPUT)%3B%0A%20%20dht.begin()%3B%20%2F%2FStart%20DHT%20sensor%20%0A%20%20tft.begin()%3B%20%2F%2FStart%20TFT%20LCD%0A%20%20tft.setRotation(3)%3B%20%2F%2FSet%20TFT%20LCD%20rotation%0A%20%20spr.createSprite(TFT_HEIGHT%2CTFT_WIDTH)%3B%20%2F%2FCreate%20buffer%0A%7D%0A%0Avoid%20loop()%20%7B%0A%20%20analogWrite(motorPin%2C%200)%3B%20%20%2F%2Fdefault%20turn%20off%20the%20motor%0A%20%20int%20t%20%3D%20dht.readTemperature()%3B%20%2F%2FAssign%20variable%20to%20store%20temperature%20%0A%20%20int%20h%20%3D%20dht.readHumidity()%3B%20%2F%2FAssign%20variable%20to%20store%20humidity%20%0A%20%20int%20light%20%3D%20analogRead(WIO_LIGHT)%3B%20%2F%2FAssign%20variable%20to%20store%20light%20sensor%20values%0A%20%20Serial.println(t)%3B%0A%20%20%2F%2FSetting%20the%20title%20header%20%0A%20%20spr.fillSprite(TFT_WHITE)%3B%20%2F%2FFill%20background%20with%20white%20color%0A%20%20spr.fillRect(0%2C0%2C320%2C50%2CTFT_DARKGREEN)%3B%20%2F%2FRectangle%20fill%20with%20dark%20green%20%0A%20%20spr.setTextColor(TFT_WHITE)%3B%20%2F%2FSetting%20text%20color%0A%20%20spr.setTextSize(3)%3B%20%2F%2FSetting%20text%20size%20%0A%20%20spr.drawString(%22Smart%20Garden%22%2C50%2C15)%3B%20%2F%2FDrawing%20a%20text%20string%20%0A%0Aspr.drawFastVLine(150%2C50%2C190%2CTFT_DARKGREEN)%3B%20%2F%2FDrawing%20verticle%20line%0A%20%20spr.drawFastHLine(0%2C140%2C320%2CTFT_DARKGREEN)%3B%20%2F%2FDrawing%20horizontal%20line%0A%0A%20%20%2F%2Fshow%20temperature%0A%20%20spr.setTextColor(TFT_BLACK)%3B%0A%20%20spr.setTextSize(2)%3B%0A%20%20spr.drawString(%22Temperature%22%2C10%2C65)%3B%0A%20%20spr.setTextSize(3)%3B%0A%20%20spr.drawNumber(t%2C50%2C95)%3B%20%2F%2FDisplay%20temperature%20values%20%0A%20%20spr.drawString(%22C%22%2C90%2C95)%3B%0A%0A%20%20%2F%2Fshow%20humidity%20%0A%20%20spr.setTextSize(2)%3B%0A%20%20spr.drawString(%22Humidity%22%2C25%2C160)%3B%0A%20%20spr.setTextSize(3)%3B%0A%20%20spr.drawNumber(h%2C30%2C190)%3B%20%2F%2FDisplay%20humidity%20values%20%0A%20%20spr.drawString(%22%25RH%22%2C70%2C190)%3B%0A%0A%20%20%2F%2Fshow%20soil%20moisture%20status%0A%20%20sensorValue%20%3D%20analogRead(sensorPin)%3B%20%2F%2FStore%20sensor%20values%20%0A%20%20sensorValue%20%3D%20map(sensorValue%2C1023%2C400%2C0%2C100)%3B%20%2F%2FMap%20sensor%20values%20%0A%20%20spr.setTextSize(2)%3B%0A%20%20spr.drawString(%22Soil%20Moisture%22%2C160%2C65)%3B%0A%20%20spr.setTextSize(3)%3B%0A%20%20spr.drawNumber(sensorValue%2C200%2C95)%3B%20%2F%2FDisplay%20sensor%20values%20as%20percentage%20%20%0A%20%20spr.drawString(%22%25%22%2C240%2C95)%3B%0A%20%20%0A%20%20%2F%2Fshow%20light%20%20status%0A%20%20spr.setTextSize(2)%3B%0A%20%20spr.drawString(%22Light%22%2C200%2C160)%3B%0A%20%20spr.setTextSize(3)%3B%0A%20%20light%20%3D%20map(light%2C0%2C1023%2C0%2C100)%3B%20%2F%2FMap%20sensor%20values%20%0A%20%20spr.drawNumber(light%2C205%2C190)%3B%20%2F%2FDisplay%20sensor%20values%20as%20percentage%20%20%0A%20%20spr.drawString(%22%25%22%2C245%2C190)%3B%0A%0A%20%20%2F%2FCondition%20for%20low%20soil%20moisture%0A%20%20if(sensorValue%20%3C%2050)%7B%0A%20%20%20%20spr.fillSprite(TFT_RED)%3B%0A%20%20%20%20spr.drawString(%22Time%20to%20water!%22%2C35%2C100)%3B%0A%20%20%20%20analogWrite(motorPin%2C%20200)%3B%20%2F%2Fmodify%20if%20motor%20runs%20too%20fast%0A%20%20%20%20analogWrite(WIO_BUZZER%2C%20150)%3B%20%2F%2Fbeep%20the%20buzzer%0A%20%20%20%20delay(1000)%3B%0A%20%20%20%20analogWrite(WIO_BUZZER%2C%200)%3B%20%2F%2FSilence%20the%20buzzer%0A%20%20%20%20delay(1000)%3B%0A%20%20%7D%0A%20%20%20else%7B%20%0A%20%20%20%20%20analogWrite(motorPin%2C%200)%3B%20%0A%20%20%20%7D%0A%0A%20%20spr.pushSprite(0%2C0)%3B%20%2F%2FPush%20to%20LCD%0A%20%20delay(50)%3B%0A%7D” message=”smart graden with pump control – wio terminal” highlight=”” provider=”manual”/]相關文章
- Blynk IoT 物聯網服務2 – 使用 Blynk 控制 Wio Terminal 與沉水馬達
- 組裝!!AI嗅覺實驗套件 – CAVEDU教育團隊技術部落格
- 【tinyML系列專題】使用wio terminal 與氣體感測器收集咖啡氣味資料!



















