RubyエンジニアがArduinoで電子工作やってみた~温湿度センサ編~
はじめに
皆様、こんにちは!
Toretaのサーバサイドエンジニア兼佐久間まゆちゃんのプロデューサーの@hiroki_tanakaです!
最近、ひょろんなことから電子工作を始めたので、作成したものを整理・紹介したく、記事を書きました。
RubyエンジニアがArduinoで電子工作やってみた~超音波距離センサ編~の続編で、今回は温湿度センサを使いました。
使ったセンサ
- DHT11
DHT11は温度と湿度をカリブレーション済みの状態で出荷されているセンサーです。信号はデジタル信号となっています。
温度は1°C程度の誤差、湿度は4%程度の誤差で測定可能ということになってます。
より高性能なDHT22もあります。
配線
- + (DHT11) -> +5V (Arduino)
- S (DHT11) -> Digital_Pin (Arduino)
- - (DHT11) -> GROUND (Arduino)
作ったもの
温湿度から室内の不快指数を算出し、ディスプレイに表示します。
そして、不快指数に応じてLEDが灯ったりブザーが鳴ります。
また、スマホ用モバイルバッテリーと接続して持ち運べるようにしました。
不快指数というのは、下記の通りです。
不快指数 = 0.81*温度 + 0.01*湿度 × ( 0.99*温度 − 14.3 ) + 46.3
60より小さい:寒いと感じる→青色LEDが灯る。
61〜74:普通→黄色LEDが灯る。
75より大きい:暑いと感じる→赤色LEDが灯る&ブザーが鳴る。
参考:https://ja.wikipedia.org/wiki/不快指数
ソースコード
DHT11を操作するためにはライブラリを使用し、includeします。
DHT-sensor-library:https://github.com/adafruit/DHT-sensor-library
#include <LiquidCrystal.h>
#include <dht.h>
dht DHT;
const int dht11_data = 6;
int temp=0;
int hum=0;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int redLed = 10;
int greenLed = 9;
int blueLed = 8;
int buzzer = 7;
void setup() {
lcd.begin(16,2);
lcd.print("Welcome to");
lcd.setCursor(0,1);
lcd.print("Discomfort Check");
delay(2000);
lcd.clear();
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
pinMode(blueLed, OUTPUT);
pinMode(buzzer, OUTPUT);
}
void loop() {
DHT.read(dht11_data);
temp=DHT.temperature;
hum=DHT.humidity;
float discomfortIndex = 0.81 * temp + 0.01 * hum * (0.99 * temp - 14.3) + 46.3;
lcd.clear();
lcd.print("H=");
lcd.print(hum);
lcd.print("%");
lcd.setCursor(6,0);
lcd.print("T=");
lcd.print(temp);
lcd.write(0xDF);
lcd.print("C");
lcd.setCursor(0,1) ;
lcd.print("Discomfort=");
lcd.print(discomfortIndex);
if (discomfortIndex >= 75) {
digitalWrite(redLed, HIGH);
digitalWrite(greenLed, LOW);
digitalWrite(blueLed, LOW);
digitalWrite(buzzer, HIGH);
} else if(discomfortIndex >= 60 && discomfortIndex < 75) {
digitalWrite(redLed, LOW);
digitalWrite(greenLed, HIGH);
digitalWrite(blueLed, LOW);
digitalWrite(buzzer, LOW);
} else {
digitalWrite(redLed, LOW);
digitalWrite(greenLed, LOW);
digitalWrite(blueLed, HIGH);
digitalWrite(buzzer, LOW);
}
delay(1000);
}
終わりに
より様々なセンサを使用して、実生活で使用できるハードウェアを作成したいです!
次回は人感センサをしようと思います(∩゚Д゚)∩
Author And Source
この問題について(RubyエンジニアがArduinoで電子工作やってみた~温湿度センサ編~), 我々は、より多くの情報をここで見つけました https://qiita.com/hiroki_tanaka/items/9a6602f763d29db1b9d8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .