La carte IDEASPARK ESP 32 comprend un esp32 vroom intégré avec un écran oled :
Ses caractéristiques principales sont:
- microcontrôleur: 32-bits Xtensa@dual-core @ 240 Mhz
- Tension d’utilisation: 3.3 Volts
- Wifi, Bluetooth
- Mémoire Flash de 4 Méga-octets
- RAM de 520 Kilo-octets
- Écran OLED de 128×64 pixels monochrome. Les 16 premières lignes sont de couleur jaune, les suivantes sont de couleur bleue. Intergace I2C, driver SSD1306
Cette carte peut être achetée en février 2024 aux alentours de 10 euros (frais de port inclus).
Les descriptions trouvées sur les sites vendeurs proposent le développement d’applications en langage C avec l’interface de programmation Arduino IDE. Nous proposons dans cet article de montrer comment développer sur cette carte en micropython.
Installation de MicroPython
Nous utilisons la démarche proposée dans l’excellent article Getting Started with Thonny MicroPython (Python) IDE for ESP32 and ESP8266 : il suffit de suivre les instructions proposées dans l’éditeur Thonny pour flasher micropython. Pour cela aller dans le menu « Exécuter » -> « Configurer l’interpréteur » et cliquer sur « Installer ou mettre à jour MicroPython… »
Gestion de l’écran
La bibliothèque nécessaire pour gérer l’écran OLED ne fait pas partie des bibliothèques standards de MicroPython. L’article MicroPython: OLED Display with ESP32 and ESP8266 décrit en détail les différentes façons de faire. Thonny Ide permet d’importer très facilement la bibliothèque ssd1306 dont voici le source:
ssd1306.py
Il suffit d’enregistrer directement ce fichier sur l’esp32.
Pour vérifier le bon fonctionnement, il suffit de tester le programme décrit dans l’article cité précédemment:
Module ideaSparkScreen de gestion de l’écran
La bibliothèque précédente est très rudimentaire, nous pouvons l’améliorer en définissant un module ideaSparkScreen comportant une classe Screen ayant comme fonctions:
dans tout ce qui suit le paramètre color est optionnel, Il peut valoir 0 ou 1 (valeur par défaut)
- drawLine(x1, y1, x2, y2, color) : trace un segment de droite de (x1,y1) à (x2,y2)
- drawRect(x, y, x, h, color) : dessine un rectangle creux
- fillRect(x, y, w, h, color) : dessine un rectangle plein
- drawString(str,ing x, y, color) : affiche une chaine de caractères
Ces primitives peuvent être facilement étendues
Exemple de programme de test:
Source ideaSparlScreen.py (à copier sur l’esp 32):
Connexion wifi
Le programme suivant montre comment se connecter au wifi, puis faire une requête à un serveur ntp pour récupérer la date et l’heure, et enfin affiche l’heure courante et l’adresse ip toutes les minutes
Requêtes HTTP
Pour cela, installer la bibliothèque urequests. L’exemple suivant permet d’effectuer une requête http ou https, de stocker le résultat dans le fichier http.html puis d’afficher le contenu de ce fichier. Attention, la capacité de stockage de la carte est de 4 Méga-octets au maximum (donc veuillez à ce que le résultat de la requête ne soit pas trop important)