ラズパイでなんちゃってスマートホームを構築するにあたり、初心者の私がwebや書籍を調べてやったことを備忘録のようにつづっています。
ラズパイで部屋の快適さを表現するには。。。
前回に続いて、ラズパイで検出した温湿度をBluetoothスピーカーに喋らせます。そして、不快指数を計算し、部屋の状態をLEDで表現します。さらに、外気の温湿度をBluetoothスピーカーに喋らせる。そして、不快指数を計算し、外の状態をLEDで表現します。今回は、
簡単にラズパイで作れます。
流れは以下のような感じです。難しいことは何もやっていません。初心者の私でもできるようなことしかやっていませんので、初心者の方も安心してチャレンジしてください。中身が非常に長くなるので、四部作で紹介します。
第二部 不快指数に応じて部屋の状態を判断し、部屋の状態(暑い、寒い)をスピーカーから喋らせる
第三部 外気温をwebAPIで取得して、不快指数により外の状態をスピーカーから喋らせる
第四部 部屋の状態、外の状態をLEDで表現する。
今回は第四部です。完結編です。
センサで計測した部屋の温度から計算した、部屋の不快指数と、OpenWeatherMapのwebAPIで外気温湿度を取得して計算した、外の不快指数をもとに、部屋の中に設置したLEDを光らせます。
やることの詳細について
- GPIを設定する
- 計算した不快指数を基準と比較する
- 基準との比較結果をもとに、LEDを点灯させる
ラズパイ、温湿度センサ、Bluetoothスピーカを準備
準備するものは、
- ラズパイ
- 温湿度センサ(DHT11)
- ラズパイとセンサをつなぐケーブル類
- Bluetoothスピーカー
となります。
![]() |
|
ラズパイとBluetoothスピーカーを接続する方法については、本ブログで紹介した記事を参考にしてください。↓
それでは実際の作業について説明します。
GPIOを設定する
GPIOとは?
ラズパイへの入力、あるいはラズパイからの出力の端子があり、そこから線を外に出すことで色々なものと接続できます。
温湿度センサとも接続できますし、人感センサー、距離センサー、などのセンサー類とも容易に接続できるので、秋月電子などで、安いセンサーを買ってきて、それをラズパイとつなぐことで、簡単に自宅をスマートホーム化できます。一般的なスマートホームのイメージとしては、

高価な機器を購入しないとだめなんでしょ?
接続するのは難しいんでしょ?
という敷居が高いイメージがあると思いますが、
今の時代は、各種センサー類の値段が非常に安くなっているので、ラズパイに加えて、数百円のセンサーがあれば、簡単に構築できてしまいます。
まさに、スマートホームのDIY(Do It Yourself)です。
GPIOを設定する
まずはGIPOを使います!と宣言します。
そして、ラズパイのどのピンを何色のLEDにするかを定義します。ここでは、
緑色(Gr)をNo.14、
黄色(Y)をNo.15、
赤色(R)をNo.18
と定義します。
Y_LED = 15
R_LED = 18
とします。次に、GPIOの情報をクリアした後に、GPIOを出力として使うことを宣言します。
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(Y_LED, GPIO.LOW)
GPIO.output(R_LED, GPIO.LOW)
不快指数を基準と比較してLEDを点灯させる
基準と比較するために、ifコマンドを使います。その条件に合致した場合には、GPIOにより、LEDを点灯させます。例えば、不快指数が80を超える場合は、暑い状態なので、赤色のLEDを点灯させます。
GPIO.output(R_LED, GPIO.HIGH)
GPIO.HIGHとすることで、R_LEDで定義したピン数をHIGH、すなわち点灯させる、という意味になります。
80以下の場合には、
GPIO.output(Y_LED, GPIO.HIGH)
elifコマンドは、さもなければ76を超えた場合には、Y_LEDで定義したピン数をHIGH、すなわち点灯させる、という意味になります。
その繰り返しによって、定義された範囲に従って、各色のLEDを点灯させます。
夏と冬で暑さと寒さをそれぞれ絶妙に変えることで、感覚と同じになってきますので、まずは値を決めて、LEDを点灯させてみて、自分の感覚と違うなあと思ったら、定義の数字を変えていくのが良いと思います。
ソースコードは、第一部で紹介しています。本ブログの過去記事↓
コメント