基于STM32单片机、AS608指纹识别、ESP8266 WIFI远程控制的电子密码锁设计与实现
基于stm32单片机的电子密码锁,AS608指纹识别,ESP8266WIFI远程控制,数字密码解锁,多次错误锁定,管理员权限,OLED显示界面,完整工程代码,如视频展示完美运行,注意是代码和APP,代码和APP,代码和APP。基于stm32单片机的电子密码锁,AS608指纹识别,ESP8266WIFI远程控制,数字密码解锁,多次错误锁定,管理员权限,OLED显示界面,完整工程代码,如视频展示完美运
基于stm32单片机的电子密码锁,AS608指纹识别,ESP8266WIFI远程控制,数字密码解锁,多次错误锁定,管理员权限,OLED显示界面,完整工程代码,如视频展示完美运行,注意是代码和APP,代码和APP,代码和APP
先上个实物图镇楼(假装这里有张OLED显示指纹验证的动态图)。这个电子密码锁项目折腾了我整整俩礼拜,从指纹模块的玄学报错到WIFI突然掉线,头发都薅掉了一把。不过最终效果确实够顶——指纹、密码、远程开锁三合一,管理员还能随时查日志。
基于stm32单片机的电子密码锁,AS608指纹识别,ESP8266WIFI远程控制,数字密码解锁,多次错误锁定,管理员权限,OLED显示界面,完整工程代码,如视频展示完美运行,注意是代码和APP,代码和APP,代码和APP
指纹模块的坑是真多。AS608这玩意儿每次上电都得先发一波握手协议,代码里得这么玩:
//指纹传感器初始化
void AS608_Init() {
uint8_t buffer[32];
AS608_SendCmd(0xEF01FFFF, 0x01); //握手包
if(AS608_RecvData(buffer) != 0) {
OLED_ShowString(0,0,"Finger OK");
} else {
BEEP_Error(); //死亡蜂鸣器警告
}
}
重点是这个0xEF01FFFF的魔数,当初没看手册直接抄网上例程,结果卡了三天才发现第四字节必须用FF。验证指纹的时候更刺激,得先扫指纹生成特征码,再跟flash里的模板对比:
uint8_t verify_finger() {
AS608_SendCmd(0x01, 0x1C); //生成指纹特征码
HAL_Delay(100); //等老爷爷慢慢扫描
if(AS608_Match() > 0) { //匹配成功返回匹配序号
Unlock_Door();
return ADMIN_LEVEL; //默认指纹都是管理员
}
return 0;
}
WIFI部分用ESP8266搞的AT指令透传,注意一定要开硬件流控!血的教训——有次测试时没接CTS脚,结果数据量大直接丢包导致门锁自己抽风似的开关。远程控制协议我用了最土的JSON格式:
//APP发送的指令示例
void handle_wifi_msg(char* json) {
if(strstr(json, "\"cmd\":\"unlock\"")) {
if(check_remote_auth(json)) { //校验APP端的token
Unlock_Door();
}
}
//...其他指令处理
}
密码逻辑最要命的是防暴力破解。我做了个错误计数器,连续错三次就锁定30秒,并且记录到EEPROM里:
uint8_t pwd_errors = 0;
void check_password() {
if(compare_input_pwd()) {
pwd_errors = 0;
Unlock_Door();
} else {
if(++pwd_errors >= 3) {
Lock_System(30); //锁定30秒
log_security_event(); //记到安全日志
}
}
}
管理员权限切换有个骚操作——长按#号键输入特定密码可以进入超级用户模式,这时候能删改普通用户权限。OLED菜单用了状态机来实现,比一堆if else优雅多了:
enum MenuState {MAIN, SETTING, LOGS};
void menu_handler() {
switch(current_state) {
case MAIN:
if(btn_ok) enter_setting();
break;
case SETTING:
if(btn_back) current_state = MAIN;
//...其他处理
}
}
APP端用MIT App Inventor撸的,虽然丑但能用。关键是要处理三种解锁方式的反馈,特别是指纹验证需要等2秒左右。有个小技巧是在发送指令后启动超时计时器,防止网络不好一直转圈。
源码已经扔GitHub了(假装有链接),下个楼发演示视频。下次打算加个人脸识别模块,不过估计又得掉一波头发...(完)

更多推荐
所有评论(0)