Raspberry Pi 是基于ARM皮质的流行开发板,专为电子工程师和业余爱好者设计。凭借处理速度和内存,Raspberry Pi可以一次执行不同的功能,就像普通的PC一样,因此在您的掌上称为迷你计算机。我们创建了一系列Raspberry Pi教程,从头开始从Raspberry Pi开始,然后使用Raspberry Pi创建高级IoT项目。
这次,我们在这里进行下一个有趣的项目,即具有图像捕获功能的访客监控系统。在这里,我们将Pi相机与Raspberry Pi连接起来,以捕获通过大门或大门进入的每个访客的图像。在此项目中,任何人到达闸门时,都必须按下按钮以打开闸门,并且一旦按下该按钮,他/她的照片将被捕获并与日期一起保存在系统中和入境时间。这对于安全和监视目的非常有用。
此系统在办公室或工厂中非常有用,在办公室或工厂中为访客维护访客进入记录,为员工维护出席记录。该监控系统将数字化和自动化整个访客条目和出勤,并且无需手动维护它们。该系统既可以由人自己操作,也可以有操作员为非常访客按下按钮。这是一个开始使用Pi相机并将其与Raspberry Pi进行连接的好项目。
所需组件:
- 树莓派
- Pi相机
- 16x2 LCD
- 直流马达
- 集成电路L293D
- 蜂鸣器
- LED
- 面包板
- 电阻(1k,10k)
- 电容(100nF)
- 按钮
- 连接线
- 10k锅
- 电源供应
工作说明:
这个Raspberry Pi 监视系统的工作很简单。在这种情况下,当按下或触发按钮时,将使用Pi摄像机捕获访客的图像。甲DC电机用作栅极。每当有人要进入该地点时,他/她就需要按下按钮。按下按钮后,Raspberry Pi将命令发送到Pi Camera单击图片并保存。之后,门会打开一段时间,然后再次关闭。按下按钮时,蜂鸣器会发出声音,LED用来指示Raspberry Pi准备接受按钮按下,这意味着当LED亮起时,系统就可以进行操作了。
在这里,访问者的图片保存在Raspberry Pi中,其名称本身包含输入的时间和日期。意味着无需将日期和时间分别保存在其他地方,因为我们已将时间和日期指定为捕获的图片的名称,请参见下图。我们在这里以访客的身份拍摄了一个盒子的图像,请在视频末尾查看其完整演示。
电路说明:
此Raspberry Pi访客监视系统的电路非常简单。此处,液晶显示器(LCD)用于显示访客进入的时间/日期和一些其他消息。 LCD以4位模式连接到Raspberry Pi。 LCD的引脚,即RS,EN,D4,D5,D6和D7连接到Raspberry Pi的GPIO引脚号18、23、24、16、20和21。Pi摄像头模块连接到Raspberry Pi的摄像头插槽。蜂鸣器连接到Raspberry Pi的GPIO引脚26,以进行指示。 LED通过1k电阻连接到GPIO引脚5,并且按钮相对于地面连接到GPIO引脚19,以触发相机并打开Gate。直流电动机(作为闸门)通过电机驱动器IC(L293D)与Raspberry Pi GPIO引脚17和27连接。其余连接在电路图中显示。
要连接Pi Camera,请将Pi Camera的带状电缆插入相机插槽,稍微拉起RPi板上连接器的卡舌,然后将带状电缆插入插槽,然后再次轻轻向下按卡舌以固定带状电缆。
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 python3-picamera $ sudo apt-get install python3-picamera
之后,用户需要使用Raspberry Pi软件配置工具(raspi-config)启用Raspberry Pi Camera:
$ sudo raspi-config
然后选择启用相机并启用它。
然后,用户需要通过发出 sudo reboot 来重启Raspberry Pi,以便进行新设置。现在您的Pi相机可以使用了。
$ sudo重新启动
该项目的Python程序在执行所有操作中起着非常重要的作用。首先,我们包括所需的库,初始化变量并定义LCD,LED,电机和其他组件的引脚。
导入RPi.GPIO作为gpio导入picamera导入时间m11 = 17 m12 = 27 led = 5 buz = 26 button = 19 RS = 18……….
创建函数 def capture_image() 来捕获带有时间和日期的访客图像。
def capture_image():lcdcmd(0x01)lcdprint(“ Please Wait..”); data = time.strftime(“%d_%b_%Y \%H:%M:%S”)camera.start_preview()time.sleep(5)打印数据camera.capture('/ home / pi / Desktop / Visitors /%s.jpg'%data)camera.stop_preview()lcdcmd(0x01)lcdprint(“已捕获图像”)lcdcmd(0xc0)lcdprint(“成功”)time.sleep(2)
编写函数 def gate() 来驱动此处用作门的直流电动机。
def gate():lcdcmd(0x01)lcdprint(“ Welcome”)gpio.output(m11,1)gpio.output(m12,0)time.sleep(1.5)gpio.output(m11,0)gpio.output(m12 ,0)time.sleep(3)gpio.output(m11,0)gpio.output(m12,1)time.sleep(1.5)gpio.output(m11,0)gpio.output(m12,0)lcdcmd(0x01 ); lcdprint(“谢谢”)time.sleep(2)
为LCD定义了一些功能,例如 def begin() 函数用于初始化LCD, def lcdcmd(ch) 函数用于向LCD发送命令, def lcdwrite(ch) 函数用于向LCD发送数据和 def lcdprint(Str ) 功能用于将数据字符串发送到LCD。您可以在随后给出的代码中检查所有这些功能。
然后,我们初始化了LCD和Pi摄像机,并使用 while 循环连续读取按钮。每当按下按钮时,要打开进入大门,都会捕获访客的图像并将其与日期和时间一起保存在Raspberry pi中,然后打开大门。查看下面的完整代码和演示视频。
而1:d = time.strftime(“%d%b%Y”)t = time.strftime(“%H:%M:%S”)lcdcmd(0x80)lcdprint(“ Time:%s”%t) lcdcmd(0xc0)lcdprint(“ Date:%s”%d)如果gpio.input(button)== 0,则gpio.output(led,1):gpio.output(buz,1)gpio.output(led,0) time.sleep(0.5)gpio.output(buz,0)capture_image()gate()time.sleep(0.5)
该相机监控系统具有很大的升级范围,例如可以在Computer Vision或OpenCV中内置软件,以将访客的捕获图像与已存储的图像进行匹配,并且仅在找到匹配项后才授权访客。打开授权人员的大门。