電源ランプを光らせる(RPi.GPIOでLED制御)

電源ランプを制御する?



「零函(zero-bako)」の前面にはボタン兼用の電源ランプ(LED)がありますが、ラズパイのGPIO端子の「3.3V」に接続しているため、ラズパイの状態(休止中/稼働中)に関係なく、常時点灯しています。

現状、ボタン操作でラズパイを「シャットダウン」と「起動スタート」出来ますので、その状態がランプの点灯/消灯で分かれば便利です。

イメージは下図のようです。


赤い点線枠の動作が出来ればOKです。

接続した電源ランプ(LED)をラズパイのGPIO端子で制御する事で実現できそうです。

まずはLEDの配線から


LED⊕の配線を「3.3V」からGPIO24に変更します。
これでGPIO24に電流が流れればLEDが点灯、流れなければ消灯になります。

次はプログラムの変更ですが…

---------------------------------------------------------------------------------------------------------------
以下の説明について。
当方、プログラミングについてはほとんど素人です。
ネットにある関連記事を参考に、適当にプログラムのコードを弄ってます。
結果オーライで運よく上手くいっているだけの可能性が大きいです。
ですので、もし参考にされる場合は、あくまで自己責任でお願いします。
---------------------------------------------------------------------------------------------------------------


ラズパイとPCをsshで接続する

Volumio2の中の特定のファイルの記述(コード)を一部変更する必要がありますので、まずは変更ファイルにアクセス可能にします。

いつものようにTera Termを起動して、Volumio2に接続します。



先にシステム環境を整える

Volumio2のシステムには「RPi.GPIO」がインストールされていないようです。
なので、以前にインストールしていない場合は先にインストールします。
「RPi.GPIO」はGPIOをプログラムでコントロールする場合に必要なライブラリーです。
ssh画面で「sudo apt-get update」と入力して、Enterキーを押します。
かなり時間がかかりますが終了まで待ちましょう。
一番下の行が下図のような文字列になればOKです。

次に「sudo apt-get install python-rpi.gpio」と入力して、Enterキーを押します。
こちらも多少時間がかかりますが、同様に終了まで待ちましょう。

プログラムファイルを作成する

プログラムファイルは、ボタンの動作を記述したファイルです。

ssh画面で「sudo nano /home/volumio/spbuttonLED.py」と入力して、Enterキーを押します。
新規で「spbuttonLED.py」というファイルが/home/volumioの中に作成されます。
(最初のみ「[sudo] password for volumio:」とパスワードを聞いてきますので、「volumio」と入力して、Enterします。)



上図のメモ帳のような画面になりますので、ここに以下の文字列をコピーしてペーストします。

------------------------------------------------------------------------------------
#!/usr/bin/python
# coding:utf-8
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)

#GPIO24pinを出力モードにする
GPIO.setup(24,GPIO.OUT)

#GPIO24pinに3.3Vを出力する
GPIO.output(24, 1)
------------------------------------------------------------------------------------

そのまま保存します。(日本語の部分が文字化けしているかもしれませんが大丈夫です。)
キーボードの「Ctrl」キーを押しながら「x」キーを押すと、保存するか聞いてきますので、「y」キーを押します。
ファイル名をspbutton.py(元のまま)にするか聞いてきますので、「Enter」キーを押して保存完了です。

動作的には、ラズパイが起動する時にこのプログラムを実行してGPIO24に電流を流し、接続されているLEDが点灯、そしてシャットダウン時にはGPIO24の設定が元に戻り、電流が止まるためLEDが消灯する、というものです。

サービスファイルを作成する

サービスファイルは、ラズパイが起動する時に先ほど作成したプログラムファイルを自動的に読み込むようにするためのファイルです。

同様にssh画面で「sudo nano /lib/systemd/system/spbuttonLED.service」と入力して、Enterキーを押します。
同様にメモ帳画面に以下の文字列をコピーしてペーストします。

------------------------------------------------------------------------------------
[Unit]
Description=do something

[Service]
ExecStart=/usr/bin/python /home/volumio/spbuttonLED.py

[Install]
WantedBy=multi-user.target
------------------------------------------------------------------------------------

これも同様に保存します。

それぞれのファイルを使えるようにする

ファイルは作成しただけでは動かない場合が多いです。(特に新規で作成した場合)
ssh画面でまず「sudo chmod 755 /home/volumio/spbuttonLED.py」と入力して、Enterキーを押します。
次に同様に「sudo chmod 755 /lib/systemd/system/spbuttonLED.service」と入力して、Enterキーを押します。
この操作は2つの新規作成のファイルにラズパイの中で使用する際の権限を付与するものです。

さらにサービスファイル「spbuttonLED.service」は、ラズパイの起動時に紐づけされたプログラムファイルを「読み込む」か「読み込まない」かを指定できますので、「読み込む」設定に指定します。
ssh画面で「sudo systemctl enable spbuttonLED.service」と入力して、Enterキーを押します。
(もし、「読み込まない」設定にしたい場合は、「sudo systemctl disable spbuttonLED.service」です。)

以上でプログラムの変更は完了です。

実際の動作は?

Volumio2を再起動して動作を確認します。

①電源ONにしてしばらくすると(50秒位)、ラズパイが起動して電源ランプが点灯。
②Volumio2が完全に起動した事を確認した後、ボタンを長押し(4~5秒)すると、シャットダウンが始まり、電源ランプが消灯。
③シャットダウンして完全にラズパイが休止中状態になっているのを確認した後、ボタンを押すとラズパイが起動スタートして、しばらくして電源ランプが点灯。

とりあえずは上手く動作しているようです。

コメント