两个esp8266使用espnow通讯的代码,要求有rssi功能
时间: 2024-03-22 15:40:02 浏览: 203
以下是两个ESP8266使用ESP-NOW通信并带有RSSI功能的示例代码:
发送端代码:
```c++
#include <ESP8266WiFi.h>
#include <espnow.h>
#define CHANNEL 1
typedef struct __attribute__((packed)) message {
int rssi;
char data[10];
} Message;
Message msg;
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
esp_now_init();
esp_now_set_self_role(ESP_NOW_ROLE_CONTROLLER);
esp_now_add_peer(0x00, (uint8_t*) "\x1A\xFE\x34\xB8\x59\xF7", CHANNEL, NULL, 0);
}
void loop() {
int rssi = WiFi.RSSI();
msg.rssi = rssi;
snprintf(msg.data, sizeof(msg.data), "Hello!");
esp_now_send(0x00, (uint8_t*) &msg, sizeof(msg));
delay(1000);
}
```
接收端代码:
```c++
#include <ESP8266WiFi.h>
#include <espnow.h>
#define CHANNEL 1
typedef struct __attribute__((packed)) message {
int rssi;
char data[10];
} Message;
Message msg;
void OnDataRecv(const uint8_t* mac, const uint8_t* data, int len) {
memcpy(&msg, data, sizeof(msg));
Serial.printf("RSSI: %d dBm, Data: %s\n", msg.rssi, msg.data);
}
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
esp_now_init();
esp_now_set_self_role(ESP_NOW_ROLE_SLAVE);
esp_now_register_recv_cb(OnDataRecv);
esp_now_add_peer(0x00, (uint8_t*) "\x1A\xFE\x34\xB8\x59\xF7", CHANNEL, NULL, 0);
}
void loop() {
delay(1000);
}
```
请注意将代码中的MAC地址更改为您发送和接收ESP8266的MAC地址,并根据需要更改通道编号。此代码将发送带有“Hello!”消息的消息并显示其RSSI值。接收端将显示消息和RSSI值。
阅读全文