在arduino环境下,一台esp32释放无线热点控制另一台esp32开关灯的代码
时间: 2023-07-03 20:19:19 浏览: 143
使用ESP32 + Arduino的互联网控制LED灯条-电路方案
5星 · 资源好评率100%
以下是两个ESP32之间控制LED灯的示例代码:
在第一个ESP32上的代码:
```arduino
#include <WiFi.h>
// 设置无线热点的名称和密码
const char* ssid = "MyESP32";
const char* password = "12345678";
// 创建一个TCP服务器来监听客户端连接
WiFiServer server(80);
// LED的引脚
int ledPin = 2;
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
// 连接到Wi-Fi网络
WiFi.softAP(ssid, password);
// 获取本地IP地址
IPAddress IP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(IP);
// 启动TCP服务器
server.begin();
}
void loop() {
// 等待客户端连接
WiFiClient client = server.available();
if (client) {
Serial.println("New client connected");
// 读取客户端发送的数据
String request = client.readStringUntil('\r');
Serial.println(request);
// 根据客户端发送的命令控制LED灯
if (request.indexOf("/on") != -1) {
digitalWrite(ledPin, HIGH);
} else if (request.indexOf("/off") != -1) {
digitalWrite(ledPin, LOW);
}
// 发送响应数据
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("<html><body><h1>ESP32 Control LED</h1></body></html>");
// 断开与客户端的连接
client.stop();
Serial.println("Client disconnected");
}
}
```
在第二个ESP32上的代码:
```arduino
#include <WiFi.h>
// 设置第一个ESP32的IP地址和端口
const char* host = "192.168.4.1";
const uint16_t port = 80;
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
// 连接到第一个ESP32创建的无线热点
WiFi.begin("MyESP32", "12345678");
// 等待Wi-Fi连接
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
}
void loop() {
// 连接到TCP服务器
WiFiClient client;
if (client.connect(host, port)) {
Serial.println("Connected to server");
// 发送控制命令
client.println("GET /on HTTP/1.1");
// 等待服务器响应
while (client.connected()) {
String line = client.readStringUntil('\n');
if (line == "\r") {
Serial.println("Server response:");
break;
} else {
Serial.println(line);
}
}
// 断开与服务器的连接
client.stop();
Serial.println("Server disconnected");
// 等待2秒钟
delay(2000);
// 发送控制命令
client.connect(host, port);
client.println("GET /off HTTP/1.1");
// 等待服务器响应
while (client.connected()) {
String line = client.readStringUntil('\n');
if (line == "\r") {
Serial.println("Server response:");
break;
} else {
Serial.println(line);
}
}
// 断开与服务器的连接
client.stop();
Serial.println("Server disconnected");
// 等待2秒钟
delay(2000);
}
}
```
在这个示例中,第一个ESP32创建了一个无线热点,并启动了一个TCP服务器来监听客户端连接。第二个ESP32通过连接到这个无线热点来连接到第一个ESP32的TCP服务器。当第二个ESP32发送控制命令时,第一个ESP32会根据命令控制LED灯的开关。
阅读全文