1 系统功能介绍
本系统是一个 基于 STM32 单片机的智能 RFID 刷卡车位锁桩控制系统,其设计理念来源于现实中智能停车场的车位锁桩管理。通过 RFID 刷卡认证、LCD1602 显示、继电器控制以及按键辅助操作,实现对车位的安全管理。该系统不仅模拟了车辆驶入与驶出的流程,还能通过单片机智能判断车位状态,并且提供简洁的人机交互界面。
主要功能如下:
-
车位入口控制
- 系统正常状态下,车位桩处于关闭状态(继电器闭合),其他车辆无法进入;
- 当车辆用户刷有效 RFID 卡后,继电器断开,车位桩升起或解锁,允许车辆驶入车位。
-
车辆驶入确认与车位锁定
- 当车辆驶入后,用户可以通过按键再次控制继电器,使车位桩恢复闭合状态;
- 此时车辆被锁定在车位中,防止其他车辆占用该车位。
-
LCD1602 显示信息
- 系统启动时显示欢迎界面与状态信息;
- 显示车位状态(空闲/已占用/刷卡成功/非法卡片等);
- 显示用户刷卡认证结果。
-
安全与扩展
- 只有合法 RFID 卡能够打开继电器,非法卡片无效;
- 可扩展多用户卡绑定功能,实现多个车主共享系统;
- 可扩展至远程控制,例如结合蓝牙、WIFI,实现 APP 控制。
该系统在停车场车位管理、私人车位防止外车占用等场景具有实际应用价值。
2 系统电路设计
2.1 STM32 最小系统
本设计选用 STM32F103C8T6 作为核心控制单片机,具有 ARM Cortex-M3 内核,主频 72MHz,内置丰富的外设接口,能够轻松应对 RFID 通信、LCD 显示和继电器控制等任务。
- 电源电路:使用 AMS1117 稳压芯片,将 5V 转换为 3.3V,供单片机与部分外设使用;
- 晶振电路:采用 8MHz 外部晶振,保证系统运行稳定;
- 复位电路:包括上电复位和手动复位按键。
2.2 RFID 模块电路
采用 MFRC522 RFID 模块,支持 13.56MHz 频率的 Mifare S50/S70 卡。其主要功能:
- 通过 SPI 接口与 STM32 通信;
- 读取卡片 UID(唯一序列号),作为用户身份认证;
- 可扩展读写卡片数据,用于存储用户信息。
2.3 LCD1602 显示模块
LCD1602 液晶显示屏用于实时显示系统状态和用户操作提示:
- 系统启动时显示“Welcome”;
- 显示车位状态:“车位空闲”、“刷卡成功,车位解锁”;
- 显示非法卡提示:“非法卡片”;
- 显示按键操作结果:“车位锁定完成”。
LCD1602 通过并口与 STM32 连接,利用 GPIO 控制 RS、RW、EN 以及数据线。
2.4 按键电路
设计了一个主要控制按键:
- 锁定按键:车辆驶入后按下,用于重新闭合继电器,完成车位锁定;
- 按键采用下拉电阻防抖处理,确保触发可靠。
2.5 继电器驱动电路
继电器用于模拟 车位桩的开关控制:
- 正常状态下继电器闭合,车桩处于关闭状态,禁止进入;
- 刷卡成功后继电器断开,车桩打开,车辆进入车位;
- 按键确认后继电器再次闭合,车位锁定。
为防止电流冲击,继电器驱动端口增加 三极管驱动和二极管续流保护。
3 程序设计
3.1 主程序框架
#include "stm32f10x.h"
#include "lcd1602.h"
#include "rc522.h"
#include "relay.h"
#include "key.h"
#include "delay.h"u8 CardID[5]; // 存放读取的卡号
u8 MasterCard[5] = {0x12,0x34,0x56,0x78,0x90}; // 预设合法卡
int CarStatus = 0; // 0-空闲 1-已解锁 2-已锁定int main(void)
{SystemInit();LCD_Init();RC522_Init();Relay_Init();Key_Init();Delay_Init();LCD_ShowString(0,0,"Welcome Parking");Relay_Lock(); // 默认锁定while(1){Check_Card();Key_Process();}
}
3.2 RFID 刷卡识别程序
void Check_Card(void)
{if(RC522_Check(CardID) == MI_OK) // 检测到卡片{if(Compare_Card(CardID, MasterCard)) // 合法卡{LCD_Clear();LCD_ShowString(0,0,"Card Success!");Relay_Unlock(); // 打开继电器CarStatus = 1;}else // 非法卡{LCD_Clear();LCD_ShowString(0,0,"Invalid Card!");}}
}int Compare_Card(u8 *card1, u8 *card2)
{for(int i=0;i<5;i++){if(card1[i] != card2[i]) return 0;}return 1;
}
3.3 按键控制逻辑
void Key_Process(void)
{if(Key_Scan() == KEY0_PRES) // 按下按键{if(CarStatus == 1) // 已解锁状态{Relay_Lock(); // 重新闭合继电器LCD_Clear();LCD_ShowString(0,0,"Car Locked!");CarStatus = 2;}}
}
3.4 继电器驱动程序
void Relay_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB, GPIO_Pin_0); // 默认上锁
}void Relay_Lock(void)
{GPIO_SetBits(GPIOB, GPIO_Pin_0); // 继电器闭合
}void Relay_Unlock(void)
{GPIO_ResetBits(GPIOB, GPIO_Pin_0); // 继电器断开
}
4 总结
本设计通过 STM32F103C8T6 单片机,结合 RFID 模块、LCD1602 显示、按键与继电器电路,实现了一个智能化的 车位锁桩系统。系统的主要特点如下:
- 智能刷卡识别:只有合法用户刷卡才能打开车位锁,确保车位安全;
- LCD1602 人机交互:实时显示车位状态和刷卡信息,操作直观;
- 按键辅助控制:车辆进入后可人工确认再次锁定,提高安全性;
- 继电器控制车桩:模拟现实车位桩动作,保证流程贴近实际应用;
- 扩展性强:可增加多用户卡片识别、联网远程管理、车位状态上传等功能。
该系统不仅适用于实验教学,也可为智能停车场车位锁桩的实际开发提供参考。