1. 程式人生 > >用樹莓派從零開始做一個家庭監控

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

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

我們這一次工程的大體步驟:
image0

硬體準備

我們至少需要一個樹莓派3,樹莓派的攝像頭,一個tf卡(16G,class10的比較推薦),出於便於傳資料,你最好還有讀卡器或者SD卡套,常用的USB滑鼠,USB鍵盤,HDMI介面的顯示器(這個有則最好,沒有會麻煩但是也能搞定,我預設你有)

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

image1

它有四個USB介面,一個網線口,一個HDMI介面,一個攝像頭的介面,還有電源口,還有一些不是很常用的口,以及GPIO。

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

image2

很簡單的一個小攝像頭,大概500W畫素,淘寶一般賣35左右。

除了上面的兩個我們要求是統一的,至於鍵盤滑鼠顯示器我都不管你用的什麼型號的。

安裝系統和基本設定

安裝系統這方面的教程網上實在是太多了,不需要搜英文的資料,只需看看百度的結果就可以完美解決。下面我預設樹莓派上的系統已經做完了。

在樹莓派上進入終端(如果選擇debian系統的話,和Ubuntu的操作基本一樣),執行

sudo raspi-config

出現下面的頁面

image3

先選擇第一項,擴充檔案系統,讓樹莓派可以完全的佔有你的tf卡。完事之後可能需要重啟,重啟之後我們還是執行上述命令,然後還是來到這個頁面,選擇選擇第五項,然後一直選OK,開啟攝像頭的介面。

然後我們關機

sudo shutdown -h now

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

警告!!!!!!!!!!!!!!!!!!!!!!!!!
絕對不可以帶著電源的情況下插入攝像頭,如果帶電操作,十之八九你的攝像頭會GG,博主血淚教訓。而且攝像頭GG了之後每次呼叫還是會亮燈,只是你接受不到資料,這個問題我已經Google了很長時間,老外們也是一臉懵逼,大家普遍認為應該是被燒壞了= =

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

image5

image6

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

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

準備七牛雲

為什麼非常突兀的在這裡提到七牛雲,原因是我們總需要一個儲存監控的資料的空間,自己寫一個簡單的伺服器程式碼也是可以,不過雲伺服器現在便宜的頻寬太小,貴的我們窮苦學生又玩不起,不如用一個七牛雲,簡單還免費。(實名註冊使用者擁有10G免費空間,題主markdown的圖片外鏈都是拿這兒做的)

登入之後,如圖操作

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來方便的檢視更新照片。

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

image13

其實本文涉及的內容僅僅是我們一門課程中的小專案三分之一的部分,原本的用途也不是作為家庭監控的,但拿出來與大家分享,無論你是從頭到尾實現這個監控器,還是取一小段用於他途,只要有幫助就好。

部落格保持更新,願意來定時看我腦洞的,請關注我

相關推薦

樹莓開始一個家庭監控

先說好,我們的家庭監控是每分鐘的照片的監控,並不是真正的實時視訊,這種實時視訊樹莓派效能可能不夠。 我們這一次工程的大體步驟: 硬體準備 我們至少需要一個樹莓派3,樹莓派的攝像頭,一個tf卡(16G,class10的比較推薦),出於便於傳資料,你最好還有讀卡器或者SD卡套,常用的USB滑鼠,USB鍵盤,H

開始一個Jmeter性能測試

conf ber img group 測試報告 響應 介紹 oop 系統環境 安裝Jmeter 1、下載地址http://jmeter.apache.org/download_jmeter.cgi 2、解壓下載文件,然後將bin目錄添加到系統環境變量PATH裏。 3、確保已

手把手教你開始一個好看的 APP

@+ error 教你 教授 wip rac tco 需要 apt 前言 從零開始,手把手帶你實現一個「專註睡前的 APP」。睡覺之前如果能有一個 APP,能讓我們寫一寫這一天的見聞或者心得,同時又能看一會段子、瞄一會好看的妹子,放松一下疲憊的身心那該多好,這也是我完成這

vue-Vue-cli開始搭建一個Vue項目

-a htm sset VM bin size 過多 sets 掃描   Vue是近兩年來比較火的一個前端框架(漸進式框架吧)。 Vue兩大核心思想:組件化和數據驅動。組件化就是將一個整體合理拆分為一個一個小塊(組件),組件可重復使用;數據驅動是前端的未來發展方向,釋放了對

開始一個Android自動化

jar包 form 操作 成功 throws import ide port andro 移動端自動化簡單說就是,寫好操作app的程序,運行起來,自動執行程序和測試用例,輸出執行結果,結果正確,測試通過。 自動化可以方便地完成安裝/卸載、啟動/運行、UI適配

樹莓開始LAMP搭建web伺服器(部落格WordPress)教程

為了讓更多的朋友不讓自己家裡的樹莓派丟在角落吃灰,也讓自己不忘記折騰架設的過程,做個教程,有不足之處請大家多多包涵。 目的:讓樹莓派架設web服務,搭建個人部落格,使用自己的域名訪問,家裡的動態ip也可以。 材料:樹莓派一個,TF卡(請使用品牌高速卡),資料線一根,網

Vue-cli開始搭建一個Vue專案

電腦環境準備 1、下載安裝node.js。node中會預設安裝npm。命令提示符中 npm -v可檢視安裝版本。 2、開啟命令提示符,安裝淘寶映象cnpm。因為cnpm安裝依賴包時會比npm速度快很多。安裝命令: npm install -g cnpm --regist

微信小程式怎麼申請 開始一個微信小程式教程

微信小程式申請前的準備: 首先,你需要註冊一個小程式賬號。需要用一個沒註冊過公眾號的郵箱註冊。註冊過程中需要很多認證,比較繁瑣。如果暫時只是試水、沒有釋出的打算,那麼只要完成基本資訊填寫就可以,不需要完成微信認證。 之後,就可以在公眾平臺使用註冊的帳戶進行登入。 然後,在主

Vue.js 入門:開始一個極簡 To-Do 應用

Vue.js 入門:從零開始做一個極簡 To-Do 應用 寫作時間:2019-12-10版本資訊:Vue.js 2.6.10官網文件:https://cn.vuejs.org/ 前言  學習 Vue 的最佳方式之一是「請立刻查閱 Vue.js 的官方文件」,簡單看一下「基礎」部分,配合本文食用更佳

50行Python程式碼開始實現一個AI平衡小遊戲!

集智導讀: 本文會為大家展示機器學習專家 Mike Shi 如何用 50 行 Python 程式碼建立一個 AI,使用增強學習技術,玩耍一個保持杆子平衡的小遊戲。所用環境為標準的 OpenAI Gym,只使用 Numpy 來建立 agent。 學習Python中有不明白推薦加入交流群號

開始遠控 簡介篇 一個屬於你自己的遠控

做一個屬於你自己的遠控:先對大家說句抱歉,上次答應帶大家一起做遠控但因為我的個人原因讓課程中途斷了,這次我答應大家一定要把這教程完成。你在看著課程之前你必須掌握c/c++,qt,win32 api。不用精通,懂就可以了。先向你們簡單講解下什麼叫遠端控制,就是在別人不知情的情況

移動手機APP開發、一個完整的APP是如何開始出來的?

第一步(構思部分):想和看   想什麼?呢,當然是想我們要創作出一個什麼樣的作品,可以是自己喜歡的產品,做個redesign什麼的。也可以是一個大雜燴功能整合,但是儘量不要做差異太大的兩種產品,比如佛學類和陌生人社交(yuepao)這兩類的結合就有點坑爹了:D 總不能和尚約和尚我們出來一起唸經對吧。

開始構建一個的asp.net Core 項目(二)

mage .... cfi web execute 運行 figure 今天 deb 接著上一篇博客繼續進行。上一篇博客只是顯示了簡單的MVC視圖頁,這篇博客接著進行,連接上數據庫,進行簡單的CRUD。 首先我在Controllers文件夾點擊右鍵,添加->控制器 彈

【1】開始第三方支付開發-----初步了解概念

用例 深入 hub 編寫 不知道 了解 程序員 系列 bsp 這是第三方支付開發的第一篇. 目前很多公司在做海外支付, 但是不知道怎麽開始. 本人公司就是做海外產品, 涉及到paypal和stripe支付, 有比較多的經驗, 希望可以幫助需要的朋友. 我是做Java開發,

開始構建一個centos+jdk7+tomcat7的docker鏡像文件

entos 命名 doc 讀取 com 工作目錄 perm 後臺運行 star 從零開始構建一個centos+jdk7+tomcat7的鏡像文件 centos7系統下docker運行環境的搭建 準備centos基礎鏡像 docker pull centos 或者直接下載我

開始一個Markdown編輯器(一)

實時 需要 自己實現 自己 背景 學習正則表達式 tex ID img 背景 最近學習正則表達式,於是要挑一個練手項目,恰好對markdown編輯器十分感興趣,於是就進行了一些常識。做了一個簡單的markdown解析器和編輯器。 網頁端的地址(不支持文件的操作): http

一起學習造輪子(三):開始一個React-Redux

導致 href dispatch 判斷 som render connect mis 回調 本文是一起學習造輪子系列的第三篇,本篇我們將從零開始寫一個React-Redux,本系列文章將會選取一些前端比較經典的輪子進行源碼分析,並且從零開始逐步實現,本系列將會學習Prom

開始建立一個屬於你個人的Hexo博客

bash 網頁 服務器 引擎 branch -s add npm inux 從零開始建立一個屬於你個人的Hexo博客 Hexo 是一個快速、簡約且高效的博客框架。Hexo 使用 Markdown(或其他襯著引擎)解析文章,在幾秒內,便可使用靚麗的正題生成動態網頁。 相形癡肥

開始一個“智障”聊天機器人

騰訊DeepOcean原創文章:dopro.io/nlp_seq2seq… 智慧機器人在生活中隨處可見:iPhone裡會說話的siri、會下棋的阿法狗、調皮可愛的微軟小冰……她們都具有一定的智慧,能夠和人類進行互動。這些智慧機器人非常神奇,看上去離我們也十分遙遠,但其實只要我們動動手,便可以造一

開始循跡小車-0-項目總覽

廠商 .com 線性 color 攝像頭 淘寶 png 分類 區別 循跡小車也算是很經典的單片機開發項目了,作為入門項目正合適。這一篇隨筆大概寫循跡小車的組成部分,之後的隨筆就根據這些組成部分來寫知識儲備,最後寫項目實現。 循跡小車組成部分可以做一個分類,分為:傳感器部分,