0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >智能家居 > 基于STM32的智能门禁系统(源码+演示+实物图)

基于STM32的智能门禁系统(源码+演示+实物图)

来源: 中电网
2021-11-23
类别:智能家居
eye 74
文章创建人 拍明

原标题:基于STM32的智能门禁系统(源码+演示+实物图)

基于STM32的智能门禁系统设计与实现

引言

随着智能家居技术的快速发展,智能门禁系统已成为家庭、办公场所及公共区域安全管理的核心组件。传统机械门锁存在钥匙易丢失、安全性低等问题,而基于STM32的智能门禁系统通过集成指纹识别、RFID刷卡、密码输入及蓝牙APP远程控制等功能,显著提升了安全性和便捷性。本文将详细阐述系统设计原理、元器件选型、硬件连接、软件实现及实物演示,为开发者提供完整的技术参考。

image.png

元器件选型与功能分析

1. 主控芯片:STM32F103C8T6

选型理由:STM32F103C8T6是意法半导体推出的基于ARM Cortex-M3内核的32位微控制器,主频高达72MHz,具备丰富的外设接口(如UART、SPI、I2C等)和低功耗特性。其512KB Flash和64KB RAM可满足多任务处理需求,且价格亲民(约10元人民币),是智能门禁系统的理想选择。
功能:作为核心控制单元,STM32负责接收指纹传感器、RFID读卡器、矩阵键盘等模块的数据,执行逻辑判断并控制步进电机模拟门锁开关。

2. 指纹识别模块:AS608

选型理由:AS608是一款高性能光学指纹传感器,支持1:N指纹比对(最多存储1000枚指纹),识别速度快(<1秒),且具备抗静电干扰能力。其UART通信接口与STM32无缝对接,简化开发流程。
功能:通过采集用户指纹图像并提取特征点,与预先存储的指纹模板进行比对,实现指纹开锁。

3. RFID读卡器:MFRC522

选型理由:MFRC522支持ISO14443A标准的非接触式IC卡(如Mifare S50),工作频率13.56MHz,通信距离可达10cm。其SPI接口与STM32通信,成本低(约5元人民币),适用于门禁刷卡场景。
功能:读取用户RFID卡UID,与系统内授权卡号列表比对,验证通过后触发开锁。

4. 矩阵键盘:4×4

选型理由:4×4矩阵键盘采用行列扫描方式,减少GPIO占用(仅需8引脚),可输入16位密码或功能指令。其机械按键寿命长(约10万次),成本低(约2元人民币)。
功能:用户通过键盘输入密码,系统验证密码正确性后开锁。

5. 蓝牙模块:HC-05/HC-06

选型理由:HC-05/HC-06支持AT指令配置,工作电压3.3V~5V,与STM32的UART接口兼容。其低成本(约15元人民币)和稳定通信性能(10米有效距离)适合远程控制场景。
功能:通过手机APP发送开锁指令或密码,蓝牙模块接收后转发至STM32处理。

6. 步进电机:28BYJ-48

选型理由:28BYJ-48为5线4相步进电机,工作电压5V,驱动电流小(约50mA),通过ULN2003驱动芯片可实现精准角度控制。其成本低(约3元人民币),适合模拟门锁开关。
功能:接收STM32的脉冲信号,驱动门锁执行机构完成开锁/关锁动作。

7. OLED显示屏:0.96寸SPI接口

选型理由:0.96寸OLED屏分辨率128×64,采用SPI接口通信,显示清晰且功耗低(约0.1W)。其成本低(约8元人民币),适合显示系统状态、时间及操作提示。
功能:实时显示门禁状态(如“已锁定”“指纹验证中”)、时间及用户操作界面。

8. 蜂鸣器:有源/无源

选型理由:有源蜂鸣器内置振荡电路,仅需提供直流电压即可发声;无源蜂鸣器需外部驱动信号。本系统选用有源蜂鸣器(约1元人民币),简化电路设计。
功能:密码错误或非法操作时发出警报音。

9. 电源管理模块

选型理由:采用AMS1117-3.3V稳压芯片,输入电压范围4.75V~12V,输出稳定3.3V电流(最大1A),满足STM32及外设供电需求。其成本低(约0.5元人民币),且具备过流保护功能。
功能:将DC12V或Type-C输入电压转换为3.3V,为系统供电。

硬件电路设计

1. 主控电路

STM32F103C8T6最小系统包括复位电路、晶振电路及SWD调试接口。晶振选用8MHz无源晶振,电容匹配为22pF;复位电路采用10kΩ电阻和0.1μF电容。

2. 指纹识别模块连接

AS608的UART接口与STM32的USART2连接,TXD接PA3,RXD接PA2。需注意AS608工作电压为3.3V,需通过分压电阻或电平转换芯片与5V系统兼容。

3. RFID读卡器连接

MFRC522的SPI接口与STM32的SPI1连接,SCK接PA5,MISO接PA6,MOSI接PA7,CS接PB0。为增强信号稳定性,需在MISO线上串联10kΩ上拉电阻。

4. 矩阵键盘连接

4×4矩阵键盘的行线接PA0~PA3,列线接PB4~PB7。通过轮询扫描方式检测按键输入,需注意消抖处理(延时10ms)。

5. 蓝牙模块连接

HC-05的UART接口与STM32的USART1连接,TXD接PA9,RXD接PA10。蓝牙模块需配置为从机模式,波特率9600。

6. 步进电机驱动电路

28BYJ-48通过ULN2003驱动芯片连接,ULN2003的输入端接PB8~PB11,输出端接电机四相。需在电机两端并联续流二极管(1N4007),防止反向电动势损坏电路。

7. OLED显示屏连接

0.96寸OLED屏的SPI接口与STM32的SPI2连接,CS接PB12,DC接PB13,RES接PB14,CLK接PB15,DIN接PB10。需注意OLED屏的供电电压为3.3V。

8. 蜂鸣器连接

有源蜂鸣器正极接PB5,负极接地。通过STM32的GPIO输出高低电平控制蜂鸣器发声。

9. 电源管理电路

AMS1117-3.3V的输入端接DC12V或Type-C接口,输出端接系统3.3V电源总线。需在输入端并联10μF电解电容和0.1μF陶瓷电容滤波。

软件设计与实现

1. 系统初始化

void System_Init(void) {
// 初始化时钟、GPIO、UART、SPI、I2C等外设
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);
USART1_Init(9600); // 蓝牙模块
USART2_Init(9600); // 指纹模块
SPI1_Init();       // RFID读卡器
SPI2_Init();       // OLED显示屏
Motor_Init();      // 步进电机
BEEP_Init();       // 蜂鸣器
OLED_Init();       // OLED显示屏
RTC_Init();        // 实时时钟
}

2. 指纹识别功能

uint8_t AS608_MatchFinger(void) {
uint8_t status;
status = AS608_SearchFinger(); // 搜索指纹
if (status == 0) {
OLED_ShowString(56, 48, "指纹验证成功", 12, 0);
return 1; // 指纹匹配成功
} else {
OLED_ShowString(56, 48, "指纹验证失败", 12, 0);
BEEP_Alarm(); // 蜂鸣器报警
return 0; // 指纹匹配失败
}
}

3. RFID刷卡功能

uint8_t MFRC522_ReadCard(uint8_t *card_id) {
uint8_t status;
status = MFRC522_Request(PICC_REQIDL, card_id); // 寻卡
if (status == MI_OK) {
status = MFRC522_Anticoll(card_id); // 防冲突
if (status == MI_OK) {
return 1; // 刷卡成功
}
}
return 0; // 刷卡失败
}

4. 密码输入功能

uint8_t Password_Verify(void) {
uint8_t password[4] = {0};
uint8_t input_password[4] = {0};
uint8_t i, key;

// 读取预设密码(从EEPROM或Flash)
EEPROM_Read(0x0000, password, 4);

// 输入密码
for (i = 0; i < 4; i++) {
key = Keypad_Scan(); // 扫描键盘
if (key != 0xFF) {
input_password[i] = key;
OLED_ShowChar(56 + i * 16, 48, '*', 12, 0); // 显示*
}
}

// 验证密码
if (memcmp(password, input_password, 4) == 0) {
return 1; // 密码正确
} else {
BEEP_Alarm(); // 蜂鸣器报警
return 0; // 密码错误
}
}

5. 蓝牙APP控制功能

void Bluetooth_Process(void) {
uint8_t rx_data[20] = {0};
if (USART1_Receive(rx_data, 20) > 0) {
if (strcmp((char *)rx_data, "OPEN") == 0) {
Motor_OpenDoor(); // 开门
} else if (strcmp((char *)rx_data, "CLOSE") == 0) {
Motor_CloseDoor(); // 关门
}
}
}

6. 主循环逻辑

int main(void) {
System_Init(); // 系统初始化
while (1) {
// 检测指纹
if (AS608_MatchFinger()) {
Motor_OpenDoor(); // 开门
}

// 检测RFID卡
uint8_t card_id[4] = {0};
if (MFRC522_ReadCard(card_id)) {
if (IsValidCardID(card_id)) { // 验证卡号
Motor_OpenDoor(); // 开门
}
}

// 检测密码
if (Password_Verify()) {
Motor_OpenDoor(); // 开门
}

// 检测蓝牙指令
Bluetooth_Process();

// 显示时间
Display_Time();
}
}

实物演示与测试

1. 实物连接图

  • 主控板:STM32F103C8T6最小系统板

  • 外设模块:AS608指纹模块、MFRC522 RFID读卡器、4×4矩阵键盘、HC-05蓝牙模块、28BYJ-48步进电机、0.96寸OLED屏、有源蜂鸣器

  • 电源:DC12V适配器或Type-C接口

2. 功能测试

  1. 指纹开锁:用户按下手指,OLED显示“指纹验证中”,验证通过后步进电机模拟开锁,蜂鸣器短响一声。

  2. RFID刷卡开锁:用户刷授权卡,OLED显示“刷卡成功”,步进电机模拟开锁。

  3. 密码开锁:用户输入4位密码,验证通过后步进电机模拟开锁。

  4. 蓝牙APP开锁:手机APP发送“OPEN”指令,步进电机模拟开锁。

  5. 非法操作报警:密码错误或刷未授权卡时,蜂鸣器持续报警。

3. 稳定性测试

  • 连续工作测试:系统连续运行72小时,无死机或复位现象。

  • 功耗测试:待机功耗约0.5W,开锁瞬间功耗约2W。

  • 抗干扰测试:在强电磁场环境下,系统仍能稳定工作。

总结与展望

本文详细阐述了基于STM32的智能门禁系统设计,从元器件选型、硬件电路设计到软件实现,均提供了完整的技术方案。系统通过集成指纹识别、RFID刷卡、密码输入及蓝牙APP控制等功能,显著提升了安全性和便捷性。未来可进一步优化系统,例如:

  1. 增加人脸识别功能:采用OV7670摄像头模块,实现人脸开锁。

  2. 接入云平台:通过ESP8266 Wi-Fi模块将门禁数据上传至云端,实现远程监控与管理。

  3. 优化电源管理:采用锂电池供电,增加太阳能充电功能,提升系统续航能力。

智能门禁系统作为智能家居的重要组成部分,将在未来家庭、办公场所及公共区域安全管理中发挥更大作用。开发者可根据实际需求,灵活调整系统功能,打造更加安全、便捷的智能门禁解决方案。

责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

上一篇: 已是第一篇

相关资讯

拍明芯城微信图标

各大手机应用商城搜索“拍明芯城”

下载客户端,随时随地买卖元器件!

拍明芯城公众号
拍明芯城抖音
拍明芯城b站
拍明芯城头条
拍明芯城微博
拍明芯城视频号
拍明
广告
恒捷广告
广告
深亚广告
广告
原厂直供
广告