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

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

3天内不再提示

如何利用树莓派3B实现智能门禁对讲系统的设计

科技观察员 来源:hackster.io 作者:hackster.io 2022-04-05 16:45 次阅读

该项目为实时系统,仅允许通过授权/受邀人员,使用人脸识别或NFC卡。

工作步骤:

人脸接近对讲机

看着相机

系统将脸与授权人进行比较

如果找到对应的数据,那么门就会打开,允许一个人可以进入

还有另一种通过方式;

持有通行卡的人将其放置到RFID位置,如果在其数据库中找到此卡的代码,门就会打开

准备

继电器连接

将继电器连接到RPI3。在我的例子中,我使用GPIO12引脚作为数据,5v作为电源,你可以选择任何GND。

您可以使用shell脚本测试中继,只需创建一个简单的sh脚本:

poYBAGJIDOqAMCZOAAAUcxybbTw407.png

粘贴下面的代码并运行它。

脚本代码:

poYBAGJIDOWAfW10AAF1vuJZEgc269.png

相机连接

连接相机模块并在raspi-config中启用它:

从终端打开工具:raspi-config

pYYBAGJIDOCAR_HCAAAGo2w90aE708.png

选择Enablecamera并点击Enter,然后转到,系统Finish将提示您重新启动。

要测试系统是否已安装并正常工作,请尝试以下命令:

pYYBAGJIDNyALjSKAAAHUV7a238706.png

LED连接

将您的LED连接到您想要的任何GPIO+GND。在我的例子中,我将GPIO16用于绿色LED,将GPIO26用于红色。完成后,测试:

为绿色和红色LED创建2个简单的Python脚本,内容如下:

绿灯.py

pYYBAGJIDNiAQB4xAAA93WzYn9M176.png

红色led2.py

pYYBAGJIDNSABSJNAAJyJUfD-cE476.png

接着就可以进行测试了。如果LED发光,则一切正常。

poYBAGJIDNCAa2UWAAAQmhDok2s551.png

人脸识别脚本

pip3使用(或用于Python2)从pypi安装此模块:pip2

poYBAGJIDMyAREptAAASV9IQrmI149.png

例如,在 Documents 中创建目录“pic”和“unknown”,并在其中放置一些您认识的人的面部照片。就我而言,它是(“/home/pi/Documents/pic/”)和(“/home/pi/Documents/unknown/”)。

使用以下代码创建一个 python 脚本:

import face_recognition
import picamera
import numpy as np
import os
camera = picamera.PiCamera()
camera.resolution = (320, 240)
output = np.empty((240, 320, 3), dtype=np.uint8)
print("Loading known face image(s)")
ep_image = face_recognition.load_image_file("/home/pi/Documents/pic/ep.jpg")
ep_face_encoding = face_recognition.face_encodings(ep_image)[0]
vl_image = face_recognition.load_image_file("/home/pi/Documents/pic/vl.jpg")
vl_face_encoding = face_recognition.face_encodings(vl_image)[0]
face_locations = []
face_encodings = []
while True:
print("Capturing image.")
camera.capture(output, format="rgb")
face_locations = face_recognition.face_locations(output)
print("Found {} faces in image.".format(len(face_locations)))
face_encodings = face_recognition.face_encodings(output, face_locations)
for face_encoding in face_encodings:
match = face_recognition.compare_faces([ep_face_encoding,vl_face_encoding], face_encoding)
name = ""
os.system("python /home/pi/led2.py &")
import time
date_string = time.strftime("%Y-%m-%d-%H:%M:%S")
camera.capture("/home/pi/Documents/unknown/image-" + date_string + ".jpg")

测试

pYYBAGJIDMWAedH6AAAJl_PaUBM655.png

RFID连接

引脚:

pYYBAGJIDMGAerplAAD66c-bwo0765.png

我们需要这个以将我们的RFID模块连接到RaspberryPi1。

ready:

poYBAGJIDL2AesjJAABkkvyaapk312.png

read.py :当脚本找到授权卡时,它在远程 RPI 3 上打开用户图片(运行 LED 脚本),然后开门。

import MFRC522
import signal
import os
continue_reading = True
MIFAREReader = MFRC522.MFRC522()
cardA = [46,44,187,26,163]
cardB = [176,203,130,124,133]
cardC = [20,38,121,207,132]
def end_read(signal, frame):
global continue_reading
continue_reading = False
print "Ctrl+C captured, ending read."
MIFAREReader.GPIO_CLEEN()
signal.signal(signal.SIGINT, end_read)
while continue_reading:
(status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
if status == MIFAREReader.MI_OK:
print "Card detected"
(status,backData) = MIFAREReader.MFRC522_Anticoll()
if status == MIFAREReader.MI_OK:
print "Card read UID: "+str(backData[0])+","+str(backData[1])+","+str(backData[2])+","+str(backData[3])+","+str(backData[4])
if backData == cardA:
print "Evghenii"
os.system("sshpass -p *password* ssh root@10.0.0.60 fbi -T 1 -d /dev/fb1 -noverbose /home/pi/Documents/pic/ep.jpg")
os.system("sshpass -p *password* ssh root@10.0.0.60 /home/pi/Documents/open.sh 2>/dev/null")
# os.system("sshpass -p *password* ssh root@10.0.0.60 sleep 2")
os.system("sshpass -p *password* ssh root@10.0.0.60 killall fbi")
elif backData == cardB:
print "Vlad"
os.system("sshpass -p *password* ssh root@10.0.0.60 fbi -T 1 -d /dev/fb1 -noverbose /home/pi/Documents/pic/vl.jpg")
os.system("sshpass -p *password* ssh root@10.0.0.60 /home/pi/Documents/open.sh 2>/dev/null")
# os.system("sshpass -p *password* ssh root@10.0.0.60 sleep 2")
os.system("sshpass -p *password* ssh root@10.0.0.60 killall fbi")
elif backData == cardC:
print "is Card C"
else:
print "wrong Card"
os.system("sshpass -p *password* ssh root@10.0.0.60 /home/pi/led2.py 2>/dev/null")

  • 使用这个例子:

poYBAGJIDLeAfcu9AAA4FhFgnQQ774.png

按钮 + 通讯
#!/usr/bin/python
import RPi.GPIO as GPIO
from subprocess import call
from datetime import datetime
import time
import os
shutdownPin = 29
shutdownMinSeconds = 5
# button debounce time in seconds
debounceSeconds = 0.01
GPIO.setmode(GPIO.BOARD)
GPIO.setup(shutdownPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
buttonPressedTime = None
def buttonStateChanged(pin):
global buttonPressedTime
if not (GPIO.input(pin)):
# button is down
if buttonPressedTime is None:
buttonPressedTime = datetime.now()
else:
# button is up
if buttonPressedTime is not None:
elapsed = (datetime.now() - buttonPressedTime).total_seconds()
buttonPressedTime = None
if elapsed >= shutdownMinSeconds:
call(['shutdown', '-r', 'now'], shell=True)
elif elapsed >= debounceSeconds:
os.system("bash /home/pi/timed.sh")
# subscribe to button presses
GPIO.add_event_detect(shutdownPin, GPIO.BOTH, callback=buttonStateChanged)
while True:
# sleep to reduce unnecessary CPU usage
time.sleep(5)

功能.sh

#!/bin/bash
sshpass -p password ssh epogonii@ipadress -p1337 notify-send -i /usr/share/icons/gnome/32x32/actions/ring2.png Smart-Intercom Guest_at_the_door
DISPLAY=:0.0 XAUTHORITY=/home/pi/.Xauthority /usr/bin/feh --hide-pointer -x -q -D 5 -B black -F /home/pi/doorway.png &
sh /home/pi/Documents/open.sh > log.out 2> /dev/null
DISPLAY=:0.0 XAUTHORITY=/home/pi/.Xauthority xdotool key "x"
sh /home/pi/tgphoto.sh FaceRec /var/www/html/last.jpg > log.out 2> /dev/null

pYYBAGJIDK-AO9UEAAE3wrUuV0w710.png

此处为智能对讲增加了按钮。它会将您的最后一张照片发送给通讯机器人,并向Ubuntu桌面PC发送通知。

poYBAGJIDKuAe3h4AADeZMsaQ3I474.png

为按钮添加计时

为了通过按钮在特定时间禁用入口,我制作了以下bash脚本:

poYBAGJIDKWATOopAABSuTRooYo121.png

action.sh-早上7点到晚上19​​点开门

error.sh-在晚上19​​点到早上7点之间停止使用,显示限制图像error.sh脚本

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

    关注

    116

    文章

    1688

    浏览量

    105449
  • 智能门禁系统

    关注

    0

    文章

    15

    浏览量

    5044
  • 树莓派3B+
    +关注

    关注

    0

    文章

    3

    浏览量

    753
收藏 人收藏

    评论

    相关推荐

    树莓型号3B+与型号3B比一比

    B+有什么新特点? 看看最新的Pi和旧一代的比较。 在这篇文章中,我们先来看看最新的树莓型号3B +以及一些新的和改进的功能,还有更多的细节尚未公布。 请注意,这篇文章中使用的
    的头像 发表于 04-13 09:48 12.6w次阅读

    树莓3b,为什么是32位的armv7

    3b是32位(图上这个getconf是硬件还是软件位数),硬件是32位的?3b的处理器写着是bcm2837,系统里看是arm7这是正常
    发表于 10-01 22:10

    请问树莓3B有没有wifi模块的能支持自建AP么?

    帮会员提问,请大家帮帮他树莓3B有没有wifi模块的。能支持自建AP么?树莓3B有没有wif
    发表于 06-09 15:12

    请问树莓3B/3B+和4B如何安装OpenCV?

    树莓3B/3B+和4B安装OpenCV教程
    发表于 11-05 07:17

    怎样利用树莓3B去控制28步进电机?

    ,楼主自行购买了28步进电机及相应的驱动器,完成了对步进电机的控制。硬件设备:树莓3B 28步进电机及其驱动 12V开关电源...
    发表于 07-08 07:39

    树莓3b的工作电流不足会有什么影响

    树莓3b最好的工作电流是多少?树莓3b的工作电流不足会有什么影响?
    发表于 10-11 08:16

    树莓3B的硬件配置有哪些

    1、树莓3B(Raspberry Pi 3 型号 B SBC)硬件配置Broadcom BCM2837 芯片组,运行频率 1.2 GHz
    发表于 01-19 06:55

    树莓3B的硬件资源详细介绍免费下载

    本文档的主要内容详细介绍的是树莓3B的硬件资源详细介绍免费下载。
    发表于 10-26 08:00 66次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>3B</b>的硬件资源详细介绍免费下载

    树莓3B的电路原理图免费下载

    本文档的主要内容详细介绍的是树莓3B的电路原理图免费下载。
    发表于 04-22 08:00 121次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>3B</b>的电路原理图免费下载

    树莓3B上运行64位系统的测评详细说明

    今天,我们团队感受了一下在树莓3B 的主板上运行64bit 系统的感觉!那种感觉您如果有幸感受的话,您一定会说:这才是我要的树莓
    发表于 11-21 16:17 12次下载

    树莓3b调mjpg-streamer库实现监控功能

    功能。一、准备工作1.需要的模块和单片机今天我们需要的是树莓3b和一个摄像头,将其连接好是这样的然后我们将利用SSH方式,登录上树莓
    发表于 12-22 18:47 6次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>3b</b>调mjpg-streamer库<b class='flag-5'>实现</b>监控功能

    OpenHarmony Dev-Board-SIG专场:OpenHarmony树莓3B移植技术分享

    OpenHarmony Dev-Board-SIG专场:OpenHarmony树莓3B移植技术分享
    的头像 发表于 12-28 14:47 2192次阅读
    OpenHarmony Dev-Board-SIG专场:OpenHarmony<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>3B</b>移植技术分享

    OpenHarmony Dev-Board-SIG专场:开发板选型—为什么选择树莓3B

    OpenHarmony Dev-Board-SIG专场:开发板选型—为什么选择树莓3B
    的头像 发表于 12-28 14:51 2160次阅读
    OpenHarmony Dev-Board-SIG专场:开发板选型—为什么选择<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>3B</b>

    rt-smart移植分析:从树莓3b入手

    移植rt-smart到最新的板子上具体需要注意哪些细节,哪些才是移植rt-smart的关键点?本文从树莓3b上移植rt-smart的角度,从头分析rt-sm...
    发表于 01-25 18:48 0次下载
    rt-smart移植分析:从<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>3b</b>入手

    树莓3B/4B散热风扇帽

    电子发烧友网站提供《树莓3B/4B散热风扇帽.zip》资料免费下载
    发表于 07-25 14:31 4次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>3B</b>/4<b class='flag-5'>B</b>散热风扇帽