欢迎转载,但请注明出处 http://www.cnblogs.com/chuxiuhonghtml
先说好,咱们的家庭监控是每分钟的照片的监控,并非真正的实时视频,这种实时视频树莓派性能可能不够。python
咱们这一次工程的大致步骤:
git
咱们至少须要一个树莓派3,树莓派的摄像头,一个tf卡(16G,class10的比较推荐),出于便于传数据,你最好还有读卡器或者SD卡套,经常使用的USB鼠标,USB键盘,HDMI接口的显示器(这个有则最好,没有会麻烦可是也能搞定,我默认你有)github
首先看看咱们的树莓派长成什么样子:shell
它有四个USB接口,一个网线口,一个HDMI接口,一个摄像头的接口,还有电源口,还有一些不是很经常使用的口,以及GPIO。服务器
看看咱们的摄像头长成什么样子markdown
很简单的一个小摄像头,大概500W像素,淘宝通常卖35左右。工具
除了上面的两个咱们要求是统一的,至于键盘鼠标显示器我都无论你用的什么型号的。性能
安装系统这方面的教程网上实在是太多了,不须要搜英文的资料,只需看看百度的结果就能够完美解决。下面我默认树莓派上的系统已经作完了。url
在树莓派上进入终端(若是选择debian系统的话,和Ubuntu的操做基本同样),执行
sudo raspi-config
出现下面的页面
先选择第一项,扩充文件系统,让树莓派能够彻底的占有你的tf卡。完事以后可能须要重启,重启以后咱们仍是执行上述命令,而后仍是来到这个页面,选择选择第五项,而后一直选OK,打开摄像头的接口。
而后咱们关机
sudo shutdown -h now
或者是干脆直接断电源其实也没有问题。
警告!!!!!!!!!!!!!!!!!!!!!!!!!
绝对不能够带着电源的状况下插入摄像头,若是带电操做,十之八九你的摄像头会GG,博主血泪教训。并且摄像头GG了以后每次调用仍是会亮灯,只是你接受不到数据,这个问题我已经Google了很长时间,老外们也是一脸懵逼,你们广泛认为应该是被烧坏了= =
咱们把摄像头插到树莓派上,如图:
须要将摄像头底下那个蓝色的一面朝向USB接口那个方向,不要插反了。
等到你都安装完毕了,确保链接好各个硬件以后再给电源。(千万记得不要热插拔摄像头)
为何很是突兀的在这里提到七牛云,缘由是咱们总须要一个存储监控的数据的空间,本身写一个简单的服务器代码也是能够,不过云服务器如今便宜的带宽过小,贵的咱们穷苦学生又玩不起,不如用一个七牛云,简单还免费。(实名注册用户拥有10G免费空间,题主markdown的图片外链都是拿这儿作的)
首先咱们来到七牛云官网,注册帐号 http://www.qiniu.com/
登陆以后,如图操做
把这这个密钥对存起来,咱们一会用
咱们须要新建一个仓库,点开以后本身任意选节点,其实国内的几个节点速度都差很少,彻底能够知足需求。
之后咱们获取的监控照片就能够来这里查询
下面的代码既能够如今本地上写以后再用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脚本,均可以让树莓派拍一张照片而且发送到七牛云上,咱们只需登陆就能看见下面这样的数据
文件命名是以年月日时分秒的方式命名的
可是这样咱们总不可能手动的一次次执行,那样也不叫监控了。最简单的想法,咱们能够利用Linux的定时任务crontab管理这个脚本
进入命令行,执行
crontab -e
在末尾追加上
* * * * * /home/pi/take_photo.sh
而后按Ctrl+x,按Y,保存修改。
以后重启cron
sudo service cron restart
而后咱们的定时监控就完成了!把它安放到想要的位置,它会每分钟拍下照片而且发送到七牛云,你可使用七牛云的本地同步工具qshell来方便的查看更新照片。
qshell使用教程 http://developer.qiniu.com/code/v6/tool/qshell.html
写代码的时候自动拍摄的样图:
其实本文涉及的内容仅仅是咱们一门课程中的小项目三分之一的部分,本来的用途也不是做为家庭监控的,但拿出来与你们分享,不管你是从头至尾实现这个监控器,仍是取一小段用于他途,只要有帮助就好。
博客保持更新,愿意来定时看我脑洞的,请关注我