使用樹莓派構建一個嬰兒監視器
比一般的影片監控還要好,這種 DIY 型號還有嬰兒房間的自動室溫控制功能。
香港很溼熱,即便是晚上,許多人為了更舒適,在家裡也使用空調。當我的大兒子還是一個小嬰兒的時候,他臥室的空調還是需要手動控制的,沒有溫度自動調節的功能。它的控制器只有開或者關,讓空調整個晚上持續執行會導致房間過冷,並且也浪費能源和錢。
我決定使用一個基於 樹莓派 的 物聯網 解決方案去修復這個問題。後來我進一步為它新增了一個嬰兒監視器外掛。在這篇文章中,我將解釋我是如何做的,它的程式碼在 我的 GitHub 頁面上。
設計空調控制器
解決我的問題的第一個部分是使用了一個 Orvibo S20 可透過 WiFi 連線的智慧插頭和智慧手機應用程式。雖然這樣可以讓我透過遠端來控制空調,但是它還是手動處理的,而我希望嘗試讓它自動化。我在 Instructables 上找到了一個滿足我的需求的專案:他使用樹莓派從一個 AM2302 感測器 上測量附近的溫度和溼度,並將它們記錄到一個 MySQL 資料庫中。
使用壓接頭將溫度/溼度感測器連線到樹莓派的相應 GPIO 針腳上。幸運的是,AM2302 感測器有一個用於讀取的 開源軟體,並且同時提供了 Python 示例。
與我的專案放在一起的用於 AM2302 感測器 介面的軟體已經更新了,並且我使用的原始程式碼現在應該已經過時了,停止維護了。這個程式碼是由一個小的二進位制組成,用於連線到感測器以及解釋讀取並返回正確值的 Python 指令碼。
樹莓派、感測器、以及用於構建溫度/溼度監視器的 Python 程式碼。
將感測器連線到樹莓派,這些 Python 程式碼能夠正確地返回溫度和溼度讀數。將 Python 連線到 MySQL 資料庫很簡單,並且也有大量的使用 python-mysql 繫結的程式碼示例。因為我需要持續地監視溫度和溼度,所以我寫軟體來實現這些。
事實上,最終我用了兩個解決方案,一是作為一個持續執行的程式,週期性(一般是間隔一分鐘)地獲取感測器資料,另一種是讓 Python 指令碼執行一次然後退出。我決定使用第二種方法,並使用 cron 去每分鐘呼叫一次這個指令碼。之所以選擇這種方法的主要原因是,(透過迴圈實現的)持續的指令碼偶爾會不返回讀數,這將導致嘗試讀取感測器的程式出現堆積,最終可能會導致系統掛起而缺乏可用資源。
我也找到了可以用程式來控制我的智慧插頭的一個 Perl 指令碼。它是解決這種問題所需的一部分,因此當某些溫度/溼度達到觸發條件,將觸發這個 Perl 指令碼。在做了一些測試之後,我決定去設計一個獨立的 checking
指令碼,從 MySQL 去拉取最新的資料,然後根據返回的值去設定智慧開關為開或關。將插頭控制邏輯與感測器讀取指令碼分開,意味著它們是各自獨立執行的,就算是感測器讀取指令碼寫的有問題也沒事。
配置一個開啟/關閉空調的溫度值是很有意義的,因此,我將這些值轉移到控制指令碼讀取的配置檔案中。我也發現,雖然感測器的值一般都很準確,但是,偶爾也會出現返回不正確讀數的情況。這個感測器指令碼被修改為不向 MySQL 資料庫中寫入與前值差異非常大的值。同樣也在配置檔案中寫入了連續讀取的溫度/溼度之間允許的最大差異值,如果讀取的值處於這些限制值以外,這些值寫不會提交到資料庫中。
雖然,做這個自動調節器似乎花費了很多努力,但是,這意味著,記錄到 MySQL 資料庫的資料是有效的、可用於進一步去分析識別使用者使用模式的有用資料。可以用多種圖形方式去展示來自 MySQL 資料庫中的資料,而我決定使用 Google Chart 在一個 Web 頁面上顯示資料。
過去六小時內測量到的溫度和溼度
新增一個嬰兒監視攝像頭
樹莓派開放的效能意味著我可以不斷地為它增加功能 —— 並且我有大量的未使用的可用 GPIO 針腳。我的下一個創意是去新增一個攝像頭模組,將它放在孩子的臥室中,配置它去監視嬰兒。
我需要一個能夠在黑暗環境中工作的攝像頭,而 Pi Noir 攝像頭模組是非常適合這種條件的。Pi Noir 除了沒有紅外過濾之外,同樣也是樹莓派常用的攝像頭模組。這意味著它在白天時的影像可能有點偏紫色,但是它可以在黑暗中藉助紅外燈來顯示影像。
現在我需要一個紅外光源。由於樹莓派非常流行,並且進入門檻很低,因此它有大量的外圍配件和外掛。也有適合它的各種紅外光源,我注意到的其中一個是 Bright Pi。它可以從樹莓派上供電,並且它很適合為樹莓派的攝像頭模組提供紅外光和普通光。它唯一的缺點是太考驗我的焊接技能了。
我的焊接技能還是不錯的,但是可能花費的時間比其他人更長。我成功地連線了外殼上所有的紅外 LEDs,並將它們連線到樹莓派的 GPIO 針腳上。這意味著樹莓派能夠程式設計控制紅外 LED 是否點亮,以及它的亮度。
透過一個 Web 流去公開捕獲的影片也很有意義,因為這樣我就可以從 Web 頁面上檢視溫度和溼度的讀數圖表。進一步研究之後,我選擇了一個使用 M-JPEG 捕獲器的 流軟體。透過 Web 頁面公開 JPG 源,我可以在我的智慧手機上去連線攝像頭檢視程式,去檢視攝像頭的輸出。
做最後的修飾
沒有哪個樹莓派專案都已經完成了還沒有為它選擇一個合適的外殼,並且它有各種零件。在大量搜尋和比較之後,有了一個顯然的 贏家:SmartPi 的樂高積木式外殼。樂高的相容性可以讓我去安裝溫度/溼度感測器和攝像頭。下面是最終的成果圖:
在這以後,我對我的這個作品作了一些改變和更新:
- 我將它從樹莓派 2 Model B 升級到了 樹莓派 3,這意味著我可以使用 USB WiFi 模組。
- 我用一個 TP-Link HS110 智慧插頭替換了 Orvibo S20。
- 我也將樹莓派插到了一個智慧插頭上,這樣我就可以遠端重啟/重置它了。
- 我從樹莓派上將 MySQL 資料庫移走了,它現在執行在一個 NAS 裝置上的容器中。
- 我增加了一個非常 靈活的三角夾,這樣我就可以調整到最佳角度。
- 我重新編譯了 USB WiFi 模組,禁用了板載 LED 指示燈,這就是升級到樹莓派 3 的其中一個好處。
- 我因此為我的第二個孩子設計了另外一個監視器。
- 因為沒有時間去折騰,我為我的第三個孩子購買了夜用攝像頭。
想學習更多的東西嗎?所有的程式碼都在 我的 GitHub 頁面上。
想分享你的樹莓派專案嗎?將你的故事和創意傳送給我們。
via: https://opensource.com/article/18/3/build-baby-monitor-raspberry-pi
作者:Jonathan Ervine 譯者:qhwdw 校對:wxy
相關文章
- 硬核奶爸!用樹莓派做個「智慧嬰兒監視器」:啼哭自動通知,還能分析哭聲含義樹莓派
- 樹莓派使用入門:如何購買一個樹莓派樹莓派
- 樹莓派使用入門:如何啟動一個新的樹莓派樹莓派
- 樹莓派使用樹莓派
- 樹莓派使用入門:如何更新樹莓派樹莓派
- 使用樹莓派搭建區域網監控樹莓派
- 使用微信+樹莓派+Arduino+伺服器構建你的看門狗 ?樹莓派UI伺服器
- 樹莓派使用入門:用樹莓派學 Linux樹莓派Linux
- 使用樹莓派搭建Ubuntu伺服器樹莓派Ubuntu伺服器
- 樹莓派使用入門:如何用樹莓派來娛樂樹莓派
- 樹莓派使用入門:慶祝樹莓派的 14 天樹莓派
- 樹莓派搭建git伺服器 | 樹莓派小無相系列樹莓派Git伺服器
- 樹莓派:開機使用樹莓派
- 樹莓派自建 NAS 雲盤之——雲盤構建樹莓派
- 樹莓派使用入門:如何為樹莓派社群做出貢獻樹莓派
- 用樹莓派USB攝像頭做個監控樹莓派
- 教你如何使用樹莓派搭建區域網監控樹莓派
- 樹莓派-感測器篇樹莓派
- 樹莓派是什麼 樹莓派能做什麼 樹莓派的功能用途樹莓派
- 樹莓派來做電視盒子樹莓派
- 樹莓派:一個關於教育的故事樹莓派
- 如何用樹莓派搭建一個顆粒物感測器樹莓派
- 樹莓派使用入門:進入物理世界 —— 如何使用樹莓派的 GPIO 針腳樹莓派
- 使用樹莓派進行24小時視訊直播樹莓派
- 學習使用樹莓派的 7 個資源樹莓派
- 樹莓派搭建FTP伺服器樹莓派FTP伺服器
- 樹莓派搭建私人伺服器樹莓派伺服器
- 【.NET 與樹莓派】使用 GPIO 庫樹莓派
- 樹莓派CM4(四):樹莓派映象替換核心樹莓派
- 樹莓派筆記樹莓派筆記
- 樹莓派與FileZilla樹莓派
- 折騰樹莓派樹莓派
- 樹莓派裝opencv樹莓派OpenCV
- 新樹莓派入手樹莓派
- 樹莓派電臺樹莓派
- 將樹莓派配置成路由器樹莓派路由器
- 用樹莓派搭建svn伺服器樹莓派伺服器
- 在樹莓派用C#+Winform實現感測器監測樹莓派C#ORM