II) Débuter avec l'ESP32 en Micropython
1) Présentation de l'ESP32

L'ESP32 est un microcontrôleur : c'est une sorte d'ordinateur avec de la mémoire et un processeur. Son objectif est de contrôler les entrées et les sorties que l'ont brancher sur ses pattes (voir l'image ci-dessus).
Quelques caractéristiques :
- une tension de fonctionnement de 3,3V ;
- une mémoire SRAM de 512 ko ;
- une mémoire ROM de 2 Mo ;
- Bluetooth ;
- Wifi.
2) Présentation de Micropython
Micropython est une implémentation du langage Python adaptée aux microcontrôleurs.
Ainsi, un microcontrôleur comme l'ESP32 sera capable d'exécuter des programmes Python.
Pour cela, cette implémentation est allégée et permet de gérer les entrées et les sorties.
3) Blink : faire cligner la led embarquée
Cette exemple sert à illustrer le contrôle d'une patte en sortie (Pin.OUT).
On parle ici de sortie "digital" car la valeur est soit 1 (alimentée en 3,3V), soit 0 (reliée à la masse).
Ceci peut s'appliquer à différentes choses : - allumer ou éteindre une led - ouvrir ou fermer un interrupteur (un relais) - activer ou non un capteur - ...
a) Avec une boucle infinie
Ce programme a le mérite de mettre en évidence le fonctionnement séquentiel.
- Ligne 4 : on crée l'objet led, de type Pin comme une sortie. La patte D2 correspond à la led embarquée.
- Ligne 6 : on crée la boucle infinie.
- Ligne 7 : on allume la led.
- Ligne 8 : on attend une seconde.
- Ligne 9 : on éteint la led.
- Ligne 10 : on attend une seconde
Attention : la commande sleep_ms() bloque toutes les actions, ce qui peut être gênant ...
b) Avec un timer
Ce programme donne plus d'options car l'utilisation d'un timer permet d'intercaler d'autres actions.
À noter qu'on n'utilise pas la commande sleep_ms().
- Ligne 4 : on crée la fonction callback appelée par le timer toutes les secondes.
- Ligne 6 : cette fois-ci, on utilise la fonction
value()pour lire l'état de la led qui pourtant est une sortie. - Ligne 15 : on crée un timer d'identifiant 0 (on peut les nommer de 0 à 3).
- Ligne 17 : on initialise le timer.
4) Faire varier la luminosité de la led embarquée
Nous allons illustrer le fonctionnement en PWM (Pulse Width Modulation) d'une patte (Pin).
L'idée pour obtenir une valeur intermédiaire entre 0 et 3,3V est de passer très souvent de l'état haut à l'état bas. Nous ne détaillerons pas ici ce principe.
La fonction duty() permet d'attribuer une valeur entre 0 et 1023.
- Ligne 4 : on crée la fonction callback.
- Ligne 9 et 12 : on fait varier la luminosité. Le paramètre de
duty()va varier entre 0 et 1000. - Ligne 16 : on crée l'objet
led_embde type PWM et on l'éteint. - Ligne 20 : on initialise le
timer0qui va faire varier la led toutes les 10 secondes. - Ligne 21 : on initialise le
timer1qui va arrêter letimer0au bout de 50 secondes. Ce timer n'agit qu'une fois (ONE_SHOT).
5) Lecture des valeurs d'un joystick
Cet exemple va nous permettre d'illustrer les deux types de lecture :
- avec la fonction
value()qui renvoie 0 ou 1 ; - avec les convertisseurs ADC (Analog Digital Conversor) : ils renvoient des valeurs entre 0 et 4095.
- Ligne 4 : on crée l'objet ADC
analogPinX. - Ligne 5 : on crée l'objet ADC
analogPinY. - Ligne 7 et 8 : il faut cette atténuation pour l'ESP32.
- Ligne 10 : on crée l'objet Pin
swpour le bouton du joystick.