ラズパイ3に7インチディスプレイ追加 キオスクモードでWebIOPiボタン操作&Grafanaグラフ表示

今回は、前回ラズパイのUSB4ポートをシェルスクリプトでオン・オフできるようにしたので、人感センサーを使って人が来たら自動的にシェルスクリプトに命令してディスプレイオンにして、5分後くらい動きが無い場合にオフにする設定をしていきます。

この記事は複数のページに別れています
  1. (今このページを見ています)

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の記事↓

404 NOT FOUND | Densi
WP・サーバー・PHP・ラズパイ・Arduinoの覚え書き

HC-SR501は距離範囲に物体があるかないかで感知するセンサーなのでカーテン閉めたら反応しちゃう・・・なのでマイクロ波レーダーセンサーrcwl-0516を使うことにする。

HiLetgo 5個セット RCWL-0516 RCWL 0516マイクロ波レー

HiLetgo 5個セット RCWL-0516 RCWL 0516マイクロ波レー

1,500円前後

PIN

rcwl-0516 Raspberry Pi
VIN +5V
GND GND
OUT GPIO18

スクリプトも同じ。今度はカーテン閉めていても反応しないけど、直角の角度で動いても反応する。でもこっちのほうが精度はよさそう。

ちょっと人の動きがあると反応するので正面しか反応しないようにセンサーの左右にに金属のカバーを付けるしかなさそう。

コメント

タイトルとURLをコピーしました