ラズパイ(ラズベリーパイ)で部屋の状態を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スピーカーを接続する方法については、本ブログで紹介した記事を参考にしてください。↓

【ラズパイ】Google Homeの連携。エラーで音が出なくなったときの対処方法。
ラズパイ(ラズベリーパイ)とGoogle Homeの連携。時報としてGoogle Homeに喋らせる方法を紹介します。時々、Google Homeが喋らなくなるトラブルへの対処方法を初心者の方にも分かるように紹介します!

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

 

 

 

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を点灯させてみて、自分の感覚と違うなあと思ったら、定義の数字を変えていくのが良いと思います。

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

温度計

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

ラズパイ(ラズベリーパイ)を使って、温度・湿度、不快指数をテキスト化する
ラズパイでなんちゃってスマートホームを構築するにあたり、初心者の私がwebや書籍を調べてやったことを備忘録のようにつづっています。温湿度センサを使って測定今回のネタは、ラズパイで検出した温湿度をBluetoothスピーカーに喋らせる。そ...

コメント