自制智能门锁: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

相关推荐
Code Slacker2 小时前
第八届传智杯AI微信小程序开发挑战赛练习题库(四)
notepad++
郑州光合科技余经理2 小时前
可独立部署的Java同城O2O系统架构:技术落地
java·开发语言·前端·后端·小程序·系统架构·uni-app
清风6666662 小时前
基于单片机的多路温湿度采集与WIFI智能报警控制系统设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
爱吃番茄鼠骗2 小时前
回顾ESP32S3系列---基础篇(Bootloader)
单片机·嵌入式硬件
码农三叔2 小时前
(8-2)传感器系统与信息获取:外部环境传感
人工智能·嵌入式硬件·数码相机·机器人·人形机器人
余生皆假期-3 小时前
永磁同步电机下桥三电阻采样方式的电机电流重构方法
单片机·嵌入式硬件·嵌入式
阿斌_bingyu7094 小时前
眼镜店AR在线试戴小程序技术解决方案
小程序·ar
蓬荜生灰4 小时前
STM32(12)-- GPIO输入,按键检测
stm32·单片机·嵌入式硬件
DLGXY4 小时前
STM32——ADC、多通道转换(十三)
stm32·单片机·嵌入式硬件