La solution la plus évidente pour programmer un ESP (en C++) est de passer par la console série, soit par l'IDE, soit par des moyens détournés. Maintenant, le but des ESP est d'avoir des sondes déportées et le besoin se fait rapidement sentir de faire des mises à jour à distance ... c'est le but de l'Over The Air / OTA où elles se font par WiFi.
Pour que cela fonctionne, il faut absolument que la cible ait suffisamment de mémoire pour stocker 2 fois le binaire. Dans le cas de l'ESP8266, vu la taille du code gérant le WiFi, cela exclut les modèles ayant moins d'1Mb de Flash.
Il y a beaucoup de tutos sur le web concernant l'ArduinoOTA, je ne vais pas réinventer la roue, on va donc faire vite .
La première chose est évidement d'inclure ... les includes qui vont bien.
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h> // Publication Avahi
#include <WiFiUdp.h> // L'OTA
#include <ArduinoOTA.h>
void setup(){
Si nous avons beaucoup de sondes sur le réseau, il est préférable de les identifier par un nom plus parlant qu' "esp8266-<identifier>", ça se fait pas la commande
ArduinoOTA.setHostname("SondePiscine");
et pour tracer les activités OTA, on peut utiliser les callbacks suivants
void onStart(OTA_CALLBACK(fn)); void onEnd(OTA_CALLBACK(fn)); void onProgress(OTA_CALLBACK_PROGRESS(fn)); void onError(OTA_CALLBACK_ERROR (fn));
Dans le cas de ma sonde de piscine, je n'en utilise qu'une qui m'enverra un message en cas d'erreur.
ArduinoOTA.onError([](ota_error_t error) {
String msg = "Error :";
msg += error;
switch( error ){
case OTA_AUTH_ERROR:
msg += " (Auth Failed)"; break;
case OTA_BEGIN_ERROR:
msg += " (Begin Failed)"; break;
case OTA_CONNECT_ERROR:
msg += " (Connect Failed)"; break;
case OTA_RECEIVE_ERROR:
msg += " (Receive Failed)"; break;
case OTA_END_ERROR:
msg += " (End Failed)"; break;
};
logmsg( msg );
});
On rajoutera un peu de sécurité en ajoutant un mot de passe
ArduinoOTA.setPassword((const char *)"123");
Il ne reste plus qu'à activer l'OTA
ArduinoOTA.begin();
}
void loop(){
ArduinoOTA.handle();
}
Les sondes se déclarent sur ne réseau en utilisant le protocole Avahi/Bonjour et comme les messages de broadcast ne sont généralement pas retransmises à travers les routeurs, il faut qu'elles soient sur le même réseau que la machine faisant tourner l'IDE Arduino.
Visitez : Nos sorties Ski et rando |
Copyright Laurent Faillie
2001-2024
N'oubliez pas d'entrer le mot de passe pour voir aussi les photos perso. |
Contactez moi si vous souhaitez réutiliser ces photos et pour les obtenir avec une plus grande résolution. |
Visites durant les 7 derniers jours au total. |
Vous pouvez
laissez un commentaire
sur cette page.