电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
ESP8266 Arduino创建web服务器控制继电器
分 享
扫描二维码分享
ESP8266 Arduino创建web服务器控制继电器
esp8266
arduino
xbk_425933
关注
发布时间: 2022-01-05
丨
阅读: 894
#写在开头 本文使用Arduino ESP8266官方库ESP8266WebServer来开发web服务器,以实现简单的输出网页和控制继电器。 #使用材料 ESP8266 NodeMCU * 1 2路继电器模块(高电平触发) * 1 杜邦线 * 若干 硬件接线 VCC - Vin GND - GND IN1 - GPIO15 IN2 - GPIO13 **注:需要注意的是ESP8266其中的几个GPIO口是无法用来控制继电器的,接上那些口之后ESP8266会无法开机,这是因为这些GPIO口在启动时不能接低电平,继电器模块的IN通过推动三极管的PN结对地连接,虽然有阻抗,但是模块认为已经接了低电平,所以不开机。** # 所需库 ESP8266WebServer ESP8266WiFi 在Arduino中安装完ESP8266开发板后,这些库默认可用,所以无需单独安装。 #原理 利用ESP8266WiFi库,开机连接家中WIFI,然后在串口中输出WIFI地址。 接着设置Web服务器的路由,设置完成后启动Web服务器。 当用户请求时,请求会被loop中的handleClient捕获,处理后分发给匹配的路由,如果是指定路由,就控制继电器开关。 具体可参考GitHub的README:https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer #效果预览 ![](https://cf04.ickimg.com/bbsimages/202112/38d24731415e16cab5356083e09fa458.jpg) # 实现代码 ```cpp // WIFI #include
// wifi ssid #define WIFI_SSID "" // wifi ssid #define WIFI_PASS "" #include
// create webserver,the port is 80 ESP8266WebServer server(80); // relay int pinA = 13; int pinB = 15; void setup() { // put your setup code here, to run once: // start serial Serial.begin(115200); Serial.println(); // set pin mode pinMode(pinA, OUTPUT); pinMode(pinB, OUTPUT); // connect wifi setup_wifi(); // set route server.on("/", []() { server.send(200, "text/plain", "this works as well"); }); server.on("/on1", []() { server.send(200, "text/plain", "on"); digitalWrite(pinA, HIGH); }); server.on("/off1", []() { server.send(200, "text/plain", "off"); digitalWrite(pinA, LOW); }); server.on("/on2", []() { server.send(200, "text/plain", "on"); digitalWrite(pinB, HIGH); }); server.on("/off2", []() { server.send(200, "text/plain", "off"); digitalWrite(pinB, LOW); }); server.onNotFound(handleNotFound); // start web server server.begin(); Serial.println("HTTP server started"); } void setup_wifi() { // connect WIFI WiFi.begin(WIFI_SSID, WIFI_PASS); WiFi.softAPdisconnect (true); Serial.print("Connecting WIFI"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(); Serial.print("Connected, IP address: "); Serial.println(WiFi.localIP()); } void handleNotFound() { // run when no route is found String message = "File Not Found\n\n"; message += "URI: "; // get request uri message += server.uri(); message += "\nMethod: "; // get request method message += (server.method() == HTTP_GET) ? "GET" : "POST"; message += "\nArguments: "; // get request args message += server.args(); message += "\n"; for (uint8_t i = 0; i < server.args(); i++) { message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; } // send with 404 code server.send(404, "text/plain", message); } void loop() { // put your main code here, to run repeatedly: // Processing request server.handleClient(); } ``` # 代码验证 将代码编译完烧写入ESP8266后,串口会输出WIFI连接信息,连接WIFI成功后会显示IP,我们用浏览器打开返回的IP,进行控制。 http://172.16.1.20/on1 打开第一路继电器 http://172.16.1.20/on2 打开第二路继电器 http://172.16.1.20/off1 关闭第一路继电器 http://172.16.1.20/off2 关闭第二路继电器 如果网页显示on或者off,且继电器有动作,即代表代码有效。
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
0
)
xbk_425933
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交