如何在Arduino ESP32中利用ESP-NOW功能进行数据的发送和接收操作?
时间: 2024-10-19 10:05:53 浏览: 37
在Arduino ESP32中使用ESP-NOW(ESP现在模式)进行数据发送和接收的操作相对简单,因为它是一个轻量级的无线通信协议,适用于近距离、实时的传感器数据交换。以下是基本步骤:
**发送数据**:
1. 首先,你需要初始化ESP-NOW并注册接收事件处理器:
```cpp
#include <ESPNow.h>
ESPNow espNow;
void setup() {
Serial.begin(115200);
espNow.setDeviceName("ESP32Node");
espNow.start();
}
void loop() {
String message = "Hello ESP-NOW!";
if (!espNow.isRunning()) {
espNow.start();
} else {
espNow.sendToAll(message.c_str(), message.length());
Serial.println("Data sent to all nodes.");
}
delay(1000); // 程序间隔发送数据
}
```
在这个例子中,`sendToAll()`函数会将消息发送给网络内的所有节点。
**接收数据**:
为了接收数据,你需要注册一个接收回调函数:
```cpp
void onReceive(const char* srcMac, const char* msg, int length) {
Serial.print("Received message from ");
Serial.println(srcMac, DEC);
Serial.print("Message: ");
Serial.println(msg);
}
```
然后,在`setup()`函数中注册这个回调:
```cpp
espNow.onReceive(onReceive);
```
这样,当有节点向你的ESP32发送数据时,`onReceive()`函数就会被调用。
阅读全文