7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

寒くなってきたのでRaspberry Piで自動でACヒーターをON/OFFできるようにしてみた!

Last updated at Posted at 2019-11-11

目的:Raspberry PiでヒーターON/OFFしてみた!

最近、寒くなってきて冷え性には苦しい季節になってきました。
そこで、ある程度の温度に達するとヒーターがONになり、またある程度温まるとOFFになるIoTを実装してみました。

用意したもの

セットアップ

  • 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に繋げて電源タップに刺してもらえれば大丈夫です。
  • ※回路を間違えると温度センサーがめちゃめちゃ熱くなります。気負付けてください。
    温度センサー回路.jpg

##プログラム(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
7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?