Ignorer et passer au contenu

Livraison offerte à partir de 50€ d'achats, livrée sous 48h !

Livraison à partir de seulement 2.50€ !

Contents Menu Expand Light mode Dark mode Auto light/dark mode

Découvrir MicroPython sur l’ESP32 avec votre premier script

(Mis à jour le 16/11/2022)

L’une des choses les plus faciles à faire sur une nouvelle carte est de faire clignoter la LED intégrée. C’est l’équivalent du fameux texte Hello World que l’on fait afficher dans la console lors de la découverte d’un nouveau langage de programmation. Voici un script qui fait clignoter la LED intégrée toutes les secondes. L’idée ici est de vous montrer un aperçu de la programmation en MicroPython.

from machine import Pin
import time

pin_led = Pin(2, mode=Pin.OUT)

while True:

    pin_led.on()
    time.sleep(1)
    pin_led.off()
    time.sleep(1)

Note

C’est mieux de connaître les bases de la syntaxe Python avant de se lancer dans MicroPython.

Exécuter le script MicroPython sur votre carte ESP32

Assurez-vous tout d’abord, d’avoir bien configuré votre logiciel IDE pour votre carte.

Sur Thonny IDE, il est préférable d’enregistrer le code sur l’ordinateur et non directement sur la carte. Lors de l’exécution du script Thonny IDE enverra directement le code à l’interpréteur MicroPython (via le REPL). Pour enregistrer après coup le script sur la carte, il suffit d’aller dans File > Save as …

Vous noterez que le script Python ne se lance pas automatiquement lors de la mise sous tension de l’ESP32 . Pour y remédier, il faut enregistrer le script sur la carte avec un nom spécifique main.py . Ce n’est pas gênant en général lors des phases de développement mais c’est à savoir lors d’utilisation définitive d’un script MicroPython sur une carte.

Avertissement

Prenez garde de ne pas avoir ouvert le moniteur série de l’Arduino IDE, sinon vous serez confrontés à l’erreur suivante :

port série accès refusé

En effet, 2 logiciels ne peuvent accéder en même temps à un même port série COM.

Explication détaillée d’un script MicroPython

La structure d’un script MicroPython est la suivante :

structure script MicroPython

Structure d’un script MicroPython

Chaque script MicroPython commence par une phase d’importation des modules nécessaires pour le bon fonctionnement de celui-ci. C’est équivalent aux #include du code Arduino IDE pour les librairies externes : #include <SPI.h>#include <SD.h>

La différence avec MicroPython est que même les objets de bases doivent être importés . Pour rappel, Python est un langage orienté objet : tous les éléments en Python sont considérés comme des objets. Par exemple les pins entrée/sortie des cartes seront vus et manipulés comme des objets. Les objets MicroPython s’emploient naturellement sans être expert en programmation orientée objet.

Dans le script d’exemple, on importe depuis le module machine le sous-module PinLe module machine comporte la plupart des objets propres à MicroPython . Le module Pin est en fait une classe qui définit le fonctionnement d’une broche entrée/sortie (GPIO). C’est pourquoi on crée un objet pin_led qui correspond à la broche qui permet de contrôler la LED intégrée. On définit cette broche en tant que sortie électrique. L’objet Pin que l’on a créé, possède des fonctions pour modifier son état : .on() on allume la LED et .off() on éteint la LED.

Note

La LED intégrée de l’ESP32 est reliée à la broche numéro 2 (GPIO2)

Pour voir visuellement le clignotement, on ajoute un délai d’une seconde avec la fonction sleep() du module time .

Le code qui fait clignoter la LED est contenu dans une bouche infinie pour clignoter… à l’infini.

Vous remarquerez que si vous aviez l’habitude d’utiliser du code Arduino qu’il n’y a pas plus les fonctions setup() et loop() : le script s’exécute une seule fois de bas en haut. Il ne faut donc pas oublier la boucle infinie pour avoir un comportement similaire au croquis Arduino. Un code est disponible pour avoir la même structure qu’en code Arduino avec une fonction setup() et une fonction loop() .

Les différentes fonctions pour suspendre un script MicroPython

from machine import Pin
import time

pin_led = Pin(2, mode=Pin.OUT)

while True:
    pin_led.on()
    time.sleep_ms(250)
            pin_led.off()
            time.sleep_ms(250)

Dans le code ci-dessus, vous noterez, que time.sleep() a été remplacée par time.sleep_ms() pour plus de clarté. En fait, il existe 3 fonctions qui permettent de bloquer le programme pendant une certaine durée, avec chacune un niveau de précision :

time.sleep(duree_en_secondes)
time.sleep_ms(duree_en_millisecondes)
time.sleep_us(duree_en_microsecondes)

Note

1 seconde = \(10^3\) millisecondes = \(10^6\) microsecondes

Ainsi ces trois lignes, bloqueront le programme pendant 5 ms :

time.sleep(0.005)
time.sleep_ms(5)
time.sleep_us(5000)

Note

Comme pour le code Arduino, ces fonctions bloquent le programme : il ne peut pas faire d’autres tâches en arrière-plan comme détecter la pression d’un bouton, mesurer des tensions…

Vous avez pu voir un aperçu de la programmation des cartes ESP32 avec MicroPython. J’espère que cela vous a donné envie d’en découvrir plus sur ce nouveau langage. Je vous encourage donc à lire un tutoriel plus détaillé sur la gestion des entrées / sorties avec MicroPython avec un exemple concret à la fin. Il y a aussi une analogie entre les fonctions Arduino et MicroPython.