前言
本文延續 [ [Wio Terminal] 組裝!智慧植栽實驗套件(使用DHT20) ] 一文, 差別在於改用 Grove DHT22 溫溼度感測器。完成硬體組裝之後,歡迎跟著以下兩篇教學文來實作您的智慧植栽系統喔:
- Blynk IoT 物聯網服務結合 Wio Terminal 開發板:建立裝置、設定儀表板、測試連線
- Blynk IoT 物聯網服務2 – 使用 Blynk 控制 Wio Terminal 與沉水馬達
在開始之前,請先準備好十字螺絲起子、剪刀(或斜口鉗)。由於部分組裝有方向的問題,為了講述方便,本文會將 Wio Terminal LCD 螢幕的那面稱為正面,而有接腳的那一面則稱之為背面,組裝時還請多注意,所有材料都可以在機器人王國商城一次買齊喔
| 撰寫/攝影 | 邱柏憲 | ||
| 時間 | 15 分鐘,輕輕鬆鬆 | 材料表
(購買) |
|
| 難度 | 1.5(滿分5) | ||
本文
首先看到零件圖,零件不算多,但螺絲螺帽螺柱比較小,組裝時要注意,掉了很容易找不到
請跟著以下步驟來組裝:
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須朝外,完成後將壓克力板翻至正面,如下兩圖
STEP 4
下一步拿出DHT22模組並利用塑膠螺絲M2*5鎖在塑膠隔離柱上,完成如下圖
STEP 5
使用一條Grove線,將 MOSFET 模組接到 Wio Terminal 的左側(LCD面朝下) Grove插槽,多餘的線可以用原本的橡皮筋固定,線會比較整齊。
STEP 6
拿出Grove轉杜邦公接頭,將對應的顏色的杜邦線分別插入Wio Terminal的背面孔位,也為 Wio Terminal 腳位配置也請參考下圖。
- 紅線接於下排右1的位置(1)->3.3V
- 黑線接於下排右5的位置(9)->GND
- 白線接於上排右7的位置(14)->其實不需要接,只是接了可以將線固定
- 黃線接於上排右9的位置(18)->訊號D3
完成後正面圖如下:
STEP 7
完成後拿出PVC水管將孔離邊緣較近的那端朝上,接著將束線帶穿過PVC水管的對位的兩個孔,再穿過壓克力板上對位的兩孔,成功後拉緊束線帶以確保PVC水管不會輕易晃動。
上端完成後下端也是相同的做法,兩端都完成再確認水管不會輕易晃動後,將束線帶多餘的部分剪掉。
STEP 8
使用杜邦線(公公)與土壤溼度感測器的腳位連接,連接的方式如下圖。公公杜邦線的顏色可能會不同,因此請根據土壤感測器的線的顏色來對應 Wio Terminal 腳位,就是 5V、GND 與訊號等三條線。
完成後將杜邦線(公公)的另一端與Wio Terminal腳位連接,也可查詢上面的 Wio Terminal 腳位圖自行更改接線:
- 紅線接於上排右1的位置(2) ->5V
- 黑線接於上排右3的位置(6) ->GND
- 黃線接於上排右8的位置(16) ->D2
完成如下圖,由於線路已經有點複雜,因此繪製比較簡易的接線圖,完成後可以再檢查一次,確保接線都正確
STEP 9
拿出沉水馬達,將紅黑兩條線分別接在MOSFET模組的OUT和GND端(紅黑圈)。紅色(正極)接OUT,黑色(負極)接GND。
接完線路後再將矽膠管與沉水馬達對接,這樣馬達這一段就完成了。
矽膠管不太好裝須多用點力氣,要注意一下有沒有裝緊,紅圈處請確認有卡進去。如果太鬆,可能會在運作時鬆脫,水就會到處流啦!
STEP 10 (完成)
將土壤濕度感測器剩餘的線和較長的杜邦線用大束線帶綁在水管上,您可以視使用的環境來決定線要留多長。
使用此裝置時請依照實際情況調整線的長度,沉水馬達必須在水中使用否則容易損毀。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%0A%23define%20DHTTYPE%20DHT22%20%2F%2FDefine%20DHT%20sensor%20type%20%0A%23define%20DHTPIN%203%0ADHT%20dht(DHTPIN%2CDHTTYPE)%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%0A%20%20spr.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%2FSetting%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%2FSetting%20humidity%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%2FSetting%20soil%20moisture%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%2FSetting%20light%20%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%0A%0A%7D” message=”” highlight=”” provider=”manual”/]
相關文章
- [Wio Terminal] 組裝!智慧植栽實驗套件(使用DHT20)
- Blynk IoT 物聯網服務結合 Wio Terminal 開發板:建立裝置、設定儀表板、測試連線
- Blynk IoT 物聯網服務2 – 使用 Blynk 控制 Wio Terminal 與沉水馬達
- 組裝!!AI嗅覺實驗套件 (2022)
- 【tinyML系列專題】使用wio terminal 與氣體感測器收集咖啡氣味資料!





















