尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

智能安防设备设计——蓝牙+指纹双模控制方案分享

智能安防设备设计——蓝牙+指纹双模控制方案分享 硬件平台STM32F103C8T6 DX-BT04-E 蓝牙模块 指纹识别模块软件平台Keil MDK STM32 标准库 应用场景智能门锁、智能保险柜、门禁系统一、前言随着物联网技术的快速发展智能安防设备已经成为现代生活中不可或缺的一部分。传统的单一解锁方式如仅指纹或仅密码已经难以满足用户对便捷性和安全性的双重需求。本文将分享一套基于深圳大夏龙雀科技有限公司 DX-BT04-E 蓝牙模块打造的智能安防设备设计方案通过蓝牙远程控制 指纹本地识别的双模控制架构实现灵活、安全、可靠的智能安防管理。二、方案概述本方案以 STM32F103C8T6 为主控 MCU搭配大夏龙雀 DX-BT04-E 双模蓝牙模块和串口指纹识别模块构建一套双模智能安防控制系统。系统支持两种解锁方式解锁方式通信接口认证机制适用场景指纹识别USART1 (115200bps)指纹特征匹配本地快速解锁蓝牙远程USART2 (9600bps)密码 指令协议手机 APP 远程控制双模控制的核心设计理念指纹优先蓝牙并行。当指纹模块处于通信状态时蓝牙指令暂缓处理确保指纹识别的实时性指纹空闲时蓝牙指令即时响应。三、硬件选型 ——DX-BT04-E 蓝牙模块3.1 模块简介DX-BT04-E 是深圳大夏龙雀科技有限公司专为智能无线数据传输打造的蓝牙模块采用上海博通 BK3432 芯片支持SPP V3.0 BLE V4.2双模蓝牙协议兼具兼容性与低功耗优势。3.2 核心参数参数详情芯片型号BK3432蓝牙规格SPP V3.0 BLE V4.2工作电压3.3V工作电流6mA空旷距离75m传输速率双模 10K Byte/sUART 波特率2400~115200bps (默认 9600)工作温度-40~85°C认证资质CE、FCC、SRRC3.3 引脚连接本方案中使用以下关键引脚与 STM32 连接BT04-E 引脚引脚功能STM32 引脚说明Pin 21 (UART-RX)串口数据输入PA2 (USART2_TX)MCU 发送 → 模块接收Pin 22 (UART-TX)串口数据输出PA3 (USART2_RX)模块发送 → MCU 接收Pin 2 (LINK-STATUS)连接状态输出PA4 (GPIO 输入)连接时输出高电平Pin 13 (VBAT)电源3.3V模块供电Pin 1/12 (GND)地GND系统共地3.4 AT 指令兼容性DX-BT04-E 的 AT 指令集与 DX-BT36 完全兼容支持以下关键指令指令功能默认值AT测试串口连通性-ATNAMEname设置蓝牙名称BT36ATBAUDparam设置波特率3 (9600)ATLADDR查询 MAC 地址-ATNOTIparam通知连接状态0 (关闭)ATPWRMparam设置工作模式1 (正常)ATPOWEparam设置发射功率C (4dB)ATADVIparam设置广播间隔5 (546ms)ATRESET软件重启-ATDEFAULT恢复出厂设置-命令模式蓝牙未连接时模块响应 AT 指令透传模式蓝牙连接后模块直接透传 UART 数据四、系统架构设计系统整体架构图系统采用中心化架构STM32F103 作为主控核心通过两路独立 USART 分别连接指纹模块和蓝牙模块USART1 (115200bps)连接指纹识别模块PB0 作为触摸唤醒引脚USART2 (9600bps)连接 DX-BT04-E 蓝牙模块PA4 监测蓝牙连接状态SPI 接口驱动 LCD 显示屏实时显示系统状态TIM3_CH4 (PB1)PWM 输出控制舵机模拟门锁开关动作PB10/PB11LED 指示灯红色表示错误绿色表示成功五、蓝牙通信协议设计5.1 通信架构蓝牙通信采用透传模式手机 APP 通过 BLE 连接 BT04-E 后发送的指令数据直接透传至 STM32 的 USART2MCU 解析后执行相应操作并返回响应。手机APP --BLE V4.2-- DX-BT04-E --UART 9600-- STM32F1035.2 指令协议格式为保证安全性所有控制指令均需携带密码验证字段指令格式说明OPEN:8266\r\n开门指令密码8266CLOSE:8266\r\n关门指令STATUS\r\n查询门锁状态无需密码INFO\r\n查询设备信息MCU 响应格式响应格式说明OK:UNLOCK\r\n开门成功OK:LOCK\r\n关门成功OK:STATUSLOCKED\r\n当前状态已锁OK:STATUSUNLOCKED\r\n当前状态已开ERR:WRONG_PASSWORD\r\n密码错误ERR:UNKNOWN_CMD\r\n未知指令5.3 通信时序以远程开门为例完整通信流程如下1. 手机APP发起BLE连接请求2. BT04-E建立连接LINK-STATUS引脚拉高PA4检测到高电平3. 手机发送指令 OPEN:8266\r\n经BT04-E透传至STM324. STM32解析指令并校验密码5. STM32通过USART2返回 OK:UNLOCK\r\n经BT04-E透传至手机6. STM32控制舵机转到180°门锁打开7. 绿色LED亮3秒LCD显示开门成功六、双模控制流程双模控制流程图6.1 主循环设计系统主循环以 20ms 为周期运行每次循环依次执行指纹通信处理检查 PB0 唤醒信号处理指纹识别全流程蓝牙指令处理指纹空闲时检查 USART2 接收缓冲解析并执行蓝牙指令状态显示更新定期刷新 LCD 上的蓝牙连接状态6.2 优先级机制指纹识别具有高优先级确保用户触摸指纹传感器时能获得即时响应。蓝牙指令在指纹处理间隙执行不会干扰指纹通信的时序要求。void Process_Bluetooth_Control(void) { /* 指纹处理中时不响应蓝牙指令(优先级控制) */ if(finger_state ! FINGER_IDLE) { return; } /* ... 蓝牙指令处理 ... */ }七、核心代码实现7.1 蓝牙模块初始化 (bluetooth.c)void BT_Init(uint32_t baudrate) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(BT_UART_RCC, ENABLE); RCC_APB2PeriphClockCmd(BT_UART_GPIO_RCC, ENABLE); /* PA2(USART2_TX) - 复用推挽输出 */ GPIO_InitStructure.GPIO_Pin BT_TX_PIN; GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; GPIO_Init(BT_UART_GPIO, GPIO_InitStructure); /* PA3(USART2_RX) - 浮空输入 */ GPIO_InitStructure.GPIO_Pin BT_RX_PIN; GPIO_InitStructure.GPIO_Mode GPIO_Mode_IN_FLOATING; GPIO_Init(BT_UART_GPIO, GPIO_InitStructure); /* PA4(LINK-STATUS) - 上拉输入 */ GPIO_InitStructure.GPIO_Pin BT_LINK_PIN; GPIO_InitStructure.GPIO_Mode GPIO_Mode_IPU; GPIO_Init(BT_LINK_PORT, GPIO_InitStructure); /* USART2配置: 9600/8/N/1 */ USART_InitStructure.USART_BaudRate baudrate; USART_InitStructure.USART_WordLength USART_WordLength_8b; USART_InitStructure.USART_StopBits USART_StopBits_1; USART_InitStructure.USART_Parity USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode USART_Mode_Rx | USART_Mode_Tx; USART_Init(BT_UART, USART_InitStructure); /* 使能接收中断 */ USART_ITConfig(BT_UART, USART_IT_RXNE, ENABLE); NVIC_InitStructure.NVIC_IRQChannel USART2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority 2; NVIC_InitStructure.NVIC_IRQChannelSubPriority 0; NVIC_InitStructure.NVIC_IRQChannelCmd ENABLE; NVIC_Init(NVIC_InitStructure); USART_Cmd(BT_UART, ENABLE); BT_ClearRxBuffer(); }7.2 USART2 中断接收 (bluetooth.c)中断服务函数以\r\n作为指令结束标志实现非阻塞式指令接收void USART2_IRQHandler(void) { if(USART_GetITStatus(BT_UART, USART_IT_RXNE) ! RESET) { uint8_t data USART_ReceiveData(BT_UART); if(bt_rx_index BT_RX_BUF_SIZE - 1) { /* 检测\r\n作为指令结束 */ if(data \n bt_rx_index 0 bt_rx_buffer[bt_rx_index - 1] \r) { bt_rx_buffer[bt_rx_index] data; bt_rx_index; bt_rx_buffer[bt_rx_index] \0; bt_rx_complete 1; // 标记接收完成 } else if(data ! \r || bt_rx_index 0) { bt_rx_buffer[bt_rx_index] data; bt_rx_index; } } else { bt_rx_buffer[bt_rx_index] \0; bt_rx_complete 1; } USART_ClearITPendingBit(BT_UART, USART_IT_RXNE); } }7.3 指令解析与密码验证 (bluetooth.c)BT_CmdType BT_ParseCommand(void) { char* cmd_str (char*)bt_rx_buffer; char cmd[16] {0}; char pass[16] {0}; int sep_pos -1; /* 查找冒号分隔符 */ for(int i 0; i bt_rx_index; i) { if(cmd_str[i] :) { sep_pos i; break; } } /* 无密码指令(STATUS/INFO) */ if(sep_pos -1) { if(strncmp(cmd_str, STATUS, 6) 0) return BT_CMD_QUERY_STATUS; if(strncmp(cmd_str, INFO, 4) 0) return BT_CMD_QUERY_INFO; return BT_CMD_UNKNOWN; } /* 提取指令和密码 */ // ... (提取cmd和pass字符串) /* 校验密码 */ if(strncmp(pass, BT_PASSWORD, BT_PASSWORD_LEN) ! 0) { return BT_CMD_WRONG_PASS; } /* 匹配指令 */ if(strncmp(cmd, OPEN, 4) 0) return BT_CMD_UNLOCK; else if(strncmp(cmd, CLOSE, 5) 0) return BT_CMD_LOCK; else if(strncmp(cmd, STATUS, 6) 0) return BT_CMD_QUERY_STATUS; return BT_CMD_UNKNOWN; }7.4 双模控制主循环 (main.c)void Process_Bluetooth_Control(void) { if(finger_state ! FINGER_IDLE) return; // 指纹优先 BT_UpdateLinkStatus(); BT_ProcessCommand(); switch(bt_result) { case BT_RESULT_UNLOCK: Execute_Unlock(Bluetooth); delay_ms(3000); Execute_Lock(); // 蓝牙开门后自动关门 bt_result BT_RESULT_IDLE; Display_Initial_Screen(); break; case BT_RESULT_LOCK: Execute_Lock(); led_ok(); bt_result BT_RESULT_IDLE; Display_Initial_Screen(); break; case BT_RESULT_ERROR: Display_Status(BT Auth Failed); led_err(); bt_result BT_RESULT_IDLE; delay_ms(2000); Display_Initial_Screen(); break; default: break; } }7.5 主函数int main(void) { PC14_PC15_Init(); delay_init(); LCD_Init(); uart_init(115200); // USART1 - 指纹模块 BT_Init(9600); // USART2 - 蓝牙模块(BT04-E默认9600) Wake_Pin_Init(); led_Init(); Servo_Init(door_servo); Servo_InitPosition(door_servo); Display_Initial_Screen(); while(1) { Process_Finger_Communication(); // 优先处理指纹 Process_Bluetooth_Control(); // 蓝牙指令处理 // 定期更新蓝牙状态显示 delay_ms(20); } }八、应用场景推荐8.1 智能门锁推荐理由双模控制完美适配家庭门锁场景。家庭成员可注册指纹实现 秒开 体验访客或远程场景下主人可通过手机 APP 蓝牙远程开锁无需物理钥匙。BT04-E 的 75 米空旷距离覆盖典型家庭范围BLE V4.2 低功耗特性确保门锁长效运行。我对智能门锁的扩展建议增加防撬传感器振动检测异常时通过蓝牙推送告警结合ATNOTI指令通知连接状态变化实现防尾随检测利用ATBIND绑定指定手机 MAC 地址实现白名单管理8.2 智能保险柜推荐理由保险柜对安全性要求极高双模控制提供双重认证机制 —— 可设计为 指纹 蓝牙 双重验证才能开柜大幅提升安全等级。BT04-E 支持冬眠模式适合保险柜电池供电的长期运行需求。我对智能保险柜的扩展建议设计双重认证流程先指纹验证再蓝牙确认两步完成开柜增加震动传感器 温度传感器异常状态蓝牙实时告警利用 BT04-E 的 GPIO 口扩展传感器减少 MCU 引脚占用开柜记录本地存储 蓝牙同步至手机 APP8.3 门禁系统推荐理由办公场所门禁需要管理多用户权限。指纹模块支持多指纹注册ID 管理BT04-E 的ATFILTER指令可设置蓝牙名称过滤实现指定设备自动连接授权。管理员可通过手机 APP 远程为访客开门。我对门禁系统的扩展建议利用指纹 ID 实现分级权限管理普通用户呀管理员之类蓝牙临时授权发送限时开门码过期自动失效结合ATINQ搜索功能实现蓝牙设备自动发现与配对8.4 其他应用场景应用场景核心需求BT04-E 优势智能药箱定时提醒 安全取药低功耗冬眠模式 GPIO 传感器扩展智能快递柜取件码 身份验证BLE 透传 密码认证协议车载安防指纹启动 远程解锁75 米通信距离 SRRC 认证智能工具柜权限管理 使用记录多用户指纹 ID 蓝牙日志同步九、BT04-E 模块使用注意事项9.1 电源设计供电电压范围为 3.0~3.6V典型值 3.3V建议在 VBAT 引脚附近放置22uF 0.1uF去耦电容防止射频突发传输时电压跌落断电后 MCU 连接模块的所有 IO 口必须配置为下拉防止微弱电流导致模块异常9.2 PCB 布局模块天线部分应靠 PCB 边缘放置天线下方载板铣空天线方向至少保留 5mm 自由空间平行方向不允许铺铜走线产品外壳避免使用金属金属部件应远离天线区域9.3 软件设计要点蓝牙模块默认波特率 9600bps修改波特率后需软件重启生效透传模式下串口数据直接透传需自行设计应用层协议LINK-STATUS引脚可用于检测连接状态但仅在正常工作模式下有效低功耗模式下串口不响应指令需通过 KEY 引脚唤醒十、总结本方案基于大夏龙雀 DX-BT04-E 蓝牙模块实现了蓝牙远程 指纹本地的双模智能安防控制。方案具有以下特点双模冗余指纹与蓝牙互为备份任一方式失效不影响系统可用性安全可靠蓝牙指令需密码认证指纹采用累加和校验双重保障低功耗设计BT04-E 支持冬眠模式适合电池供电场景扩展性强AT 指令灵活配置GPIO/SPI/I2C 接口丰富适配多种传感器扩展认证齐全CE/FCC/SRRC 三重认证满足国内外市场准入要求DX-BT04-E 模块凭借其双模蓝牙协议、丰富的 AT 指令集、低功耗特性和完善的认证资质是智能安防设备开发的理想选择。
返回列表