[ Wio Terminal ] 來組裝!智慧植栽實驗套件(DHT22版本)

前言

本文延續 [ [Wio Terminal] 組裝!智慧植栽實驗套件(使用DHT20) ] 一文, 差別在於改用 Grove DHT22 溫溼度感測器。完成硬體組裝之後,歡迎跟著以下兩篇教學文來實作您的智慧植栽系統喔:

在開始之前,請先準備好十字螺絲起子、剪刀(或斜口鉗)。由於部分組裝有方向的問題,為了講述方便,本文會將 Wio Terminal LCD 螢幕的那面稱為正面,而有接腳的那一面則稱之為背面,組裝時還請多注意,所有材料都可以在機器人王國商城一次買齊喔

撰寫/攝影 邱柏憲
時間 15 分鐘,輕輕鬆鬆   材料表

(購買)

  • Wio Terminal 開發板 x1
  • Grove – 溫溼度感測器(DHT22) x1
  • Grove – MOSFET模組 x1
  • Gravity: 類比式防水電容式土壤濕度感測器 x1
  • 直流沉水式抽水馬達 x1
  • PVC管(已挖洞)25公分
  • 矽膠管50公分
  • 雷射切割壓克力背板
  • 杜邦線(公公) 3條
  • Grove轉杜邦公接頭
  • 訊號線 1條
  • 金屬螺絲M2*8 2個
  • 塑膠螺絲M2*5 3個
  • 塑膠六角隔離柱205 6個
  • 塑膠M2螺帽 3個
  • 小束線帶 2條
  • 大束線帶 1條
難度 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 模組所連接的沉水馬達。

#include "Wire.h"
#include "TFT_eSPI.h" //TFT LCD library
#include "DHT.h" // DHT library

#define DHTTYPE DHT22 //Define DHT sensor type
#define DHTPIN 3
DHT dht(DHTPIN,DHTTYPE);

TFT_eSPI tft; //Initializing TFT LCD
TFT_eSprite spr = TFT_eSprite(&tft); //Initializing buffer

//Soil Moisture Sensor definitions
int motorPin = 0; //Grove port - pin 0
int sensorPin = A2; //Define variable to store soil moisture sensor pin
int sensorValue = 0; //Define variable to store soil moisture sensor value

void setup() {
Serial.begin(9600); //Start serial communication
Wire.begin();
pinMode(WIO_LIGHT, INPUT); //Set light sensor pin as INPUT
pinMode(WIO_BUZZER, OUTPUT); //Set buzzer pin as OUTPUT
pinMode(motorPin, OUTPUT);
dht.begin(); //Start DHT sensor
tft.begin(); //Start TFT LCD
tft.setRotation(3); //Set TFT LCD rotation
spr.createSprite(TFT_HEIGHT,TFT_WIDTH); //Create buffer
}

void loop() {
analogWrite(motorPin, 0); //default turn off the motor
int t = dht.readTemperature(); //Assign variable to store temperature
int h = dht.readHumidity(); //Assign variable to store humidity
int light = analogRead(WIO_LIGHT); //Assign variable to store light sensor values
Serial.println(t);
//Setting the title header
spr.fillSprite(TFT_WHITE); //Fill background with white color
spr.fillRect(0,0,320,50,TFT_DARKGREEN); //Rectangle fill with dark green
spr.setTextColor(TFT_WHITE); //Setting text color
spr.setTextSize(3); //Setting text size
spr.drawString("Smart Garden",50,15); //Drawing a text string

spr.drawFastVLine(150,50,190,TFT_DARKGREEN); //Drawing verticle line
spr.drawFastHLine(0,140,320,TFT_DARKGREEN); //Drawing horizontal line

//Setting temperature
spr.setTextColor(TFT_BLACK);
spr.setTextSize(2);
spr.drawString("Temperature",10,65);
spr.setTextSize(3);
spr.drawNumber(t,50,95); //Display temperature values
spr.drawString("C",90,95);

//Setting humidity
spr.setTextSize(2);
spr.drawString("Humidity",25,160);
spr.setTextSize(3);
spr.drawNumber(h,30,190); //Display humidity values
spr.drawString("%RH",70,190);

//Setting soil moisture
sensorValue = analogRead(sensorPin); //Store sensor values
sensorValue = map(sensorValue,1023,400,0,100); //Map sensor values
spr.setTextSize(2);
spr.drawString("Soil Moisture",160,65);
spr.setTextSize(3);
spr.drawNumber(sensorValue,200,95); //Display sensor values as percentage
spr.drawString("%",240,95);

//Setting light
spr.setTextSize(2);
spr.drawString("Light",200,160);
spr.setTextSize(3);
light = map(light,0,1023,0,100); //Map sensor values
spr.drawNumber(light,205,190); //Display sensor values as percentage
spr.drawString("%",245,190);

//Condition for low soil moisture
if(sensorValue < 50){
spr.fillSprite(TFT_RED);
spr.drawString("Time to water!",35,100);
analogWrite(motorPin, 200); //modify if motor runs too fast
analogWrite(WIO_BUZZER, 150); //beep the buzzer
delay(1000);
analogWrite(WIO_BUZZER, 0); //Silence the buzzer
delay(1000);
}
else{
analogWrite(motorPin, 0);
}

spr.pushSprite(0,0); //Push to LCD
delay(50);


}

 

相關文章

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *