自己的 Dropcam 自己 Make

用 Raspberry Pi 和 Node.js 做網路攝影機,並且在任何裝置上觀看直播。

前情提要

我家有養三隻狗,牠們常常趁家裡沒人的時候搞破壞。前陣子我看到 Dropcam,一台網路直播攝影機,讓我不在家時也能用手機監控我家的狗,這正是我需要的!但是 Dropcam 價格不菲,一台 199 鎂,月薪不到 7k 的我實在買不下手。身為程序猿,只好自己土炮一台囉!

所有的程式碼我都已經放在 Github 上,如果你熟悉 Node.js,建議你直接去看看。

不會 Node.js 也沒關係,接下來我會教你如何將樹莓派(Raspberry Pi)打造成 Dropcam,並部署自己的雲端伺服器。在我們開始前,你的樹莓派必須先準備好:

  1. 連到網路;
  2. 接上相機模組;
  3. 安裝 Node.js。

2, 3 可參考我之前寫的樹莓派 相機模組安裝Node.js 安裝

簡單的做法

structure of raspicam-live 我們的目標是把樹莓派當作網路相機,讓我們可以在電腦、手機、平板或任何裝置的瀏覽器上觀看直播。達成這個目標的最簡單的做法是讓樹莓派不斷拍照(.jpg 檔),然後把一張張照片透過伺服器傳到瀏覽器上顯示出來。這個系統的架構分成三部分:

Client

裝載相機模組的樹莓派,負責拍照並將圖片傳給 server。

Web

觀看直播的地方,只要有瀏覽器哪裡都行。

Server

是整個架構的核心,負責接收來自 client 的圖片,並將圖片傳給 web 端。

事實上 client 和 server 可以是同一台樹莓派,不過為了讓我們更容易地隨時隨地觀看直播,把 sever 部署在雲端上才是比較實際的做法。接下來讓我教你如何無痛上雲。

3 秒上雲端

拜雲端技術進步之賜,現在我們只需要按一個按鈕就可以把我們的 server 部署在雲端了,不會寫 code 也完全沒問題!

  1. 你必須有 Heroku 的帳號。Heroku 每個月提供 750 小時免費優惠,所以放心註冊吧。
    注意: 750 免費額度是指小時乘上 dyno(機器單位)。

  2. 申請好帳號後,點下面這個連結。對,就是這顆神奇的按鈕 XD
    Deploy

  3. 接著會進入設定頁面,直接點 Deploy for Free deploy to heroku

  4. 等個幾分鐘,讓 Heroku 幫我們開好機器。看到都亮綠燈就完成啦,快告訴朋友你上雲端囉!點 View it 就可以看到熱騰騰的網頁。 deploy success

  5. 記得把網址複製下來,等下還會用到(例如我的是 https://agile-refuge-4106.herokuapp.com
    web

到目前為止,我們已經完成 server 和 web 這兩部分囉!接下來就是 client 端部署。

部署樹莓派

打開樹莓派(要能連上網,且安裝好 Node.js),進入 terminal 依序輸入

git clone https://github.com/wuct/raspicam-live.git  
cd raspicam-live && npm install --production  

樹莓派會開始下載需要的套件,這步驟可能會需要幾分鐘。 npm install

都下載好後,輸入

SERVER_URL=[server的網址] node client/client  

SERVER_URL 後面就是放 server 的網址,例如我輸入的是

SERVER_URL=https://agile-refuge-4106.herokuapp.com node client/client  

接下來樹莓派就會自己連線到我們的 server,連線成功後就會開啟相機(相機上的紅色指示燈會亮起來),最後就會開始發送 .jpg 圖片給 server。我們只要打開瀏覽器,輸入 server 的網址,就可以觀看直播啦!如果要關閉,按下 ctrl+C 就可以了。 rapicam

因為 Heroku 主機在美國,所以 fps 有點低,我自己測試是大概 0.7 ~ 1.5 fps。免費的將就用囉。 live

樹莓派要去哪裡買?

如果你已經有樹莓派了,可以跳過這段。

如果還沒有,趕快弄一台吧!網路上很多店家在賣,可以稍微比價一下。Raspberry Pi Model B+ 加 Camera Module 約兩千。另外還需要準備 micro SD 卡和電源線。micro SD 卡可以用官方的,差別在有預先幫你存好一個 zip 檔在裡面,直接插上就可以用。電源線跟 Android 的一樣,很好找。如果要連 wifi 要再多買一個 USB wifi 網卡(建議買這顆)。全部加起來三千有找。另外你還會需要 USB 鍵盤、滑鼠,還有 HDMI 線和螢幕。

如何讓直播更流暢?

下一篇文章我會教大家怎麼把 server 放在 Amazon 在東京的雲端主機上(只比 Heroku 稍微複雜一點,網速卻快很多),並設定相機模組,提升 fps 讓直播更流暢。有興趣的話,請記得訂閱我的部落格 :D