« 2017年1月 | トップページ | 2017年4月 »

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(再インストール)

久し振りにRaspberry Pi 3の電源を入れたら、動作しない。色々とジタバタしてみた結果、USB電源の容量不足だとmicroSDの書き込みに失敗して起動途中で進まなくなることが分かった。(振り出しに戻る。。。)

Ubuntu Mateのバージョンが上がっていることもあり、初めからシステムを入れ直し。
(参考)https://ubuntu-mate.org/raspberry-pi/

初期起動時にmicroSDの容量に合わせてパーティションが自動変更されるようになったが、upgradeの際にBOOT領域が不足するので、結局、他のPC上のgpartedでFAT16のパーティションを400Mbyte程度に拡張して再起動。


セキュリティ対策のため初期設定のままではsshで接続できなくなったので、raspi-configでsshd使用に変更。
$ sudu raspi-config
"3 Interfacing Options"-->"P2 SSH"-->"<はい>"

OpenOfficeやThunderbirdは不要なので、upgrade前に削除。
$ sudo apt-get remove --purge libreoffice*
$ sudo apt-get remove --purge thunderbird*
$ sudo apt-get clean
$ sudo apt-get autoclean

以下(ry

続く。。

« 2017年1月 | トップページ | 2017年4月 »