esp8266控制继电器通断程序
时间: 2023-09-25 16:12:37 浏览: 16
下面是一个简单的示例程序,使用ESP8266控制继电器的通断:
```c
#include <ESP8266WiFi.h>
const char* ssid = "YourSSID"; // 替换成你的Wi-Fi网络名称
const char* password = "YourPassword"; // 替换成你的Wi-Fi网络密码
const int relayPin = 0; // 继电器连接的GPIO引脚
WiFiServer server(80);
void setup() {
pinMode(relayPin, OUTPUT); // 设置继电器引脚为输出模式
digitalWrite(relayPin, HIGH); // 继电器默认关闭
Serial.begin(115200);
delay(10);
// 连接Wi-Fi网络
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// 启动Web服务器
server.begin();
Serial.println("Server started");
}
void loop() {
WiFiClient client = server.available();
if (client) {
Serial.println("New client");
while (client.connected()) {
if (client.available()) {
String request = client.readStringUntil('\r');
Serial.println(request);
if (request.indexOf("/on") != -1) {
digitalWrite(relayPin, LOW); // 继电器打开
}
if (request.indexOf("/off") != -1) {
digitalWrite(relayPin, HIGH); // 继电器关闭
}
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head><title>ESP8266 Relay Control</title></head>");
client.println("<body>");
client.println("<h1>ESP8266 Relay Control</h1>");
client.println("<p>Relay is currently " + String(digitalRead(relayPin) == LOW ? "on" : "off") + "</p>");
client.println("<p><a href=\"/on\">Turn relay on</a></p>");
client.println("<p><a href=\"/off\">Turn relay off</a></p>");
client.println("</body>");
client.println("</html>");
break;
}
}
client.stop();
Serial.println("Client disconnected");
}
}
```
在这个示例程序中,我们使用ESP8266的GPIO0引脚连接继电器,通过Web服务器控制继电器的通断。
在setup()函数中,我们首先将GPIO0引脚设置为输出模式,并且将继电器默认关闭。
然后,我们连接Wi-Fi网络,启动Web服务器。
在loop()函数中,我们等待新的客户端连接。如果有客户端连接,就读取客户端发来的请求,并根据请求的内容控制继电器的通断。然后,我们向客户端发送HTTP响应,告诉客户端当前继电器的状态,并提供控制继电器的链接。
注意:在你的电路中,可能需要使用一个普通的NPN型晶体管来控制继电器,因为ESP8266的GPIO引脚输出的电流可能不足以控制继电器。同时,为了保护ESP8266,你也应该为继电器添加一个保护二极管。
阅读全文