RaspberryPi小ネタ(OS起動でLED点滅、シャットダウンスイッチ、Lチカ)備忘録

RaspberryPi小ネタ(OS起動でLED点滅、シャットダウンスイッチ、Lチカ)備忘録

今回はRaspberry Pi(ラズパイ)を使ってみて不便に感じた事の解決方法を調べました。

  • ラズパイのOSが起動・終了している事をLEDで表示(起動でLED点滅)
  • シャットダウンスイッチの付け方
  • LEDをチカチカ点滅させるサンプル

今回の環境など

  • Raspberry Pi 3 Model B
  • Raspberry Pi OS Lite (Released: 2021-05-07)
  • 部品:シャットダウン用プッシュスイッチ+配線(またはジャンパーピン)

ラズパイのOSが起動・終了している事をLEDで表示
(起動でLED点滅)

ラズパイに標準で付いているLEDは、緑LED(led0)と赤LED(led1)があります。緑LEDはマイクロSDへのアクセス、赤LEDはUSB 5V電源がつながっている事を表しています。

  • 🟢緑LED(led0):マイクロSDへのアクセスで光る(mmc0)
  • 🔴赤LED(led1):USB 5V電源の接続で光る

OSの起動や終了の状態は、緑LEDの点滅(マイクロSDへのアクセス)で判断できない事も無いですが正直、判りづらいです。
調べてみるとOSが起動している間だけLEDを点滅させる方法がありました。

ラズパイの設定

方法は、赤LEDが点滅する設定を"rc.local"ファイルの最後に追加するだけです。

$ sudo vi /etc/rc.local(root権限でファイルを編集)

("rc.local"ファイルの最後に下の設定を追加)

# LDE (0:green, 1:red)
echo heartbeat | sudo tee /sys/class/leds/led1/trigger

$ sudo reboot(再起動で設定を反映)

これでOS起動中に赤LEDが点滅するようになりました。

補足:点滅"heartbeat"以外の"trigger"設定は下記のコマンドで確認できます。

$ cat /sys/class/leds/led1/trigger

(追記)

別の方法もありました。

シャットダウンスイッチの付け方

HDMIモニタやキーボードが無い"Headless"でラズパイを使っていると、電源を切る時に不便です。面倒くさく思ってシャットダウンしないでUSB電源を抜くと、マイクロSDのファイルが壊れる事があるようです。

そんな問題を避ける為にも、ボタン1つでシャットダウンできると便利です。調べると、設定を1行追加するだけで実現できる方法がありました。

ご注意

Umbrel (bitcoind, lnd)などのOSシャットダウン前に終了しなければいけないプログラムを運用されている場合は、シャットダウンスイッチを使わないで下さい。シャットダウン前に、lndなどを正常に停止する仕組みが無い限り、大切なデータを破損するおそれがあります。

ラズパイの設定

下記のように"conifig.txt"の最後に設定を追加します。

$ sudo vi /boot/config.txt(root権限でファイルを編集)

("conifig.txt"ファイル内の[all]に続いて、下の設定を追加)

[all]
dtoverlay=gpio-shutdown,gpio_pin=3

$ sudo reboot(再起動で設定を反映)

スイッチを追加

スイッチは下の様に、ラズパイ端から3つ目のピンにつなぎます。

スイッチが無い場合は、自作PC等でおなじみのジャンパーピンで代用しても良いかもしれません。自分はジャンパーを使って動きを確認しました(写真の黒いジャンパーピン。見えづらくてすみません)。

ちなみに、この追加したスイッチをOSシャットダウンの状態で押すと、OS起動スイッチとして機能します。

今回追加した設定とスイッチで、下の様な動きになります。

LEDをチカチカ光らせるサンプル

IoT系デバイス※にとってLEDをチカチカ光らせるサンプルは、プログラミング言語の"Hello, world!"と、たぶん同じ位に定番です
(※:シングルボードコンピューター、マイコンボード、Arduino, M5Stack, FPGAボードなど)。


人によっては、Lチカのサンプルを動かすだけで満足してしまうらしいです。
そんな魅惑のLチカを、ラズパイでも気軽に試せる方法があったので、共有します。

ラズパイの設定

設定方法は、赤LEDを点滅させる方法の応用です。
まず緑LEDがGPIO 25の設定で点滅するように"rc.local"ファイルの最後に設定を追加します。

$ sudo vi /etc/rc.local(root権限でファイルを編集)

("rc.local"ファイルの最後に下の設定を追加)

# LDE (0:green, 1:red)
echo gpio      | sudo tee /sys/class/leds/led0/trigger
echo 25        | sodo tee /sys/class/leds/led0/gpio

$ sudo reboot(再起動で設定を反映)

サンプルpythonスクリプト

python3のスクリプトは下の通りです。上の設定をした後にスクリプトを実行すると、2秒ごとに緑LEDが点滅します。

$ pip3 install wiringpi(あらかじめモジュールをインストール)

🟢緑LEDを点滅させるpythonスクリプト(l_chika.py)

import wiringpi
import time

LED_PIN = 25

wiringpi.wiringPiSetupGpio()
wiringpi.pinMode(LED_PIN, wiringpi.GPIO.OUTPUT)

while (True) :
    wiringpi.digitalWrite(LED_PIN, wiringpi.GPIO.HIGH)
    time.sleep(2.0)
    wiringpi.digitalWrite(LED_PIN, wiringpi.GPIO.LOW)
    time.sleep(2.0)

$ python3 ./l_chika.py(スクリプト実行)

おわりに

今回の記事は小さなネタばかりでしたが、個人的には最初に紹介した「ラズパイ起動でLED点滅」が便利だと思っています。

また繰り返しになりますが、OSシャットダウン前に停止しなければいけないプログラムを運用されている場合は、シャットダウンスイッチを使わないで下さい。

参考

Remaining : 0 characters / 0 images
100

Sign up / Continue after login

Related stories

Writer

The Shiba Inu (柴犬) is a most popular dog in Japan.

Share

Popular stories

RaspberryPiでダッシュボードを作る(Grafana InfluxDB)備忘録

2378

太陽電池でビットコインをマイニング3 ~RaspberryPi採用で効率アップ~

1076

裁定取引bot R2の実験(2020年2月~7月)

1050