1. 项目背景与硬件选型
第一次接触STM32密码锁项目时,我完全是个嵌入式小白。手头的开发板是STM32F103ZET6,这块板子性价比高,资源丰富,特别适合入门级项目。搭配的OLED显示屏我选了正点原子的0.96寸款,分辨率128x64,SPI接口通信,显示效果清晰而且接线简单。
矩阵键盘用的是4x4薄膜按键模块,这种键盘防尘防水,价格不到10块钱。电磁锁模块要注意驱动电压,我选的12V常闭型,搭配一个5V继电器控制。这里有个坑要注意:STM32的GPIO输出是3.3V电平,直接驱动5V继电器可能不稳定。我的解决方案是用S8050三极管搭建放大电路,成本不到1块钱。
提示:所有模块建议先用杜邦线连接测试,确认功能正常后再考虑焊接固定。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件连接详解
2.1 核心电路连接
先给开发板接上ST-Link下载器,我用的是SWD模式,只需要连接四根线:
- SWDIO -> PA13
- SWCLK -> PA14
- GND -> 共地
- 3.3V -> 可选,给下载器供电
OLED的接线要注意方向,我遇到过反接烧坏模块的情况:
- SCK -> PB13 (SPI2_SCK)
- SDA -> PB15 (SPI2_MOSI)
- RES -> PC6
- DC -> PC7
- CS -> PA4 (SPI2_NSS)
2.2 矩阵键盘接线技巧
4x4矩阵键盘有8个引脚,我这样分配GPIO:
- 行线(X1-X4): PF7, PF6, PF5, PF4
- 列线(Y1-Y4): PF0, PF1, PF2, PF3
这里有个优化点:同一组GPIO口的连续引脚可以简化编程。PF0-PF7正好是一个完整的8位端口,扫描时可以直接操作ODR和IDR寄存器。
2.3 电磁锁驱动电路
继电器控制电路我这样设计:
- STM32的PF13引脚 -> 1K电阻 -> S8050基极
- S8050集电极 -> 继电器线圈 -> 5V电源
- 继电器常开端子接电磁锁正极
- 电磁锁负极直接接电源地
记得在继电器线圈两端并联续流二极管,我用的是1N4148,防止反电动势损坏三极管。
3. 软件开发环境搭建
3.1 Keil MDK基础配置
新建工程时芯片选STM32F103Z
