当前位置: 首页 > news >正文

eps8266作为AP服务端 esp32c3作为STA客户端

eps8266作为AP服务端
上传代码后,ESP8266会创建热点
用手机/电脑连接ESP8266_AP热点
浏览器访问192.168.4.1/LED=ON/OFF控制LED
ESP8266通过串口转发指令到ESP32C3

#include <ESP8266WiFi.h>
const char* ssid = "ESP8266_AP";
const char* password = "12345678";
WiFiServer webServer(80);
WiFiServer cmdServer(8080); // 指令服务端口
WiFiClient cmdClients[5];   // 最大5个客户端
bool ledState = false;void setup() {Serial.begin(115200);WiFi.softAP(ssid, password);webServer.begin();cmdServer.begin();Serial.println("AP IP: " + WiFi.softAPIP().toString());
}String sendHTML(){String ptr = "<!DOCTYPE html><html><head>";ptr += "<meta name='viewport' content='width=device-width, initial-scale=1.0'>";ptr += "<style>button{font-size:20px; padding:10px 20px;}</style></head>";ptr += "<body><h1>ESP8266 LED Control</h1>";ptr += "<p>LED Status: <strong>";ptr += (ledState)?"ON":"OFF";ptr += "</strong></p>";ptr += "<a href='/LED=ON'><button>Turn ON</button></a>";ptr += "<a href='/LED=OFF'><button>Turn OFF</button></a>";ptr += "</body></html>";return ptr;
}void broadcastCommand(const String& cmd){for(int i=0; i<5; i++){if(cmdClients[i] && cmdClients[i].connected()){cmdClients[i].println(cmd);Serial.println("Sent: " + cmd);}}
}void loop() {// 处理网页请求WiFiClient webClient = webServer.available();if(webClient){String request = webClient.readStringUntil('\r');if(request.indexOf("LED=ON") != -1){ledState = true;broadcastCommand("LED_ON");}else if(request.indexOf("LED=OFF") != -1){ledState = false;broadcastCommand("LED_OFF");}webClient.println("HTTP/1.1 200 OK");webClient.println("Content-Type: text/html");webClient.println();webClient.println(sendHTML());delay(10);webClient.stop();}// 处理指令客户端连接WiFiClient newClient = cmdServer.available();if(newClient){for(int i=0; i<5; i++){if(!cmdClients[i]){cmdClients[i] = newClient;Serial.println("New client connected");break;}}}
}

esp32c3作为STA客户端

#include <WiFi.h>
const char* ssid = "ESP8266_AP";
const char* password = "12345678";
WiFiClient cmdClient;
const int ledPin = 12; // GPIO2
IPAddress serverIP(192,168,4,1); // AP默认IPvoid setup() {Serial.begin(115200);pinMode(ledPin, OUTPUT);digitalWrite(ledPin, HIGH);WiFi.begin(ssid, password);while(WiFi.status() != WL_CONNECTED){delay(500);Serial.print(".");}Serial.println("\nConnected to AP");while(!cmdClient.connect(serverIP, 8080)){delay(1000);Serial.println("Connecting to command server...");}Serial.println("Command channel ready");
}void loop() {if(!cmdClient.connected()){cmdClient.connect(serverIP, 8080);delay(1000);return;}if(cmdClient.available()){String cmd = cmdClient.readStringUntil('\n');cmd.trim();Serial.println("Received: " + cmd);if(cmd == "LED_ON"){digitalWrite(ledPin, HIGH);}else if(cmd == "LED_OFF"){digitalWrite(ledPin, LOW);}}delay(10);
}

相关文章:

  • LVS +Keepalived 高可用群集
  • 稀疏大模型架构与训练算法研究
  • 【排坑指南】MySQL初始化后,Nacos与微服务无法连接??
  • 什么是gateway以及在微服务中是如何使用的
  • openEuler安装BenchmarkSQL
  • 使用YOLO模型进行线程安全推理
  • 如何高效实现公司文件管理
  • HarmonyOS5 分布式测试:断网情况支付场景异常恢复验证
  • 筑牢安全防线:电子文件元数据驱动的 AI 知识库可控管理方案
  • Redis从库读取主库创建且已过期的key
  • 断言(Assertion)中常用的正则表达式
  • 《汇编语言:基于X86处理器》第2章 x86处理器架构
  • Neo4j 入门到精通(Cypher语言详解)
  • 第 1 章,[标签 Win32] :第一个 WIn32 程序,头文件
  • pthread_once函数使用场景与原理
  • 设计模式精讲 Day 5:原型模式(Prototype Pattern)
  • NAT 与代理服务器 -- NAT,NAPT,正向代理,反向代理
  • 强化学习之 DQN、Double DQN、PPO
  • 黑马python(八)
  • springboot使用nacos注册中心、配置中心的例子
  • 网站基础建设/安徽网站seo
  • 关键词优化网站/网络营销模式
  • 吐鲁番网站建设/手机app软件开发
  • wordpress 腾讯云插件/手机优化是什么意思
  • 怎么创建网页的快捷方式/天津seo网站推广
  • 专做项目报告的网站/市场推广的方法和规划