【宿舍开门】成本20元,ESP8266强制门户网页开关+RFID

使用ESP8266和RFID-RC522构建的低成本宿舍门禁系统,通过Web网页和实体卡控制舵机开关。设备连接WiFi后自动弹出控制页面,实现方便快捷的宿舍开门方式。
摘要由CSDN通过智能技术生成

具体实现功能

1、ESP8266使用AP模式,终端设备通过 Web 网页实现舵机控制;

2、RFID-MFRC522射频实现舵机控制,可录入实体卡(校园一卡通),支持手机NFC。

 

 功能演示:

【宿舍开门】成本20元 ESP8266强制门户网页开关+RFID控制舵机_哔哩哔哩_bilibili

 

优点:20元低成本即可实现

           连接WiFi后自动弹出控制开关,无需打开APP等,非常适合宿舍场景使用

           增加RFID-RC522射频后,开门更加方便,WiFi开门在自己、室友都在床上,不想起身给别人开门等场景更适用


目录

        一、硬件部分

NodeMcu 和 RC522接线图​

NodeMcu引脚图​

NodeMcu原理图

二、连接WiFi,Web 网页强制门户控制舵机

三、RFID-MFRC522功能实现

四、综合功能实现


一、硬件部分

NodeMcu V3开发板、舵机、RFID-RC522射频

NodeMcu 和 RC522接线图

NodeMcu引脚图

NodeMcu原理图

 舵机接GPIO0(D3),sg90的力不是很大,推荐使用995、996R

供电采用micro数据线长期供电(不知道会不会G),舵机供电要5v,寝室供电不方便,使用了一根3米的数据线,再引一根5v给舵机


二、连接WiFi,Web 网页强制门户控制舵机

参照:ESP8266+Arduino实现控制【开关外设装置-记录一】_YuBooy的博客-CSDN博客_esp8266外接物理开关

原文各部分实现原理及代码非常清晰

 

强制门户Web 网页效果

 

 代码部分:

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

//------------------------------  配网页面代码  ---------------------------------------
const char* page_open_html = "\
<!DOCTYPE html>\r\n\
<html lang='en'>\r\n\
<head>\r\n\
  <meta charset='UTF-8'>\r\n\
  <meta name='viewport' content='width=device-width, initial-scale=1.0'>\r\n\
  <title>Switch</title>\r\n\
  <style>\r\n\
    body {\r\n\
      background-color: rgb(255, 250, 240);\r\n\
    }\r\n\
    .box {\r\n\
      width: 200px;\r\n\
      height: 110px;\r\n\
      background-color: rgb(144, 238, 156);\r\n\
      border: 4px solid gray;\r\n\
      position: absolute;\r\n\
      left: 50%;\r\n\
      top: 50%;\r\n\
      margin-top: -55px;\r\n\
      margin-left: -100px;\r\n\
      border-radius: 10px;\r\n\
      font-size: 70px;\r\n\
      font-weight: 500;\r\n\
      color: white;\r\n\
      outline: none;\r\n\
    }\r\n\
  </style>\r\n\
</head>\r\n\
<body>\r\n\
  <form name='input' action='/OPEN' method='POST' >\r\n\
    <input type='submit' value='Open' class='box'><br>\r\n\
  </form>\r\n\
</body>\r\n\
</html>\r\n\
";
// 操作成功页
const char* page_again_html = "\
<!DOCTYPE html>\r\n\
<html lang='en'>\r\n\
<head>\r\n\
  <meta charset='UTF-8'>\r\n\
  <meta name='viewport' content='width=device-width, initial-scale=1.0'>\r\n\
  <title>Switch</title>\r\n\
  <style>\r\n\
    body {\r\n\
      background-color: rgb(255, 250, 240);\r\n\
    }\r\n\
    .box {\r\n\
      width: 200px;\r\n\
      height: 110px;\r\n\
      background-color: rgb(156, 156, 156);\r\n\
      border: 4px solid gray;\r\n\
      position: absolute;\r\n\
      left: 50%;\r\n\
      top: 50%;\r\n\
      margin-top: -55px;\r\n\
      margin-left: -100px;\r\n\
      border-radius: 10px;\r\n\
      font-size: 70px;\r\n\
      font-weight: 500;\r\n\
      color: white;\r\n\
      outline: none;\r\n\
    }\r\n\
  </style>\r\n\
</head>\r\n\
<body>\r\n\
  <form name='input' action='/AGAIN' method='POST' >\r\n\
    <input type='submit' value='Again' class='box'><br>\r\n\
  </form>\r\n\
</body>\r\n\
</html>\r\n\
";

//-------------------------------  环境配置  ----------------------------------------
const char* AP_SSID = "3209TEST";        //这里改成你的AP名字--AP账号
const char* AP_PSW = "88888888";         //这里改成你的AP密码 8位以上
const byte DNS_PORT = 53;       //DNS端口号

IPAddress apIP(192, 168, 4, 1); //esp8266-AP-IP地址
DNSServer dnsServer;            //创建dnsServer实例
ESP8266WebServer server(80);    //创建WebServer
Servo myServo;                     // 定义Servo对象



//-------------------------------  网页请求处理  ----------------------------------------
void handleRoot() {//访问主页回调函数
  server.send(200, "text/html", page_open_html);
}

//Post回调函数:处理LED控制请求
void handleRootPost() {
  //digitalWrite(D5,!digitalRead(D5));// 改变LED的点亮或者熄灭状态
  //server.sendHeader("Location",page_again_html);// 跳转回页面根目录
  server.send(200, "text/html", page_again_html);
  server.send(303);                 // 发送Http相应代码303 跳转  
  Serial.println("/OPEN 请求");
  servoService();
}

void handleRootSuccess() {//访问主页回调函数
  server.send
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值