シャットダウン・起動用の押しボタンとUSBメモリやmicroSDカードへのアクセス状況を表示するSTATUS LED(ACT LED)をGPIOに接続した「LED付き押しボタンスイッチ」に割り当てた際の作業メモです。GPIOにつないだLED付き押しボタンスイッチとconfig.txtファイル編集で実現できる便利機能です。
GPIOの確認と割り当て
今回、シャットダウンと起動の制御にGPIO3、外付けのACT表示用LED制御にGPIO24を割り当てました。
GPIOの状態(INPUT、OUTPUTなど)をraspi-gpio getで確認します。
sudo raspi-gpio get
GPIO 番号 | 番号 | ピン割り当てた機能 |
GPIO3 | 5 | シャットダウンと起動 |
GPIO24 | 18 | ACT表示用外付けLED |

GPIO and the 40-pin Header | raspberrypi.orgより引用して追記

1 つの押しボタンスイッチでシャットダウンと起動を行う設定
Raspberry Pi 4BやRaspberry Pi Compute Module 4(CM4)はデフォルトで、
・稼働中にGPIO3(ピン番号 5)とGNDが短絡したときにシャットダウン
・シャットダウン状態で GPIO3 と GND を短絡すると起動
を1つのスイッチで実現できます。
この設定は物理的に電源遮断するものではないので、電源を立ち上げ直す必要がある時は電源コネクタを挿し直す(電源スイッチをON/OFfする)必要があります。
nanoを起動してconfig.txtファイルを編集して、シャットダウンの設定を追加します。
sudo nano /boot/config.txt
少し触ったりしても電源が落ちないように、2秒長押しでシャットダウンするようにdebounce=2000(デフォルトは100)を追加しました。
dtoverlay=gpio-shutdown,gpio_pin=3,debounce=2000
config.txtに上書き保存した後、設定反映するためにシャットダウンします。この後は、ボタンスイッチを押すことで起動とシャットダウンができます。
詳細はインストールしたRaspberry Pi OSの/boot/overlays/READMEを「gpio-shutdown」で検索するとヒットします。
GPIO3はI2C 用のピンを兼ねているのでI2Cを利用している場合、シャットダウン機能はGPIO5など他のピンに割り当てます(起動はGPIO3に割り当てられた機能なので変わりません)。
基板上のACT LED(緑)をGPIOに接続した外部LED表示に設定変更
Raspberry pi 4B基板上のSTATUS LED(ACT LED)出力をGPIO24につながった外部LEDへの出力に切替える設定です。
config.txtに下記を記述します。
dtparam=act_led_gpio=24
再起動すればラズパイ基板上の緑色のLEDは消灯、GPIOに接続した外付けLEDが点滅するようになります。
起動時やシャットダウン時の一時期は基板上のACT LED表示になります。

ケースへの組み込み、動作確認
ケースへの組み込みが容易な押しボタンスイッチとLEDが一体となった「LED付押しボタンスイッチ」を使いました。
現在、Raspberry Pi 4Bを格納しているケースの前面には、このLED付き押しボタンスイッチの直径と同じ寸法のカメラ取付用の丸穴が開いているので穴あけ加工が必要がなく好都合でした。
LEDには電流制限抵抗を直列につないてGPIOに結線します。

# | パーツ | 個数 | 備考 |
1 | 押しボタンスイッチ (青LED付) | 1 | P-04075 ※白塗料が付いている端子がカソード ※モーメンタリ動作 押している間スイッチが入る |
2 | 電流制限抵抗 330Ω 1/4W | 1 | ※好みの明るさで調整 |
3 | ジャンパーワイヤ | 適量 |

