首页 » 软件优化 » 物联网:Arduino开发ESP-01S:04继电器控制(继电器控制联网插座面包)

物联网:Arduino开发ESP-01S:04继电器控制(继电器控制联网插座面包)

南宫静远 2024-10-23 02:20:09 0

扫一扫用手机浏览

文章目录 [+]

在继电器背面有标示接线座作用:VCC是5V输入,GND是接地,NC表示是“常闭close”(常通),COM是“共用”,NO表示是“常开open”(常断)。
当模块的GPIO0脚设为低电平时,继电器翻转,常通会断开,常断会导通。

电源模块

因为继电器模块使用5V供电,所以需要将电源跳线换到5V的插脚上。
因为使用LED灯珠演示电路通断,所以电源另一路仍旧采用3.3V供电。

线路接线电源5V输出接入继电器电源插座,注意不要接反了;LED小灯珠短脚(负极)插面包板负极槽,长脚(正极)进插盘;用两根杜邦线做LED长脚正极的跳线,接入继电器插座的COM和NO座(默认常开断路),默认LED不亮。
(注意仅是正极线路的通断控制,不要把正负极线路同时接在COM和NO上,导致通电时短路)

物联网:Arduino开发ESP-01S:04继电器控制(继电器控制联网插座面包) 软件优化
(图片来自网络侵删)
上传测试代码

参考第一章所使用的BLINK示例,仿写继电器定时控制代码

const int relayPin = 0; // 定义继电器控制插脚为 GPIO0void setup() { pinMode(relayPin, OUTPUT);}void loop() { digitalWrite(relayPin, LOW); // 继电器停止 delay(2000); digitalWrite(relayPin, HIGH); // 继电器动作 delay(2000); }

上传成功后,拔下烧录器,将ESP-01S插入继电器插座上。
打开面包板电源,就能看到面包板上的LED灯珠和继电器模块的板载小蓝灯间隔2秒闪烁了。
这也是真正意义上实现单片机的独立控制了。
(插拔时记住要断电操作)

上传远端控制代码

面包板断电,将ESP-01S重新插回烧录器,参考第二章和第三章的代码,编写继电器远端控制功能。

#include <ESP8266WiFi.h>#include <DNSServer.h>#include <ESP8266WebServer.h>const int relayPin = 0; // 定义继电器控制插脚为 GPIO0const byte DNS_PORT = 53;IPAddress apIP(172, 217, 28, 1);DNSServer dnsServer;ESP8266WebServer webServer(80);String responseHTML = "" "<!DOCTYPE html><html lang='en'><head>" "<meta name='viewport' content='width=device-width'>" "<title>CaptivePortal</title></head><body>" "<h1>Hello World!</h1><p>This is a captive portal example." " All requests will be redirected here.</p>" "<a href='/on'>启动继电器</a><br>" "<a href='/off'>关闭继电器</a><br>" "</body></html>";void setup() { WiFi.mode(WIFI_AP); WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0)); WiFi.softAP("DNSServer CaptivePortal example"); // if DNSServer is started with "" for domain name, it will reply with // provided IP to all DNS request dnsServer.start(DNS_PORT, "", apIP); pinMode(relayPin, OUTPUT); //设置GPIO口工作模式为输出 digitalWrite(relayPin, HIGH); //初始状态设为继电器关闭 webServer.on("/", HTTP_GET, handleRoot); //根网页 webServer.on("/on", HTTP_GET, delayON); //启动继电器网页 webServer.on("/off", HTTP_GET, delayOFF);//关闭继电器网页 // replay to all requests with same HTML webServer.onNotFound([]() { webServer.send(200, "text/html", responseHTML); }); webServer.begin();}void loop() { dnsServer.processNextRequest(); webServer.handleClient();}void handleRoot() { webServer.send(200, "text/html", responseHTML);}void delayON() { webServer.send(200, "text/html", responseHTML); digitalWrite(relayPin, LOW); // 继电器动作}void delayOFF() { webServer.send(200, "text/html", responseHTML); digitalWrite(relayPin, HIGH); // 继电器停止}

写入固件后,将ESP-01S插回继电器插座,面包板通电,LED灯珠默认不亮。
此时手机搜索到“DNSServer CaptivePortal example”热点,连接后自动弹出网页,分别点击“启动继电器”和“关闭继电器”两个链接,能够看到LED灯珠跟随切换开闭。

结束语

对继电器成功远程控制,代表着物联网控制功能的实现。

ESP-01S最大支持4个端口的访问控制,设想一个温度控制设备:通过测温模块获取实时环境数据(占用1端口),通过I2C液晶屏显示本地或网络数据(占用2端口),通过继电器控制电扇制冷的启停(占用1端口),通过复位按钮实现设备重启(使用RST端口),通过WiFi将本地数据传送到服务器,并获取服务器指令控制继电器动作。

相关文章