0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何才能給樹莓派添加開關(guān)機(jī)鍵

Wildesbeast ? 來源:未知 ? 作者:blog.csdn.net bxgj ? 2019-10-13 09:11 ? 次閱讀

作為一個硬件愛好者、嵌入式系統(tǒng)工程師、技術(shù)宅,樹莓派肯定是要玩一玩的,但是用的時間長了總會發(fā)現(xiàn)它有一些不完美的地方,比如:沒有電源鍵!

常用的關(guān)機(jī)方法有兩種(外接屏幕和鍵盤的就不說了):

1、遠(yuǎn)程登錄然后敲命令(這是最合適的關(guān)機(jī)方法,但是太麻煩,如果沒有電腦在身邊就沒法關(guān)機(jī)了)

2、拔電源(簡單粗暴,但很容易導(dǎo)致文件損壞)

所以為了愉快的使用樹莓派,最好還是給它添加一個像電腦一樣的電源鍵,百度了一大圈發(fā)現(xiàn)國內(nèi)(沒錯,我就是針對國內(nèi),來來回回就那么幾篇文章,還反反復(fù)復(fù)互相抄)只有一種添加電源鍵的方法,那就是寫個python腳本、或者其他腳本、或者編譯一個程序,反正原理都是一樣的,讓這個腳本(或程序)開機(jī)啟動,程序中一直檢測設(shè)置為電源鍵的GPIO,如果被觸發(fā)則關(guān)機(jī)。這個方法雖然能解決問題,但真的low爆了?。?!而且只能關(guān)機(jī),不能開機(jī)。

在這里跟大家分享一個非常優(yōu)雅,能關(guān)機(jī)也能開機(jī)的方法:

其實 /boot/overlays/README 里面已經(jīng)說的很詳細(xì)了,為了造福廣大人民群眾,我就整理一下。

不少人看見英文就頭疼,而且這個文件有上千行,很少有人會仔細(xì)閱讀,這里我就只把電源相關(guān)的內(nè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)說得很明白了,只要在 /boot/config.txt 中添加相關(guān)配置就能實現(xiàn)關(guān)機(jī)。

比如像這樣:

1
2
# 使用GPIO3(這里的GPIO指3BCM GPIO編號,也就是SCL1)作為電源鍵,下降沿為按下,上升沿為彈起,內(nèi)部上拉
dtoverlay=gpio-shutdown

保存并重啟,之后你只需要在GPIO3和GND之間接個按鍵就能實現(xiàn)關(guān)機(jī),是不是很簡單?

開始劃重點??!考試要考的??!記住了??!
不需要添加任何配置,正常關(guān)機(jī)后不切斷樹莓派電源,將GPIO3拉到低電平就能開機(jī)!沒錯,這樣就實現(xiàn)了開機(jī)鍵!如果不需要GPIO3做開機(jī)鍵,請自行閱讀 /boot/overlays/README 中 gpio-poweroff 相關(guān)內(nèi)容

前面提到的配置默認(rèn)使用GPIO3,也就是SCL1作為電源鍵,占用了I2C接口,雖然可以用其他GPIO軟件模擬I2C,但顯然很不方便,最好如下改成其他GPIO,注意這樣改了以后這個GPIO口只能做關(guān)機(jī)鍵使用,開機(jī)鍵還是GPIO3,目前我沒有找到自定義其他開機(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開機(jī),不能關(guān)機(jī)。所以如果想只用一個按鍵作為開、關(guān)機(jī)鍵,必須放棄硬件I2C,用其他引腳軟件模擬I2C;如果一定要即有開、關(guān)機(jī)鍵又同時使用硬件I2C,那么就用GPIO3做開機(jī)鍵,另外配置一個按鍵做關(guān)機(jī)鍵。

以上內(nèi)容我只在樹莓派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)上做過驗證,其他版本不保證可用

/boot/overlays/README 中還有很多非常有用的配置,有興趣的同學(xué)自己去研究。

最后希望大家趕緊行動起來?。仐壞切?low 爆的開關(guān)機(jī)按鍵方案吧!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1487

    瀏覽量

    123771
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1204

    瀏覽量

    52104
  • 樹莓派
    +關(guān)注

    關(guān)注

    116

    文章

    1707

    瀏覽量

    105648
收藏 人收藏

    評論

    相關(guān)推薦

    純硬件電路如何實現(xiàn)一開關(guān)機(jī)功能

    以前我們也分析過軟件一開關(guān)機(jī)電路,但這種電路有一個弊端,當(dāng)軟件程序跑飛時將無法關(guān)機(jī),用純硬件的電路路將避免這種情況的出現(xiàn)。
    的頭像 發(fā)表于 02-17 14:49 ?1.2w次閱讀
    純硬件電路如何實現(xiàn)一<b class='flag-5'>鍵</b><b class='flag-5'>開關(guān)機(jī)</b>功能

    單鍵開關(guān)機(jī)

    在很多移動設(shè)備中都需要單鍵開關(guān)機(jī)電路,有的是由分立器件組成,有的是用IC,是否有開關(guān)機(jī)電路,及穩(wěn)定又經(jīng)濟(jì)呢?大師們,拍過來吧
    發(fā)表于 02-12 16:02

    請問一開關(guān)機(jī)電路怎么設(shè)計?

    各位大神,請問一開關(guān)機(jī)電路怎么設(shè)計?智能按鍵的芯片有哪些?
    發(fā)表于 05-31 04:36

    如何給樹莓添加開關(guān)機(jī)

    樹莓添加開、關(guān)機(jī)聲明本文由u013062709原創(chuàng),禁止二次修改發(fā)布。轉(zhuǎn)載及引用內(nèi)容請注明出處,并標(biāo)明本站網(wǎng)址。文中程序僅供學(xué)習(xí)使用,
    發(fā)表于 10-28 08:28

    如何給樹莓添加一個開、關(guān)機(jī)按鍵

    樹莓添加一個開、關(guān)機(jī)按鍵(原創(chuàng))聲明關(guān)鍵詞問題起因解決方案一、實現(xiàn)方式二、實現(xiàn)原理三、改進(jìn)方案聲明本文由曉宇(xiaoyu_ebox)原創(chuàng),轉(zhuǎn)載及引用內(nèi)容請注明出處,并標(biāo)明本站網(wǎng)址
    發(fā)表于 10-29 09:12

    開關(guān)機(jī)電路方案

    開關(guān)機(jī)電路方案一、先上一個低功耗的一開關(guān)機(jī)電路,這個電路的特點在于關(guān)機(jī)時所有三極管全部截止幾乎不耗電。原理很簡單:利用Q10的輸出與輸
    發(fā)表于 10-29 06:27

    單片機(jī)一開關(guān)機(jī)電路的相關(guān)資料分享

    單片機(jī)一開關(guān)機(jī)電路,多種方案可供選擇,有純硬件的也有軟硬結(jié)合的一開關(guān)機(jī)電路方案一、先上一個低功耗的一
    發(fā)表于 11-25 08:43

    開關(guān)機(jī)電路問題

    這是設(shè)計的一開關(guān)機(jī)電路,VBAT1是3.7v電池輸入,VBAT2是輸出。理論上上電時,由于按鍵沒按下,Q9(AO3401)不導(dǎo)通,但是實際是只要上電,Q9就導(dǎo)通,甚至我直接將Q8的3腳直接接地,Q9還是導(dǎo)通,請問是什么原有,電路設(shè)計不對嗎?
    發(fā)表于 01-11 10:25

    電腦自動開關(guān)機(jī)的方法 電腦定時開關(guān)機(jī)

    電腦自動開關(guān)機(jī)的方法 電腦定時開關(guān)機(jī) 自動定時開機(jī)的實現(xiàn):首先在啟動計算機(jī)時,按“Delete”進(jìn)入BIOS界面。在BIOS設(shè)置主界面中
    發(fā)表于 01-27 09:52 ?4362次閱讀

    樹莓添加開關(guān)機(jī)

    樹莓添加開、關(guān)機(jī)聲明本文由u013062709原創(chuàng),禁止二次修改發(fā)布。轉(zhuǎn)載及引用內(nèi)容請注明出處,并標(biāo)明本站網(wǎng)址。文中程序僅供學(xué)習(xí)使用,
    發(fā)表于 10-21 15:51 ?12次下載
    給<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>添加開關(guān)機(jī)</b><b class='flag-5'>鍵</b>

    樹莓添加一個開、關(guān)機(jī)按鍵(原創(chuàng))

    樹莓添加一個開、關(guān)機(jī)按鍵(原創(chuàng))聲明關(guān)鍵詞問題起因解決方案一、實現(xiàn)方式二、實現(xiàn)原理三、改進(jìn)方案聲明本文由曉宇(xiaoyu_ebox)原創(chuàng),轉(zhuǎn)載及引用內(nèi)容請注明出處,并標(biāo)明本站網(wǎng)址
    發(fā)表于 10-22 10:06 ?8次下載
    給<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>添加</b>一個開、<b class='flag-5'>關(guān)機(jī)</b>按鍵(原創(chuàng))

    單片機(jī) 一開關(guān)機(jī) 軟件結(jié)合

    單片機(jī)一開關(guān)機(jī)電路,多種方案可供選擇,有純硬件的也有軟硬結(jié)合的一開關(guān)機(jī)電路方案一、先上一個低功耗的一
    發(fā)表于 11-16 19:21 ?15次下載
    單片機(jī) 一<b class='flag-5'>鍵</b><b class='flag-5'>開關(guān)機(jī)</b>  軟件結(jié)合

    軟件配合實現(xiàn)的“一開關(guān)機(jī)電路

    軟件配合實現(xiàn)的“一開關(guān)機(jī)電路”一開關(guān)機(jī)電路僅使用一個按鍵,就可以實現(xiàn)開機(jī)和關(guān)機(jī)的功能。這個電路可以令產(chǎn)品更加簡潔,好處是:1、避免了繁雜
    發(fā)表于 12-09 10:36 ?31次下載
    軟件配合實現(xiàn)的“一<b class='flag-5'>鍵</b><b class='flag-5'>開關(guān)機(jī)</b>電路

    原來小米手機(jī)電源除了開關(guān)機(jī),還隱藏這3大用法,真是厲害了

    說起手機(jī)電源是干嘛的,大家第一反應(yīng)就是開關(guān)機(jī),其實也沒錯,電源就是用來開關(guān)機(jī)和喚醒屏幕的,但是手機(jī)電源的功能并不只是如此,今天筆者就說
    發(fā)表于 01-07 10:36 ?11次下載
    原來小米手機(jī)電源<b class='flag-5'>鍵</b>除了<b class='flag-5'>開關(guān)機(jī)</b>,還隱藏這3大用法,真是厲害了

    開關(guān)機(jī)電路的工作原理是什么

    開關(guān)機(jī)電路的工作原理涉及多個電子元件的協(xié)同工作,主要包括MOS管、三極管、電容、電阻以及可能的單片機(jī)(MCU)等。 一、電路組成 一開關(guān)機(jī)電路通常由以下幾個關(guān)鍵元件組成: MOS
    的頭像 發(fā)表于 10-07 18:11 ?829次閱讀
    一<b class='flag-5'>鍵</b><b class='flag-5'>開關(guān)機(jī)</b>電路的工作原理是什么