目的:Raspberry PiでヒーターON/OFFしてみた!
最近、寒くなってきて冷え性には苦しい季節になってきました。
そこで、ある程度の温度に達するとヒーターがONになり、またある程度温まるとOFFになるIoTを実装してみました。
用意したもの
- Raspberry Pi 3 Model B+
- 温度センサー
- SSR
- ヒーター
- AC電源プラグ (SSRを入れる電源プラグは家にあったものを使用しています。)
セットアップ
-
GitHubから引用してきました。
-
https://github.com/szazo/DHT11_Python
持ってくる理由は1つのプログラムを書き換えるだけで済むからです。 -
まず、Raspberry Piにサンプルプログラムをインストールします。
GitHubが入っている事を確認・またはインストールsudo apt-get install git
-
サンプルpythonプログラムインストール
git clone https://github.com/szazo/DHT11_Python.git
回路図
- 温度センサーが関係ないやつに例えてます。ごめんなさい。
- 右から(GND, センサーの値を読み取るPIN, 5V)
- Heaterは、ACなのでそのままSSRに繋げて電源タップに刺してもらえれば大丈夫です。
-
※回路を間違えると温度センサーがめちゃめちゃ熱くなります。気負付けてください。
##プログラム(Python)
-
Python3を使用しました。
DHT11_Pythonの中のdht11_example.pyをそのまま引用できます。
今回は、こんなプログラムにしました。
dht11_example.py
# coding: utf-8
import RPi.GPIO as GPIO
import dht11
import time
import datetime
# initialize GPIO
GPIO.setwarnings(False)
# GBCMの番号で指定する事を宣言
GPIO.setmode(GPIO.BCM)
#BCMの17番ピンを出力に設定
GPIO.setup(17,GPIO.OUT)
# read data using pin 14
instance = dht11.DHT11(pin=14)
HotTemp = 20
ColdTemp = 5
sleepSecond = 0
try:
while True:
result = instance.read()
if result.is_valid():
tmp = result.temperature
print(tmp)
if tmp <= ColdTemp:
# Heater running
GPIO.output(17,1)
print("Heater ON")
sleepSecond = 10
elif tmp >= HotTemp:
# Heater stop
GPIO.output(17,0)
print("Heater OFF")
sleepSecond = 10
else :
time.sleep(sleepSecond)
except KeyboardInterrupt:
GPIO.cleanup()
すごくわかりやすいプログラムだと思います。
##実装
とりあえず実装してみましょ!
sudo python3 dht11_example.py
動きましたか?
動いていない場合は
- DHT11のdht11.pyの最初の部分にas GPIOを書き加えてみてください。
dht11.py
import time
#import RPiにas GPIOを加えます
import RPi as GPIO
class DHT11Result:
'DHT11 sensor result returned by DHT11.read() method'
ERR_NO_ERROR = 0
ERR_MISSING_DATA = 1
ERR_CRC = 2