[TUTO] Ajouter la fonction de programmation OTA à son ESP8266/Nodemcu

Dans ce tuto nous allons voir comment modifier son Sketch .ino pour permettre de reprogrammer son Microcontrôleur par Wifi de manière sécurisé en y ajoutant l'authentification par mot de passe.

 

 

Pour ce Tuto j'ai utilisé :

  • Un Esp-01 et un Nodemcu
  • Le logiciel Arduino
  • Un sketch Ino ne possédant pas la gestion OTA

Les modifications apportés sont à effectuer en fonction de ce que vous avez déjà dans votre fichier.

Préalable

 

Tout d'abord il nous faut :

  • Un Nodemcu/Esp8266
  • Le logiciel Arduino IDE correctement configuré pour un esp8266 voir ici et sélectionner le type de carte en fonction de ce que vous avez
  • La version 2.7.x de Python
  • Les bibliothèques nécessaire au fonctionnement son fichier .ino correctement installés
  • Le Sketch pour la programmation du microcontrôleur. Dans mon cas AtmoOrb-master

 

Installation de python

 

Si ce n'est pas deja fait, il faudra dans un premier temps installer Python pour qu'il fonctionne avec logiciel Arduino.

Lancer l'installation en activant l'option Add Python.exe to Path.

 

 

Une fois l'installation terminé, redémarrer pour prendre en compte les modifications puis lancer le logiciel Arduino.

 

 

Modification du Sketch pour la programmation

 

Lorsque j'ouvre mon fichier .ino la première chose que je vois en le parcourant c'est que celui-ci n’intègre pas la gestion de programmation OTA. Celui-ci ne possède que 3 include :

 

#include <ESP8266WiFi.h>

#include <WiFiUdp.h>

#include <FastLED.h>

 

 

Afin que nous puissions reprogrammer notre microcontrôleur, nous devons rajouter quelques lignes dans notre fichier à différents endroits.

 

Pour commencer, en haut de fichier ajoutons les lignes  #include <ESP8266mDNS.h> et #include <ArduinoOTA.h> qui donnera :

 

#include <ESP8266mDNS.h>

#include <ESP8266WiFi.h>

#include <WiFiUdp.h>

#include <FastLED.h>

#include <ArduinoOTA.h> 

 

 

Ensuite dans la section void setup(), en début de paragraphe, ajoutons les lignes en gras pour l’intégration de la fonction OTA :

( En modifiant les parties en rouge par ce que vous voulez. Eviter les -  _ et espace pour le nom du dispositif ).

 

void setup()

{

// Port defaults to 8266

  // ArduinoOTA.setPort(8266);

 

  // Hostname defaults to esp8266-[ChipID]

  ArduinoOTA.setHostname("NomduDispositif");

 

  // No authentication by default

  ArduinoOTA.setPassword((const char *)"MotDePasseAuthentification");

 

  ArduinoOTA.onStart([]() {

    Serial.println("Start");

  });

  ArduinoOTA.onEnd([]() {

    Serial.println("\nEnd");

  });

  ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {

    Serial.printf("Progress: %u%%\r", (progress / (total / 100)));

  });

  ArduinoOTA.onError([](ota_error_t error) {

    Serial.printf("Error[%u]: ", error);

    if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");

    else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");

    else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");

    else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");

    else if (error == OTA_END_ERROR) Serial.println("End Failed");

  });

  ArduinoOTA.begin();

  Serial.println("Ready");

  Serial.print("IP address: ");

  Serial.println(WiFi.localIP());

 

 

Si vous ne voulez pas d'authentification, commenter la ligne comme ceci //ArduinoOTA.setPassword((const char *)"MotDePasseAuthentification");

 

 

Enfin dans la section void loop(), toujours en début de paragrapheil faudra ajouter cette ligne ArduinoOTA.handle(); comme ceci :

 

void loop()

{

  ArduinoOTA.handle();

 

 

Première programmation du Sketch en USB

 

 

Une fois que toutes les modifications ont était faite nous pouvons programmer notre microcontrôleur une première fois par connexion USB.

Dans mon cas ça sera un ESP-01 ayant pour nom ESP01OTA.

On voit que mon ESP est programmable via le port COM3 :

 

 

Après programmation, je vérifie que mon microcontrôleur à bien reçu une adresse IP :

 

On voit qu'il a reçu l'adresse 192.168.1.11.

Fermons le logiciel Arduino et relançons-le. Lorsque l'on met en surbrillance l'onglet Outils Ports un nouveau choix s'offre à nous.

La ligne Esp01OTA at 192.168.1.11 qui correspond au nom que j'ai donné à mon dispositif dans mon fichier .Ino et à l'adresse IP reçu.

 

On remarquera aussi que le nom sur le réseau, ESP-29448F, fait en fait référence au dispositif Esp01OTA.

 

 

Seconde programmation du Sketch en OTA

 

Maintenant que nous avons ajouter la fonction OTA à notre dispositif, nous allons le reprogrammer via la connexion WiFi.

Pour cela au lieu du Ports Serie COM habituel nous allons sélectionner le Ports Réseau puis relancer la programmation.

Je vais volontairement, pour la programmation, changer le nom du dispositif en Esp01OTA2.

 

A la fin de la compilation si vous avez opter pour une authentification par mot de passe il vous sera demandé de le renseigner.

Entrer le puis cliquer sur Téléverser.

 

Lorsque la programmation est terminé, fermer le logiciel Arduino puis vérifier que le microcontrôleur à reçu une adresse IP. 

 

Il a reçu une nouvelle adresse, la 192.168.1.12

Une fois contrôlé, rouvrez le logiciel Arduino pour vérifier si la programmation OTA à bien était prise en compte :

 

La programmation sans fil à fonctionné puisque le nom de notre dispositif à changé, passant de ESP01OTA après programmation en USB à ESP01OTA2 après programmation WiFi.

 

 

Voila maintenant vous savez comment ajouter la gestion de la programmation OTA à vos fichiers et éviter ainsi de les connecter a chaque mis à jour de codes.

 

 

Bon mod à tous !!!

Commentaires : 0 (Discussion fermée)
    Aucun commentaire pour le moment.