[Arduino] 溫溼度感測器

使用 Arduino 連接溫濕度偵測器,可以偵測到空氣中的溫濕度,用來判斷溫溼度是否異常。例如:溫度過高時,是否有火警發生?濕度過高時,是否下雨導致雨水潑進室內?

溫溼度感測器

接線部分

Adruino 溫溼度感測器 蜂鳴器
D2 DATA
VCC VCC
GND GND
D13 長腳
GND 短腳
#include <Wire.h> // <>改為半形,用全形網頁才能顯示,但是 arduino ide 編譯不過
#include "DHT.h"

// DHT
#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
int DHTpin = 2;
DHT dht(DHTpin, DHTTYPE);

// 蜂鳴器
int BeepPin = 13;

void setup()
{
  Serial.begin(9600);
  dht.begin();
  pinMode(BeepPin, OUTPUT);
}

void loop()
{
  int h = dht.readHumidity();
  int t = dht.readTemperature();
  float f = dht.readTemperature(true);

  if (isnan(h) || isnan(t) || isnan(f)) 
  {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  float hif = dht.computeHeatIndex(f, h);
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print("%  Temperature: ");
  Serial.print(t);
  Serial.print("°C ");

  if(h >= 50 || t >= 33) // 濕度達到或超過50%,溫度達到或超過33°C,則蜂鳴器發出聲音
  {
    alarmBeep(BeepPin);
  }

  delay(2000);
}

// 聲響
void alarmBeep(int pin) 
{
  tone(pin, 1000, 1000);
  delay(2000);
}

溫溼度感測器 library 下載網址

可由 Arduino 的序列埠監控視窗看到溫溼度的數據變化。

[Arduino] HC-05 AT mode 改名字

將以下程式上傳到 arduino ,操作步驟在程式中的註解說明裡

/*
 * arduino 和 hc-05 都斷電,hc-05 的 key(或 EN) 腳位接 arduino VCC(5V),arduino 接電後,hc-05 接電
 * AT+NAME=識別名稱
 * 
 * HC-05進入TA COMMAND.若遇有按鈕,則步驟如下
1: 先拔掉 Arduino 的 USB 線,也拔掉 HC-05 VCC 和 Arduino 5V 相連的這條線。並將HC-05的KEY引腳接至Arduino 板上的3.3或5V電位.
2: 將 Arduino 的 USB 線插入電腦。
3: 先按下HC-05板上的按鈕不放.然行將HC-05 VCC 和 Arduino 5V 相連,
   約1秒左右放掉HC-05板上的按鈕,此時HC-05板上的燈約2秒鐘閃一次.就代表進入AT Command 模式了.
4: 開啟序列埠監控視窗,在監控視窗才能輸入 AT Command
*/

#include <SoftwareSerial.h> // <>改為半形,用全形網頁才能顯示,但是 arduino ide 編譯不過
// Pin2為RX,接HC05的TXD
// Pin3為TX,接HC05的RXD
SoftwareSerial BT(2, 3); 

char val;  // 儲存接收資料的變數
void setup() {
  pinMode(9, OUTPUT); // this pin will pull the HC-05 pin 34 (key pin) HIGH to switch module to AT mode
  digitalWrite(9, HIGH);  
  Serial.begin(9600);   // 與電腦序列埠連線
  Serial.println("BT is ready!");
 
  // 設定藍牙模組的連線速率
  // 如果是HC-05,請改成38400。如果是HC-06,請改成9600
  BT.begin(38400);
}
 
void loop() {
  // 若收到「序列埠監控視窗」的資料,則送到藍牙模組
  if (Serial.available()) {
    val = Serial.read();
    BT.print(val);
  }
 
  // 若收到藍牙模組的資料,則送到「序列埠監控視窗」
  if (BT.available()) {
    val = BT.read();
    Serial.print(val);
  }
}

AT command 如下:(只要是改資料,監控視窗都會回覆「OK」或「ERROR」,查詢的話,則會回覆目前 HC-05 的資料)
1. 改名字
HC-05:
AT+NAME=123456
HC-06:(我手邊沒有HC-06,不知道這樣的 command 是否正確)
AT+NAME123456

2. 查詢名字
AT+NAME?

3. 改鮑率
AT+UART=9600,0,0

4. 查鮑率
AT+UART?

[Arduino] 土壤溼度感測器

使用 Arduino 連接土壤溼度偵測器,可以偵測到盆栽中土壤的濕度,用來判斷是否需要澆水,避免土壤太乾又沒澆水,而導致盆栽乾枯,或是土壤太濕又澆水,導致盆栽爛根。

接線部分

arduino 土壤溼度感測器
A2 A0
VCC VCC
GND GND

程式:

const int sensorPin = A2;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int v = analogRead(sensorPin); // 取得偵測器數據
  Serial.println(v);
  delay(1000);
}

土壤溼度偵測器在空氣中無法偵測濕度,所以必須將他插入盆栽中,或是水中,即可獲得濕度數據,由 Arduino 的序列埠監控視窗可以看到數據的變化。