今回は、前回ラズパイのUSB4ポートをシェルスクリプトでオン・オフできるようにしたので、人感センサーを使って人が来たら自動的にシェルスクリプトに命令してディスプレイオンにして、5分後くらい動きが無い場合にオフにする設定をしていきます。
Python+人感センサー
/home/pi/script/usb-4port.shを使ってPythonスクリプトと人感センサーでディスプレイを自動オン・オフ
/home/pi/script/usb-backlight.py
#!/usr/bin/python # -*- coding: utf-8 -*- #人感センサーで人がいるとき5分間だけディスプレイのバックライトをオンにする。 from time import sleep import RPi.GPIO as GPIO import subprocess SENSOR_PIN = 23#18から23に変更 GPIO.setmode(GPIO.BCM) GPIO.setup(SENSOR_PIN, GPIO.IN) while 1: sen = GPIO.input(SENSOR_PIN) if sen == 1 : power = 'on' else : power = 'off' @print power getty = '/home/pi/script/usb-4port.sh' subprocess.call([getty, power]) if power == 'on': sleep(300)
usb-backlight.pyを常時起動しておく
usb-backlight.pyを常に起動しておくようにシステムのサービスに追加しちゃいます。
$ sudo vim /lib/systemd/system/usb-backlight.service [Unit] Description = usb-backlight [Service] ExecStart=/usr/bin/python /home/pi/script/usb-backlight.py Restart=always Type=simple [Install] WantedBy=multi-user.target
usb-backlightサービスをオンにする。
$ sudo systemctl start usb-backlight.service $ sudo systemctl enable usb-backlight.service
うまく動かないのでjournalctlで確認
systemctlでサービス開始しても動かなかったので原因を調べる。
$ journalctl | less
lessで「q」が終了、検索「/usb\-backlight」で探す
原因はusb-backlight.pyのちょっとしたエラーだった。
違う人感センサー
以前試した人感センサーHC-SR501の記事↓
【raspberry pi 2】大気圧センサーを使ってmuninでグラフ化・人感センサーを使って一日の仕事時間を計測したい
だいぶ前にラズパイ2で温度・湿度を計測してmuninでグラフ化しましたが、今回は大気圧センサーを使って部屋の大気圧を計測してmuninでグラフ化してみます。
HC-SR501は距離範囲に物体があるかないかで感知するセンサーなのでカーテン閉めたら反応しちゃう・・・なのでマイクロ波レーダーセンサーrcwl-0516を使うことにする。
PIN
rcwl-0516 | Raspberry Pi |
---|---|
VIN | +5V |
GND | GND |
OUT | GPIO18 |
スクリプトも同じ。今度はカーテン閉めていても反応しないけど、直角の角度で動いても反応する。でもこっちのほうが精度はよさそう。
ちょっと人の動きがあると反応するので正面しか反応しないようにセンサーの左右にに金属のカバーを付けるしかなさそう。
コメント