ラズパイ(ラズベリーパイ)で部屋の状態をLEDで表現する

アイキャッチ画像 ラズパイ
ラズパイ

ラズパイでなんちゃってスマートホームを構築するにあたり、初心者の私がwebや書籍を調べてやったことを備忘録のようにつづっています。

ラズパイで部屋の快適さを表現するには。。。

前回に続いて、ラズパイで検出した温湿度をBluetoothスピーカーに喋らせます。そして、不快指数を計算し、部屋の状態をLEDで表現します。さらに、外気の温湿度をBluetoothスピーカーに喋らせる。そして、不快指数を計算し、外の状態をLEDで表現します。今回は、

”部屋の状態、外の状態をLEDで表現する。”について説明します。

LED

 

 

簡単にラズパイで作れます。

流れは以下のような感じです。難しいことは何もやっていません。初心者の私でもできるようなことしかやっていませんので、初心者の方も安心してチャレンジしてください。中身が非常に長くなるので、四部作で紹介します。

今回は第四部です。完結編です。

センサで計測した部屋の温度から計算した、部屋の不快指数と、OpenWeatherMapのwebAPIで外気温湿度を取得して計算した、外の不快指数をもとに、部屋の中に設置したLEDを光らせます。

夏であれば、暑ければ赤LED、少し暑ければ黄色LED、ちょうど良ければ緑LEDに点灯します。冬であれば、寒ければ赤LED、少し寒ければ黄色LED、ちょうど良ければ緑LEDに点灯させます。

やることの詳細について

  1. GPIを設定する
  2. 計算した不快指数を基準と比較する
  3. 基準との比較結果をもとに、LEDを点灯させる

ラズパイ、温湿度センサ、Bluetoothスピーカを準備

準備するものは、

  • ラズパイ
  • 温湿度センサ(DHT11)
  • ラズパイとセンサをつなぐケーブル類
  • Bluetoothスピーカー

となります。

今回使った温湿度センサーはこれです。接続も簡単なので、おすすめです。

 

by カエレバ

 

ラズパイとBluetoothスピーカーを接続する方法については、本ブログで紹介した記事を参考にしてください。↓

それでは実際の作業について説明します。

 

 

GPIOを設定する

GPIOとは?

ラズパイ(ラズベリーパイ)にとっての、最大の特徴の一つでもあります。

ラズパイへの入力、あるいはラズパイからの出力の端子があり、そこから線を外に出すことで色々なものと接続できます。
温湿度センサとも接続できますし、人感センサー、距離センサー、などのセンサー類とも容易に接続できるので、秋月電子などで、安いセンサーを買ってきて、それをラズパイとつなぐことで、簡単に自宅をスマートホーム化できます。一般的なスマートホームのイメージとしては、

高価な機器を購入しないとだめなんでしょ?

接続するのは難しいんでしょ?

という敷居が高いイメージがあると思いますが、

ラズパイを使えば、安価に簡単にスマートホーム化ができます。

今の時代は、各種センサー類の値段が非常に安くなっているので、ラズパイに加えて、数百円のセンサーがあれば、簡単に構築できてしまいます。

まさに、スマートホームのDIY(Do It Yourself)です。

 

GPIOを設定する

まずはGIPOを使います!と宣言します。

import RPi.GPIO as GPIO

 

そして、ラズパイのどのピンを何色のLEDにするかを定義します。ここでは、
緑色(Gr)をNo.14、
黄色(Y)をNo.15、
赤色(R)をNo.18
と定義します。

Gr_LED = 14
Y_LED = 15
R_LED = 18

とします。次に、GPIOの情報をクリアした後に、GPIOを出力として使うことを宣言します。

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()
GPIO.setup(Gr_LED, GPIO.OUT)
GPIO.setup(Y_LED, GPIO.OUT)
GPIO.setup(R_LED, GPIO.OUT)

つぎに、各色のLEDを一旦OFFにします。これは、前にLEDをつけっぱなしにした場合に、それをリセットする目的で行います。

GPIO.output(Gr_LED, GPIO.LOW)
GPIO.output(Y_LED, GPIO.LOW)
GPIO.output(R_LED, GPIO.LOW)
これにより、GPIOを出力用に使う準備ができました。

 

 

不快指数を基準と比較してLEDを点灯させる

基準と比較するために、ifコマンドを使います。その条件に合致した場合には、GPIOにより、LEDを点灯させます。例えば、不快指数が80を超える場合は、暑い状態なので、赤色のLEDを点灯させます。

if round_fukai > 80:
    GPIO.output(R_LED, GPIO.HIGH)

GPIO.HIGHとすることで、R_LEDで定義したピン数をHIGH、すなわち点灯させる、という意味になります。

80以下の場合には、

elif round_fukai > 76:
    GPIO.output(Y_LED, GPIO.HIGH)

elifコマンドは、さもなければ76を超えた場合には、Y_LEDで定義したピン数をHIGH、すなわち点灯させる、という意味になります。

その繰り返しによって、定義された範囲に従って、各色のLEDを点灯させます。

夏と冬で暑さと寒さをそれぞれ絶妙に変えることで、感覚と同じになってきますので、まずは値を決めて、LEDを点灯させてみて、自分の感覚と違うなあと思ったら、定義の数字を変えていくのが良いと思います。

簡単なラズパイだからこそ、このようなチューンナップも簡単にできます。色々試してみてください!

温度計

ソースコードは、第一部で紹介しています。本ブログの過去記事↓

シェアする
子どもとおでかけ 公園遊びブログ

コメント