作為一個(gè)硬件愛(ài)好者、嵌入式系統(tǒng)工程師、技術(shù)宅,樹(shù)莓派肯定是要玩一玩的,但是用的時(shí)間長(zhǎng)了總會(huì)發(fā)現(xiàn)它有一些不完美的地方,比如:沒(méi)有電源鍵!
常用的關(guān)機(jī)方法有兩種(外接屏幕和鍵盤(pán)的就不說(shuō)了):
1、遠(yuǎn)程登錄然后敲命令(這是最合適的關(guān)機(jī)方法,但是太麻煩,如果沒(méi)有電腦在身邊就沒(méi)法關(guān)機(jī)了)
2、拔電源(簡(jiǎn)單粗暴,但很容易導(dǎo)致文件損壞)
所以為了愉快的使用樹(shù)莓派,最好還是給它添加一個(gè)像電腦一樣的電源鍵,百度了一大圈發(fā)現(xiàn)國(guó)內(nèi)(沒(méi)錯(cuò),我就是針對(duì)國(guó)內(nèi),來(lái)來(lái)回回就那么幾篇文章,還反反復(fù)復(fù)互相抄)只有一種添加電源鍵的方法,那就是寫(xiě)個(gè)python腳本、或者其他腳本、或者編譯一個(gè)程序,反正原理都是一樣的,讓這個(gè)腳本(或程序)開(kāi)機(jī)啟動(dòng),程序中一直檢測(cè)設(shè)置為電源鍵的GPIO,如果被觸發(fā)則關(guān)機(jī)。這個(gè)方法雖然能解決問(wèn)題,但真的low爆了!!!而且只能關(guān)機(jī),不能開(kāi)機(jī)。
在這里跟大家分享一個(gè)非常優(yōu)雅,能關(guān)機(jī)也能開(kāi)機(jī)的方法:
其實(shí) /boot/overlays/README 里面已經(jīng)說(shuō)的很詳細(xì)了,為了造福廣大人民群眾,我就整理一下。
不少人看見(jiàn)英文就頭疼,而且這個(gè)文件有上千行,很少有人會(huì)仔細(xì)閱讀,這里我就只把電源相關(guān)的內(nèi)容摘錄出來(lái)(不同版本系統(tǒng)文件的內(nèi)容略有不同):
|
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 |
Name: gpio-shutdown Info: Initiates a shutdown when GPIO pin changes. The given GPIO pin is configured as an input key that generates KEY_POWER events. This event is handled by systemd-logind by initiating a shutdown. Systemd versions older than 225 need an udev rule enable listening to the input device: ACTION!="REMOVE", SUBSYSTEM=="input", KERNEL=="event*", SUBSYSTEMS=="platform", DRIVERS=="gpio-keys", ATTRS{keys}=="116", TAG+="power-switch" This overlay only handles shutdown. After shutdown, the system can be powered up again by driving GPIO3 low. The default configuration uses GPIO3 with a pullup, so if you connect a button between GPIO3 and GND (pin 5 and 6 on the 40-pin header), you get a shutdown and power-up button. Load: dtoverlay=gpio-shutdown,= Params: gpio_pin GPIO pin to trigger on (default 3) active_low When this is 1 (active low), a falling edge generates a key down event and a rising edge generates a key up event. When this is 0 (active high), this is reversed. The default is 1 (active low). gpio_pull Desired pull-up/down state (off, down, up) Default is "up". Note that the default pin (GPIO3) has an external pullup. |
這里已經(jīng)說(shuō)得很明白了,只要在 /boot/config.txt 中添加相關(guān)配置就能實(shí)現(xiàn)關(guān)機(jī)。
比如像這樣:
|
1 2 |
# 使用GPIO3(這里的GPIO指3BCM GPIO編號(hào),也就是SCL1)作為電源鍵,下降沿為按下,上升沿為彈起,內(nèi)部上拉 dtoverlay=gpio-shutdown |
保存并重啟,之后你只需要在GPIO3和GND之間接個(gè)按鍵就能實(shí)現(xiàn)關(guān)機(jī),是不是很簡(jiǎn)單?
開(kāi)始劃重點(diǎn)!!考試要考的!!記住了!!
不需要添加任何配置,正常關(guān)機(jī)后不切斷樹(shù)莓派電源,將GPIO3拉到低電平就能開(kāi)機(jī)!沒(méi)錯(cuò),這樣就實(shí)現(xiàn)了開(kāi)機(jī)鍵!如果不需要GPIO3做開(kāi)機(jī)鍵,請(qǐng)自行閱讀 /boot/overlays/README 中 gpio-poweroff 相關(guān)內(nèi)容
前面提到的配置默認(rèn)使用GPIO3,也就是SCL1作為電源鍵,占用了I2C接口,雖然可以用其他GPIO軟件模擬I2C,但顯然很不方便,最好如下改成其他GPIO,注意這樣改了以后這個(gè)GPIO口只能做關(guān)機(jī)鍵使用,開(kāi)機(jī)鍵還是GPIO3,目前我沒(méi)有找到自定義其他開(kāi)機(jī)鍵的方法。
|
1 2 |
# 使用gpio_pin=17,即GPIO_0(物理引腳PIN_11)做關(guān)機(jī)鍵 dtoverlay=gpio-shutdown,gpio_pin=17,active_low=1,gpio_pull=up |
GPIO3與SCL1沖突,具體表現(xiàn)為,當(dāng)啟用I2C以后,GPIO3做SCL1使用,因此只能使用GPIO3開(kāi)機(jī),不能關(guān)機(jī)。所以如果想只用一個(gè)按鍵作為開(kāi)、關(guān)機(jī)鍵,必須放棄硬件I2C,用其他引腳軟件模擬I2C;如果一定要即有開(kāi)、關(guān)機(jī)鍵又同時(shí)使用硬件I2C,那么就用GPIO3做開(kāi)機(jī)鍵,另外配置一個(gè)按鍵做關(guān)機(jī)鍵。
以上內(nèi)容我只在樹(shù)莓派3B+(系統(tǒng)版本:Raspbian Buster with desktop, Image with desktop based on Debian Buster, Version:July 2019, Release date:2019-07-10, Kernel version:4.19)上做過(guò)驗(yàn)證,其他版本不保證可用
/boot/overlays/README 中還有很多非常有用的配置,有興趣的同學(xué)自己去研究。
最后希望大家趕緊行動(dòng)起來(lái)!!拋棄那些 low 爆的開(kāi)關(guān)機(jī)按鍵方案吧!
-
I2C
+關(guān)注
關(guān)注
28文章
1556瀏覽量
131241 -
GPIO
+關(guān)注
關(guān)注
16文章
1328瀏覽量
56230 -
樹(shù)莓派
+關(guān)注
關(guān)注
122文章
2078瀏覽量
110471
發(fā)布評(píng)論請(qǐng)先 登錄
純硬件電路如何實(shí)現(xiàn)一鍵開(kāi)關(guān)機(jī)功能
單鍵開(kāi)關(guān)機(jī)
請(qǐng)問(wèn)一鍵開(kāi)關(guān)機(jī)電路怎么設(shè)計(jì)?
如何給樹(shù)莓派添加開(kāi)、關(guān)機(jī)鍵
如何給樹(shù)莓派添加一個(gè)開(kāi)、關(guān)機(jī)按鍵
一鍵開(kāi)關(guān)機(jī)電路方案
單片機(jī)一鍵開(kāi)關(guān)機(jī)電路的相關(guān)資料分享
一鍵開(kāi)關(guān)機(jī)電路問(wèn)題
電腦自動(dòng)開(kāi)關(guān)機(jī)的方法 電腦定時(shí)開(kāi)關(guān)機(jī)
給樹(shù)莓派添加開(kāi)關(guān)機(jī)鍵
給樹(shù)莓派添加一個(gè)開(kāi)、關(guān)機(jī)按鍵(原創(chuàng))
單片機(jī) 一鍵開(kāi)關(guān)機(jī) 軟件結(jié)合
軟件配合實(shí)現(xiàn)的“一鍵開(kāi)關(guān)機(jī)電路
原來(lái)小米手機(jī)電源鍵除了開(kāi)關(guān)機(jī),還隱藏這3大用法,真是厲害了
一鍵開(kāi)關(guān)機(jī)電路的工作原理是什么
如何才能給樹(shù)莓派添加開(kāi)關(guān)機(jī)鍵
評(píng)論