0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

树莓派制成的 — 带运动检测和摄像头的安防系统

上海晶珩电子科技有限公司 2025-03-25 09:45 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

自动布防/撤防、运动检测、带图片的移动通知

d59a1132-091a-11f0-9434-92fbcf53809c.jpg

项目所用物品

硬件组件

  • Raspberry Pi1 Model A+ 一个:任何支持摄像头模块的Raspberry Pi均可
  • Raspberry Pi 摄像头模块一个
  • USB WLAN/WiFi适配器一个:必须支持监控模式,推荐使用RT5370
  • Makerbeam(可选)一个:用于制作外壳

软件应用和在线服务

  • Raspberry PiRaspbian
  • Telegram Bot

项目简介

Raspberry Pi安防系统是一个简单的基于Raspberry Pi 的安防系统,具有以下功能:

  • 使用摄像头进行运动检测和拍照
  • 发送带照片的移动通知
  • 自动检测是否有人在家并自动布防或撤防
  • 可通过Telegram远程禁用或查询

d5b506ea-091a-11f0-9434-92fbcf53809c.jpg

所需条件

硬件需求

  • 带有摄像头接口的Raspberry Pi(我使用的是Model A+)
  • Raspberry Pi摄像头模块
  • 支持监控模式的USB Wi-Fi适配器(我使用的是基于RT5370的适配器,价格约为6欧元,易于购买)
  • 某种形式的外壳(我制作的硬件详情在此)

其他需求

  • Telegram机器人:免费且易于设置
  • 已安装Raspbian发行版(我使用的是Jessie lite,也可以使用其他操作系统,但未经测试)
  • Python 3

工作原理

自动化检测

我的主要目标之一是使系统完全自动化,无需在离家或回家时手动布防或撤防。我认为实现这一目标的最简单方法是尝试检测家中居住者的手机。从概念上讲,这很简单,但在实践中最具挑战性,因为:

  • 在Wi-Fi接口上捕获所有数据包非常耗费资源
  • 目前没有好的支持监控模式的5Ghz USB Wi-Fi适配器,这意味着数据包监控仅限于2.4Ghz,而大多数现代手机现在使用5Ghz
  • 手机并非始终在线并通过Wi-Fi发送数据包,有时它们会保持未连接状态长达15分钟或更长时间
  • 即使准确率达到99%,误报也会令人烦恼

经过大量测试,我采用了一种结合主动(ARP扫描)和被动(数据包捕获)检测的方法,通过Wi-Fi适配器实现,并基于已知的手机MAC地址。手机MAC地址在配置中设置,rpi-security应用程序在监控模式接口上捕获具有以下过滤条件的数据包:

  • 来自任何已配置MAC的Wi-Fi探测请求
  • 从已配置MAC发送到运行rpi-security的主机的任何数据包

当检测到数据包时,应用程序会重置计数器,如果计数器超过约10分钟,则系统布防。为了消除许多误报,在从布防到撤防状态或反之的转换过程中,应用程序会对每个已配置的MAC地址执行ARP扫描,以确保它们确实在线或离线。iOSAndroid在99%的情况下都会响应此ARP扫描,而ICMP ping则相当不可靠。通过结合捕获Wi-Fi探测请求和使用ARP扫描,Wi-Fi频率无关紧要,因为手机在两个频率上都发送探测请求,ARP扫描也适用于两个频率。

通知

使用Telegram机器人发送带捕获图片的通知。他们有良好的移动应用程序和友好的API。您还可以在浏览器中查看消息,并且消息会在设备之间同步。

如果系统处于布防状态并检测到运动,则会从Telegram机器人向您发送带有捕获图片的消息。

在任何警报状态更改时也会发送通知。

远程控制

您可以向Telegram机器人发送命令以触发某些操作:

  • /disable:禁用服务,直到重新启用
  • /enable:在禁用后启用服务
  • /status:发送状态报告
  • /photo:捕获并发送照片
  • /gif:捕获并发送gif
d5e8ca20-091a-11f0-9434-92fbcf53809c.jpg

Python

该应用程序是用Python 3编写的。大部分功能由以下pip模块提供:

  • picamera
  • Scapy
  • python-telegram-bot

应用程序使用多线程以异步方式处理事件。有四个线程:

  • telegram_bot:响应命令
  • monitor_alarm_state:布防和撤防系统
  • capture_packets:捕获来自移动设备的数据包
  • process_photos:通过Telegram消息发送捕获的图片

安装、配置和运行

连接到您的WiFi网络的接口必须是支持监控模式的接口,并且这必须是手机连接的同一个WiFi网络。

首先安装必要的软件包:

sudo apt-get updatesudo apt-get install -y tcpdump iw python3-dev python3-pip libjpeg8-dev zlib1g-dev libffi-dev python3-numpysudo pip3 install --upgrade pip

安装rpi-security服务,重新加载systemd配置并启用服务:

sudo pip3 install https://github.com/FutureSharks/rpi-security/archive/master.zipsudo systemctl daemon-reloadsudo systemctl enable rpi-security.service

在/etc/rpi-security.conf文件中添加你的MAC地址、Telegram机器人API密钥以及任何其他需要更改的配置。
确保你已经使用raspi-config启用了相机模块。

启动rpi-security服务:

sudo systemctl start rpi-security.service

你需要至少向Telegram机器人发送一条消息,以便服务能够保存你的Telegram chat_id。发送/status命令即可。

rpi-security作为服务运行,并将日志记录到syslog中。要查看日志,请检查 /var/log/syslog。

还有一个调试选项,它将日志输出到stdout:

root@raspberrypi:~# iw phy phy0 interface add mon0 type monitorroot@raspberrypi:~# ifconfig mon0 uproot@raspberrypi:~# rpi-security.py -d2016-05-28 14:43:30 DEBUG rpi-security.py:73 MainThread State file read: /var/lib/rpi-security/state.yaml2016-05-28 14:43:30 DEBUG rpi-security.py:44 MainThread Calculated network: 192.168.178.0/242016-05-28 14:43:41 INFO rpi-security.py:214 monitor_alarm_state thread running2016-05-28 14:43:41 INFO rpi-security.py:196 capture_packets thread running2016-05-28 14:43:41 INFO rpi-security.py:259 telegram_bot thread running2016-05-28 14:43:41 INFO rpi-security.py:154 process_photos thread running2016-05-28 14:43:43 INFO rpi-security.py:392 MainThread rpi-security running2016-05-28 14:43:43 INFO rpi-security.py:112 MainThread Telegram message Sent: "rpi-security running"2016-05-28 14:44:29 DEBUG rpi-security.py:191 capture_packets Packet detected from aa:aa:aa:bb:bb:bb2016-05-28 14:44:29 DEBUG rpi-security.py:191 capture_packets Packet detected from aa:aa:aa:bb:bb:bb2016-05-28 14:44:48 DEBUG rpi-security.py:280 Dummy-1 Motion detected but current_state is: disarmed

这就是Raspberry PiA+模型所需要的全部内容。这显示了我的无线局域网网络设备布局:

root@raspberrypi:~# iw devphy#0 Interface mon0 ifindex 4 wdev 0x3 addr 00609c:01 type monitor Interface wlan0 ifindex 2 wdev 0x1 addr 00609c:01 type managed channel 1 (2412 MHz), width: 40 MHz, center1: 2422 MHz

你可能会遇到具有不同名称的接口,只需在/etc/rpi-security.conf 文件中更改 network_interface 参数,并同时更改 rpi-security.service 中对 mon0的引用即可。带有PIR传感器运动检测的旧版本

目前,该摄像头用于运动检测。

连接丢失时重启

大约每个月或两个月,我的Raspberry Pi会丢失WLAN连接。我创建了一个cron作业来检查连接,并在检查失败时重启。

echo '*/20 * * * * root /usr/bin/host api.telegram.org > /dev/null 2>1 || (/usr/bin/logger "Rebooting due to connectivity issue"; /sbin/shutdown -r now)' > /etc/cron.d/reboot-on-connection-failure

自定义部件和外壳

硬件详情

摄像头和PIR传感器Makerbeam支架的CAD文件:
https://github.com/FutureSharks/rpi-security/tree/master/hardware

代码

Github链接(安装、配置等):https://github.com/FutureSharks/rpi-security

一个用Python编写的安全系统,用于在Raspberry Pi上运行,具有运动检测和移动通知功能

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 摄像头
    +关注

    关注

    61

    文章

    5058

    浏览量

    102448
  • 安防系统
    +关注

    关注

    2

    文章

    258

    浏览量

    34258
  • 运动检测
    +关注

    关注

    0

    文章

    40

    浏览量

    12807
  • 树莓派
    +关注

    关注

    122

    文章

    2069

    浏览量

    109709
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    树莓摄像头问题

    请问树莓安装好官方的摄像头之后,测试摄像头时显示mmal: No data received from sensor. Check all connections, includin
    发表于 08-08 22:47

    树莓的sci摄像头motion怎么用?

    树莓的sci摄像头motion怎么用
    发表于 09-17 22:48

    摄像头的过流保护

    ,一举多得。 多年经验证明应用自恢复保险丝做摄像头系统的过流保护也成为行业普遍应用的最佳
    发表于 12-29 14:10

    摄像头の过载保护应用

    的事实也说明了这个问题,而且应用JDT自恢复保险丝做摄像头系统的过载保护也成为行业普遍应
    发表于 01-03 14:41

    树莓摄像头

    树莓使用专用摄像头是遇到了图片上的问题:在putty上输入代码 raspistill -o keychain.jpg -t 2000回车之后,putty就不在出现命令 pi@raspberrypi:~ $ 也不运行程序
    发表于 10-22 17:57

    如何用树莓派来连接摄像头

    比较详细的原理,但没有代码示例用ov7670做的师兄的指导:我们需要的是用树莓派来连接摄像头树莓再连接stm32,stm32主要工作就是给海康的
    发表于 08-05 07:40

    你需要了解树莓摄像头的使用

    树莓的配件还是比较丰富的,其中摄像头更是最长用的配件之一了,做拍照,视频,图像识别等等都会用到。树莓
    发表于 04-19 16:00 2.8w次阅读

    使用树莓制作HomeKit监控

    树莓3B及树莓摄像头,制作可以与homekit智能家居媲美的
    的头像 发表于 05-30 12:54 4034次阅读
    使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>制作HomeKit<b class='flag-5'>安</b><b class='flag-5'>防</b>监控

    树莓摄像头应该如何启动详细教程免费下载

    本文档的主要内容详细介绍的是使用树莓设计智能小车的树莓摄像头应该如何启动详细教程免费下载。
    发表于 06-24 08:00 9次下载

    微雪电子树莓摄像头专用多路FPC线简介

    树莓摄像头 专用多路FFC线 一分二专用FFC线 手动或自动(通过GPIO口)切换不同摄像头工作 支持全系列树莓
    的头像 发表于 01-10 09:10 2981次阅读
    微雪电子<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>摄像头</b>专用多路FPC线简介

    基于树莓的实时直播摄像头

    程度更近了一步!下面让我们一起看看具体的实现吧~组件清单树莓(Raspberry Pi) Zero W 套件 × 1夜视鱼眼广角摄像头500万像素1080P2个红外灯 × 116c
    发表于 12-26 16:34 1次下载

    使用Raspberry Pi的Motioneyeos网络摄像头运动检测

    电子发烧友网站提供《使用Raspberry Pi的Motioneyeos网络摄像头运动检测.zip》资料免费下载
    发表于 07-05 10:40 1次下载
    使用Raspberry Pi的Motioneyeos网络<b class='flag-5'>摄像头</b><b class='flag-5'>运动检测</b>

    摄像头IPC芯片的应用

    摄像头IPC芯片的应用
    的头像 发表于 07-22 09:42 1991次阅读
    <b class='flag-5'>安</b><b class='flag-5'>防</b><b class='flag-5'>摄像头</b>IPC芯片的应用

    树莓 打造安全+可定制的摄像头 — 完整指南!

    使用树莓作为摄像头有诸多优势,可以让其成为家庭或小型企业负担得起的监控解决方案。树莓派性价
    的头像 发表于 05-23 15:49 1677次阅读
    用 <b class='flag-5'>树莓</b><b class='flag-5'>派</b> 打造安全+可定制的<b class='flag-5'>安</b><b class='flag-5'>防</b><b class='flag-5'>摄像头</b> — 完整指南!

    如何使用树莓与OpenCV实现面部和运动追踪的云台系统

    使用树莓和OpenCV实时扫描并存储二维码使用树莓和OpenCV实现物体与动物识别使用树莓
    的头像 发表于 08-14 17:45 962次阅读
    如何使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>与OpenCV实现面部和<b class='flag-5'>运动</b>追踪的云台<b class='flag-5'>系统</b>?