Reputation: 1
I am trying to set up one way communication with esp now thrue arduino ide. I am not really a programmer so I found some code and explanations on youtube. But I am not able to make it work even though I have copyied the programme. Not sure what I supposed to do. I tried updating boards , different tutorials,tweaked settings and yet nothing seems to work.
Here is the code:
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> One-way communication ESP32 Sender
/*
Rui Santos
Complete project details at https://RandomNerdTutorials.com/esp-now-two-way-communication-esp32/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
*/
//----------------------------------------Load libraries
#include <esp_now.h>
#include <WiFi.h>
//----------------------------------------
uint8_t broadcastAddress[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; //--> REPLACE WITH THE MAC Address of your receiver / ESP32 Receiver.
//----------------------------------------Variables to accommodate the data to be sent.
int send_rnd_val_1;
int send_rnd_val_2;
//----------------------------------------
String success; //--> Variable to store if sending data was successful.
//----------------------------------------Structure example to send data
// Must match the receiver structure
typedef struct struct_message {
int rnd_1;
int rnd_2;
} struct_message;
struct_message send_Data; //--> Create a struct_message to send data.
//----------------------------------------
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Callback when data is sent
void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
Serial.print("\r\nLast Packet Send Status:\t");
Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Delivery Success" : "Delivery Fail");
if (status ==0){
success = "Delivery Success :)";
}
else{
success = "Delivery Fail :(";
}
Serial.println(">>>>>");
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ VOID SETUP
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA); //--> Set device as a Wi-Fi Station.
//----------------------------------------Init ESP-NOW
if (esp_now_init() != ESP_OK) {
Serial.println("Error initializing ESP-NOW");
return;
}
//----------------------------------------
//----------------------------------------Once ESPNow is successfully Init, we will register for Send CB to
// get the status of Trasnmitted packet
esp_now_register_send_cb(OnDataSent);
//----------------------------------------
//----------------------------------------Register peer
esp_now_peer_info_t peerInfo;
memcpy(peerInfo.peer_addr, broadcastAddress, 6);
peerInfo.channel = 0;
peerInfo.encrypt = false;
//----------------------------------------
//----------------------------------------Add peer
if (esp_now_add_peer(&peerInfo) != ESP_OK){
Serial.println("Failed to add peer");
return;
}
//----------------------------------------
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ VOID LOOP
void loop() {
//----------------------------------------Set values to send
send_rnd_val_1 = random(0, 255);
send_rnd_val_2 = random(0, 255);
send_Data.rnd_1 = send_rnd_val_1;
send_Data.rnd_2 = send_rnd_val_2;
//----------------------------------------
Serial.println();
Serial.print(">>>>> ");
Serial.println("Send data");
//----------------------------------------Send message via ESP-NOW
esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &send_Data, sizeof(send_Data));
if (result == ESP_OK) {
Serial.println("Sent with success");
}
else {
Serial.println("Error sending the data");
}
//----------------------------------------
delay(5000);
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> One-way communication ESP32 Receiver
/*
Rui Santos
Complete project details at https://RandomNerdTutorials.com/esp-now-two-way-communication-esp32/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
*/
//----------------------------------------Load libraries
#include <esp_now.h>
#include <WiFi.h>
//----------------------------------------
//----------------------------------------Define variables to store incoming readings
int receive_rnd_val_1;
int receive_rnd_val_2;
//----------------------------------------
//----------------------------------------Structure example to receive data
// Must match the sender structure
typedef struct struct_message {
int rnd_1;
int rnd_2;
} struct_message;
struct_message receive_Data; //--> Create a struct_message to receive data.
//----------------------------------------
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Callback when data is received
void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {
memcpy(&receive_Data, incomingData, sizeof(receive_Data));
Serial.println();
Serial.println("<<<<< Receive Data:");
Serial.print("Bytes received: ");
Serial.println(len);
receive_rnd_val_1 = receive_Data.rnd_1;
receive_rnd_val_2 = receive_Data.rnd_2;
Serial.println("Receive Data: ");
Serial.println(receive_rnd_val_1);
Serial.println(receive_rnd_val_2);
Serial.println("<<<<<");
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ VOID SETUP
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA); //--> Set device as a Wi-Fi Station
//----------------------------------------Init ESP-NOW
if (esp_now_init() != ESP_OK) {
Serial.println("Error initializing ESP-NOW");
return;
}
//----------------------------------------
esp_now_register_recv_cb(OnDataRecv); //--> Register for a callback function that will be called when data is received
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ VOID LOOP
void loop() {
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
It downloads normally on to an ESP but it is not able to "Add pear"¨
Could anybody help please?
Upvotes: 0
Views: 284
Reputation: 1
Looks like you forgot to update the broadcast MAC Address in your code (line 18). Recommend you update that and re-try.
Upvotes: 0