dimanche 14 février 2021

Programmation OTA de l'ESP32 / ESP8266

La programmation OTA ("Over the air") consiste à programmer à distance, via le réseau WiFi, un ESP32 ou un ESP8266.

De cette façon, vous pouvez mettre à jour le sketch exécuté par un ESP32 ou un ESP8266 en laissant ce dernier à l'endroit où il se trouve, sans qu'il soit nécessaire de le brancher à votre ordinateur par un câble USB.


Nous effectuerons cette opération au moyen de l'IDE Arduino (il existe d'autres méthodes impliquant, par exemple, un navigateur web). L'IDE Arduino doit avoir été préalablement configuré pour la programmation de l'ESP32 ou de l'ESP8266. 

La documentation spécifie également que Python doit être installé sur l'ordinateur, mais ça n'implique aucunement que vous devrez programmer quoi que ce soit en Python;  je suppose que l'IDE utilise un script en Python pendant le processus.

Pour que le module ESP puisse être programmé à distance, il faut qu'il contienne déjà un sketch qui contient les routines qui gèrent l'OTA. L'exemple "BasicOTA" (qui se trouve dans le répertoire "ArduinoOTA") a été spécialement conçu à cette fin: commençons par le téléverser dans notre module ESP qui, à cette étape, doit obligatoirement être branché à l'ordinateur par un câble USB (n'oubliez pas d'écrire le ssid et le mot de passe aux endroits appropriés, au début du programme).

Maintenant que le sketch "BasicOTA" a été téléversé, il n'est plus nécessaire que votre module ESP soit branché à l'ordinateur par USB: il s'agit qu'il soit alimenté et à portée du même réseau Wifi que l'ordinateur que vous utilisez pour le programmer.

Si le module ESP est connecté au réseau Wifi, vous devriez voir un nouveau port série s'afficher dans l'IDE Arduino (le nom est plutôt long et contient l'adresse IP du module ESP). Il s'agit de choisir ce port pour reprogrammer le module.



Mais attention: si vous désirez pouvoir, dans l'avenir, programmer à nouveau votre module par OTA, le sketch que vous téléversez doit obligatoirement contenir les routines qui gèrent l'OTA. En d'autres mots, tout le contenu du sketch "BasicOTA" doit se trouver à l'intérieur du nouveau sketch.

Exemple de sketch: Blink modifiable par OTA

Par exemple, le sketch ci-dessous se contente de faire clignoter la LED embarquée du module ESP, mais il a la particularité de pouvoir être modifié par OTA. Il s'agit essentiellement du sketch "BasicOTA", auquel j'ai ajouté les instructions qui permettent à la LED de clignoter (les lignes 24, 28,  79 à 82).

Il s'agit d'un point de départ intéressant pour tester que tout fonctionne correctement. Vous pouvez, par exemple, modifier la fréquence de clignotement de la LED et constater immédiatement si le sketch a été mis à jour ou non. (Remarquez que le moniteur série de l'IDE Arduino n'est pas fonctionnel pour les ports série OTA).

Comme toujours dans les sketches qui nécessitent une connexion à un réseau Wifi, vous devrez remplacer les astérisques par le nom du réseau et le mot de passe approprié.

-

-

Exemple de sketch: Webserver modifiable par OTA

Voici un deuxième exemple de sketch modifiable par OTA; cette fois, l'ESP diffuse une page web (ici encore, vous pourrez vérifier que la mise à jour s'effectue bel et bien en apportant des modifications au contenu de la page web). Au départ, la page affiche la valeur retournée par millis() (ce qui n'est pas spécialement utile, mais je voulais quelque chose de simple avec une valeur qui change avec le temps).

-

-

Pour atteindre cette page web avec un navigateur, vous utilisez l'adresse IP indiquée dans le nom du port série.


À lire également

Mes autres articles impliquant l'ESP32 ou l'ESP8266.

Yves Pelletier (Twitter, Facebook) 


samedi 13 février 2021

Screenduino: un outil en ligne pour dessiner sur un LCD 2X16

Même si les afficheurs LCD 16 X 2 ont d'abord et avant tout été conçus pour afficher du texte, il est possible d'y afficher de petits dessins en créant nos propres polices de caractères. Bien entendu, on est loin de la flexibilité des écrans graphiques puisque nous sommes limités à un maximum de 4 caractères de 5 pixels de large et de 8 pixels de haut.  La bibliothèque LiquidCrystal de l'IDE Arduino permet la création de ces caractères sur mesure grâce à la fonction createChar().



Tusindfryd a mis au point Screenduino, un outil en ligne qui nous permet de créer plus facilement ces petites illustrations.  Il s'agit de cliquer sur les pixels que vous désirez noircir pour qu'un sketch Arduino prêt à l'emploi soit généré automatiquement. 

Par exemple, en traçant à l'écran le schéma représenté ci-dessus, Screenduino a généré automatiquement le sketch ci-dessous.

-

-

L'afficheur était branché à un Arduino Uno de la façon suivante:

À lire également


Yves Pelletier (Facebook) 

dimanche 7 février 2021

IDE Arduino: modifier les paramètres du formatage automatique

C'est bien connu, l'option "Formatage automatique" disponible dans le menu "Outils" de l'IDE Arduino est bien utile pour améliorer la lisibilité d'un sketch.


Ce qui est peut-être un peu moins connu, c'est qu'il est possible de modifier certaines caractéristiques du formatage comme, par exemple, le nombre d'espaces utilisés à chaque indentation.

Les paramètres du formatage automatique se trouvent dans un fichier intitulé "formatter.conf", qui se trouve dans le répertoire "lib". 


Il est déconseillé de modifier directement ce fichier car, si vous le faites, vos modifications disparaîtront inévitablement lors d'une future mise à jour de l'IDE Arduino. Il est plutôt recommandé de placer une copie de ce fichier dans le même répertoire que le fichier "preferences.txt", et d'effectuer des modifications sur cette copie.

(Si vous ne connaissez pas l'emplacement du fichier "preferences.txt", vous pouvez le voir dans le bas de la fenêtre "Paramètres" dans l'IDE Arduino.)


Le fichier "formatter.conf" peut être ouvert avec n'importe quel éditeur de texte.


Modifier l'indentation

Par défaut, l'indentation est réglée à 2 espaces. Si vous préférez, par exemple, une indentation de 4 espaces, il s'agit de remplacer l'instruction "indent=spaces=2" par "indent=spaces=4". (L'IDE Arduino doit être redémarré pour que les modification prennent effet).

Disposition des accolades: attachées, ou détachées?

Si vous désirez que l'accolade d'ouverture soit toujours placée à la fin de la même ligne que la fonction à laquelle elle est rattachée, écrivez "style=attach" dans le fichier "formatter.conf":

Si vous préférez que l'accolade d'ouverture soit placée sur sa propre ligne, vous écrivez plutôt "style=break" dans le fichier "formatter.conf":

Sinon, le comportement par défaut consiste à ne pas modifier le style déjà utilisé. Par exemple, le sketch ci-dessous comporte un mélange des deux types de disposition,  et il sera laissé intact par le formatage automatique si vous n'avez pas apporté de modification au fichier "formatter.conf":

Séparer les blocs?

Avec l'instruction "break-blocks", les blocs if, for, while, etc. sont automatiquement précédés et suivis d'une ligne blanche:




Vous trouverez d'autres options de formatage sur la page d'Artistic Style.

À lire également

Retirer les cartes inutiles dans les menus de l'IDE Arduino

Yves Pelletier (Twitter, Facebook)