ArduinoOTA : mise à jour sans fil (OTA) depuis l’IDE Arduino des programmes ESP8266

Gagnez jusqu'à 500€ en bon d'achat sur Amazon Promos de Noël jusqu'à -70% sur Banggood

La librairie ArduinoOTA est une librairie qui permet de mettre à jour le programme Arduino (et ESP8266, ESP32) sans fil en Wi-Fi. C’est une librairie essentielle lorsqu’on développe des objets connectés. Elle permet de mettre à jour le programme sans avoir à démonter le micro-contrôleur (Arduino, ESP8266, ESP32) pour le connecter à son ordinateur. Cette librairie initialement développée pour mettre à jour les programmes Arduino, elle est parfaitement supportée par les ESP8266 et ESP32. Pour ce tutoriel, nous allons aborder uniquement le cas des ESP8266.

Installer la librairie ArduinoOTA pour ESP8266 sur l’IDE Arduino

La librairie ArduinoOTA est intégrée dans la librairie des cartes ESP8266. Il n’y a donc rien de plus à installer. Si vous débutez avec les ESP, voici comment installer le librairies et le support des cartes ESP. Ouvrez les préférences (depuis le menu Arduino) et ajoutez à la liste des packages celui-ci

IDE Arduino 1.6.8 esp8266 package

Ensuite, allez dans le gestionnaire de carte et cherchez esp8266, puis cliquez sur installer.

IDE Arduino 1.6.x ajouter carte esp8266

Après l’installation, de nouveaux exemples ont été ajoutés dans le menu des exemples. Sélectionnez votre carte ESP8266 pour faire apparaître les exemples disponibles. Ouvrez l’exemple BasicOTA qui se trouve dans le sous-menu ArduinoOTA.

arduinoota 0 basicota example

 

Pour qui l’IDE Arduino puisse compiler le code, il faut que Python 2.7 (attention, pas Python 3.5) soit installé sur la machine de développement (GitHub). Pour les utilisateurs Windows, il faut cocher l’option “Add python.exe to Path” durant l’installation. Merci à Jeff pour l’info

Ce programme contient tout ce qu’il faut pour gérer la mise à jour sans fil dans vos projets ESP.

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

Ici, le programme utilise la librairie ESP8266WiFi pour se connecter au réseau. Vous pouvez également utiliser la librairie WiFiManager présentée précédemment.

Une fois que la connexion est établie, il est possible de définir des paramètres complémentaires (optionnels) :

  • 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’ESP8266. 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.

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

  • onStart() : code à exécuter au démarrage de la mise à jour
  • onEnd() : idem à la fin
  • onProgress() : durant la progression
  • onError() : et en cas d’erreur

Vous n’aurez pas besoin d’ajouter des traitements dans la plupart des cas. Ces fonctions permettent surtout de rester informé du bon déroulement des opérations.

A la fin du setup, une fois que toutes les fonctions ont été définies, 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().

Test de mise à jour sans fil

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

arduinoota 1 ide arduino 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 2 esp8266 wifi update wireless arduino code

Il semble que la version 1.8.x comporte un bug qui empêche la mise à jour des appareils. Si votre ESP n’apparaît pas quelques secondes après le démarrage de l’ESP, il suffit de redémarrez 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 5 saisie mot de passe type password ide arduino

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

arduinoota 4 ide arduino done uploading

Il n’est pas possible d’ouvrir le moniteur série avec la mise à sans fil. Il faudra prévoir une petite interface Web. Lisez ce tutoriel pour comprendre comment ajouter un serveur Web et une interface HTML à une projet ESP8266. Pour allez plus loin, voici une série d’articles qui traite du sujet

Serveur Web (Interface)

Mises à jour

[4/09/2017] Installation de Python 2.7 pour les utilisateurs Windows

 

 

 

Inscrivez-vous à la newsletter hebdomadaire

Aucun spam et aucun autre usage ne sera fait de votre email. Vous pouvez vous dés inscrire à tout moment.

Comparateur de prix

Bons plans

Les offres suivantes se terminent bientôt. Utilisez le coupon indiqué pour profiter du prix promo

Tags:

Projets DIY - Domotique et objets connectés à faire soi-même