基于STM32的智能门禁系统

目录

  1. 引言
  2. 项目背景
  3. 环境准备
    • 硬件准备
    • 软件安装与配置
  4. 系统设计
    • 系统架构
    • 关键技术
  5. 代码示例
    • 密码验证模块
    • 电机控制实现
    • 门禁状态监控
  6. 应用场景
  7. 结论

1. 引言

智能门禁系统能够通过密码或其他验证方式(如指纹、刷卡等)控制门的开关,结合电机控制与状态监控,可以提高门禁的安全性和便利性。基于STM32的智能门禁系统设计简单高效,能够灵活扩展至多种验证方式。

2. 项目背景

随着对安全的要求不断提高,传统机械锁的不足日益明显。智能门禁系统不仅可以通过数字验证提高安全性,还可以增加方便的用户管理功能。基于STM32的智能门禁系统采用密码验证作为核心功能,通过电机控制开关门锁,并实时监控门的状态,适用于家庭、办公室和公共建筑等场景。

3. 环境准备

硬件准备

  • STM32开发板:STM32F103或类似微控制器
  • 按键模块:用于输入密码
  • 电机:用于控制门的开关(如舵机或直流电机)
  • OLED显示屏:显示系统状态和密码输入
  • 蜂鸣器:提供音效反馈(如密码错误提示)
  • 面包板及连接线:用于硬件连接
  • 电源:为系统提供电力

软件安装与配置

  1. Keil uVision:用于编写和编译代码。
  2. STM32CubeMX:用于配置STM32的引脚和外设。
  3. ST-Link Utility:用于下载代码到STM32开发板中。

4. 系统设计

系统架构

智能门禁系统设计包括以下模块:

  1. 密码验证模块:用户通过按键输入密码,并与预设密码进行比对,正确后触发开门。
  2. 电机控制模块:通过控制电机实现门锁的开关操作。
  3. 状态监控模块:实时监控门的状态(开/关),并通过OLED显示系统状态。
  4. 音效反馈模块:当用户输入错误密码或系统故障时,蜂鸣器发出警报。

关键技术

  • 密码验证:用户通过按键输入密码,与预设密码进行匹配验证,匹配成功后触发开门操作。
  • 电机控制:通过控制舵机或直流电机,实现门的自动开关。
  • 显示反馈:通过OLED屏幕实时显示当前的系统状态,如密码输入、门状态等。
  • 安全控制:在多次密码输入错误时,系统会触发报警或锁定功能。

5. 代码示例

密码验证模块

#include "stm32f1xx_hal.h"
#include <string.h>

char correct_password[] = "1234";  // 预设密码
char input_password[5];  // 用户输入的密码
int input_index = 0;

// 按键输入处理
void Keypad_Handler(char key) {
    if (key >= '0' && key <= '9') {
        input_password[input_index++] = key;
        if (input_index == 4) {
            input_password[4] = '\0';  // 加上字符串结束符
            input_index = 0;  // 重置输入索引
        }
    }
}

// 验证密码
int Validate_Password(void) {
    if (strcmp(input_password, correct_password) == 0) {
        return 1;  // 密码正确
    } else {
        return 0;  // 密码错误
    }
}

电机控制实现

// 初始化电机控制(如舵机)
void Motor_Init(void) {
    // 配置PWM引脚
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    __HAL_RCC_GPIOA_CLK_ENABLE();
    GPIO_InitStruct.Pin = GPIO_PIN_1;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    // 初始化TIM2用于PWM控制
    TIM_HandleTypeDef htim2;
    htim2.Instance = TIM2;
    htim2.Init.Prescaler = 72 - 1;
    htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
    htim2.Init.Period = 1000 - 1;
    htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
    HAL_TIM_PWM_Init(&htim2);

    // 配置PWM通道
    TIM_OC_InitTypeDef sConfigOC = {0};
    sConfigOC.OCMode = TIM_OCMODE_PWM1;
    sConfigOC.Pulse = 0;
    sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
    HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1);

    HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
}

// 开门操作
void Open_Door(void) {
    __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 800);  // 设置PWM占空比打开门
    HAL_Delay(2000);  // 保持门打开2秒
}

// 关门操作
void Close_Door(void) {
    __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 200);  // 设置PWM占空比关闭门
}

门禁状态监控

// 初始化蜂鸣器
void Buzzer_Init(void) {
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    __HAL_RCC_GPIOB_CLK_ENABLE();
    GPIO_InitStruct.Pin = GPIO_PIN_0;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}

// 蜂鸣器提示
void Buzzer_Beep(void) {
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);  // 打开蜂鸣器
    HAL_Delay(500);
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);  // 关闭蜂鸣器
}

// OLED显示状态
void OLED_Display_Status(char* status) {
    // 此处为OLED显示屏的显示函数
    OLED_Clear();
    OLED_ShowString(0, 0, status);
}

// 主程序
int main(void) {
    HAL_Init();
    Motor_Init();
    Buzzer_Init();

    while (1) {
        if (Validate_Password()) {
            OLED_Display_Status("Access Granted");
            Open_Door();
            HAL_Delay(3000);  // 保持门打开3秒
            Close_Door();
        } else {
            OLED_Display_Status("Access Denied");
            Buzzer_Beep();  // 密码错误提示
        }

        HAL_Delay(1000);  // 1秒钟后重新接受输入
    }
}

⬇帮大家整理了单片机的资料

包括stm32的项目合集【源码+开发文档】

点击下方蓝字即可领取,感谢支持!⬇

点击领取更多嵌入式详细资料

问题讨论,stm32的资料领取可以私信!

 

6. 应用场景

  • 家庭门禁:可以应用在家庭中,保障家庭成员的安全,避免外来人员随意进入。
  • 办公室门禁:用于企业办公室,保护办公区安全,允许特定人员进入。
  • 公共建筑门禁:应用于公共场所,如实验室、会议室等,通过密码或其他验证方式控制进入权限。

7. 结论

基于STM32的智能门禁系统通过密码验证结合电机控制,实现了对门的安全管理。该系统设计灵活,可扩展为指纹、RFID卡等多种验证方式,适用于家庭、办公室和公共场所的安全需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值