ラズパイで家庭内電気器具のON/OFFを制御してみます。
リレーモジュールを使えば、AC100V電源を制御できますが、まずは5V程度の器具からやってみましょう。
簡単にセンサーに反応してライトのON/OFFします。
リレーモジュールはこういうやつです(5個まとめて999円也の中華製)。
100均のUSBライトをラズパイから点灯・消灯してみます。
電源はモバイルバッテリから供給。
キャンドゥ、5000mAhで550円也。
結線はこんな感じ。
2LED ライトをちょっと改造
オレンジの丸で囲ったLEDライトの回路を抜き出すので、緑の丸で囲った小ねじを外します。フレキシブルアームになっている金属部も取ってしまいます。
A、Bのところで切断してスィッチの部分を取り外し。
リード線を金属部から抜き出すので、Cも切断して抜き出したあと、再度半田付け。
Aのリード線は尺が足りないので別途リード線を半田付けして延長。
赤黒の2線を後ろのスィッチ穴から外に出して、組み立て直します。
2か所で半田付け (下手すぎ)
だいたいこんな感じ。
赤黒2本のリード線を上記の結線図(A、B)のようにリレーモジュールのCOM(common)、NO(normally open)に結線します。
INPUT(GPIO14)やVCC、GNDをメスーメスのジャンパー線でラズパイと結線します。
Pythonを使ってライトをON/OFF
初期化
1 2 3 4 5 6 7 |
import RPi.GPIO as GPIO RELAY_PIN = 14 GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(RELAY_PIN, GPIO.OUT) |
ON
1 |
GPIO.output(RELAY_PIN, True) |
OFF
1 |
GPIO.output(RELAY_PIN, False) |
赤外線障害物検知センサーをトリガーにしてみます
LEDライトのスィッチを外して、代わりにセンサーを使ってみます。
手をかざしたり外したりしてライトをON/OFFします。
結線
コード
【light_ir_detection.py】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
#! /usr/bin/env python3 import RPi.GPIO as GPIO import time #1回だけ実行する用のフラグ detect_flag = 0 miss_flag = 0 #GPIO IR_PIN = 17 RELAY_PIN = 14 def setup(): GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(IR_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(RELAY_PIN, GPIO.OUT) def loop(): global detect_flag global miss_flag while True: time.sleep(0.5) if (0 == GPIO.input(IR_PIN)): if (detect_flag == 0) : print("Detected!!") #点灯 GPIO.output(RELAY_PIN, True) detect_flag = 1 miss_flag = 0 else: if (miss_flag == 0) : print("Missing!") #消灯 GPIO.output(RELAY_PIN, False) miss_flag = 1 detect_flag = 0 def destroy(): GPIO.cleanup() if __name__ == '__main__': setup() try: loop() except KeyboardInterrupt: destroy() |
実装
ラズパイ起動時に実行したいので簡単に/etc/rc.local に記述しておきます。
light_ir_detection.pyはユーザーホーム(例:/home/pi)に置いておきます。
rc.localを編集
sudo nano /etc/rc.local
最後尾、exit 0 があればその前
1 |
sudo python3 /home/pi/light_ir_detection.py |
再起動して実行
sudo reboot
起動時にライトが点灯します。
rc.local が実行されるまでしばらく(40秒くらい)かかります。
実行後消灯。
センサーが反応すれば、点灯・消灯が切り替えられるはずです。
Appendix
ネットワーク経由でON/OFFする場合
Leave a Reply