最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

Arduino Yun+摄像头,实现移动物体侦测并报警

Arduino 少儿编程 1662浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

本文为开源硬件实验室原创文章,转载此文章请注明出处(开源硬件实验室知乎专栏)。最近拿到一块Arduino Yun板,想来做个好玩的应用。既然带了Linux系统,那么还是要发挥他的性能,于是决定做一个侦测移动物体的应用,网上能找到的案例,大部分都是用人体感应检测人,然后拍照,上报。这种淘宝上的人体感应效果其实很差,很容易误报,工业上的人体感应一般采用红外加微波双鉴探测。既然有了摄像头,为何不直接用算法搞定呢。

开搞

先说下实现框架:采用USB免驱摄像头,移动探测采用motion库,探测到后自动运行Python脚本。脚本可以写一段发送邮箱、短信、微博。。。。。。,看你能想到的,只要有API提供基本都能实现。

Arduino YUN的联网基本配置,这里不多说了,传送门。

登陆Arduino YUN页面,arduino.local。登陆Arduino Luci/System/Software

Arduino Yun+摄像头,实现移动物体侦测并报警

下载“kmod-video-uvc”摄像头驱动和 “motion” 移动侦测安装包。

先来看下摄像头是否可以用,网上很多摄像头不一定支持,我第一次用的一款,出来的图片严重失真,后来用了一个淘宝上写着支持树莓派、linux的摄像头,才成功。

用Putty,开启SSH,在命令行里输入dmesg,可以看到

Arduino Yun+摄像头,实现移动物体侦测并报警

输入lsusb,查看是否识别为USB了,也可以查看、/dev目录下是不是多了个video0设备。

Arduino Yun+摄像头,实现移动物体侦测并报警

接下来配置motion库

这里可以用WinSCP软件,采用SCP协议登陆。

Arduino Yun+摄像头,实现移动物体侦测并报警

在/etc目录下,找到motion.conf,下载到本地。

vi etc/motion.conf(里面的具体配置意义可以看它的注释,或者见lavrsen.dk/foswiki/bin/

关键的几点配置:

daemon off #关掉deamon模式

locate_motion_mode on #探测到图像中有运动时,把运动区域用矩形框起来

videodevice /dev/video0 #加载USB摄像头的设备(对应自己的摄像头设备)

width 640 #图像宽度

height 480 #图像高度

target_dir /mnt/sda1/webcam #设置拍摄图片的存储目录,这里我们把SD卡设置成Arduino Yun的外部储存器。SD的配置参考传送门。

threshold 3000 #这个是改变探测灵敏度,越小越灵敏。

stream_localhost off

webcontrol_localhost off

#关闭,让我可以通过浏览器查看视频。

on_motion_detected “python /mnt/sda1/allarme.py” #配置当侦测到移动物体时,自动执行相应的程序。这里是最关键的地方。

到这里我们可以在命令行里输入motion,启动。打开浏览器 ,输入 IP:8081,查看运行效果。对效果不满意,可以输入 IP:8080进入motion设置页面。

Arduino Yun+摄像头,实现移动物体侦测并报警

配置QQ邮箱

用QQ邮箱服务器发送邮件,需要设置下自己的QQ邮箱发送登陆口令。

Arduino Yun+摄像头,实现移动物体侦测并报警
Arduino Yun+摄像头,实现移动物体侦测并报警

把生成的授权码记录下。

Arduino Yun+摄像头,实现移动物体侦测并报警

这段Python脚本就是发送邮件的简单实现。注意发送内容不能中文,不识别。把脚本放在刚才配置的地方就可以了。

配置短信接口脚本

Arduino Yun+摄像头,实现移动物体侦测并报警

我这里使用了阿里云的短信API接口,官方就提供了Python事例,把参数设置下自己的就可以。

后记

实际运行的时候,视频还是有点卡顿,感觉是处理器性能不够,摄像头像素选的太低。后面准备换个主板和摄像头在试试看。图形库可以试试OpenCV。

您必须 登录 才能发表评论!