1502|0

114

帖子

8

TA的资源

一粒金砂(高级)

楼主
 

基于人脸识别的自动打卡健走计时系统 [复制链接]

  本帖最后由 alanlan86 于 2022-10-23 17:04 编辑

 

作品名称基于人脸识别的自动打卡健走计时系统

作者:alanlan86        

  • 作品简介

受到新冠疫情的影响,大家对于自身的身体健康情况越发重视,同时也形成了健身锻炼的热潮。而跑步更是普通人群最容易获得,开展门槛最低的日常锻炼方式。但是在没有形成锻炼习惯前,枯燥重复的锻炼会使得很多的跑者望而却步。因此,本项目的设计需求应运而生。

本系统旨在应用自动识别打卡计时技术,进行自动计时,借助LoRa和低功耗蓝牙BLE无线传输技术,进行打卡数据集中上传,达到自动办赛和趣味PK排名等功能,提高健步、跑步运动的趣味性。

  • 作品照片:

 

  • 功能介绍:
  1. 采用K210实现人脸识别,实现健走自动打卡记录采集
  2. 采用二维码方式进行参赛人员信息录入,交互触发实现参赛人员人脸特征录入
  3. 采用LoRa通信将打卡点打卡状态,上报到远端(PC/云后台),以便进行成绩统计记录
  4. 用户若顾虑人脸信息安全因素,可采用蓝牙手环/手表,进行打卡计时
  5. 采用二维码录入手环MAC地址信息、用户ID等信息到打卡点
  6. 通过BLE低功耗蓝牙对CP打卡点自动校时功能
  • 系统框图
    本系统的硬件分为打卡点设备和远端采集设备,两个大部分。

硬件:

A、总体框图

硬件引脚连接表:

K210引脚

引脚连接

功能

21,UART1 RX

nRF52832 P0.3

K210 UART1 RX接nRF52832 TX

22,UART TX

nRF52832 P0.2

K210 UART1 TX接nRF52832 RX

33,I2S WS

MAX98357 LRC

I2S连接到音频MAX98357(DAC+功放)

34,I2S DOUT

MAX98357 DIN

I2S连接到音频MAX98357(DAC+功放)

35,I2S SCLK

MAX98357 BCLK

I2S连接到音频MAX98357(DAC+功放)

Type C 5V电源

提供给MAX98357

 

3.3V

提供给蓝牙和LoRa电路

 

GND

共地连接

 

 

  1. nRF52832+LoRa原理图

LoRa电路如下图

蓝牙电路,如下图:

 

软件:

本项目整个系统完成功能如下图所示

其中,人脸识别、二维码识别、语音提示功能,均有MaixBit K210平台完成,另外的蓝牙扫描和自动校时由nRF52832芯片实现,LoRa通信远传由Semtech公司的SX1268/LLCC68芯片完成。

  • 各部分功能说明

关于本系统设计的软件代码模块详细讲解,可以参考分享的帖子汇总,帖子内容基本涵盖整个软件的开发过程各个模块的实现流程。

各个功能模块与源码文件的对应关系,如下:

功能模块

对应源码文件

备注

人脸识别

main.py

K210平台

二维码识别

main.py

K210平台

音频文件播放

main.py

K210平台

串口通信

uart_protocol.py

K210平台/nRF52832

LoRa通信

Lora_task.c

nRF52832

蓝牙功能

main.c

nRF52832

 

 

  • 人脸识别

K210上实现人脸识别,在KPU上采用的是yolo2的模型,封装为类class FaceRecog,包含了人脸检测、人脸识别、人脸特征提取、人脸特征存储到TF卡上几个部分。

本功能模式实现在face_recognization.py文件中。

  • 二维码识别

K210上实现二维码识别,也是比较简单,调用res = img.find_qrcodes()接口即可。本项目中将字符信息编码到二维码中。

用户信息

用户名称+参数序号+蓝牙设备MAC地址+校验码

命令信息

复位SD/TF Card

 

例如,二维码(1)左:用户信息(maxs,20221006,C1:01:02:03:04:03,cs)(2)中:用户信息(eeworld,123654,01:02:03:04:05:06,cs)(3)右:命令信息(reset_sdcard)

  

  • 音频文件播放

K210进行音频文件播放,调用i2s接口初始化以及audio类即可,如下(from Maix import I2S, GPIO)和(import audio)。音频文件部分播放在tf卡上,因此,需要从文件系统上加载音频文件(player = audio.Audio(path=file_path)。

在制作语音源文件时,大家可以用录音获得,也可以采用GoldenWav软件,通过文字转语音获得,通过PC生产需要的采样率的音频文件,并拷贝到TF卡上即可。

本功能模块相关代码,存放在main.py源码文件中。在开发过程中,需要注意K210与MAX98357的I2S接口配置,需要配置为SCLK_CYCLES_16 16时钟周期的模式,否则播放不出声音,或者播放声音不对。

  • 串口通信

在K210与nRF52832之间执行了串口通信,进行的通信数据格式定义:

包头

包类型

长度

数据

校验码

包尾

DD FF

00数据包/01命令

2字节

N字节

CRC16(与modbus一致)

AA FF

其中定义的命令包包括有:

(1)蓝牙打卡成功后,通知K210进行声音播放;(2)在蓝牙校时成功后,同步到K210平台。

定义的数据包有:

(1)在K210端人脸识别后,将需要执行LoRa传输发送的数据包发送给nRF52832。

在K210平台上与串口通信相关代码在uart_protocol.py文件中。在nRF52832端,和通信相关的代码在uart_drv.c文件中。

在调试如上定义的串口的通信包协议时,可以采用sscom串口调试工具的自动计算校验和功能,使用非常方便。

 

  • LoRa通信

nRF52832作为主控,采用1路SPI接口作为通信接口和1路DIO作为中断引脚,实现semtech LLCC68(兼容SX126X系列)的控制和通信功能。

在移植好的驱动中,仅需要在初始化时,调用void lora_init(void)函数,在main()循环中调用void lora_process(void)即可。

在需要执行发送数据时,调用接口Radio.Send()函数即可。而LoRa无线接收到数据时,以回调函数的方式通知应用层,在函数void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr )上实现,可进行数据解包或命令解析等操作。

若关注希望调试LoRa的通信距离,可以通过如下Radio.SetTxConfig( ); Radio.SetRxConfig( ); Radio.SetChannel( );三个API函数,配置LoRa的通信频率(这个和硬件设计调试的参数有关系,主要需要规避同频干扰)、LoRa通信速率、带宽、SF扩频因子、CR等参数。

本部分功能实现,主要包含在如下的文件夹路径下:nRF5_SDK_17.1.0_ddde560\examples\ble_lora_llcc68\ble_app_uart_llcc68_p2p_sender\lora。

 

  • 蓝牙自动校时及穿戴设备扫描

在nRF52832端实现了,蓝牙扫描功能和CTS(current time service client)当前时间服务客户端,可通过蓝牙扫描功能扫描可穿戴手表或手环。本部分功能实现,主要包含在代码如下文件位置:nRF5_SDK_17.1.0_ddde560\examples\ble_lora_llcc68\ble_app_uart_llcc68_p2p_sender中main.c文件。

首先,在安卓手机安装nRFConnect APP搜索到穿戴手表ID206的一款手表的MAC地址,或者翻阅穿戴手表的UI,查询到当前设备的蓝牙MAC地址。如下图是,通过nRFConnect APP搜索到蓝牙手表的MAC地址为“F2:50:17:B2:C2:04”。

 

 

然后,将蓝牙MAC地址信息制作为二维码信息,扫描录入后,通过K210发送给nRF52832,从而由nRF52832进行从设备扫描,并通过RSSI值计算得到距离,判断是否打卡成功。由于RSSI值的波动性比较大,因此需要通过卡尔曼滤波算法进行处理后再进行距离计算。

扫描ID206穿戴手表,实现效果:

 

通过蓝牙CTS_C实现自动校时效果:

在iPhone链接蓝牙广播名称为“BLE_LoRa”设备后,蓝牙芯片将发起配对流程,在完成配对流程后,对手机端执行服务发现流程,在搜寻到CTS服务后,将从手机端读取到当前日历时间,并执行自动校时。

  • 作品源码

K210平台源码:

https://bbs.eeworld.com.cn/forum.php?mod=attachment&aid=NjUwNTkyfDc0NDc1OTY2ODE2MDRlZDNlYzVlODZkYzJlMWJkZDk2fDE3MzcyNTQwNTc%3D&request=yes&_f=.zip

 

(备注:源码压缩包内除含相关的micropython代码外,还有需要存储于SD卡上的wav文件、模型文件)

nRF52832+LoRa(发送端)源码:

https://bbs.eeworld.com.cn/forum.php?mod=attachment&aid=NjUwNTkzfDE5ODczYjE2MjBkNzk4OGJiNWViZGE3MjkwZTc0MzlkfDE3MzcyNTQwNTc%3D&request=yes&_f=.zip

 

(备注:源码包内代码,需要放入nRF52 SDK17.1.0的如下路径nRF5_SDK_17.1.0_ddde560\examples\,关于SDK的下载路径请参考官方网站:download.recurser.com (nordicsemi.com)

nRF52832+LoRa(接收端)源码:

https://bbs.eeworld.com.cn/forum.php?mod=attachment&aid=NjUwNTk0fDI5YWU5YWJmYzEzYjVlMDY5ZmEyOTczNjc5MDEyNzU2fDE3MzcyNTQwNTc%3D&request=yes&_f=.zip

 

(备注:源码包内代码,需要放入nRF52 SDK17.1.0的如下路径nRF5_SDK_17.1.0_ddde560\examples\,关于SDK的下载路径请参考官方网站:download.recurser.com (nordicsemi.com)

 

  • 作品功能演示视频

演示视频涵盖整个系统的设计过程,参赛人员信息录入过程,人脸识别打卡通信等部分,详细参考链接:

基于人脸识别的自动打卡健走计时系统-基于人脸识别的自动打卡健走计时系统-EEWORLD大学堂

 

  • 项目总结

帖子分享汇总:

【基于人脸识别的自动打卡健走计时系统】开箱贴(1):SiPEED Maix Bit(K210) https://bbs.eeworld.com.cn/thread-1206650-1-1.html

【基于人脸识别的自动打卡健走计时系统】开箱帖2:ESP32-EYE开发板开箱体验 https://bbs.eeworld.com.cn/thread-1207455-1-1.html

【基于人脸识别的自动打卡健走计时系统】MaixBit-K210轻松跑出人脸识别功能! https://bbs.eeworld.com.cn/thread-1209130-1-1.html

【基于人脸识别的自动打卡健走计时系统】Maixbit K210串口通信协议调试 https://bbs.eeworld.com.cn/thread-1215293-1-1.html

【基于人脸识别的自动打卡健走计时系统】Maixbit K210驱动MAX98357A播放WAV音频 https://bbs.eeworld.com.cn/thread-1215475-1-1.html

【基于人脸识别的自动打卡健走计时系统】节点通信——LoRa技术 https://bbs.eeworld.com.cn/thread-1218449-1-1.html

【基于人脸识别的自动打卡健走计时系统】K210 MAIXBIT用二维码识别作为用户信息 https://bbs.eeworld.com.cn/thread-1219303-1-1.html

【基于人脸识别的自动打卡健走计时系统】Maixbit K210初始化加载SD卡不稳定问题 https://bbs.eeworld.com.cn/thread-1220139-1-1.html

【基于人脸识别的自动打卡健走计时系统】用多线程处理(二维码扫码+音频播放) https://bbs.eeworld.com.cn/thread-1220140-1-1.html

【基于人脸识别的自动打卡健走计时系统】Maixbit/MaixPy 坑!音频播放函数阻塞调用 https://bbs.eeworld.com.cn/thread-1220181-1-1.html

 

总结:

至此,经过代码设计,将各个模块功能进行融合,整个系统设计初步完成。

 

待完善:

本系统受到当前K210的资源限制以及设计时间的原因,还有如下待完善的方面

  1. 在自动打卡部分,除了人脸识别和蓝牙扫描打卡外,通过跑步人员身上的号码簿进行人员检测和打卡,也是一个实用的功能模块。由于当前采用官方的K210固件文件,未进行其他配置裁剪,因此没用足够的资源运行号码识别部分。
  2. LoRa通信目前仅仅进行的是一个打卡点的通信,未有实现星形网络的通信,需要后续完善。
  3. 屏幕界面部分未有进行UI设计,可增加人存在传感器,在侦探到人员存在时执行二维码或人脸识别,否则可进行视频或音频轮播,进行广告播放,可作为媒体推介机器使用。

 

  • 其他


致谢:

非常感谢得捷电子与电子工程师世界提供的比赛机会。因为于本人来说,一直都是非常感兴趣在人工智能的设计,但是在工作岗位上并未有机会涉猎,因此,有幸本次得到参加比赛的机会,可以比较充分地学习K210平台,学习micropython编程,学习Maixpy等等知识,更重要是有别于日常工作,能够在业余通过EEWorld的平台与各位爱好者进行交流和技术分享,相互促进。希望后续还有机会能够参加更多的比赛以及与大家交流!

 

附件 作品提交word文档 https://bbs.eeworld.com.cn/forum.php?mod=attachment&aid=NjUwNTk1fDM4YWJhOWExZDNiMWIxZTVkYmM1ODcyMDA5Y2EzYTdlfDE3MzcyNTQwNTc%3D&request=yes&_f=.doc

 

 

 

 

点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表