两个ESP8266一对一通信

功能:两个8266,一个配置为AP模式作为服务器,一个配置为STA模式作为客户端,互相通信

一、将模块一配置为AP模式作为服务器
通过串口助手依次发送指令如下:
在这里插入图片描述
注:端口号和IP用于客户端连接时使用
指令输入为英文输入法,且无空格
串口助手发送指令,需要勾选发送新行

二、将模块二配置为STA模式作为客户端
通过串口助手依次发送指令如下:
在这里插入图片描述
注:第四条指令WiFi名称、密码需要与步骤一中WiFi热点对应
第五条指令IP、端口号需要与步骤一中服务器对应

若连接成功,则客户端串口助手中会有提示信息,如下图:
在这里插入图片描述
同时,服务器串口助手中也会有提示信息,如下图:
在这里插入图片描述
表明已成功和客户端0相连接
接下来便可以相互发送信息

三、互发信息
由于没有开启透传模式,因此需要借助指令 AT+CIPSEND 发送信息

1、首先,服务器给客户端发送信息:AT+CIPSEND=0,5
在这里插入图片描述
注:0表示发送至客户端0,5表示发送5字节
若是单连接模式,则直接使用:AT+CIPSEND=5

可以在客户端看到接收信息,如下图:
在这里插入图片描述
2、客户端给服务器发送信息:AT+CIPSEND=5(因为客户端是单连接模式,所以不需要服务器编号)

在这里插入图片描述
可以在服务器端看到接收消息,如下图:
在这里插入图片描述
表明接收到来自客户端0的5字节数据:98765

要实现两个ESP8266-01S之间的通信,你可以使用ESP-NOW协议。ESP-NOW是ESP8266的一种通信协议,可以在两个或多个ESP8266之间快速建立低功耗的直连网络。 以下是一个简单的示例代码,演示了如何使用ESP-NOW在两个ESP8266-01S之间发送接收数据: 首先,将以下代码上传到第一个ESP8266-01S上: ```cpp #include <ESP8266WiFi.h> #include <espnow.h> // 设置ESP-NOW发送回调函数 void OnDataSent(uint8_t* mac_addr, uint8_t sendStatus) { Serial.println("数据已发送"); } void setup() { Serial.begin(115200); // 初始化ESP-NOW if (esp_now_init() != 0) { Serial.println("ESP-NOW初始化失败"); return; } // 注册发送回调函数 esp_now_register_send_cb(OnDataSent); // 注册对方的MAC地址 uint8_t receiverMac[] = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB}; esp_now_peer_info_t peerInfo; memcpy(peerInfo.peer_addr, receiverMac, 6); peerInfo.channel = 0; peerInfo.encrypt = false; // 添加对方为配对设备 if (esp_now_add_peer(&peerInfo) != ESP_OK) { Serial.println("添加配对设备失败"); return; } } void loop() { // 发送数据 String message = "Hello from ESP8266-01S #1"; esp_now_send(NULL, (uint8_t*)message.c_str(), message.length()); delay(1000); } ``` 接下来,将以下代码上传到第二个ESP8266-01S上: ```cpp #include <ESP8266WiFi.h> #include <espnow.h> // 设置ESP-NOW接收回调函数 void OnDataRecv(uint8_t* mac_addr, uint8_t* data, uint8_t len) { Serial.print("接收到的数据: "); for (int i = 0; i < len; i++) { Serial.print((char)data[i]); } Serial.println(); } void setup() { Serial.begin(115200); // 初始化ESP-NOW if (esp_now_init() != 0) { Serial.println("ESP-NOW初始化失败"); return; } // 注册接收回调函数 esp_now_register_recv_cb(OnDataRecv); // 注册对方的MAC地址 uint8_t senderMac[] = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB}; esp_now_peer_info_t peerInfo; memcpy(peerInfo.peer_addr, senderMac, 6); peerInfo.channel = 0; peerInfo.encrypt = false; // 添加对方为配对设备 if (esp_now_add_peer(&peerInfo) != ESP_OK) { Serial.println("添加配对设备失败"); return; } } void loop() { // 循环执行 } ``` 在代码中,你需要根据实际情况修改`receiverMac`和`senderMac`的值,分别设置第一个ESP8266-01S和第二个ESP8266-01S的MAC地址。 上传完代码后,打开串口监视器,你将看到第一个ESP8266-01S每秒发送一条消息,并且第二个ESP8266-01S会接收并打印该消息。 这样,你就成功实现了两个ESP8266-01S之间的互相通信。你可以根据需要修改代码来发送接收不同的数据。
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值