两个esp32-cam通过一个建wifi,一个连接,实现通信怎么写
时间: 2024-04-08 13:30:49 浏览: 122
要实现两个ESP32-CAM之间的通信,您可以使用ESP-NOW协议。ESP-NOW是一种专门为ESP8266和ESP32开发的通信协议,可以在局域网中快速、简单地进行设备之间的通信。
下面是一个简单的示例代码,其中一个ESP32-CAM作为发送方,另一个作为接收方:
发送方代码(esp32cam_sender.ino):
```cpp
#include <esp_now.h>
#include <WiFi.h>
// 定义接收方的MAC地址
uint8_t receiverMac[] = {0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC};
void setup() {
// 初始化串口和WiFi
Serial.begin(115200);
WiFi.mode(WIFI_STA);
// 初始化ESP-NOW
if (esp_now_init() != ESP_OK) {
Serial.println("Error initializing ESP-NOW");
return;
}
// 注册接收方的MAC地址
esp_now_peer_info_t peerInfo;
memcpy(peerInfo.peer_addr, receiverMac, sizeof(receiverMac));
peerInfo.channel = 0;
peerInfo.encrypt = false;
if (esp_now_add_peer(&peerInfo) != ESP_OK) {
Serial.println("Failed to add peer");
return;
}
}
void loop() {
// 发送数据
String message = "Hello from sender!";
esp_now_send(receiverMac, (uint8_t*)message.c_str(), message.length());
delay(1000);
}
```
接收方代码(esp32cam_receiver.ino):
```cpp
#include <esp_now.h>
#include <WiFi.h>
// 定义发送方的MAC地址
uint8_t senderMac[] = {0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC};
void setup() {
// 初始化串口和WiFi
Serial.begin(115200);
WiFi.mode(WIFI_STA);
// 初始化ESP-NOW
if (esp_now_init() != ESP_OK) {
Serial.println("Error initializing ESP-NOW");
return;
}
// 注册发送方的MAC地址
esp_now_peer_info_t peerInfo;
memcpy(peerInfo.peer_addr, senderMac, sizeof(senderMac));
peerInfo.channel = 0;
peerInfo.encrypt = false;
if (esp_now_add_peer(&peerInfo) != ESP_OK) {
Serial.println("Failed to add peer");
return;
}
// 设置接收回调函数
esp_now_register_recv_cb([](uint8_t* mac, uint8_t* data, int len) {
String message = String((char*)data);
Serial.println("Received message: " + message);
});
}
void loop() {
// 等待接收数据
delay(1000);
}
```
在上述代码中,您需要将发送方和接收方的MAC地址替换为实际的MAC地址。发送方通过esp_now_send函数发送数据,接收方通过设置接收回调函数来处理接收到的数据。
请注意,这只是一个简单的示例代码,您可能需要根据自己的具体需求进行修改和优化。另外,确保两个ESP32-CAM都连接到同一个WiFi网络,并且具有正确的权限和设置。
希望这可以帮助到您!如有其他问题,请随时提问。
阅读全文