用樹莓派從零開始作一個家庭監控

歡迎轉載,但請註明出處 http://www.cnblogs.com/chuxiuhonghtml

先說好,咱們的家庭監控是每分鐘的照片的監控,並非真正的實時視頻,這種實時視頻樹莓派性能可能不夠。python

咱們這一次工程的大致步驟:
image0git

硬件準備

咱們至少須要一個樹莓派3,樹莓派的攝像頭,一個tf卡(16G,class10的比較推薦),出於便於傳數據,你最好還有讀卡器或者SD卡套,經常使用的USB鼠標,USB鍵盤,HDMI接口的顯示器(這個有則最好,沒有會麻煩可是也能搞定,我默認你有)github

首先看看咱們的樹莓派長成什麼樣子:shell

image1

它有四個USB接口,一個網線口,一個HDMI接口,一個攝像頭的接口,還有電源口,還有一些不是很經常使用的口,以及GPIO。服務器

看看咱們的攝像頭長成什麼樣子markdown

image2

很簡單的一個小攝像頭,大概500W像素,淘寶通常賣35左右。工具

除了上面的兩個咱們要求是統一的,至於鍵盤鼠標顯示器我都無論你用的什麼型號的。性能

安裝系統和基本設置

安裝系統這方面的教程網上實在是太多了,不須要搜英文的資料,只需看看百度的結果就能夠完美解決。下面我默認樹莓派上的系統已經作完了。url

在樹莓派上進入終端(若是選擇debian系統的話,和Ubuntu的操做基本同樣),執行

sudo raspi-config

出現下面的頁面

image3

先選擇第一項,擴充文件系統,讓樹莓派能夠徹底的佔有你的tf卡。完事以後可能須要重啓,重啓以後咱們仍是執行上述命令,而後仍是來到這個頁面,選擇選擇第五項,而後一直選OK,打開攝像頭的接口。

而後咱們關機

sudo shutdown -h now

或者是乾脆直接斷電源其實也沒有問題。

警告!!!!!!!!!!!!!!!!!!!!!!!!!
絕對不能夠帶着電源的狀況下插入攝像頭,若是帶電操做,十之八九你的攝像頭會GG,博主血淚教訓。並且攝像頭GG了以後每次調用仍是會亮燈,只是你接受不到數據,這個問題我已經Google了很長時間,老外們也是一臉懵逼,你們廣泛認爲應該是被燒壞了= =

咱們把攝像頭插到樹莓派上,如圖:

image5

image6

須要將攝像頭底下那個藍色的一面朝向USB接口那個方向,不要插反了。

等到你都安裝完畢了,確保鏈接好各個硬件以後再給電源。(千萬記得不要熱插拔攝像頭)

準備七牛雲

爲何很是突兀的在這裏提到七牛雲,緣由是咱們總須要一個存儲監控的數據的空間,本身寫一個簡單的服務器代碼也是能夠,不過雲服務器如今便宜的帶寬過小,貴的咱們窮苦學生又玩不起,不如用一個七牛雲,簡單還免費。(實名註冊用戶擁有10G免費空間,題主markdown的圖片外鏈都是拿這兒作的)

首先咱們來到七牛雲官網,註冊帳號 http://www.qiniu.com/

登陸以後,如圖操做

image6

image7

image8

把這這個密鑰對存起來,咱們一會用

image9

咱們須要新建一個倉庫,點開以後本身任意選節點,其實國內的幾個節點速度都差很少,徹底能夠知足需求。

之後咱們獲取的監控照片就能夠來這裏查詢

代碼

下面的代碼既能夠如今本地上寫以後再用github克隆過去或者是U盤copy過去,或者是直接在樹莓派上寫均可以,不過記得若是是前者,那麼安裝第三方庫和配置東西要同步配置。

首先,咱們寫一個.sh腳本
take_photo.sh

raspistill -o current_photo.jpg
python test.py

而後安裝七牛雲的python SDK,在命令行內執行

sudo pip install qiniu

在take_photo.sh同目錄下咱們創建一個test.py

# -*- coding: utf-8 -*-

import time
from qiniu import Auth, put_file, etag, urlsafe_base64_encode
import qiniu.config
import os
#須要填寫你的 Access Key 和 Secret Key
access_key = '' #這裏的密鑰填上剛纔我讓你記住的密鑰對
secret_key = '' #這裏的密鑰填上剛纔我讓你記住的密鑰對

#構建鑑權對象
q = Auth(access_key, secret_key)

#要上傳的空間
bucket_name = 'mypi'

#上傳到七牛後保存的文件名
key = '%s_%s_%s_%s_%s_%s.jpg'%(time.localtime()[0],time.localtime()[1],time.localtime()[2],time.localtime()[3],time.localtime()[4],time.localtime()[5])

#生成上傳 Token,能夠指定過時時間等
token = q.upload_token(bucket_name, key, 3600)

#要上傳文件的本地路徑
localfile = 'current_photo.jpg'

ret, info = put_file(token, key, localfile)

filename = 'current_photo.jpg'
if os.path.exists(filename):
    os.remove(filename)

這樣一來,咱們每次執行take_photo.sh腳本,均可以讓樹莓派拍一張照片而且發送到七牛雲上,咱們只需登陸就能看見下面這樣的數據

image10
文件命名是以年月日時分秒的方式命名的

可是這樣咱們總不可能手動的一次次執行,那樣也不叫監控了。最簡單的想法,咱們能夠利用Linux的定時任務crontab管理這個腳本

進入命令行,執行

crontab -e

image11
在末尾追加上

* * * * * /home/pi/take_photo.sh

而後按Ctrl+x,按Y,保存修改。
以後重啓cron

sudo service cron restart

而後咱們的定時監控就完成了!把它安放到想要的位置,它會每分鐘拍下照片而且發送到七牛雲,你可使用七牛雲的本地同步工具qshell來方便的查看更新照片。

qshell使用教程 http://developer.qiniu.com/code/v6/tool/qshell.html

寫代碼的時候自動拍攝的樣圖:
image12

image13

其實本文涉及的內容僅僅是咱們一門課程中的小項目三分之一的部分,本來的用途也不是做爲家庭監控的,但拿出來與你們分享,不管你是從頭至尾實現這個監控器,仍是取一小段用於他途,只要有幫助就好。

博客保持更新,願意來定時看我腦洞的,請關注我

相關文章
相關標籤/搜索