亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

基于 Arduino 与 ESP8266 的 WiFi 智能门锁:手机扫码解锁

项目简介

本教程将指导你制作一个基于 Arduino 和 ESP8266 的智能门锁系统。授权人员只需用手机扫描门上的二维码,即可打开网页输入密码,验证通过后电磁锁解锁。无需键盘、指纹模块等复杂机械结构,成本低、部署灵活,适合家庭、办公室、实验室等场景。

核心原理

  1. ESP8266 连接本地 WiFi,启动 Web 服务器,提供登录页面。
  2. 用户扫描门上贴纸上的二维码(编码 ESP8266 局域网 IP),打开登录页。
  3. 输入密码提交,ESP8266 通过串口将密码发送给 Arduino。
  4. Arduino 验证密码,正确则驾驶达林顿管/继电器驱动电磁锁(电磁阀)动作 300ms 解锁。

所需硬件清单

组件数量备注
Arduino Uno R31主控制器,验证密码并驱动锁
ESP8266 WiFi 模块 (ESP-01 或 NodeMCU)1提供 WiFi 与 Web 服务
达林顿大功率晶体管 (如 TIP120) 或继电器模块1驱动电磁锁,隔离强弱电
电磁锁 / 电磁阀 (12V/24V)1门锁执行机构
12V/24V 电源适配器1为电磁锁供电
5V 电源 (USB 或稳压模块)1为 Arduino 和 ESP8266 供电
二极管 1N40071电磁锁线圈反向续流保护
杜邦线、面包板/万用板、电阻等若干按原理图连接

电路连接要点

ESP8266 与 Arduino 串口通信

电磁锁驱动电路

固件代码

Arduino 端代码 (上传至 Arduino Uno)

String inputString = "";         // 接收缓冲区
bool stringComplete = false;     // 接收完成标志
const int lockPin = 9;           // 控制电磁锁引脚
const String validPassword = "your_password"; // 在这里修改你的开锁密码

void setup() {
  Serial.begin(115200);
  inputString.reserve(200);
  pinMode(lockPin, OUTPUT);
  digitalWrite(lockPin, LOW);
}

void loop() {
  if (stringComplete) {
    if (inputString == validPassword) {
      digitalWrite(lockPin, HIGH);   // 解锁
      delay(300);                    // 保持 300ms
      digitalWrite(lockPin, LOW);    // 上锁
      Serial.println("Access granted");
    } else {
      Serial.println("Access denied: " + inputString);
    }
    inputString = "";
    stringComplete = false;
  }
}

void serialEvent() {
  while (Serial.available()) {
    char inChar = (char)Serial.read();
    inputString += inChar;
    if (inChar == '\n') stringComplete = true;
  }
}

ESP8266 端代码 (使用 Arduino IDE 上传,需先安装 ESP8266 开发板包)

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

// ===== 修改为你的 WiFi 凭据 =====
const char* ssid = "YourSSID";
const char* password = "YourPASSWORD";

ESP8266WebServer server(80);

void handleRoot() {
  String html = R"rawliteral(



  
  
  


  

智能门锁验证

请输入访问密码


)rawliteral"; server.send(200, "text/html", html); } void handleSave() { if (server.hasArg("pass") && server.arg("pass") != "") { Serial.println(server.arg("pass")); // 发送密码给 Arduino } server.send(200, "text/plain", "ok"); } void setup() { Serial.begin(115200); delay(10); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nWiFi connected"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); // 记下这个 IP,用于生成二维码 server.on("/", handleRoot); server.on("/save", handleSave); server.begin(); Serial.println("HTTP server started"); } void loop() { server.handleClient(); }

部署与测试步骤

  1. 先上传 Arduino 代码,打开串口监视器确认波特率 115200。
  2. 在 Arduino IDE 安装 ESP8266 开发板包:
    文件 > 首选项 > 附加开发板管理器网址 添加 https://arduino.esp8266.com/stable/package_esp8266com_index.json
    工具 > 开发板 > 开发板管理器 搜索并安装 esp8266。
  3. 选择 "Generic ESP8266 Module",使用 USB-TTL 下载器烧录 ESP8266 代码。
  4. 烧录成功后,打开 ESP8266 串口监视器,记下显示的 IP 地址 (如 192.168.1.45)。
  5. 在浏览器访问该 IP,应看到登录页面。输入正确密码,Arduino 串口监视器应打印 "Access granted",电磁锁动作一次。
  6. 使用在线二维码生成器(如 qr-code-generator.com)将 IP 生成二维码,打印贴在门边。
  7. 实际使用:连接同一 WiFi → 扫码 → 输入密码 → 门锁打开。

安全性与扩展建议

原理图与资源

原理图请参考项目附件图片,展示了 ESP8266、Arduino、达林顿管、电磁锁、二极管、电源的完整连接。

更多教程请访问 ElectroPeak 官网。

制造工艺

  1. 银行金库内幕:历史、设计与安全未来
  2. 用 Python 构建 Wi-Fi 控制的树莓派机器人:分步指南
  3. 用 Arduino 打造绚丽显示器 Ambilight 系统
  4. 打造安全的 Arduino RFID 门锁——分步指南
  5. 智能窗帘:基于Arduino与太阳能的自动光控系统
  6. Arduino 与智能手机打造智能电压表——简单易做的 DIY 项目
  7. 基于 Arduino 与 MAX30100 的实时物联网心率监测系统
  8. 智能物联网罐:ESP8266 + Arduino + 超声波传感器实时监测罐内物位
  9. Arduino Uno WiFi 网页服务器:通过浏览器控制 LED 开关
  10. DIY 智能 Arduino 机械臂:主从控制与动作记忆教程
  11. 使用 Arduino Nano 和 RDA8057M 制作紧凑型 FM 收音机
  12. 基于 Arduino 与 ESP8266 的 WiFi 智能门锁:手机扫码解锁