在物联网(IoT)世界中,当我们拥有彻底改变生活的所有技术时,开发可在任何地方进行控制和监视的系统是一个好主意。有很多类型的良好安全系统和用于家庭安全的摄像头,但是它们非常昂贵,因此今天我们将构建一个基于Raspberry Pi的低成本简单入侵者警报系统,该系统不仅可以通过电子邮件向您发出警报,还可以通过当入侵者检测到任何东西时。
在这个基于物联网的项目中,我们将使用PIR传感器和PI Camera构建家庭安全系统。该系统将检测到入侵者的存在,并通过向用户发送警报邮件来快速提醒用户。该邮件还将包含由Pi摄像头捕获的“入侵者图片”。Raspberry Pi用于控制整个系统。该系统可以安装在家庭或办公室的大门上,您可以使用Internet上的电子邮件从世界任何地方进行监视。
所需组件:
- 树莓派
- Pi相机
- 被动红外传感器
- LED
- 面包板
- 电阻(1k)
- 连接线
- 电源供应
您可以从这里购买该项目中使用的所有组件。
工作说明:
这个项目的工作非常简单。PIR传感器用于检测任何人的存在,而Pi相机用于在检测到存在时捕获图像。
每当有人或入侵者进入PIR传感器范围时,PIR传感器都会通过Raspberry Pi触发Pi摄像机。Raspberry pi将命令发送到Pi相机以单击图片并保存。之后,Raspberry Pi创建一封邮件,并将其与最近单击的图像一起发送到定义的邮件地址。邮件包含消息和入侵者图片作为附件。在这里,我们使用了“请找到附件”消息,您可以在末尾给出的代码中进行相应的更改。
此处,图片以其名称包含输入时间和日期的名称保存在Raspberry Pi中。这样我们就可以通过仅查看图片名称来检查入侵者进入的时间和日期,并检查以下图像。如果您是Pi Camera的新手,请查看我们以前的有关使用Pi Camera的访客监控系统的教程。
您还可以使用PIR传感器的电位计来调整该系统的检测范围或距离。在此处了解有关PIR传感器的更多信息以调整范围,并检查基于PIR传感器的防盗报警器。
电路说明:
在此入侵者警报系统中,我们只需要将Pi摄像头模块和PIR传感器连接到Raspberry Pi 3。Pi摄像头连接在Raspberry Pi的摄像头插槽上,PIR连接到GPIO引脚18。LED也通过1k电阻连接到GPIO引脚17。
Raspberry Pi配置和编程说明:
我们在 这里使用 Python语言编写程序。在编码之前,用户需要配置Raspberry Pi。您应该在下面两个关于Raspberry Pi入门和在Pi中安装和配置Raspbian Jessie OS的教程中:
- Raspberry Pi入门-简介
- Raspberry Pi入门-配置
在Raspberry Pi上成功安装Raspbian OS之后,我们需要 安装Pi相机库文件以在Raspberry pi中运行该项目。为此,我们需要遵循给定的命令:
$ sudo apt-get install python-picamera $ sudo apt-get installpython3-picamera
之后,用户需要 使用Raspberry Pi软件配置工具(raspi-config)启用Raspberry Pi Camera:
$ sudo raspi-config
然后选择 启用相机 并启用它。
然后,用户需要通过发出 sudo reboot 来 重启Raspberry Pi,以便进行新设置。现在您的Pi相机可以使用了。
现在,在设置Pi Camera之后,我们将安装用于发送邮件的软件。在这里,我们使用 ssmtp ,这是使用命令行或使用Python Script发送邮件的简单而有效的解决方案。我们需要安装两个使用SMTP发送邮件的库:
sudo apt-get安装ssmtp sudo apt-get安装mailutils
安装库之后,用户需要打开 ssmtp.conf 文件并如下图所示编辑此配置文件,然后保存该文件。要保存并退出文件,请按“ CTRL + x”,然后按“ y”,然后按“ enter”。
须藤nano /etc/ssmtp/ssmtp.conf
root =您的电子邮件地址mailhub = smtp.gmail.com:587主机名= raspberrypi AuthUser =您的电子邮件地址AuthPass =您的电子邮件密码FromLineOverride =是UseSTARTTLS = YES UseTLS = YES
我们还可以通过发出以下命令来发送测试邮件来对其进行测试,如果一切正常,您将在上述电子邮件地址上收到该邮件:
回声“你好萨达姆”-邮件-s“正在测试…” [email protected]
该项目的Python程序在执行所有操作中起着非常重要的作用。首先,我们包括电子邮件所需的库,初始化变量并定义PIR,LED和其他组件的引脚。对于发送简单的电子邮件,smtplib就足够了,但是如果您想以更简洁的方式发送带有主题行,附件等的邮件,则需要使用MIME(多用途Internet邮件扩展名)。
导入RPi.GPIO作为gpio导入picamera导入时间从电子邮件中导入smtplib.MIMEMultipart从电子邮件中导入MIMEMultipart.MIMEText从电子邮件中导入MIMEText.MIMEBase从电子邮件中导入MIMEBase从电子邮件中导入编码器从电子邮件.mime.image中导入MIMEImage
之后,我们初始化了邮件并定义了邮件地址和消息:
fromaddr =“ [email protected]” toaddr =“ [email protected]”邮件= MIMEMultipart()邮件= fromaddr邮件= toaddr邮件=“附件”正文=“请找到附件”
然后我们创建了 def sendMail(data) 函数来发送邮件:
def sendMail(data):mail.attach(MIMEText(body,'plain'))打印数据dat ='%s.jpg'%data print dat附件= open(dat,'rb')image = MIMEImage(attachment.read ())attachment.close()mail.attach(image)服务器= smtplib.SMTP('smtp.gmail.com',587)server.starttls()server.login(fromaddr,“您的密码”)text =邮件。 as_string()server.sendmail(fromaddr,toaddr,text)server.quit()
创建函数 def capture_image() 来 捕获 带有时间和日期的入侵者图像。
def capture_image():data = time.strftime(“%d_%b_%Y-%H:%M:%S”)camera.start_preview()time.sleep(5)打印数据camera.capture('%s。 jpg'%data)camera.stop_preview()time.sleep(1)sendMail(data)
然后,我们使用某些设置初始化了Picamera:
camera = picamera.PiCamera()camera.rotation = 180 camera.awb_mode ='auto'camera.brightness = 55
现在,最后,我们已经阅读了PIR传感器的输出,当它变高时,Raspberry Pi调用 capture_image() 函数来捕获入侵者的图像并发送带有入侵者图片的警报消息作为附件。我们已经使用 sendmail() insdie capture_image() 函数来发送邮件。
while 1:如果gpio.input(pir)== 1:gpio.output(led,HIGH)capture_image()while(gpio.input(pir)== 1):time.sleep(1)否则:gpio.output( led,LOW)time.sleep(0.01)
因此,通过这种Raspberry Pi安全系统的工作方式,您还可以使用超声波传感器或红外传感器来检测是否存在防盗或入侵者。进一步检查下面的完整代码和演示视频。