esp8266制作NFC电子门锁支持手机控制

话不多说,咱先上图上视频

nfc门锁

使用方法还是很简单的,有当前卡id是刷卡,舵机就会动作。当没有保存当前卡时只需要按一下按钮就可以把当前卡的信息保存到eeprom中,可以实现掉电存储。

必要硬件:nodemcu开发板,rc522模块,舵机,按钮,电源模块,杜邦线若干,还可以添加蜂鸣器或者led灯

硬件接线图esp8266nodemcu连接rc522模块

用arduinoIDE编程,需要下载blinker库,esp8266支持包,mfrc522库。

blinker点灯app界面配置(当然不需要手机控制的可以不用点灯)

 

下面是包含blinker的代码,后面有不包含blinker的代码,不适用blinker与WiFi可以更加省电。

#include <EEPROM.h>
#include <SPI.h>
#include <MFRC522.h>
#include <BLINKER_PMSX003ST.h>
#include <Servo.h>
#define BLINKER_WIFI
#include <Blinker.h>
 
char auth[] = "e610c0fae090"; //点灯密钥
char ssid[] = "2-19公共wifi";  //WiFi名称
char pswd[] = "12345678";      //WiFi密码
 

// 新建组件对象
BlinkerButton Button1("btn-num");   //位置1 按钮 数据键名
BlinkerButton Button2("btn-max");   //位置2 按钮 数据键名
BlinkerSlider Slider1("ser-num");   //实时位置 滑块 数据键名  范围1-180
Servo myservo;  //创建电机对象
 int ser_num ;
 int ser_max ;
 
#define RST_PIN 5 // 配置针脚
#define SS_PIN 4  
MFRC522 mfrc522(SS_PIN, RST_PIN); // 创建新的RFID实例
//RC模块使用了D1.D2.D5.D6.D7
/*************************IO配置**************************/
int Buzzer = 16;                   //D0(io16)蜂鸣器,提示音,也可以用led
int btn = 15;                      //D8(io15)按钮,保存门禁卡ID到EEPROM
/*************************数据**************************/
//使用union结构,合并4个byte数据,转换为1个long
union long_byte
{
  long long_data;
  byte byte_data[4];
};
long_byte lb;
long EEPROM_RFID1 = -1;//EEPROM中保存的门禁卡ID1
long EEPROM_RFID2 = -1;
long EEPROM_RFID3 = -1;
long EEPROM_RFID4 = -1;
long EEPROM_RFID5 = -1;
long EEPROM_RFID6 = -1;
long EEPROM_RFID7 = -1;
long read_RFID = -1;      //当前读取到的门禁卡ID
int num ;
void setup()
{
    Serial.begin(115200);
    Serial.println("");
    BLINKER_DEBUG.stream(Serial);
    Blinker.begin(auth, ssid, pswd);
    EEPROM.begin(1024);
    Button1.attach(button1_callback);
    Button2.attach(button2_callback);
    Slider1.attach(slider1_callback);
    Blinker.attachData(dataRead);
    myservo.attach(0);  //servo.attach():设置舵机数据引脚
    myservo.write(10);  //servo.write():设置转动角度
    ser_num = 100;
    ser_max = 100;
    
  //读取EEPROM索引的值            我这里设置了七张卡,不够也可以再加
  for (int i = 0; i < 4; i++)
  {
    lb.byte_data[i] = EEPROM.read(i);   //卡1
  }
  EEPROM_RFID1 = lb.long_data;
  
  for (int i = 0  ; i<4 ; i++ )
  {
    lb.byte_data[i] = EEPROM.read(i+4);   //卡2
  }
  EEPROM_RFID2 = lb.long_data;

  for (int i = 0  ; i<4 ; i++ )
  {
    lb.byte_data[i] = EEPROM.read(i+8);   //卡3
  }
  EEPROM_RFID3 = lb.long_data;

  for (int i = 0  ; i<4 ; i++ )
  {
    lb.byte_data[i] = EEPROM.read(i+12);    //卡4
  }
  EEPROM_RFID4 = lb.long_data;

  for (int i = 0  ; i<4 ; i++ )
  {
    lb.byte_data[i] = EEPROM.read(i+16);   //卡5
  }
  EEPROM_RFID5 = lb.long_data;

  for (int i = 0  ; i<4 ; i++ )
  {
    lb.byte_data[i] = EEPROM.read(i+20);   //卡6
  }
  EEPROM_RFID6 = lb.long_data;

  for (int i = 0  ; i<4 ; i++ )
  {
    lb.byte_data[i] = EEPROM.read(i+24);    //卡7
  }
  EEPROM_RFID7 = lb.long_data;

  num = EEPROM.read(30);
  IO_init(); 
  RFID_init();
}

void loop()
{
  Blinker.run();
  Btn_Even
<think>嗯,用户想了解智能门锁的系统架构,我需要先理清楚这个系统通常包含哪些部分。首先,智能门锁不同于传统门锁,它涉及到电子、通信、软件等多个方面。我得从硬件和软件两个大方向来分解。 硬件方面,核心的应该是锁体结构,比如电机驱动的锁舌,还有各种传感器,比如指纹识别模块、触摸屏、摄像头等等。然后还要考虑通信模块,比如Wi-Fi、蓝牙、ZigBee这些,用于连接手机App或者家庭网关。电源管理也很重要,毕竟要处理电池供电和低功耗的问题。 软件部分的话,操作系统可能用嵌入式系统,比如FreeRTOS,或者更复杂的Linux。用户认证逻辑是关键,涉及到生物识别算法,比如指纹、人脸识别,还有密码验证、NFC等。通信协议的安全性必须重视,比如TLS加密。另外,云端服务用于远程控制和日志管理,可能会有数据同步和OTA升级的功能。 安全方面需要特别注意,硬件安全模块HSM用来保护密钥,防止物理攻击。软件漏洞要及时修补,数据加密传输和存储。隐私保护方面,生物特征信息要本地处理,不能上传到云端。 可能用户还想知道不同通信协议的优缺点,比如蓝牙的功耗低但距离短,Wi-Fi耗电但直接连互联网。还有系统如何应对断电或网络故障的情况,比如备用电池和本地存储日志。 需要确保结构清晰,分点说明,让用户能一步步理解。同时要注意技术术语的准确性,比如HSM、TLS、OTA等,可能需要简单解释。最后,提醒用户实际应用中需要考虑的具体问题,比如安装环境、成本、用户体验等。</think>智能门锁系统架构可分为硬件层、通信层、软件层和安全层四个核心部分,以下是逐步解析: 一、**硬件层架构** $$ 主控MCU + 传感器模块 + 执行机构 $$ 1. **主控单元** - 采用ARM Cortex-M系列微控制器(如STM32) - 负责协调指纹识别、密码验证、通信模块等子系统 2. **感知模块** - 生物识别:$指纹传感器$(光学/电容式)、$人脸识别摄像头$ - 物理输入:触摸屏/键盘、NFC/RFID读卡器 - 环境监测:加速度传感器(防撬报警)、温度传感器 3. **执行机构** - 电机驱动电路控制锁舌 - 声光反馈装置(蜂鸣器、LED指示灯) 二、**通信层架构** $$ 本地通信 \xrightarrow{网关} 云端服务 $$ 1. 近场通信 - 蓝牙BLE 5.0(手机直连) - ZigBee 3.0(接入智能家居系统) 2. 远程通信 - Wi-Fi模组(ESP32系列) - NB-IoT(低功耗广域网,适用无Wi-Fi场景) 三、**软件层架构** ```plaintext 应用层 ├─ 用户认证逻辑 ├─ OTA升级模块 ├─ 日志管理系统 └─ 场景联动引擎 中间件层 ├─ 实时操作系统(FreeRTOS/RT-Thread) ├─ 协议栈(MQTT/CoAP) └─ 加密库(AES-256/SHA-2) ``` 四、**安全层设计** 1. 硬件安全 - 独立安全芯片(SE)存储生物特征模板 - 防拆报警电路设计 - 电磁屏蔽防护 2. 通信安全 - 双向认证机制(TLS 1.3协议) - 动态密钥交换(Diffie-Hellman算法) - 数据包校验(CRC32+MAC) 3. 隐私保护 - 生物特征信息本地处理 - 临时密码时效控制:$T_{valid}=f(时效策略)$ - GDPR合规数据存储 **典型工作流程** 1. 用户触发认证(如按压指纹) 2. 传感器采集数据→MCU进行特征提取 3. 比对预存模板→通过加密信道返回结果 4. 驱动电机开锁并上传日志:$$ \text{Log} = [时间戳,\ 事件类型,\ 用户ID]_{加密} $$ **扩展考量** - 应急供电设计:超级电容+机械钥匙双备份 - 多因素认证组合:$指纹+密码$ 或 $人脸识别+NFC$ - 抗干扰测试:符合EMC 3类环境标准 实际部署时需考虑安装环境(金属门体对信号影响)、电池续航(平均功耗<$100\mu A$待机)、本地法规要求(如中国GA 374-2019标准)等因素。
评论 36
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值