admin管理员组文章数量:1620376
具体实现功能:
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
版权声明:本文标题:【宿舍开门】成本20元,ESP8266强制门户网页开关+RFID 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1728817932a1175130.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论