Bonjour, suite à un projet d'alarme, j'ai voulu communiquer entre un esp8266(mini) (je le nommerais 1) et un autre esp8266(mini) (je le nommerais 2). L'un ferait office de serveur (1) en recevant les informations du deuxième (2) équipé d'un capteur HC SR 501. J'ai fait le choix d'utiliser ESP NOW qui est très pratique pour la transmission d'informations.
Suite au fonctionnement sur batterie de l'esp équipé du PIR (2), je souhaite le faire dormir quand l'alarme n'est pas activée... Pour cela, je désactive le wifi de l'esp (1). L'esp (2) ne pouvant plus communiquer avec lui, passe automatiquement en sommeil.
Cependant, quand je désactive le wifi de l'esp (1), l'esp(2) fait bien un sommeil de 10 sec comme écrit dans le code. Cependant, après son réveil, rien ne se passe... Pourtant, il est sensé redémarrer après ce deepsleep ! Je vous laisse voir le moniteur série où j'explique les différentes étapes.
Merci d'avance !
PS : L'esp (2) ne comporte pas encore le PIR. Je souhaite juste tester cette fonctionnalité de sommeil. C'est pour cela qu'il envoie toute les 2 secondes une information, et que le code ne comporte aucun pinMode en INPUT !
Moniteur série :
Code de l'esp (2) :
/*
Rui Santos
Complete project details at https://RandomNerdTutorials.com/esp-now-esp8266-nodemcu-arduino-ide/
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.
*/
#include <ESP8266WiFi.h>
#include <espnow.h>
#define led 5
int statutdata;
// REPLACE WITH RECEIVER MAC Address
uint8_t broadcastAddress[] = {0xF4, 0xCF, 0xA2, 0xC7, 0xF6, 0x4E};
// Structure example to send data
// Must match the receiver structure
typedef struct struct_message {
bool e;
} struct_message;
// Create a struct_message called myData
struct_message myData;
unsigned long lastTime = 0;
unsigned long timerDelay = 2000; // send readings timer
void setup() {
pinMode(led, OUTPUT);
// Init Serial Monitor
Serial.begin(115200);
// 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;
}
// Once ESPNow is successfully Init, we will register for Send CB to
// get the status of Trasnmitted packet
esp_now_set_self_role(ESP_NOW_ROLE_CONTROLLER);
esp_now_register_send_cb(OnDataSent);
// Register peer
esp_now_add_peer(broadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0);
}
// Callback when data is sent
void OnDataSent(uint8_t *mac_addr, uint8_t sendStatus) {
Serial.print("Last Packet Send Status: ");
if (sendStatus == 0){
Serial.println("Delivery success");
} else {
Serial.println("Delivery fail");
ESP.deepSleep(10 * 1000000, RF_CAL);
Serial.println("Sommeil de 10 secondes enclenché");
}
}
void loop() {
if ((millis() - lastTime) > timerDelay) {
myData.e = false;
// Send message via ESP-NOW
esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData));
if(OnDataSent) {
digitalWrite(led, 1);
delay(1000);
digitalWrite(led, 0);
}
lastTime = millis();
}
}