自制智能门锁:NFC 刷卡 + 小程序远程开锁(完整实战记录)

这是一次真实可复现的智能门锁改造记录。起因很简单:传统门锁太麻烦,而市面上的智能门锁要么太贵、要么不开放。

所以我决定:

  • 用 ESP8266 自己做一把
  • 支持 NFC 本地刷卡
  • 支持 微信小程序远程开锁
  • 成本可控、逻辑透明、代码完全可读

一、这个项目能做什么?

在开始之前,先明确目标功能:

  • 📡 刷 IC 卡开锁(NFC)

  • 📱 微信小程序远程开锁(MQTT)

  • 🔁 自动回位关锁(防止舵机空转)

  • ⚙️ 非阻塞网络设计,刷卡与联网互不影响

适用场景:老旧门锁、宿舍门、出租屋、工作室内门等。


二、整体方案与架构

先看整体结构,这一步能帮你快速判断这个方案是否适合你。

复制代码
┌────────┐        NFC         ┌──────────┐
   IC卡     ────────────────▶    RC522    
└────────┘                    └────┬─────┘
                                   │ SPI
┌──────────────┐   WiFi + MQTT ┌───▼────────┐      PWM        ┌─────────┐
  微信小程序      ◀────────────▶   ESP8266      ─────────────▶   MG90S    
└──────────────┘                 D1 UNO R3                      舵机     
                               └────────────┘                 └─────────┘

核心思想只有一句话:

ESP8266 作为中枢,NFC 与 MQTT 都只是"开门信号源"。

三、准备

1.硬件

硬件 说明
D1 UNO R3 ESP8266 主控(自带 WiFi) [图示](#硬件 说明 D1 UNO R3 ESP8266 主控(自带 WiFi) 图示 MFRC-522 RFID IC 卡模块(⚠️3.3V) 图示 MG90S 180° 金属齿轮舵机 图示 杜邦线 公对母若干 图示)
MFRC-522 RFID IC 卡模块(⚠️3.3V) [图示](#硬件 说明 D1 UNO R3 ESP8266 主控(自带 WiFi) 图示 MFRC-522 RFID IC 卡模块(⚠️3.3V) 图示 MG90S 180° 金属齿轮舵机 图示 杜邦线 公对母若干 图示)
MG90S 180° 金属齿轮舵机 [图示](#硬件 说明 D1 UNO R3 ESP8266 主控(自带 WiFi) 图示 MFRC-522 RFID IC 卡模块(⚠️3.3V) 图示 MG90S 180° 金属齿轮舵机 图示 杜邦线 公对母若干 图示)
杜邦线 公对母若干 [图示](#硬件 说明 D1 UNO R3 ESP8266 主控(自带 WiFi) 图示 MFRC-522 RFID IC 卡模块(⚠️3.3V) 图示 MG90S 180° 金属齿轮舵机 图示 杜邦线 公对母若干 图示)

⚠️ RC522 只能接 3.3V,接 5V 很容易直接烧模块。

2.硬件连接

这是最容易出问题的一步,直接给出完整对照表。

D1 UNO R3 舵机 RC522
GND 黑线 GND
5V 红线 ---
D10 黄线(PWM) ---
3.3V --- VCC
D15 --- RST
D14 --- SDA / SS
D11 --- MOSI
D12 --- MISO
D13 --- SCK

舵机颜色不统一,以商品说明为准(常见:红=VCC,黑=GND,黄=信号)。

IC卡感应模块的IRQ不用连接

3.软件 IDE

安装IDE

Arduino IDE 下载地址 ,用于将控制代码写入开发板

安装ESP8266程序

参考# Arduino IDE 离线安装ESP8266教程

安装库
安装串口驱动

开发板与IDE通讯,IDE写入程序到开发板,如果是买的和我同款开发板,可以下载以下地址驱动,如果是其他开发板,一般购买详情页有相关资料的下载地址,可以下载。

通过网盘分享的文件:ch340驱动

链接: https://pan.baidu.com/s/1jEzqaJpXa2Sio2-H7DcaVA?pwd=ngbr

提取码: ngbr

创建远程控制账号
  1. 打开小程序

    2. 创建一个锁,然后点击【使用教程】

    3. 在教程页面复制账号和密码

    修改代码

    c 复制代码
    const char* mqtt_broker = "mqtt.zkphp.com";
    const int mqtt_port = 2883;	
    const char* mqtt_user = "小程序获取的用户名";	
    const char* mqtt_password = "小程序获取密码";

写入程序

必须完成以上所有步骤。然后用数据线将开发板连接到电脑上。

  1. 选择开发板

  2. 选择串口

  3. 打开串口监视器,然后设置比特率为9600

  4. 复制完整代码 查看完整代码

  5. 修改代码中WiFi密码

    // WiFi 配置

    const char* ssid = "WiFi账号";

    const char* password = "密码";

  6. 上传代码

    如果在串口监视器中见到以下信息,则表示WiFi和mqtt远程控制连接成功。

    点击微信小程序解锁按键,串口监视器中见到以下信息,则表示mqtt远程控制成功。

ic卡贴近感应模块,串口监视器中见到以下信息,则表示IC卡感应模块功能正常

可以将uid添加到代码中,将IC卡设置为授权卡片。代码如下:

c 复制代码
	const uint64_t ALLOWED_IDS[] = {0x03C09EEE, 0x1D193DE0};

完整代码

https://www.zkphp.com/blog/f73681613398be0a848f91fc472a31f2/#code

相关推荐
jianqiang.xue8 小时前
智能体整体架构设计:四大模块与目录组织
单片机·嵌入式硬件·物联网·架构·esp32
东莞市永盛电气9 小时前
三相208V变380V变压器,出海工业设备供电适配方案
python·单片机·嵌入式硬件
Learn-Share_HY10 小时前
[IT Network]如何配置反向路徑過濾器(rp_filter),以解決路由不對稱問題?
linux·嵌入式硬件·物联网·网络协议·tcp/ip·http·iot
深圳市宝华视联11 小时前
医院内网部署手术示教系统注意事项
嵌入式硬件·实时互动·音视频·实时音视频·视频编解码·嵌入式实时数据库
星河单片机12 小时前
STM32驱动Y01-3IN1空气质量模块+OLED显示完整教程
stm32·单片机·嵌入式硬件·空气质量·甲醛检测·二氧化碳检测·tvoc检测
宣宣猪的小花园.12 小时前
【控制算法】PID 不只是三个参数:比例、积分、微分各在解决什么问题
人工智能·嵌入式硬件·机器学习
别催小唐敲代码12 小时前
stm32_mpu6050_滤波教程
stm32·单片机·嵌入式硬件
2601_9499506314 小时前
没有现成习题,试试AI再写出题
人工智能·小程序·刷题·练习·小程序推荐
单片机仿真设计14 小时前
【proteus仿真】基于 51 单片机距离传感器警报装置设计(仿真图+程序)
单片机·嵌入式硬件·51单片机·proteus·毕设
andrsted15 小时前
作业发布、课堂检测和错题讲评,用一个小程序完成
学习·微信小程序·小程序·学习方法