极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5296|回复: 8

颜射猫咪!一个用树莓派做的宠物行为矫正机

[复制链接]
发表于 2016-6-20 10:10:17 | 显示全部楼层 |阅读模式
本帖最后由 Guokrspace 于 2016-6-20 10:13 编辑

这是一个风和日丽的周末,我把美味的鲈鱼从冰箱里拿出来解冻,睡个午觉打个游戏后,准备晚上大吃一顿……

iHovwykQkUbZr6NuH4B9y6gz3sKclJUBJ535UCVyzassAQAALAEAAEpQ.jpg

美好的剧本都会紧接着一个可怕的转折……这并不是一个应该有的套路,当我准备对鱼下手的时候,万万没想到,鱼不见了?!

MoSdp8GCf-yj1cwe0ELYnDUAdH2UYGlNYe0NFHjFms7gAAAA4AAAAEpQ.jpg

不用多想,没谁了,也就家里那只馋猫能干得出来!随后,我便在屋子的某个角落,找到了正在品尝我的晚餐的那只馋猫……

A1TuVi6JKMMVXcN82pVzygNKOXrGz3gV1HcnR9KzjZraBAAA_gIAAEpQ.jpg

没错,今天的主角就是这只馋猫,它总会趁人不注意的时候潜入厨房偷吃没封装的食材,或者趁家里人都去上班的时候,将垃圾桶翻个底朝天,并且屡教不改。这次,我决定给它一些颜色看看。

aPUCuS9I6xgQtOz6XpbTXRlob8dtTqfD-fl3f33UIWdgAQAACgEAAEpQ.jpg

我的脑海中浮现了一个“残忍邪恶”的报复计划:

制作一个”家用版”自动防入侵驱逐系统,让猫从此不敢再踏入厨房

更详细地说,这个被我命名为“贼猫终结者”的设备将使用计算机视觉识别运动的物体,当有猫进入摄像头监视的范围内时,便控制水枪跟随标准运动物体,并启动喷雾水枪喷射。水雾不会对猫造成伤害,但对于这只怕水的猫,足以让它忌惮三分。


hrcvCCj33oI1v8ojDo738mt0aoKNBJH1PsKG8qjZyLuZAwAAZAMAAEpQ.jpg


为了防止世界被破坏,为了保护世界的和平,贯彻爱与真实的邪恶……今天我就来教大家如何自制一个“贼猫终结者”,让你从此远离垃圾、饿肚子烦恼!

需要准备的材料

1whEAH5gMahzgKaN7Hhyzb8_2_96OYwk16x6Hmk7itSABwAAOAQAAFBO-2.jpg

树莓派及电源 × 1
USB摄像头 ×1
舵机 × 2
FPV舵机云台 ×1
12V小型直流隔膜泵及电源 ×1
水箱 × 1
集线盒 × 1
继电器模块 ×1
雾化喷头 ×1
HC-SR501人体红外感应模块 ×1
激光二极管 ×1
导线若干
硅胶管 若干


选择一个核心控制器

uM4GV7Lh5U62V-3TT9XUwgi-zCphYws36e_ZBi1HmjhgFQAAQA4AAEpQ.jpg

首先一个“贼猫终结者”的核心控制所在就是树莓派了,价格低廉性能好是树莓派的优点。

“贼猫终结者”中,树莓派负责计算出视频信号中是否有运动的物体、判断是否有人正在周围、控制水枪喷水。我在制作的过程中分别使用了Raspberry Pi 2B和3B,相比Raspberry Pi 2B,最新的3B版本计算能力更强,而且集成了Wi-Fi模块,少了一些牵网线或配置无线网卡之类的烦恼。

为它找个“眼睛”

有了核心部分,接着就是视觉处理方面了,你要看到周围运动的物体,当然免不了一个摄像头了!

NPVoe44wcxHFYEdD-9p3AchtHPSN9tbrclvVZ3G-c4tgFQAAQA4AAEpQ.jpg

我用一个免驱USB摄像头用来获取环境图像信号。树莓派上运行Python脚本,调用OpenCV视觉库,判断出运动的物体并计算出运动物体所在的位置。由于我对计算机视觉学习还不够深入,没办法判断出运动物体是人还是猫,所以我又加了一块人体红外感应的模块。当人体红外感应模块判断有人在场时便禁止水枪运行,当没人在场时,便会允许水枪喷水。


水枪部分制作

“贼猫终结者”的水枪是由一个雾化喷头做成,当看到有贼猫来偷东西时,喷头就能喷出水雾驱赶它。通常雾化喷头需要有比较强的水压才能喷射出水雾,采用一台12V微型的隔膜泵和一个可调的雾化喷头。隔膜泵通过一个继电器控制开关,当猫进入监控的范围内,树莓派会控制继电器闭合,让隔膜泵开始运行。

pozz3oGRlJEXTdzIkSPd2TnOIPNxH-YkGCc0483pBy9gFQAAQA4AAEpQ.jpg

由于单个摄像头无法分辨出运动物体的空间位置,因此我将雾化喷头的喷水面积尽量调大已确保能喷到猫,这时水雾也完全没有冲击力。

QTEgGFEzdJW5aVlGlLIVlMULXsUz9RJOUYl02haGK2xgFQAAQA4AAEpQ.jpg

为了让水枪跟随瞄准运动的物体,我找了一个FPV舵机云台用来控制水枪喷射的方向。

用3D打印机打印了一个固定模块用来将喷头固定在云台上,固定模块上预留了一个圆孔用来安装激光二极管。激光二极管用来调整水枪的喷射范围与摄像头的拍摄范围重合。



使用3D打印技术做的支架

cPL4zo1eTvS-bVVt0nPE_-HO1nAojGr5VewiuzYenW_CAQAA_QAAAEdJ.gif
FPV运动状态

OpenCV运行环境配置

2eLQaBAW6Kx5EOf7YRNOnmeZVPnyRJ2NimmUwPfQpYIRAwAAEAIAAFBO.png

Linux系统的终端

在树莓派操作系统中打开终端,输入指令:
sudo apt-get install libcv-dev libcvaux-dev libhighgui-dev opencv-doc python-opencv
按回车,按系统要求输入管理员密码执行安装。安装完后,在终端输入指令:
python
按回车进入python的shell编程环境,然后输入指令
import cv2
当shell返回“>>>”说明OpenCV计算机视觉库已经安装在树莓派上了。



在终端中查看相关库是否安装成功

系统接线图与组装

直接上图!

rkgUQTQvl5xkgx5_3q8OrXrt13HAt3eS_lNjmL4gpcdOBgAASAMAAFBO.png

启动终结者!

用Pyhton的IDLE打开程序,按F5运行程序。程序运行的状态如下:



当贼猫过来的时候,哼哼哼……看!被吓到贼猫,还敢来捣乱?

v-boUC0-QS4qeh0aDxTo0cV2iI6ThoVnX1-QhMTTtTqABwAAOAQAAEpQ-4.jpg

完整视频如下:
http://www.iqiyi.com/w_19rsrh3lhl.html?t=1466351594660#vfrm=8-8-0-3


如果你想获得本台机器的源代码,欢迎添加作者Deiki的微信,并发送暗号:贼猫

岱奇的微信号.jpg
06AZxloI77htEUvnlhR590h4U97AftxZK9hsd1Rgim2pAgAA0gEAAFBO.png

评分

参与人数 1 +1 收起 理由
幻生幻灭 + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2016-6-20 14:32:25 | 显示全部楼层
果壳都做空间了
楼主文笔不错
回复 支持 反对

使用道具 举报

发表于 2016-6-20 14:32:56 | 显示全部楼层
果壳都做空间了
楼主文笔不错
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-20 17:53:10 | 显示全部楼层
幻生幻灭 发表于 2016-6-20 14:32
果壳都做空间了
楼主文笔不错

哈哈,谢谢夸奖,果壳的双创社群(创客+创业)是去年刚不久成立哒~~
我们创客社群里有很多脑洞很大的达人~~比如发明贼猫的这位Deiki就是!
回复 支持 反对

使用道具 举报

发表于 2016-6-20 19:10:24 | 显示全部楼层
太有乐趣了~~
回复 支持 反对

使用道具 举报

发表于 2016-6-21 15:05:08 | 显示全部楼层
这是不是在虐待动物?哈哈……
回复 支持 反对

使用道具 举报

发表于 2017-5-14 17:05:25 | 显示全部楼层
脑洞大开!学习!
回复 支持 反对

使用道具 举报

发表于 2017-5-20 20:22:50 | 显示全部楼层
好6啊。。。呵呵。。。这猫  求猫的阴影面积
回复 支持 反对

使用道具 举报

发表于 2017-6-9 09:31:54 | 显示全部楼层
和楼主一样, 我家也有猫主子, 不过是两只。 现在为了两只猫不认自己的猫砂盆和饭盆而苦恼, 一直想着用RFID 识别是那只猫, 从而打开它对应的猫砂盆和饭盆盖子。 可惜一直找不到 合适的RFID的硬件。 楼主有经验不?我上周才开始接触这些东西的, 现在还在学习 Arduino. 觉得用步进电机控制盖子不难, 关键是猫从任何一个方位接近目标的硬件好像没有。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2019-1-19 00:39 , Processed in 0.052596 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表