Screen-Lock智能蓝牙指纹锁基于乐鑫ESP32C3模组构建, 搭载 RISC-V 32 位单核处理器,并使用海凌科ZW101及LD2402模块实现智能屏锁功能,支持人体检测,适用于学习监督,员工统计,信息安全保护。
Screen-Lock智能蓝牙指纹锁采用Espressif ESP32C3模组作为本项目主控,提供WIFI及蓝牙能力;采用Hi-Link ZW101指纹模组,实现指纹解锁输入密码功能;采用Hi-Link LD2402人体雷达,实现人体距离检测功能;采用TP4054充电IC,实现锂电池充电功能;支持3V振动马达,用于提醒,总体功能清单如下:
蓝牙HID输入
离开工位时自动锁屏
回到工位时指纹解锁
统计工作时长及离开时长
统计休息次数
统计经过时的次数
久坐提醒
用眼距离过近提醒
Web控制中心
Screen-Lock智能纹锁架构设计
主控电路这里选用ESP32C3芯片,借助C3的蓝牙功能通过HID实现锁屏和输入密码,借助C3的WIFI功能通过局域网搭建Web服务实现可视化数据及设备控制中心。C3芯片价格便宜且引脚IO足够。
指纹模块选用Hi-Link ZW101模块,由于该模块默认串口波特率较低,所以使用软件模拟串口进行通讯,把C3的硬件串口留给LD2402使用,这里还引出了一条T_OUT信号线,这是一条触摸信号线,你可以把他当作触摸按键使用。
人体检测模块选用HI-Link LD2402人体存在24G毫米波雷达模块,这个模块的串口波特率为115400,比较高,所以这里使用硬件串口通讯,模组带一个输出IO,用于判断是否有人存在,不过这个IO比较多余,可以去除掉,因为串口会实时发送数据告诉人体距离,如果你有扩展需求可以去掉这个IO接其他外设。
供电电路使用LDO方案,这里选用ME6217C33M5G芯片,尺寸小巧,外围器件较少。
充电IC选用TP4054,价格便宜,而且体积小,很适合集成,CHRG这里也引出一条IO,可以反馈电池充电状态。
屏幕选用SSD1306,0.91寸屏,用作信息提示。
振动马达也是用作提醒功能使用,3.3V使用NMOS通过IO控制,我这里用的AO3400A支持5.7A,可以选便宜点的,马达额定电流只有80mA。
Screen-Lock智能纹锁软件开发
开发环境
软件环境:VSCode+PlatformIO
开发语言:C/C++
依赖库
EspSoftwareSerial:软串口驱动库
Adafruit SSD1306:屏幕驱动库
蓝牙HID驱动
蓝牙HID基于BleKeyboard库修改,原库年久失修,由于安全协议问题会导致最新Windows及Android系统拒绝与其通讯。通过在原库 void BleKeyboard::begin (void) 中添加以下两行解决
pSecurity->setCapability(ESP_IO_CAP_NONE);//安全设置pSecurity->setInitEncryptionKey(ESP_BLE_ENC_KEY_MASK | ESP_BLE_ID_KEY_MASK);
指纹驱动
指纹库基于Hi-Link提供的例程修改,原例程缺少一些数据位判断及适当延时,导致接收到的数据包未过滤而返回通讯失败。通过对原库receiveResponse()函数改良,添加数据位判断,以及init初始化添加等待延时解决。
boolreceiveResponse(){uint8_t response[64];uint8_tindex=0;uint32_t startTime = millis();//先等待包头 EF01bool headerFound = false;while(millis() - startTime 2000) { ?//?延长等待时间到2秒if?(fingerprintSerial.available()) {uint8_t b = fingerprintSerial.read();if?(!headerFound) {if?(index?==?0?&& b ==?0xEF) {? ? ? ? response[index++] = b;? ? ? } elseif (index?==?1?&& b ==?0x01) {? ? ? ? response[index++] = b;? ? ? ? headerFound = true;? ? ? }?else?{? ? ? ? index?=?0;?//?重新开始找包头? ? ? }? ? }?else?{? ? ? response[index++] = b;if?(index?>=9) {//包长度在第7和8字节uint16_t packetLen = ((uint16_t)response[7] <8) | response[8];if?(index?>=9+ packetLen) {//收到完整包break; } } } }}#if defined(HLK_DEBUG)Serial.println("Received response:");printResponse(response,index);#endif// 简单校验包头和确认码if(index>=12&& response[0] ==0xEF&& response[1] ==0x01&& response[9] ==0x00) {returntrue;}returnfalse;}
固件烧录
首次烧录连接设备时,主控可能会不断重启导致端口不稳定,这时候要先按住BOOT键,然后再按RST键,最后松开BOOT键进入下载模式即可。
如果你通过源码烧录,不需要自己设置分区,platformio会自动按照默认分区表配置分区烧录,你只需要点击烧录箭头即可自动编译,自动查找端口,自动烧录。
为了简化烧录,附件中提供的固件是bootloader.bin + partitions.bin + firmware.bin 合并后的固件,所以如果你使用附件提供的合并固件,仅需设置烧录地址为0即可。
如果你通过源码编译,则会在build目录下产生bootloader.bin partitions.bin firmware.bin这三个bin文件,所以在烧录时请按照下图提供的分区地址烧录。
原理图
PCB板
Screen-Lock智能纹锁成品
-
模块
+关注
关注
7文章
2796浏览量
50972 -
嵌入式
+关注
关注
5161文章
19783浏览量
319616 -
指纹门锁
+关注
关注
0文章
12浏览量
2332
发布评论请先 登录
【华强芯城指纹模块试用申请】指纹门锁
蓝牙智能门锁解决方案 BLE蓝牙指纹智能门锁开发方案
智能指纹锁成智能家居入口,或迎来大规模爆发
基于W600 RT-Thread智能指纹门锁的设计方案
一步一步教你用Zview拟合交流阻抗谱

评论