树莓派家庭监控

市面上有很多产品是关于家庭监控的,效果不错,但是也少了几分自己动手的快感。另外,我们每天一直接触代码,未免有些太“软”了,适当的向硬件靠一靠总归还是好的。先说好,我们的家庭监控是每分钟的照片的监控,并不是真正的实时视频,这种实时视频树莓派性能可能不够。

我们这一次工程的大体步骤:

硬件准备

我们至少需要一个树莓派3,树莓派的摄像头,一个tf卡(16G,class10的比较推荐),出于便于传数据,你最好还有读卡器或者SD卡套,常用的USB鼠标,USB键盘,HDMI接口的显示器(这个有则最好,没有会麻烦但是也能搞定,我默认你有)

首先看看我们的树莓派长成什么样子:

它有四个USB接口,一个网线口,一个HDMI接口,一个摄像头的接口,还有电源口,还有一些不是很常用的口,以及GPIO。

看看我们的摄像头长成什么样子

很简单的一个小摄像头,大概500W像素,淘宝一般卖35左右。

除了上面的两个我们要求是统一的,至于键盘鼠标显示器我都不管你用的什么型号的。

安装系统和基本设置

安装系统这方面的教程网上实在是太多了,不需要搜英文的资料,只需看看百度的结果就可以完美解决。下面我默认树莓派上的系统已经做完了。

在树莓派上进入终端(如果选择debian系统的话,和Ubuntu的操作基本一样),执行

Python

1

sudo raspi-config

出现下面的页面

先选择第一项,扩充文件系统,让树莓派可以完全的占有你的tf卡。完事之后可能需要重启,重启之后我们还是执行上述命令,然后还是来到这个页面,选择选择第五项,然后一直选OK,打开摄像头的接口。

然后我们关机

Python

1

sudo shutdown -h now

或者是干脆直接断电源其实也没有问题。

警告!!!!!!!!!!!!!!!!!!!!!!!!! 绝对不可以带着电源的情况下插入摄像头,如果带电操作,十之八九你的摄像头会GG,博主血泪教训。而且摄像头GG了之后每次调用还是会亮灯,只是你接受不到数据,这个问题我已经Google了很长时间,老外们也是一脸懵逼,大家普遍认为应该是被烧坏了= =

我们把摄像头插到树莓派上,如图:

需要将摄像头底下那个蓝色的一面朝向USB接口那个方向,不要插反了。

等到你都安装完毕了,确保连接好各个硬件之后再给电源。(千万记得不要热插拔摄像头)

准备七牛云

为什么非常突兀的在这里提到七牛云,原因是我们总需要一个存储监控的数据的空间,自己写一个简单的服务器代码也是可以,不过云服务器现在便宜的带宽太小,贵的我们穷苦学生又玩不起,不如用一个七牛云,简单还免费。(实名注册用户拥有10G免费空间,题主markdown的图片外链都是拿这儿做的)

首先我们来到七牛云官网,注册账号 http://www.qiniu.com/

登录之后,如图操作

把这这个密钥对存起来,我们一会用

我们需要新建一个仓库,点开之后自己任意选节点,其实国内的几个节点速度都差不多,完全可以满足需求。

以后我们获取的监控照片就可以来这里查询

代码

下面的代码既可以现在本地上写之后再用github克隆过去或者是U盘copy过去,或者是直接在树莓派上写都可以,不过记得如果是前者,那么安装第三方库和配置东西要同步配置。

首先,我们写一个.sh脚本 take_photo.sh

Python

12

raspistill -o current_photo.jpgpython test.py

然后安装七牛云的python SDK,在命令行内执行

Python

1

sudo pip install qiniu

在take_photo.sh同目录下我们建立一个test.py

Python

123456789101112131415161718192021222324252627282930

# -*- coding: utf-8 -*- import timefrom qiniu import Auth, put_file, etag, urlsafe_base64_encodeimport qiniu.configimport os#需要填写你的 Access Key 和 Secret Keyaccess_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管理这个脚本

进入命令行,执行

1

crontab -e

在末尾追加上

Python

1

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

然后按Ctrl+x,按Y,保存修改。 之后重启cron

Python

1

sudo service cron restart

然后我们的定时监控就完成了!把它安放到想要的位置,它会每分钟拍下照片并且发送到七牛云,你可以使用七牛云的本地同步工具qshell来方便的查看更新照片。

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

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2017-10-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

正确姿势:如何调戏蹭网者

这篇文章本来是知乎回答的一个问题,但是由于本人五行缺勤奋,所以一直没写(其实是忘了=。=),下面是我的一个实验,如何通过squid调戏那些蹭网的人。没什么技术含...

2558
来自专栏進无尽的文章

基础篇-iOS后台运行以及相关

对于APP的前后台运行情况的了解,有助于我们在实际开发中规避一些问题,以及采取稳妥的方法处理和解决问题,是很必须的。

5271
来自专栏北京马哥教育

推荐!国外程序员整理的系统管理员资源大全(一)

备份软件 Amanda -客户端-服务器模型备份工具 Bacula - 另一个客户端-服务器模型备份工具 Backupninja -轻量级,可扩展的元数据备份系...

52210
来自专栏月色的自留地

RS232串口的Windows编程纪要

2384
来自专栏嵌入式程序猿

小心使得万年船

最近拿出之前在MKV46x上移植好的freeRTOS想加一些其他功能,因为升级了IAR,7.6版本的因为freecale被NXP收购,所以将之前所有的片子都移动...

3566
来自专栏月色的自留地

RS232串口的Windows编程纪要

1.1K8
来自专栏网站漏洞修补

如何解决网站title被恶意反复篡改

国庆假日期间我们Sine安全接到众多网站站长求助网站标题被改导致在百度搜索中百度安全中心提醒被拦截,导致网站正常用户无法浏览网站被跳转到一些菠菜du博网站,而且...

8755
来自专栏FreeBuf

APT攻击演练之捕鱼人的构想

两个环节:beef-xss钓鱼环节(建议使用服务器)、Nday钓鱼环节(很好用)、钓鱼框架环节(便携好用)

1364
来自专栏阮一峰的网络日志

双因素认证(2FA)教程

所谓认证(authentication)就是确认用户的身份,是网站登录必不可少的步骤。 密码是最常见的认证方法,但是不安全,容易泄露和冒充。 ? 越来越多的地方...

49410
来自专栏hotqin888的专栏

电子规范管理系统(2)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

1701

扫码关注云+社区

领取腾讯云代金券