« 【16番】Raspberry Pi 3でJMRI(再インストール) | トップページ | 【16番】アクラス ワラ1 »

2017/03/29

【16番】Raspberry Pi 3でJMRI(シャットダウンスイッチの追加)

Raspberry Pi 3にシャットダウンスイッチが付いたので、メモしておきます。


シャットダウンスイッチは、小型のタクトスイッチをケースの外側から取付け。


GPIOは40番ピン(GPIO21)と39番ピン(GND)を使用。接続コードは、TOMYTEC電飾キットのLEDのコネクター付き配線を流用。

先人の知恵をお借りして、Pythonのスクリプトを準備。
(参考)RaspberryPiにshutdownボタンを付けよう

$ cd ~
$ touch ./shutdown.py
$ sudo chmod 755 ./shutdown.py
$ nano ./shutdown.py
---この下の行から---
#!/usr/bin/env python
# coding:utf-8

import RPi.GPIO as GPIO
import os, time

GPIO.setmode(GPIO.BCM)

# GPIO21 : shutdown button
pin = 21
GPIO.setup(pin, GPIO.IN, pull_up_down = GPIO.PUD_UP)

L_timer = 120

while True:
  GPIO.wait_for_edge(pin, GPIO.FALLING)
  sw_counter = 0

  while True:
    if GPIO.input(pin) == 0:
      sw_counter = sw_counter + 1
      if sw_counter >= L_timer:
        os.system("echo heartbeat > /sys/class/leds/led0/trigger")
        os.system("sudo shutdown -h now")
        break
    time.sleep(0.01)

#  print(sw_counter)

GPIO.cleanup()
---この上の行まで---
行頭のスペースの数でwhile文やif文の動作が異なるので注意。参考記事の様に、print文で動作を確認しながら進めるのが、オススメ。

root権限でスクリプトの動作テスト。ファイルはフルパスで指定。
$ sudo ${HOME}/shutdown.py

シャットダウンボタンを長押しして、緑色のLEDが点滅の後に消えたら、シャットダウン完了。

くれぐれも動作を確認後、自動起動の設定。
スクリプトファイルを/usr/local/bin/にコピー。
$ sudo cp ./shutdown.py /usr/local/bin/

システム起動時に実行されるように、/etc/rc.local(Ubuntu Mateの場合)に登録。
$ sudo nano /etc/rc.local
("exit 0"の前に追加)
/usr/local/bin/shutdown.py &
exit 0

システムを再起動すれば、設定が反映される。
$ sudo reboot

Raspberry Pi 3だけでシャットダウンが出来るようになりました。

続く。。

« 【16番】Raspberry Pi 3でJMRI(再インストール) | トップページ | 【16番】アクラス ワラ1 »