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
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 :
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() {
}
-
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....
-
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};
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.