0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

智能门锁:基于RT-Thread与FRDM-MCXA156的多外设嵌入式实践 | 技术集结

RT-Thread官方账号 2026-01-23 11:06 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本项目为RT-Thread嵌入式大赛获奖作品,基于恩智浦MCXA156系列微控制器构建了一款多功能智能门锁控制系统。目前,恩智浦已有多款产品对RT-Thread完成了适配。近期,MCX A 系列产品的重要成员,FRDM-MCXA346也完成了适配,并在社区开发者的协作下完成了电子书《恩智浦FRDM-MCX A346开发实践指南》

https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/make-bsp/MCX-A346/%E6%81%A9%E6%99%BA%E6%B5%A6FRDM-MCXA346%E5%AE%9E%E8%B7%B5%E6%8C%87%E5%8D%97

(文末查看贡献名单以及开发板详情↓)


目录


项目概述


硬件选型与连接


软件架构设计


核心模块实现


多开锁模式扩展


项目优化与改进方向


项目源码

1 项目概述

本项目基于MCXA156系列微控制器构建了一款多功能智能门锁控制系统,整合了密码、指纹、射频三种开锁方式,配备 OLED 本地显示与声光反馈机制,通过 EEPROM 实现密钥持久化存储,构成了一套兼顾安全性与便捷性的嵌入式解决方案。系统支持本地密钥修改、开锁状态实时反馈、错误报警等核心功能,可广泛应用于家庭、办公场所等场景的门禁控制。

设计思路方案

7bda683a-f808-11f0-8ce9-92fbcf53809c.png

系统运行流程图

7beab9d8-f808-11f0-8ce9-92fbcf53809c.png

项目核心功能

多模式开锁:支持 6 位数字密码、FPM383C 指纹识别、RC522 射频卡三种开锁方式,满足不同使用场景需求。

密钥管理:通过 24CXX 系列 EEPROM 实现开锁密钥的持久化存储,支持本地按键修改密钥,修改后自动同步存储。

状态可视化:借助 SSD1306 OLED 显示屏实时显示当前界面状态、输入密码位数、开锁结果等信息;

声光反馈:开锁成功时 LED 点亮 + 图标提示,密码错误时蜂鸣器报警 + 图标闪烁,提升用户交互体验;

多任务并发:基于裸机编程实现传感器扫描、按键处理、显示更新、报警控制等任务的并发执行,确保系统响应实时性。

本文将详细拆解系统的硬件选型、软件架构、核心逻辑实现及开发过程中的关键细节,为嵌入式门禁系统开发提供实践参考。

视频演示:[智能门锁演示视频]【智能门锁MCXA156】


2 硬件选型与连接

核心控制器FRDM-MCXA156

选用 FRDM-MCXA156微控制器作为核心控制单元,其优势如下:

性能:搭载ARM Cortex-M 系列内核,具备高效的指令执行能力,可满足多外设并发控制与算法处理需求,丰富的I2C、SPI、UART、PWM、GPIO 等接口,无需扩展板即可直接连接所有功能模块。

各模块功能

7bf907ea-f808-11f0-8ce9-92fbcf53809c.png

各协议通信流程图

7beab9d8-f808-11f0-8ce9-92fbcf53809c.png

硬件连接详情

7bf907ea-f808-11f0-8ce9-92fbcf53809c.png

3 软件架构设计

本项目软件基于RT-Thread-5.2.1官方demo开发,将系统功能拆解为多个独立模块,通过全局变量实现模块间数据交互,确保代码的可维护性与扩展性。

整体架构

系统软件主要包含五大核心模块,各模块功能独立、协同工作:

外设驱动模块:负责各硬件外设的初始化与底层操作(如UART、I2C、SPI、PWM、GPIO 等)。

核心控制模块:实现开锁逻辑判断、密钥验证、状态管理等核心功能。

输入处理模块:处理按键输入、指纹识别结果、射频卡读取数据。

显示控制模块:管理 OLED 屏幕的界面刷新与信息显示。

反馈模块:通过 LED、蜂鸣器实现开锁成功、错误报警等状态反馈。

工作流程详解

系统初始化阶段:

启动后依次完成中断优先级配置、串口初始化、各外设(指纹模块、RC522、OLED、按键EEPROM、PWM)初始化。

检测 EEPROM 是否正常工作,若异常则通过 LED 闪烁提示,从 EEPROM 中读取预存储的 6 位开锁密钥,存入全局变量open_lock_key。

主循环任务(无限循环执行):

传感器扫描:持续调用fpm383c_Scan()(指纹扫描)、RC522_Scan()(射频卡扫描),等待识别结果,通过key_Scan()检测按键输入,处理数字输入、密码确认、删除、界面切换等操作,输入 6 位密码后,与存储的开锁密钥比对,匹配则触发开锁,不匹配则启动报警,根据开锁结果、错误状态,控制 LED 亮灭与蜂鸣器发声,同步更新 OLED 显示。

线程间通信:通过全局变量(如open_door_type开锁状态、open_door_alert报警状态、interface_num界面标识)实现各模块间数据交互,简化通信逻辑,确保系统响应实时性。

4 核心模块实现

EEPROM 密钥存储与读取

采用 24CXX EEPROM 实现密钥的持久化存储,确保掉电后密钥不丢失。

初始化:调用AT24CXX_Init()初始化 I2C 总线与 EEPROM 设备,通过AT24CXX_Check()检测设备是否正常。

密钥读取:系统启动时,通过循环读取 EEPROM 的 0-5 地址数据,存入open_lock_key数组。

密钥修改:在修改界面(interface_num=2)确认后,将临时密钥open_lock_key_temp写入 EEPROM 对应地址,并重新读取同步至open_lock_key。

// 初始化EEPROM并读取密钥AT24CXX_Init();while(AT24CXX_Check()){ // EEPROM异常,LED闪烁提示 LED_ON= !LED_ON; Delay1_ms(100);}for(i=0;i<6;i++){    open_lock_key[i] = AT24CXX_ReadOneByte(i); // 读取密钥}// 修改密钥并写入EEPROMfor(i=0;i<6;i++){    AT24CXX_WriteOneByte(i, open_lock_key_temp[i]); // 写入新密钥}

开锁与报警反馈

开锁逻辑:密钥验证通过(或指纹 / 射频卡识别成功)时,open_door_type置 1,LED 点亮,OLED 显示开锁成功图标(BMP4),2 秒后自动关锁(LED 熄灭,图标恢复);

报警逻辑:密钥不匹配或操作错误时,open_door_alert置 1,蜂鸣器发出报警音(time2_Pwm_Alert),OLED 错误图标(BMP2)闪烁 4 次后恢复。

// 开锁反馈if(open_door_type){ LED_ON; OLED_DrawBMP(12,5,28,7,BMP4);// 显示开锁成功图标 Delay1_ms(2000); LED_OFF; OLED_DrawBMP(12,5,28,7,BMP3);// 恢复默认图标 open_door_type =0;}// 错误报警反馈if(open_door_alert){ for(i=0;i<4;i++){        OLED_DrawBMP(12,5,28,7,BMP2); // 显示错误图标        time2_Pwm_Alert(150,1000); // 蜂鸣器报警        OLED_DrawBMP(12,5,28,7,BMP3); // 恢复默认图标        rt_thread_mdelay(100);    }    open_door_alert = 0;}

OLED 界面显示

OLED 屏幕用于实时显示系统状态,主要包含:

界面标识:显示当前界面(默认界面 / 修改界面),通过interface_Oled_Flushed()刷新;

密码输入位数:通过位图 BMP2 标识已输入的密码位数;

状态图标:默认状态(BMP3)、错误状态(BMP2)、开锁成功状态(BMP4);

按键值显示:实时显示当前按下的按键数字。

// 刷新界面标识voidinterface_Oled_Flushed(){ OLED_DrawBMP(72,5,86,7,BMP6); OLED_ShowNum(72,5,interface_num,1,16);// 显示当前界面编号}// 显示按键值OLED_ShowNum(100,5,key_vel,a,16);

5 多开锁模式扩展

本系统预留了指纹识别(FPM383C)与射频卡识别(RC522)的扩展接口,核心实现思路如下:

指纹识别:通过fpm383c_Scan()持续扫描指纹,识别成功后返回匹配结果,直接置位open_door_type触发开锁。

射频卡识别:通过RC522_Scan()读取射频卡 ID,与预存储的合法 ID 比对,匹配则触发开锁。

目前代码已完成模块初始化与扫描函数调用,只需扩展指纹 / 射频卡的合法数据存储与比对逻辑,即可实现多模式开锁功能。

用3D打印做了一件小衣服给它穿上

7c1f4d10-f808-11f0-8ce9-92fbcf53809c.jpg

6 项目优化与改进方向

传感器稳定性:RC522 射频卡模块在强干扰环境下可能出现读取失败,可增加数据校验与多次扫描机制提升稳定性。

密码安全性:当前密钥以明文形式存储于 EEPROM,可增加 AES 加密算法对密钥进行加密存储,提升安全性。

功能扩展:增加远程开锁(通过 SIM900A GSM 模块)、开锁记录存储、低功耗模式等功能。

交互体验:优化 OLED 显示界面,增加密码输入隐藏(如显示星号)、中文提示等,提升用户体验。

异常处理:增加指纹识别失败、射频卡读取失败的专门反馈机制,区分不同错误类型。

7 项目源码

百度网盘地址:通过网盘分享的文件:frdm-mcxa156.zip

链接:https://pan.baidu.com/s/1SDYqULii2I0b2lkJM9ecrg?pwd=8888提取码: 8888

代码链接:https://gitee.com/yang-xianyi/exclusive

欢迎各位开发者提出宝贵意见与优化建议,共同完善系统功能。

《恩智浦FRDM-MCX A346开发实践指南》贡献名单

RT-Thread社区携手恩智浦半导体联合发起FRDM-MCXA346 开发板评测活动,《恩智浦FRDM-MCX A346开发实践指南》详细列出了各个内容板块及其贡献者。在此,衷心感谢所有小伙伴的支持与贡献!

7c38e996-f808-11f0-8ce9-92fbcf53809c.png

FRDM-MCXA346开发板介绍

FRDM-MCXA346是一款紧凑且可扩展的开发板,可让您快速基于FRDM-MCXA346微控制器单元(MCU)开展原型设计。它们提供行业标准的接口,可轻松访问MCU的I/O,配备集成的开放标准串行接口、外部闪存和板载MCU-Link调试器。

7c4f92e0-f808-11f0-8ce9-92fbcf53809c.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    49

    文章

    8890

    浏览量

    165817
  • 嵌入式
    +关注

    关注

    5209

    文章

    20679

    浏览量

    337195
  • RT-Thread
    +关注

    关注

    32

    文章

    1644

    浏览量

    45229
  • 智能门锁
    +关注

    关注

    18

    文章

    1944

    浏览量

    46128
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    风洞悬浮球:基于RT-ThreadMCXA156的简单控制实践 | 技术集结

    和NXPFRDM-MCXA156开发板,构建了一个能够将乒乓球稳定悬浮在预定高度的控制系统。配备了本地数据显示屏和远程Web监控界面,构成了一个功能相对完整的嵌入式系统。视频
    的头像 发表于 10-17 11:53 5676次阅读
    风洞悬浮球:基于<b class='flag-5'>RT-Thread</b>与<b class='flag-5'>MCXA156</b>的简单控制<b class='flag-5'>实践</b> | <b class='flag-5'>技术</b><b class='flag-5'>集结</b>

    RT-Thread Vector软件包:嵌入式开发的动态数组容器 | 技术集结

    RT-Thread Vector软件包:嵌入式开发的动态数组容器 | 技术集结
    的头像 发表于 01-25 09:33 5666次阅读
    <b class='flag-5'>RT-Thread</b> Vector软件包:<b class='flag-5'>嵌入式</b>开发的动态数组容器 | <b class='flag-5'>技术</b><b class='flag-5'>集结</b>

    基于RT-ThreadMCXA156的USB HID游戏手柄设计与实现 | 技术集结

    目录项目概述RT-Thread使用情况概述硬件框架软件框架说明软件模块说明效果演示代码地址总结1项目概述1.1实现功能本项目基于NXPFRDM-MCXA156开发板,实现了一个标准的USBHID游戏
    的头像 发表于 02-02 18:53 8336次阅读
    基于<b class='flag-5'>RT-Thread</b>与<b class='flag-5'>MCXA156</b>的USB HID游戏手柄设计与实现 | <b class='flag-5'>技术</b><b class='flag-5'>集结</b>

    基于RT-ThreadFRDM-MCXA156智能头盔传感器数据采集系统 | 技术集结

    RT-Thread实时操作系统,实现传感器数据采集并通过ESP01SWiFi模块上报至华为云IoT平台。文末扫码申请试用开发板。1.1主要功能1.2系统架构+---------
    的头像 发表于 03-13 17:44 7699次阅读
    基于<b class='flag-5'>RT-Thread</b>和<b class='flag-5'>FRDM-MCXA156</b>的<b class='flag-5'>智能</b>头盔传感器数据采集系统 | <b class='flag-5'>技术</b><b class='flag-5'>集结</b>

    嵌入式RT-Thread应用与开发

    嵌入式RT-Thread应用与开发说明。
    发表于 04-06 14:12 72次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>RT-Thread</b>应用与开发

    RT-Thread全球技术大会:使用RT-Thread开发大规模嵌入式软件带来的挑战与好处

    RT-Thread全球技术大会:使用RT-Thread开发大规模嵌入式软件带来的挑战与好处       审核编辑:彭静
    的头像 发表于 05-27 11:45 2224次阅读
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技术</b>大会:使用<b class='flag-5'>RT-Thread</b>开发大规模<b class='flag-5'>嵌入式</b>软件带来的挑战与好处

    新书上架|嵌入式系统原理及应用——基于STM32和RT-Thread

    裸机开发和RT-Thread操作系统开发两条主线贯穿工作原理与实践应用,层层递进地介绍嵌入式系统的开发设计方
    的头像 发表于 09-25 18:25 2514次阅读
    新书上架|<b class='flag-5'>嵌入式</b>系统原理及应用——基于STM32和<b class='flag-5'>RT-Thread</b>

    新书发布——《RT-Thread嵌入式实时操作系统内核、驱动和应用开发技术

    我们非常高兴地宣布,由郑苗秀、沈鸿飞和廖建尚编著的《RT-Thread嵌入式实时操作系统内核、驱动和应用开发技术》一书正式发布。本书的编写团队由多位在嵌入式和实时操作系统领域有着丰富经
    的头像 发表于 09-03 08:06 2049次阅读
    新书发布——《<b class='flag-5'>RT-Thread</b><b class='flag-5'>嵌入式</b>实时操作系统内核、驱动和应用开发<b class='flag-5'>技术</b>》

    基于恩智浦FRDM-MCXA153开发板实现RT-Thread的ADC驱动

    数转换器(ADC)是现代嵌入式系统中不可或缺的组件,它能将连续的模拟信号转换为离散的数字信号。本文将深入探讨如何在NXP的FRDM-MCXA153开发板上实现和使用RT-Thread的ADC驱动,为开发者提供一个全面而实用的指南
    的头像 发表于 11-01 12:29 4940次阅读
    基于恩智浦<b class='flag-5'>FRDM-MCXA</b>153开发板实现<b class='flag-5'>RT-Thread</b>的ADC驱动

    免费申请 | FRDM-MCXA156评测活动发布!

    RT-Thread现已支持恩智浦官方推出的FRDM-MCXA156开发板并提供BSP!为了让大家更好地体验MCXA156高能效微控制器的魅力,RT-Thread携手恩智浦半导体,隆重推
    的头像 发表于 02-10 18:45 1224次阅读
    免费申请 | <b class='flag-5'>FRDM-MCXA156</b>评测活动发布!

    《恩智浦FRDM-MCXA156开发实践指南》上线啦

    RT-Thread率先支持NXPFRDM-MCXA156,并联合恩智浦半导体推出了NXPFRDM-MCXA156开发板评测活动。测评活动顺利完成,并且有了不错的产出,我们将大家的测试文档及代码整理后
    的头像 发表于 04-06 10:51 4221次阅读
    《恩智浦<b class='flag-5'>FRDM-MCXA156</b>开发<b class='flag-5'>实践</b>指南》上线啦

    基于RT-Thread的I2C(软件) 实践 | 技术集结

    一、软硬件介绍(一)I2C(软件)I2C是一种广泛应用于嵌入式系统中的短距离串行通信协议,支持从设备模式,主机通过时钟信号SCL和数据线SDA与从机进行数据交互。在RT-Thread
    的头像 发表于 05-06 18:44 1233次阅读
    基于<b class='flag-5'>RT-Thread</b>的I2C(软件) <b class='flag-5'>实践</b> | <b class='flag-5'>技术</b><b class='flag-5'>集结</b>

    【好书推荐】RT-Thread第22本相关书籍!《嵌入式实时操作系统开发实践》| 技术集结

    随着物联网、智能家居与工业控制等领域的快速发展,嵌入式实时操作系统的应用愈发广泛。RT-Thread作为国产开源RTOS的代表,凭借其出色的实时性、组件化设计和强大的生态体系,已成为众多工程师和高校
    的头像 发表于 10-16 18:46 870次阅读
    【好书推荐】<b class='flag-5'>RT-Thread</b>第22本相关书籍!《<b class='flag-5'>嵌入式</b>实时操作系统开发<b class='flag-5'>实践</b>》| <b class='flag-5'>技术</b><b class='flag-5'>集结</b>

    NXP新品FRDM-MCXA346 RT-Thread 评测活动开放,下周四新品直播预约!| 社区活动

    恩智浦半导体重磅发布全新MCXA系列产品——主打高性能与高扩展性并存的嵌入式控制解决方案。作为该系列的重要成员,FRDM-MCXA346开发板集成多种接口与丰富外设资源,能够轻松应对
    的头像 发表于 11-14 15:59 1910次阅读
    NXP新品<b class='flag-5'>FRDM-MCXA</b>346 <b class='flag-5'>RT-Thread</b> 评测活动开放,下周四新品直播预约!| 社区活动

    【免费申请】NXP新成员FRDM-MCXA366 评测活动 | 社区活动

    恩智浦半导体MCXA系列迎来新成员——MCXA366MCU,一款高性能、高扩展性的嵌入式处理器。基于该芯片,恩智浦同步推出FRDM-MCXA366开发板,作为一款紧凑可扩展的快速原型设
    的头像 发表于 04-09 18:25 310次阅读
    【免费申请】NXP新成员<b class='flag-5'>FRDM-MCXA</b>366 评测活动 | 社区活动