这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 有奖活动 » 基于K230DBOX的人脸识别型门禁管理

共1条 1/1 1 跳转至

基于K230DBOX的人脸识别型门禁管理

助工
2026-08-13 21:40:08     打赏

利用K230D BOX的人脸识别功能,通过提取其识别结果即可进行门禁管理。

通过添加语句print(self.db_name[v_id],v_score_max) ,即可测试提取内容的正确性,在串口终端其输出内容见图1所示。image.png

1 输出关键信息

有了识别结果,我们能进行哪些处理呢?

对于门禁管理来说,最简单的处理就是发出提示。

为此,对于识别率较高者可点亮LED作为指示。

因此,需在识别程序的基础上添加以下内容来使LED发出提示。

from machine import Pin,PWM
# 实例化FPIOA
fpioa = FPIOA()
# 为IO分配相应的硬件功能
fpioa.set_function(23, FPIOA.GPIO23)
fpioa.set_function(61, FPIOA.GPIO61)
ledr = Pin(23, Pin.OUT, pull=Pin.PULL_NONE, drive=7)
ledh = Pin(61, Pin.OUT, pull=Pin.PULL_NONE, drive=7)
ledh.value(1)
ledr.value(0)

在识别成功的情况下,对高识别率的情况加以提示,即点亮LED

此外,通过判别处理还可分辨来访者是谁。

相应的程序内容为:

# 识别成功
if v_score_max > 0.90 :
    ledh.value(0)
    ledr.value(1)
    if(self.db_name[v_id]=='ID1') :
         print('Janny')
    if(self.db_name[v_id]=='ID2') :
         print('Susan')
...
else:
    ledh.value(1)
    ledr.value(0)

经程序运行,其测试效果见图2至图4所示,说明处理有效。

当然,对于电子门锁也可触发控制动作。

image.png

2 来访者识别

image.png

3  点亮指示灯(注册者)

image.png

4 熄灭指示灯(未注册者) 

这样就发挥了识别的作用,即能识别,还能知道具体是谁。

这样就发挥了识别的作用,即能识别,还能知道具体是谁。

另外,还可以使用PWM来控制舵机进行门禁的管控。

利用PWM控制舵机的程序为:

from machine import PWM
from machine import FPIOA
import time
from machine import Pin
# 实例化FPIOA
fpioa = FPIOA()
# 为IO分配相应的硬件功能
fpioa.set_function(34, FPIOA.GPIO34)
fpioa.set_function(0, FPIOA.GPIO0)
# 构造GPIO对象
key0 = Pin(34, Pin.IN, pull=Pin.PULL_UP, drive=7)
fpioa.set_function(25,FPIOA.PWM5)
pwm5 = PWM(5, 50, duty=10, enable=True)
duty = 3 
pwm5.duty(duty)
f=0
while True:
    # 读取按键状态
    if f == 1:
        duty=7
    if f == 0:
        duty=13
    pwm5.duty(duty)
    time.sleep_ms(20)

经程序的运行,其测试效果见图5所示。

image.png

5 连接形式

image.png

6开启门禁

除此之外,还能进行啥深耕呢?

还可以引入语音合成技术,利用语音合成模块播报来访者是谁,其电路连接见图7所示。

image.png

7 连接方式 

在识别后,可针对性的发出问候,如“你好珍妮,请进!”,“欢迎再来!”。若没有注册,则给出“未能识别!”的提示。

为此,在识别程序的基础上所添加的内容为:

from machine import Pin
from machine import UART
from machine import FPIOA
# 实例化FPIOA
fpioa = FPIOA()
# 为IO分配相应的硬件功能
fpioa.set_function(34, FPIOA.GPIO34)
fpioa.set_function(35, FPIOA.GPIO35)
fpioa.set_function(44,FPIOA.UART2_TXD)
fpioa.set_function(45,FPIOA.UART2_RXD)
# 构造UART对象
uart2 = UART(UART.UART2, baudrate=115200, bits=UART.EIGHTBITS, parity=UART.PARITY_NONE, stop=UART.STOPBITS_ONE)
Buf1 = b'\xFD\x00\x10\x01\x03\x60\x4F\x7D\x59\x77\x6D\x26\x4F\x01\x30\xF7\x8B\xDB\x8F'
Buf2 = b'\xFD\x00\x10\x01\x03\x60\x4F\x7D\x59\xCD\x73\xAE\x59\x01\x30\xF7\x8B\xDB\x8F'
...
Buf0 =b'\xFD\x00\x0A\x01\x03\x2A\x67\xFD\x80\xC6\x8B\x2B\x52'
Bufe =b'\xFD\x00\x0A\x01\x03\x22\x6B\xCE\x8F\x8D\x51\x65\x67'
 
有来访者有针对性地处理的程序为:
if(self.db_name[v_id]=='ID1') :
    if(zt[0]==1) :
        #print('Janny')
        uart2.write(buf1)
else:
        uart2.write(bufe)
       zt[0]==1
if(self.db_name[v_id]=='ID2') :
    if(zt[1]==1) :
       #print('Susan')
       uart2.write(buf2)
else:
       uart2.write(bufe)
       zt[1]==1
...
 
if v_score_max < 0.90 :
    # 小于人脸识别阈值,未识别
#print('unknown')
uart2.write(buf0)
return 'unknown'

经程序运行,即可以语音的方式给出相应的提示。 

除此之外,还可以引入RTC计时和TF卡读写功能来记录来访者的时间。若是稍加修改,则可成为人脸识别型打卡机。 

视频演示:



共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]