跳到主要內容

Rapsberry Pi 的實作 - 製作一顆用來關機的電源按鈕

Rapsberry Pi 的實作 - 製作一顆用來關機的電源按鈕

 by  3月 13, 2017  2 意見          


「要是 Raspberry Pi 有關機按鍵,不知道有多好。上次因為忘了下指令關機,就直接把電源拔掉,結果害 SD 卡上的資料損壞,OS 重灌還算小事,更嚴重的是搞了好幾天的程式跟設定檔全沒了。」

事前準備

  • Raspberry Pi * 1
  • 按鈕開關 (Power Switch Button) * 1
  • 杜邦線 (Dupont line),規格是公對母 * 2
除了樹莓派之外,按鈕開關跟杜邦線在電子材料行就買的到,北部的朋友大多會到光華新天地附近,中部的朋友可以到電子街,南部的朋友大概就是去長明街找,至於東部 ....,我也不知道 XDDD

按鈕開關就選順手好按、接線方便為主就可以了,造型或大小就看各人喜好。

杜邦線很容易買,因為我們要接兩支 GPIO 腳,所以兩條就夠了。

也可以直接買現成的電腦 Power 或 Reset 開關線,我是直接拆故障 PC 機殼的開關來用。

連接硬體線路


我們把其中一條杜邦線母頭插在 Raspberry Pi 的 GPIO 3,公頭黏在按鈕開關的正極;另一條線的母頭插在 GPIO 3 上方的 Ground 接地,再把公頭黏在按鈕開關的負極。

這是 Raspberry Pi Model A / B 的 GPIO 的腳位圖。

這是 Raspberry Pi Zero / A+ / B+ / 2B / 3B 的腳位圖。

GPIO 3 是正極,通常是接有顏色的線,GND 是負極,習慣上會用白色的線。


輸入程式指令


新增一支 Python 程式來讓 GPIO 讀取 Power 開關的動作。
sudo vi /usr/local/bin/halt.py

輸入下列程式碼。
##### 我是分隔線 #####
#!/usr/bin/env python

# Import Libraries
import RPi.GPIO as GPIO
import subprocess

# Define GPIO Pin Number
gpioPin=3

# Define GPIO Function
GPIO.setmode(GPIO.BCM)
GPIO.setup(gpioPin, GPIO.IN)
GPIO.wait_for_edge(gpioPin, GPIO.FALLING)

# Command
subprocess.call(['shutdown', '-h', 'now'], shell=False)

##### 我是分隔線 #####

新增一支 Shell Script 讓我們方便管理。
sudo vi /etc/init.d/listening-for-shutdown.sh

輸入下列程式碼。
##### 我是分隔線 #####
#! /bin/sh

### BEGIN INIT INFO
# Provides:          listen-for-shutdown.py
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO


case "$1" in
  start)
    echo "Starting listening-for-shutdown"
    sudo python /usr/local/bin/halt.py &
    ;;
  stop)
    echo "Stopping listening-for-shutdown"
     sudo killall python
    ;;
  *)
    echo "Usage: service listening-for-shutdown {start|stop}"
    exit 1
    ;;
esac

exit 0

##### 我是分隔線 #####

讓程式在開機後自動啟動。
sudo update-rc.d listening-for-shutdown.sh defaults

也可以手動啟動服務。
sudo /etc/init.d/listening-for-shutdown.sh start


功能實測


有圖有真相,我們直接看一下實際使用的狀況。


我從 Mac 這邊一直 ping 它的 IP,可以看到本來是沒有回應,開機起來之後,才收到回應的封包;接著按下按鈕,它開始執行關機指令,所以就又變成 ping 不到了。


同場加映:改成 Reset 鍵


其實這個動作超級簡單,看得懂 Linux 指令的朋友應該都辦得到。

在 Python 程式碼的最後一行,執行的就是關機指令,我們只要把「-h」改成「-r」就行了。
subprocess.call(['shutdown', '-r', 'now'], shell=False)


參考資料

圖片來源
  • https://pixabay.com/
  • http://www.itweba.com/zh-TW/category/12mm-/A0201.html
  • https://ezprice.com.tw/s/%E9%96%8B%E9%97%9C%E7%B7%9A/price/

更新紀錄
  • 2017/03/13 發文。

留言

這個網誌中的熱門文章

2017通訊大賽「聯發科技物聯網開發競賽」決賽團隊29強出爐!作品都在11月24日頒獎典禮進行展示

2017通訊大賽「聯發科技物聯網開發競賽」決賽團隊29強出爐!作品都在11月24日頒獎典禮進行展示 LIS   發表於 2017年11月16日 10:31   收藏此文 2017通訊大賽「聯發科技物聯網開發競賽」決賽於11月4日在台北文創大樓舉行,共有29個隊伍進入決賽,角逐最後的大獎,並於11月24日進行頒獎,現場會有全部進入決賽團隊的展示攤位,總計約為100個,各種創意作品琳琅滿目,非常值得一看,這次錯過就要等一年。 「聯發科技物聯網開發競賽」決賽持續一整天,每個團隊都有15分鐘面對評審團做簡報與展示,並接受評審們的詢問。在所有團隊完成簡報與展示後,主辦單位便統計所有評審的分數,並由評審們進行審慎的討論,決定冠亞季軍及其他各獎項得主,結果將於11月24日的「2017通訊大賽頒獎典禮暨成果展」現場公佈並頒獎。 在「2017通訊大賽頒獎典禮暨成果展」現場,所有入圍決賽的團隊會設置攤位,總計約為100個,展示他們辛苦研發並實作的作品,無論是想觀摩別人的成品、了解物聯網應用有那些新的創意、尋找投資標的、尋找人才、尋求合作機會或是單純有興趣,都很適合花點時間到現場看看。 頒獎典禮暨成果展資訊如下: 日期:2017年11月24日(星期五) 地點:中油大樓國光廳(台北市信義區松仁路3號) 我要報名參加「2017通訊大賽頒獎典禮暨成果展」>>> 在參加「2017通訊大賽頒獎典禮暨成果展」之前,可以先在本文觀看各團隊的作品介紹。 決賽29強團隊如下: 長者安全救星 可隨意描繪或書寫之電子筆記系統 微觀天下 體適能訓練管理裝置 肌少症之行走速率檢測系統 Sugar Robot 賽亞人的飛機維修輔助器 iTemp你的溫度個人化管家 語音行動冰箱 MR模擬飛行 智慧防盜自行車 跨平台X-Y視覺馬達控制 Ironmet 菸消雲散 無人小艇 (Mini-USV) 救OK-緊急救援小幫手 穿戴式長照輔助系統 應用於教育之模組機器人教具 這味兒很台味 Aquarium Hub 發展遲緩兒童之擴增實境學習系統 蚊房四寶 車輛相控陣列聲納環境偵測系統 戶外團隊運動管理裝置 懷舊治療數位桌曆 SeeM智能眼罩 觸覺點字學習系統
2019全台精選3+個燈會,週邊順遊景點懶人包 2019燈會要去哪裡看?全台精選3+個燈會介紹、週邊順遊景點整理給你。 東港小鎮燈區-鮪鮪到來。 2019-02-15 微笑台灣編輯室 全台灣 各縣市政府 1435 延伸閱讀 ►  元宵節不只看燈會!全台元宵祭典精選、順遊景點整理 [屏東]2019台灣燈會在屏東 2/9-3/3:屏東市 · 東港鎮 · 大鵬灣國家風景區 台灣燈會自1990年起開始辦理,至2019年邁入第30週年,也是首次在屏東舉辦,屏東縣政府與交通部觀光局導入創新、科技元素,融入在地特色文化設計,在東港大鵬灣國家風景區打造廣闊的海洋灣域燈區,東港鎮結合漁港及宗教文化的小鎮燈區,及屏東市綿延近5公里長的綵燈節河岸燈區,讓屏東成為璀璨的光之南國,迎向國際。 詳細介紹 ►  2019台灣燈會在屏東 第一次移師國境之南 大鵬灣燈區 主題樂園式燈會也是主燈所在區,區內分為農業海洋燈區、客家燈區、原住民燈區、綠能環保燈區、藝術燈區、宗教燈區、競賽花燈及317個社區關懷據點手作的萬歲光廊等。 客家燈籠隧道。 平日:周一~周四14:00-22:30(熄燈) 假日:周五~周六10:00-22:30(熄燈)  屏東燈區: 萬年溪畔 屏東綵燈節藍區-生態。 綵燈節--每日17:30 - 22:00(熄燈) 勝利星村--平日:14:00 - 22:30(熄燈) 假日:10:00 - 22:30(熄燈) 燈區以「彩虹」為主題,沿著蜿蜒市區的萬年溪打造近5公里長的光之流域,50組水上、音樂及互動科技等不同類型燈飾,呈現紅色熱情、橙色活力、黃色甜美、綠色雄偉、藍色壯闊、靛色神祕、紫色華麗等屏東風情。勝利星村另有懷舊風的燈飾,及屏東公園聖誕節燈飾。 東港小鎮燈區 東港小鎮燈區-鮪鮪到來。 小鎮燈區以海的屏東為主題,用漁港風情及宗教文化內涵規劃4個主題區,分別為張燈結綵趣、東津好風情、神遊幸福海、延平老街區。每日17:00~22:30(熄燈) 以上台灣燈會資料來源: 2019台灣燈會官網 、 i屏東~愛屏東 。 >> 順遊行程 小吃旅行-東港小鎮 東港小吃和東港人一樣,熱情澎湃而且誠意滿滿,從市街找到巷裡,早餐吃到宵夜,可惜
自製直播音源線 Bird Liang   October 6, 2016   in  View Bird Liang, Chief Engineer (梁子凌 / 技術長兼工程輔導長) 負責 AppWorks 技術策略與佈署,同時主導工程輔導。人生的第一份正職工作是創業,之後在外商圈電子業中闖蕩多年,經歷過 NXP、Sony、Newport Imagining、Crossmatch 等企業,從事無線通訊、影像系統、手機、面板、半導體、生物辨識等不同領域產品開發。熱愛學習新事物,協助團隊解決技術問題。放棄了幾近退休般的生活加入 AppWorks,為的是幫助更多在創業路上的人,並重新體驗創業的熱情。台大農機系、台科大電子所畢業,熱愛賞鳥、演奏管風琴,亦是不折不扣的熱血 Maker。 隨著 Facebook 開放一般帳號直播,現在我們只要拿起手機,隨時隨地都可以開始直播。回想幾年前 AppWorks 剛開始進行 Demo Day 直播時,還要將 HDMI 訊號接進 PC 中、再編碼打進 YouTube 的複雜度,實不可同日而語。 但用手機或平板直播最大的問題往往不是影像而是聲音。iPhone 或 iPad 上的攝影機,感度和解析度早已不輸數年前的專業攝影機,只要現場光不太差,大概都可以拍出令人滿意的畫面。但直播的聲音一直是個大問題,手機上的麥克風跟人耳所聽到的聲音其實有很大的差距,在比較大的場子裡,光是仰賴內建麥克風的收音多半無法有令人滿意的效果。 在大型的活動中,現場通常會有 PA 系統,最理想的方式還是想辦法將 PA 的訊號餵進 iPad 或 iPhone 中,保證聲音乾淨又清楚,絕對不會有其它有的沒的現場音。 iPhone 的耳機孔雖然可以插帶有麥克風的耳機 (如 Apple 原廠的 EarPods),但它的訊號位準是電容式麥克風的位準。PA 控台的輸出幾乎都是 line level 的,兩者的訊號電壓相差百倍以上,我們得做個小東西來解決這個差距。 Line 與 Mic 在 mixer 上,我們常會看到輸入可以在兩種規格中切換: line level 和 mic level。Mic level 顧名思義就是從麥克風來的訊號,這個訊號的規格是從不需供電的傳統動圈麥克風來的。因為不需供電,所有的訊號都來自於聲壓