ラズベリーパイに電源ボタンを追加

2022-09-05
Raspberry Pi 4
ハードウェア愛好家、組み込みシステム エンジニア、および技術オタクとして、Raspberry Pi は間違いなく遊びの対象ですが、長期間使用すると、電源ボタンがないなどの欠陥があることが常にわかります。
一般的に使用される 2 つのシャットダウン方法があります (外部スクリーンとキーボードは言うまでもありません)。
1. リモートでログインし、コマンドを入力します (これが最も適切なシャットダウン方法ですが、面倒です。周りにコンピューターがないとシャットダウンできません)。
2. 電源プラグを抜きます (単純で失礼ですが、ファイルの破損につながる可能性があります)。
Raspberry Pi を快適に使うためには、コンピュータのような電源ボタンを追加するのが最適です。 Baidu は多くの国内を見つけました (はい、私は中国をターゲットにしており、前後に移動する記事はわずかしかありませんが、相互に繰り返しコピーしていると思います) 電源ボタンを追加する方法は 1 つしかありません。 python スクリプトや他のスクリプトを書いたり、プログラムをコンパイルしたりしても、原則は同じです。スクリプト (またはプログラム) を起動すると、プログラムは常に電源キーに設定された GPIO を検出し、トリガーされた場合はシャットダウンします。この方法で問題は解決できますが、本当に低いです。 ! !また、オンにすることはできず、オフにすることしかできません。
ここでは、オンとオフを切り替えることができる非常にエレガントな方法を紹介します。
/boot/overlays/README を開いてよく読んでください
.これで今日の共有は終わりです、ありがとう。
実際、/boot/overlays/README には既に詳細に記述されています。一般大衆の利益になるように、私はそれを整理します。
多くの人は英語を見ると頭が痛くなりますが、このファイルは何千行もあり、注意深く読む人はほとんどいません。ここでは、電源に関連する内容のみを抽出します (システム ファイルの内容は、バージョンによって若干異なります)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
名前: gpio シャットダウン
情報: GPIO ピンが変化するとシャットダウンを開始します。指定された GPIO ピン
KEY_POWER イベントを生成する入力キーとして構成されます。
このイベントは、systemd-logind によって処理されます。
シャットダウン。 225 より古い Systemd バージョンには udev ルールが必要です
入力デバイスのリッスンを有効にします。
ACTION!="削除"、SUBSYSTEM=="入力"、KERNEL=="イベント*"、\
SUBSYSTEMS=="プラットフォーム", DRIVERS=="gpio キー", \
ATTRS{キー}=="116"、TAG+="電源スイッチ"
このオーバーレイは、シャットダウンのみを処理します。シャットダウン後、システム
GPIO3 を Low に駆動することで、再びパワーアップできます。デフォルト
構成はプルアップ付きの GPIO3 を使用するため、
GPIO3 と GND の間のボタン (40 ピンヘッダーのピン 5 と 6)、
シャットダウンおよび電源投入ボタンが表示されます。
ロード: dtoverlay=gpio-shutdown,=
Params: gpio_pin トリガーする GPIO ピン (デフォルト 3)
active_low これが 1 (アクティブ LOW) の場合、立ち下がり
edge はキー ダウン イベントを生成し、
立ち上がりエッジでキーアップ イベントが生成されます。
これが 0 (アクティブ ハイ) の場合、これは
逆。デフォルトは 1 (アクティブ LOW) です。
gpio_pull 必要なプルアップ/ダウン状態 (オフ、ダウン、アップ)
デフォルトは「上」です。
デフォルトのピン (GPIO3) には
外部プルアップ。
関連する構成が /boot/config.txt に追加されている限り、シャットダウンを実現できることがここで明確にされています。
たとえば、次のようにします。
1
2
# GPIO3 (ここでの GPIO は 3BCM GPIO 番号、つまり SCL1 を指します) を電源ボタンとして使用し、立ち下がりエッジを押し、立ち上がりエッジをバウンスし、内部プルアップを
dtoverlay = gpio シャットダウン
保存して再起動したら、GPIO3 と GND の間にボタンを接続してシャットダウンするだけです。簡単ではありませんか?
集中開始! !受験するべし! !覚えて! !
構成を追加する必要はありません。通常のシャットダウン後、ラズベリーパイ電源を切らずにGPIO3をローレベルにすることでオンにできる!そうです、それが電源ボタンです!電源オンボタンとして GPIO3 が必要ない場合は、/boot/overlays/README にある gpio-poweroff の関連内容を自分で読んでください。
上記の構成では、デフォルトで GPIO3、つまり I2C インターフェイスを占有する電源ボタンとして SCL1 を使用します。他の GPIO ソフトウェアを使用して I2C をシミュレートできますが、明らかに非常に不便です。以下のように他のGPIOに変更した方が良いです。 GPIO ポートは電源オフ キーとしてのみ使用でき、電源オン キーは引き続き GPIO3 です。現在、他のパワーオン キーをカスタマイズする方法が見つかりません。
1
2
# gpio_pin=17、つまり GPIO_0 (物理ピン PIN_11) をシャットダウン ボタンとして使用
dtoverlay=gpio-shutdown、gpio_pin=17、active_low=1、gpio_pull=up
GPIO3 は SCL1 と競合します。具体的な性能としては、I2C が有効な場合、GPIO3 が SCL1 として使用されるため、GPIO3 のみを使用して電源をオンにすることができますが、電源をオフにすることはできません。そのため、オン/オフ ボタンとして 1 つのボタンのみを使用する場合は、ハードウェア I2C を放棄し、他のピンを使用して I2C をシミュレートする必要があります。オン/オフ ボタンとハードウェア I2C を同時に使用する必要がある場合は、GPIO3 を電源オン ボタンとして使用し、さらにキーを電源オフ キーとして構成します。
上記内容のみ確認しましたラズベリーパイ 3B+(システムバージョン: Raspbian Buster with Desktop, Image with Desktop based on Debian Buster, Version:July 2019, Release date:2019-07-10, Kernel version:4.19), その他のバージョンは提供を保証しておりません
/boot/overlays/README には非常に便利な設定がたくさんあり、興味のある学生は自分で勉強できます。
最後に、皆さんが迅速に行動することを願っています! !これらの低爆発性スイッチ ボタン ソリューションを放棄してください!