Making Fun│「Pi」除危險:用Raspberry Pi架設室內警報器

九月 12, 2013
Facebook
Twitter
我總在尋找教育孩子的好時機,而當我五歲的兒子拜託我不要讓他弟弟溜進房間搗亂的時候,我想到了一個好點子。首先我找時間教他輸入、輸出和程式設計的初階概念,上課目的如果是為了解決自己的問題,學習就不再是件苦差事了。
其實我可以用任何其他的方法作出一個簡單的警報系統,但我知道我想要超乎兒子的期待,製作一機多用的多功能裝置系統。我選中Raspberry Pi作為控制器因為它不僅方便連接網路、可播放MP3,也能連接鏡頭等可接USB的電腦周邊產品。除此之外,Raspberry Pi的通用型輸入輸出(GPIO)可連接按鈕、感應器、燈光等簡單的電子元件。

你可以在GitHub看到,我的警報系統程式碼比較簡單。利用Linux的多執行緒,我將工作分為兩個Python指令稿,其中一個指令稿(keypadd.py)負責審核鍵盤是否輸入有效的代碼。系統在開機後會自動設定為「卸除警備」的狀態,一旦偵測到警備/卸除警備的代碼,檔名為「armed.txt」的文字檔中位元會變更,系統狀態也隨之切換。

第二個Python指令稿(alarmd.py)透過Raspberry Pi的GPIO監控被動式紅外線感應器(PIR)。偵測到動作時,系統會檢查armed.txt檔案,確認系統是否為警備狀態,若答案為肯定,警報器就會作響。

在計畫進行期間我面臨了一些挑戰,進而影響我的設計決定:

  • 我最初使用一個稱為Motion的開放原始碼套裝軟體以及可接USB的相機來偵測動作,再接著觸發Python指令碼。可是動作偵測的反應很慢,而且我想要掌握更完整的動態過濾和事件時間。我後來改用另一個好用順手的3.3V被動式紅外線感應器,不但安裝容易,反應也很靈敏。
  • 鳴笛/警報器的聲音很耳熟吧,來源是Apple的免費版GarageBand。
  • 我想用Pi快速做出合成聲音的效果,但這台可憐的小電腦在開口前得耗費超久時間才反應得過來,所以我轉而使用我的Mac裡設有的Text-to-iTunes-Track(譯註:在iTunes輸入文字即能得到合成聲音檔的功能),用Mac製造合成聲音檔後,再把音檔複製到Pi。Python指令稿會叫出Pi的mpg123 MP3播放器並播出音檔。如果你還是想要用Raspberry Pi快速做出合成聲音檔,建議你先作點功課
  • 鍵盤功能的部份,我不用Scratch編寫程式碼,而是參考 Chris Crumpacker的資料庫用來讀取我的矩陣鍵盤
  • 我嘗試以很多不同的資料庫透過Python指令碼連接Twitter,TweerPony是我唯一覺得好用上手的。
  • 為了增加更多功能,未來我可能會用以不同的鍵盤指令碼啟動不同的系統功能,像是輸入1234可以使系統進入警備狀態,而輸入5678可讓系統一偵測到動作就傳送你家客廳的照片,讓你看到孩子回到家中的影像。現在的系統中,一個指令碼用來切換警備/卸除警備模式,另一個指令碼可讓Pi關機,安全拔除插頭。

其實還有更多進階的Raspberry Pi警報系統,但我希望傳達一個觀念──自己動手做也能簡單有趣又充滿教育性。快點親手試試吧,期待你的回報!

其他相關系列在這裡

BY JEFF HIGHSMITH

Social media & sharing icons powered by UltimatelySocial