Bonjour à tous,
oui, j'avais écrit que je n'utiliserais plus de ESP-01 à l'avenir, mais j'en ai encore quelques-uns en marche, quand même!
Voici que je me questionne sur la non-réception de valeurs via espNOW par mon ESP-01
Ce dernier devrait recevoir des données depuis un ESP32-wroom distant de seulement 4 mètres (donc la distance n'est pas un enjeu), à l'intérieur de la même salle (donc pas d'enjeu de cloison ni même de meuble, car les deux micro-contrôleur sont près du plafond).
Le code de l'émetteur a été vérifié. À chaque envoi de données, il me retourne un message de « succès d'envoi ».
L'adresse MAC a été vérifiée, c'est bien vers le bon ESP-01 que Wroom émet.
Tout le blâme est porté, donc, par ESP-01.
J'ai recopié le code de Ruis Santos et n'en ai modifié que la structure de données pour la conformer à celle de l'émetteur et me retourner quelques informations de contrôle.
Voici ce code:
#include <ESP8266WiFi.h>
#include <espnow.h>
//Gestion des messages
struct VersAffichage {
int genre; //0: Changement à l'éclairage; 1: message à afficher; 2: heure
int a;
int b;
int c;
int d;
int e;
};
VersAffichage interESP;
// Callback function that will be executed when data is received
void OnDataRecv(uint8_t * mac, uint8_t *incomingData, uint8_t len) {
memcpy(&interESP, incomingData, sizeof(interESP));
Serial.print("Bits reçus: ");
Serial.print(len);
Serial.print(", soit : \t");
Serial.print(interESP.a);
Serial.print("\t");
Serial.print(interESP.b);
Serial.print("\t");
Serial.print(interESP.c);
Serial.print("\t");
Serial.print(interESP.d);
Serial.print("\t");
Serial.println(interESP.e);
Serial.println();
}
void setup() {
// Initialize Serial Monitor
Serial.begin(115200);
delay(500);
Serial.println("Démarrage du test");
delay(200);
Serial.println("Démarrage du test");
// Set device as a Wi-Fi Station
WiFi.mode(WIFI_STA);
// Init ESP-NOW
if (esp_now_init() != 0) {
Serial.println("Error initializing ESP-NOW");
return;
} else {
Serial.println("ESPnow est bien démarré.");
}
// Once ESPNow is successfully Init, we will register for recv CB to
// get recv packer info
esp_now_set_self_role(ESP_NOW_ROLE_SLAVE);
esp_now_register_recv_cb(OnDataRecv);
Serial.println("Le comportement de ESPnow a été défini.");
}
void loop() {
}
Or, ESP-01 ne reçoit rien, ne me retourne rien.
Voici le retour complet, après 10 minutes d'attente tandis que Wroom émet une fois par minute:
Démarrage du test
ESPnow est bien démarré.
Le comportement de ESPnow a été défini.
Pourtant, ce même code fonctionne entre un ESP32-AIthinker et un ESP-01.
Y a-t-il des versions de ESP-01 qui soient incompatibles avec espNOW ?
Si oui, comment savoir si le remplaçant sera compatible ou non ?
Trouvez-vous une erreur dans mon code ?
Merci à tous.
Bonne journée.