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

ESP32开发-两个WIFI设备的通讯搭建

1. AP端代码(热点创建者)

#include <WiFi.h>
#include <WiFiClient.h>
#include <WiFiAP.h>const char* ap_ssid = "ESP32_AP";
const char* ap_password = "12345678";WiFiServer server(80); // 创建TCP服务器,端口80void setup() {Serial.begin(115200);delay(100);// 启动AP模式WiFi.softAP(ap_ssid, ap_password);Serial.println();Serial.print("AP IP地址: ");Serial.println(WiFi.softAPIP()); // 打印AP的IP地址server.begin(); // 启动服务器
}void loop() {WiFiClient client = server.available(); // 监听客户端连接if (client) {Serial.println("新客户端连接");while (client.connected()) {if (client.available()) {String message = client.readStringUntil('\n'); // 读取客户端消息Serial.print("收到消息: ");Serial.println(message);// 回复客户端client.print("AP已收到: " + message + "\n");}}client.stop();Serial.println("客户端断开");}
}

2. STA端代码(连接设备)

#include <WiFi.h>const char* ssid = "ESP32_AP";
const char* password = "12345678";WiFiClient client;
const char* host = "192.168.4.1"; // AP的默认IP
const int port = 80;void setup() {Serial.begin(115200);delay(100);// 连接到APWiFi.begin(ssid, password);Serial.print("正在连接到AP");while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}Serial.println();Serial.print("已连接,STA IP: ");Serial.println(WiFi.localIP());
}void loop() {Serial.println("尝试连接服务器...");if (!client.connect(host, port)) {Serial.println("连接失败");delay(1000);return;}// 发送消息到APString message = "Hello from STA " + String(millis());client.print(message + "\n");Serial.println("发送: " + message);// 等待回复unsigned long timeout = millis();while (client.connected() && millis() - timeout < 3000) {if (client.available()) {String line = client.readStringUntil('\n');Serial.print("收到回复: ");Serial.println(line);break;}}client.stop();delay(2000); // 每2秒通信一次
}

使用说明

  1. ​上传代码​​:

    • 将AP端代码上传到第一个ESP32
    • 将STA端代码上传到第二个ESP32
  2. ​连接过程​​:

    • AP端ESP32会创建名为"ESP32_AP"的热点
    • STA端ESP32会自动连接该热点
  3. ​通信验证​​:

    • 打开两个串口监视器(分别对应两个ESP32)
    • STA端每2秒发送一次消息,AP端会回复确认
    • 在串口监视器可以看到通信日志
http://www.xdnf.cn/news/7300.html

相关文章:

  • AI大模型从0到1记录学习numpy pandas day25
  • 无人设备遥控器之数据压缩与编码技术篇
  • PLC组网的方法、要点及实施全解析
  • android13以太网静态ip不断断开连上问题
  • C++(24):容器类<list>
  • Unreal 从入门到精通之SceneCaptureComponent2D实现UI层3D物体360°预览
  • MAC常用操作整理
  • MAC电脑中右键后复制和拷贝的区别
  • C++:与7无关的数
  • 基于 Vue 和 Node.js 实现图片上传功能:从前端到后端的完整实践
  • 汽车零部件的EMI抗扰性测试
  • Java中的流详解
  • vue3 vite 路由
  • 容器化-K8s-镜像仓库使用和应用
  • Ubuntu Desktop QEMU/KVM中使用Ubuntu Server 22.04配置k8s集群
  • k8s1.27集群部署mysql8.0双主双从
  • psotgresql18 源码编译安装
  • AutoMouser - 单次AI调用铸就高效自动化脚本
  • mariadb 升级 (通过yum)
  • 排序复习/下(C语言版)
  • vuex的基本使用
  • 零基础设计模式——设计模式入门
  • 下载和导出文件名称乱码问题
  • SVG 与 Canvas 技术调研对比
  • BeanFactory和FactoryBean的区别
  • 【Vue篇】潮汐中的生命周期观测站​
  • 10.14 Function Calling与Tool Calling终极解析:大模型工具调用的5大核心差异与实战优化
  • 基于python版本secsgem源码开发gem,应该如何设置devicetype、connectmode
  • Python训练营打卡 Day30
  • Docker安装MySQL数据库-单机版