esp-now协议两个设备简单通信,最简单的代码如何实现,代码需要做哪些步骤
时间: 2024-05-16 17:14:16 浏览: 136
ESP-NOW协议是ESP32芯片的一种低功耗通信协议,可以用于两个ESP32设备之间的简单通信。下面是最简单的ESP-NOW通信代码实现步骤:
1. 初始化ESP-NOW协议:
```c
#include "esp_now.h"
void setup() {
WiFi.mode(WIFI_STA);
esp_now_init();
}
```
2. 注册接收方设备:
```c
esp_now_peer_info_t peer;
void setup() {
WiFi.mode(WIFI_STA);
esp_now_init();
memset(&peer, 0, sizeof(peer));
memcpy(peer.peer_addr, other_device_mac_address, 6);
esp_now_add_peer(&peer);
}
```
其中,`other_device_mac_address`是另一个ESP32设备的MAC地址。
3. 发送数据:
```c
void loop() {
uint8_t data = 42; // 要发送的数据
esp_err_t result = esp_now_send(other_device_mac_address, &data, sizeof(data));
if (result == ESP_OK) {
Serial.println("Data sent successfully");
} else {
Serial.println("Data send failed");
}
delay(1000); // 延迟1秒钟
}
```
4. 接收数据:
```c
void on_data_received(const uint8_t* mac_address, const uint8_t* data, int data_length) {
Serial.print("Data received from ");
Serial.print(mac_address[0], HEX);
Serial.print(":");
Serial.print(mac_address[1], HEX);
Serial.print(":");
Serial.print(mac_address[2], HEX);
Serial.print(":");
Serial.print(mac_address[3], HEX);
Serial.print(":");
Serial.print(mac_address[4], HEX);
Serial.print(":");
Serial.println(mac_address[5], HEX);
Serial.print("Data: ");
Serial.print(*data);
Serial.print(" (");
Serial.print(data_length);
Serial.println(" bytes)");
}
void setup() {
WiFi.mode(WIFI_STA);
esp_now_init();
esp_now_register_recv_cb(on_data_received);
memset(&peer, 0, sizeof(peer));
memcpy(peer.peer_addr, other_device_mac_address, 6);
esp_now_add_peer(&peer);
}
```
以上就是最简单的ESP-NOW协议通信代码实现步骤。需要注意的是,发送和接收的数据长度不能超过250字节。
阅读全文