MECHATRAXのブログ
弊社製品やサービスに関するブログです。企画や開発の際の参考になれば幸いです。
slee-Pi3を使ってラズパイをリレーでシャットダウン・起動する
slee-Pi3を使ってラズパイをリレーでシャットダウン・起動する
本記事では、slee-Pi3を使用して、リレーによりラズパイをシャットダウン・起動する手順について説明します。
手順①リレーを接続する
ラズパイにslee-Pi3をスタックし、slee-Pi3の外部入力端子(CN4)にリレーを接続します。
slee-Pi3に電源12Vを入力してラズパイを起動します。
slee-Pi3基板内部では
CN4-1が3.3Vにプルアップされており、
CN4-2がGNDに接続されています。
したがって、CN4にはリレーのような無電圧接点を接続します。
(電圧を印加すると故障の原因になりますのでご注意ください)
リレーがONになるとCN4-1がLOW(=0V)になり、
リレーがOFFになるとCN4-1がHIGH(=3.3V)になります。
手順②外部入力監視設定(sleepi3-monitor)
sleepi3-monitorの設定ファイルを編集します。
今回はリレーを5秒間継続してONにした場合にOSシャットダウンを実行するようにするため、
threshold(単位[秒]、デフォルト3秒)を “5” に設定します。
この設定により、リレーを5秒間ONにした場合に /etc/sleepi3-monitor/extin.d/
配下の
スクリプトファイルを実行します。
...
extin:
history_size: 1
commands:
- exec: /etc/sleepi3-monitor/extin.d/
condition: over
threshold: 5
oneshot: true
...
手順③リレーON(5秒間)で実行するスクリプトの配置
リレーONが5秒間継続してONにした場合に実行するスクリプトを用意します。
今回はリレーON(5秒間継続)でOSのシャットダウンを実行したいので、
下のようなスクリプトを配置します。
#!/bin/bash
logger "Shutting down due to an external input being turned ON."
shutdown -h now
忘れずにスクリプトに実行権限を付与します。
mtx@raspberrypi:~ $ sudo chmod +x /etc/sleepi3-monitor/extin.d/99-shutdown.sh
(今回はリレーONでOSシャットダウンを実行する例を示していますが、スクリプトを置き換えれば、リレーONで任意のスクリプトを実行させることができます。)
設定は以上です。設定反映のためsleepi3-monitor.serviceを再起動します。
mtx@raspberrypi:~ $ sudo systemctl restart sleepi3-monitor.service
補足:リレーによるラズパイ起動の設定
次にリレーによるラズパイ起動方法について説明します。
実は外部入力(CN4)によるslee-Pi3・ラズパイの起動はデフォルトで有効になっているので、
特に設定は要りません。
ラズパイOSがシャットダウンすると、slee-Pi3はスリープ状態(LED2が消灯)に遷移します。
スリープ状態※でCN4がエッジを検出するとslee-Pi3がパワーオン状態になりラズパイを起動します。
(※スリープ状態を維持するためにはslee-Pi3への電源入力が必要です)
この「エッジ検出で起動する」動作はラズパイ起動時にslee-Pi3のマイコンに設定されますが、
https://github.com/mechatrax/sleepi3-utils/blob/bullseye/start.sh#L5
「エッジ検出」ではなく「レベル検出」でスリープ状態のslee-Pi3を起動させることもできます。
レベル検出にする場合は、/etc/sleepi3-monitor/extin.d/
配下に以下のスクリプトを追加します。
#!/bin/bash
sleepi3ctl set extin-trigger 1
このスクリプトにより、シャットダウンの前に外部入力(CN4)のレベル検出起動(extin-trigger=1)がslee-Pi3上のマイコンに設定されます。
忘れずにスクリプトに実行権限を付与します。
mtx@raspberrypi:~ $ sudo chmod +x /etc/sleepi3-monitor/extin.d/97-set_extin_level_trigger.sh
以上、slee-Pi3を使用してリレーでラズパイのシャットダウン・起動を制御する方法の説明でした。
sleepi3-monitor でよく使われるスクリプトの例はラズパイ上の以下のディレクトリ配下に
ありますのでコピーしてそのままお使いいただけます。/usr/share/doc/sleepi3-monitor/examples