Esp_now bibliothèque

Bonjour , pour un de mes projets ,il faut que je puisse communiquer par bluetooth donc je me suis procuré 2 esp32 .Pour utiliser ces plaques avec esp_now (avec l'IDE arduino), il faut se procurer la library
#include <esp_now.h>
Mais ,lors de mes recherches aucun moyen de la trouver que se soit en fichier zip (github ou arduino),dans les bibliothèques a installer ....
Donc est ce que quelqu'un pourrait m'envoyer un lien pour la bibliothéque en question.
merci d'avance

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans @Les bonnes pratiques du Forum Francophoner

Est-ce que esp_now.h ne fait pas partie de l'installation ESP32, donc n'a-t-il pas besoin d'être téléchargé ?

Notez le nom exact du fichier

peut être

Bonjour @chouchoui

As-tu installé l'extension ESP32 pour IDE Arduino ?
Si oui, comment as-tu procédé ? (comme le signale @UKHeliBob , ESPNow est l'une des librairies incluses)
Si non voir ici la procédure : https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html

Sans cette extension l'IDE Arduino ne peut prendre en charge aucune des nombreuses cartes basées sur un ESP32.

En arrivant sur le Forum Arduino Francophone il faut prendre connaissance des 'Bonnes Pratiques :
:warning: A lire : https://forum.arduino.cc/t/les-bonnes-pratiques-du-forum-francophone/861014

Non, certainement

Le mien est dans C:\Users\Bob2\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.0\tools\sdk\esp32\include\esp_wifi\include\esp_now.h

j'ai mis dans l'URL de gestionnaire de cartes supplémentaires deux URL (qui sont suggérer sur se site "randomnerdtutorials.com"),j'ai installé la carte esp32 ,j'ai mis comme type de carte DOIT ESP32 DEVKIT V1

Mais à partir de cette ligne :
uint8_t broadcastAddress = {C8, C9, A3, C6, D7, BC};
il y a message d'erreur qui me dit
Non utilisé : C:..........
'C8' was not declared in this scope

alors que pour moi le logiciel arduino devrait comprendre que c'est l'adresse MAC de l'autre esp32
pour pouvoir communiquer

postes ici l'ensemble de ton code selon la méthode indiquée dans les "Bonnes pratiques du Forum Francophone"

#include <esp_now.h>
#include <WiFi.h>

// REPLACE WITH YOUR RECEIVER MAC Address
uint8_t broadcastAddress = {C8, C9, A3, C6, D7, BC};

// Structure example to send data
// Must match the receiver structure
typedef struct struct_message {
char a[32];
int b;
float c;
bool d;
} struct_message;

// Create a struct_message called myData
struct_message myData;

// 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");
}

void setup() {
// Init Serial Monitor
Serial.begin(115200);

// Set device as a Wi-Fi Station
WiFi.mode(WIFI_STA);

// 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() {
// Set values to send
strcpy(myData.a, "THIS IS A CHAR");
myData.b = random(1,20);
myData.c = 1.2;
myData.d = false;

// Send message via ESP-NOW
esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData));

if (result == ESP_OK) {
Serial.println("Sent with success");
}
else {
Serial.println("Error sending the data");
}
delay(2000);
}

#include <esp_now.h>
#include <WiFi.h>

uint8_t broadcastAddress = {C8, C9, A3, C6, D7, BC};

typedef struct struct_message {
char a[32];
int b;
float c;
bool d;
} struct_message;

struct_message myData;

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");
}

void setup() {

Serial.begin(115200);

WiFi.mode(WIFI_STA);

if (esp_now_init() != ESP_OK) {
Serial.println("Error initializing ESP-NOW");
return;
}

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() {
// Set values to send
strcpy(myData.a, "THIS IS A CHAR");
myData.b = random(1,20);
myData.c = 1.2;
myData.d = false;

esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData));

if (result == ESP_OK) {
Serial.println("Sent with success");
}
else {
Serial.println("Error sending the data");
}
delay(2000);
}

en mettant come ça ton code non indenté sans respecter la méthode décrite das les "Bonnes Pratiques du Forum Francophone" tu réduis très fortement la probabilité de réponses sur le fond.....

Corriges les 2 messages précedent en y utilisant le balisage demandé
entre autres avantages on ne cerar plus le carré à la fin de broadcastAdress ......

voici le code de l'expéditeur

le code du récepteur:
#include <esp_now.h>
#include <WiFi.h>

typedef struct struct_message {
char a[32];
int b;
float c;
bool d;
} struct_message;

struct_message myData;

void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {
memcpy(&myData, incomingData, sizeof(myData));
Serial.print("Bytes received: ");
Serial.println(len);
Serial.print("Char: ");
Serial.println(myData.a);
Serial.print("Int: ");
Serial.println(myData.b);
Serial.print("Float: ");
Serial.println(myData.c);
Serial.print("Bool: ");
Serial.println(myData.d);
Serial.println();
}

void setup() {

Serial.begin(115200);

WiFi.mode(WIFI_STA);

if (esp_now_init() != ESP_OK) {
Serial.println("Error initializing ESP-NOW");
return;
}

esp_now_register_recv_cb(OnDataRecv);
}

void loop() {

}

1 Like
  1. En mettant comme ça ton code non indenté sans respecter la méthode décrite das les "Bonnes Pratiques du Forum Francophone" (partie UTILISATION DE QURLQUES OUTILS) tu réduis très fortement la probabilité de réponses sur le fond....

  2. pour prendre en mains ESPNow sur ESP32 mieux vaut à mon avis partir des deux exemples cpmplémentaires fournis avec l'extension ESP32 pour IDE Arduino :

Exemples ESP32 ESPNow Basic Master
Exemples ESP32 ESPNow Basic Slave

je vais essayer de le téléverser

les constantes en hexadécimal se notent avec le prefixe 0x :
uint8_t broadcastAddress = {0xC8, 0xC9, 0xA3, 0xC6, 0xD7, 0xBC};