Accueil | ESP8266 - ESP32 | ESP32 | ArduinoOTA ESP32 : mise à jour sans fil en Wi-Fi (OTA) depuis l’IDE Arduino

ArduinoOTA ESP32 : mise à jour sans fil en Wi-Fi (OTA) depuis l’IDE Arduino

esp32 geekcreit wroom

La librairie ArduinoOTA qui permet de réaliser des mises à jour sans fil (OTA) en Wi-Fi est également compatible avec l’ESP32, le successeur plus puissant de l’ESP8266. Elle est intégrée au Arduino Core pour ESP32 développé par Espressif (page GitHub du projet). Il n’est pas encore possible d’installer le kit de développement depuis le gestionnaire de cartes. Le SDK étant encore en phase de développement, la procédure d’installation dépend de la machine sur laquelle est installé l’IDE Arduino. Il est maintenant possible d’utiliser le hash du mot de passe pour sécuriser d’avantage la mise à jour à distance. Autre nouveauté, il est maintenant possible de mettre en jour en Wi-Fi la zone mémoire SPIFFS.

Installer la librairie ArduinoOTA pour ESP32 sur l’IDE Arduino

Avant de démarrer l’installation, quittez l’IDE Arduino. Ensuite, pour installer le kit de développement sur votre macOS, Windows, Linux ou Raspberry Pi, suivez ce tutoriel précédent. Une fois que le SDK est installé, vous pouvez relancer l’IDE.

Si tout s’est correctement déroulé, vous devez avoir de nouvelles cartes ESP32 proposées

esp32 board cartes ide arduino windows 10 64-bits

Dans la version actuelle, le kit supporte les cartes génériques (ESP32 Dev Module jusqu’à 4MB), et plusieurs cartes de fabricants connus comme la nouvelle Wemos LoLin32 présentée récemment.

Mémoire flashUSB-Serial
SparkFun ESP32 ThingSparkFun ESP32 Thing4MB
Electronic SweetPeas - ESP320Electronic SweetPeas – ESP32016MB ?
Nano32 de MakerAsia4MB
wemos lolin32WEMOS LoLin324MB
espea32 esp32ESPea32 disponible sur Tindie4MBCP2104
Noduino Quantum esp32Noduino Quantum16MBCP2102
node32s esp32 development boardNode32s4MB
Hornbill ESP32 DevHornbill ESP32 Dev4MB
hornbill esp32 minimaHornbill ESP32 Minima4MB
FireBeetle-ESP324MB
IntoRobot Fig4MB

Pour faire apparaître le menu des exemples, sélectionnez votre ESP32. Les cartes génériques sont très bien prisent en charge par le SDK. Dans le menu, sélectionnez l’exemple basicOTA.

Le code diffère très peu par rapport à celui des cartes ESP8266.

Plusieurs paramètres sont à notre disposition :

  • setPort() : par défaut le port de communication est le 8266. Il n’est pas très utile de la changer sauf à ce qu’il soit déjà utiliser. Par exemple pour un projet intégrant de la communication UDP.
  • setHostname() : c’est probablement l’option la plus importante. Elle permet d’attribuer un nom à l’ESP32. Ce nom de machine sera diffusé sur le réseau et récupéré par l’IDE Arduino. Si vous avez beaucoup d’objets sur votre réseau, il sera beaucoup plus facile de l’identifier par son nom que par un identifiant construit automatiquement à partir du numéro de série.
  • setPassword() : permet de demander un mot de passe depuis l’IDE Arduino avant d’exécuter une mise à jour. Pratique si vous travaillez à plusieurs ou dans un établissement scolaire.
  • setPasswordHash() : permet de stocker l’empreinte du mot de passe pour plus de sécurité. Voir plus loin pour apprendre comment faire.

Quatre autres méthodes permettent de brancher des traitements dans les cas suivants :

  • onStart() : code à exécuter au démarrage de la mise à jour. Nouveauté sur l’ESP32, il est possible de mettre à jour à distance le fichiers de la zone SPIFFS. C’est très pratique si vous avez besoin de développer une interface HTML pour votre projet.
  • onEnd() : idem à la fin
  • onProgress() : durant la progression
  • onError() : et en cas d’erreur

A la fin du setup, on démarre la prise en charge de la mise à jour sans fil en appelant la méthode begin().

Enfin, pour que tout fonctionne, il est nécessaire d’appeler la méthode ArduinoOTA.handle() dans la boucle loop().

Avant de teléverser le programme, modifiez les variables ssid (réseau Wi-Fi sur lequel va se connecter l’ESP32) et password (mot de passe du réseau).

Sécuriser la mise à jour avec le hash du mot de passe

L’ESP32 étant beaucoup plus sécurisé que l’ESP8266 (lire cet article pour en savoir plus), il est possible de stocker l’empreinte du mot de passe (hash) à la place de celui-ci. Pour créer l’empreinte de votre mot de passe, vous pouvez utiliser un générateur en ligne tel que celui-ci. Par exemple le hash du mot de passe admin donnera l’empreinte 21232f297a57a5a743894a0e4a801fc3.

Attention, certains générateurs en ligne sont peu recommandables… N’utilisez pas le mot de passe admin !

arduinoota esp32 2 hash password md5 online generator

Ensuite, utilisez la fonction setPasswordhash() à la place de setPassword() pour indiquer le mot de passe d’authentification.

Test de mise à jour sans fil

Téléversez le programme et ouvrez le Terminal pour vérifier que l’ESP32 est correctement connecté au réseau Wi-Fi.

arduinoota esp32 6 serial monitor ip address

L’IDE Arduino détecte automatiquement les appareils supportant la mise à jour à distance. Ils sont ajoutés à la liste des ports dans une nouvelle section appelée Network ports.

arduinoota esp32 1 ide arduino

Si votre ESP32 n’apparaît pas quelques secondes après le démarrage, relancez l’IDE Arduino.

Pour mettre à jour le programme, il suffit de sélectionner l’ESP comme port à la place du port série habituel. Puis téléverser le programme comme d’habitude. Ici, comme un mot de passe est obligatoire, une fenêtre de saisie apparaît dans l’IDE. Il n’est demandé qu’une seule fois.

arduinoota esp32 3 password authentication

On peut suivre le bon déroulement (ou l’échec) de la mise à jour à distance directement depuis l’IDE Arduino.

arduinoota esp32 5 wireless upload update ide arduino

Le SDK est encore en développement. Durant les tests, j’ai du saisir deux fois le mot de passe avant de réussir la mise à jour.