PYBStick ESP32

Après la PYBStick26 en 2020 et la PYBStick RP2040 en 2021, Frédéric Pierson nous propose cette année une nouvelle carte au même format (2 x 13 pins), avec cette fois-ci un microcontrôleur ESP32. Une puce qui permet de communiquer en Wi­Fi (802.11 b/g/n) ou en Bluetooth 5.

Parmi les autres nouveautés du millésime 2022, il y a aussi une LED adressable RGB (SK6812) et la possibilité de choisir entre 2 versions :

  • Une avec la prise micro USB (femelle) qui équipait nos smartphone il n’y a pas si longtemps,
  • L’autre avec l’habituelle prise USB A (male).

Mais pour le reste, les 2 PYBStick sont parfaitement identiques.

PYBStick ESP32 en version micro USB et USB A

Frédéric m’a envoyé ces cartes gratuitement (pour que je les teste). Il s’agit donc d’un article subventionné, mais je ne touche aucune autre rémunération. Bien sûr, je risque de manquer un peu d’objectivité parce que Fred est un ami et que j’admire son travail mais je n’hésiterai pas à vous dire honnêtement ce que je pense (et à aborder aussi les points négatifs).

Présentation

Pour commencer, il faut souder soi-même les connecteurs. Je trouve que c’est une bonne chose, ce n’est pas très compliqué et ça vous permet éventuellement de personnaliser la carte en choisissant le type (male ou femelle) et éventuellement la couleur des connecteurs.

Connecteurs femelle sur la PYBStick ESP32 (USB A)

Pour pouvoir utiliser les cartes d’extension, il faudra utiliser les classiques connecteurs femelles.

Carte d'extension (shield) de la PYBStick

Mais puisque ces cartes sont pas totalement compatibles (voir la suite du test), les connecteurs males peuvent également être un bon choix, car ils permettent d’utiliser une breadboard (et évidement des câbles avec connecteur femelle).

Connecteurs males sur la PYBStick ESP32 (micro USB)

C’est bien que le nom des pins soit sérigraphié au dos (ce n’est malheureusement pas le cas de toutes les cartes de cette taille). Ça aurait été plus pratique de l’autre coté, mais évidement il n’y avait pas la place.

Le dos de la PYBStick ESP32 (USB A)

La nouvelle PYBStick ne respecte pas tout à fait le format des précédentes versions. Elle possède une petite excroissance (à cause de l’antenne).

les 3 différentes PYBStick vues de dos

De plus, les 2 boutons ne sont pas situés au même endroit

les 3 différentes PYBStick vues de dessus

La carte n’est donc pas compatible avec les anciens boitiers.

Le boitier des anciennes PYBStick

Alors j’ai modifié la ceinture et le dessus du boitier. Vous trouverez les fichiers 3D sur Printables. N’oubliez pas de tordre un peu la partie du couvercle qui presse sur les boutons (pour qu’elle n’appuie pas dessus en permanence).

Le boitier de la PYBStick ESP32

J’apprécie beaucoup ce look « clé USB »

Les 2 modèles de PYBStick ESP32 dans un boitier imprimé en 3D

Heureusement, l’emplacement des ports VIN, 3.3V, GND et entrées/sorties reste exactement le même (que pour les précédentes PYBStick). Toutefois, il y a seulement 11 GPIO (4 broches ne sont pas utilisées) parce que l’ESP32-C3 ne possède pas suffisamment d’entrées/sorties pour le format 2 x 13 = 26 pins de la PYBStick.

Les ports de la PYBStick ESP32

MicroPython

Le langage MicroPython est préinstallé, si vous alimentez la PYBStick, le programme de démonstration s’exécute et la LED RGB affiche successivement les couleurs bleu, blanc et rouge (certainement un petit clin d’œil à son origine française). Pour reprogrammer la carte lancez le logiciel Thonny (que vous pouvez télécharger ici), allez dans Exécuter – Configurer l’interprétateur…, sélectionnez MicroPython (ESP32) et port correspondant à la carte (ou laissez « Essayer de détecter le port automatiquement« ).

Configuration de Thonny

Vous pouvez taper directement des instructions dans la console, mais pour conserver le code il faut l’enregistrer dans le fichier main.py
Cliquez sur la 2ème icone (une disquette avec une flèche vers le haut), puis sur appareil MicroPython.

Accéder aux fichiers contenus dans la de la PYBStick ESP32 avec Thonny

Sélectionnez le fichier main.py et cliquez sur OK.

Ouverture du fichier main.py avec Thonny

Lancez ou arrêtez le programme de démonstration avec le triangle sur fond vert ou le carré sur fond rouge.

Si vous rencontrez un message d’erreur (en rouge), débranchez et rebrancher la carte.

Executer ou arrêter le le programme main.py avec Thonny

Vous pouvez étudier le code et bien sûr vous amuser à le modifier :

from machine import Pin
import time
from apa106 import APA106

rgb_led = Pin(8, Pin.OUT)
ap = APA106(rgb_led, 1)
ap[0] = (0, 0, 0) # set the led to RGB
ap.write()

not_end = 1

while not_end:
    ap[0] = (0, 0, 64) # set the led to GRB
    ap.write()
    time.sleep_ms(300)

    ap[0] = (64, 64, 64) # set the led to GRB
    ap.write()
    time.sleep_ms(300)

    ap[0] = (0, 64, 0) # set the led to GRB
    ap.write()
    time.sleep_ms(300)

    ap[0] = (0, 0, 0) # set the led to GRB
    ap.write()
    time.sleep(1)

Ensuite, je vous propose de relier une LED au GPIO 6 (ou choisir une autre entrée/sortie).

Branchement d'une LED au GPIO 6 de la PYBStick ESP32

Et de la faire clignoter la LED avec le code suivant :

from machine import Pin
from time import sleep_ms
ledExterne = Pin(6, Pin.OUT)
while True:
  ledExterne.value(1)
  sleep_ms(500)
  ledExterne.value(0)
  sleep_ms(500)

Je pensais pouvoir utiliser la carte de prototypage (anciennement appelée PROTO-FACE) mais malheureusement les connecteurs grove ne fonctionnent pas avec cette nouvelle PYBStick (l’une des pin n’est pas reliée et l’autre est déjà utilisée par la LED adressable RGB). Il est éventuellement possible d’utiliser le connecteur Raspberry, mais avec seulement 10 GPIO disponibles, ce sera difficile de trouver des cartes Hat compatibles. Seule la zone de prototypage peut éventuellement présenter un intérêt, pour souder des composants en dur.

Utilisation de la carte de prototypage PROTO-FACE avec la PYBStick ESP32

Mais dans ce cas, une carte vierge fera aussi bien parfaitement l’affaire…

Utilisation d'une carte de prototypage classique avec la PYBStick ESP32

Sinon, autant utiliser directement une bonne vieille breadboard (à condition d’avoir soudé des connecteurs males).

Utilisation d'une breadboard avec la PYBStick ESP32

Pour utiliser les modules Grove, il est possible de fabriquer ce type d’adaptateur. Attention, dans cet exemple c’est le GPIO 7 (relié au fil jaune) qui fait clignoter la LED, j’ai donc légèrement modifié le code indiqué plus haut.

Utilisation d'un connecteur Grove avec la PYBStick ESP32

Ce n’est pas très compliqué, il suffit simplement de sertir 4 connecteurs Dupont sur un cable Grove (coupé en 2). Pour cela, il existe des pinces spéciales, mais avec un peu de pratique, c’est tout à fait possible avec une petite pince.

Fabrication d'un connecteur Grove

Vous trouverai à la fin de cette page des liens vers les articles de François Mocq, Dominique Meurisse et Papsdroid qui ont eux aussi testé la PYBStick ESP32.

L’IDE Arduino

Attention, nous allons effacer le firmware MicroPython, alors si vous souhaitez garder la possibilité de revenir en arrière, je vous conseille de sauvegarder la carte avec ESPtool (la procédure est expliquée un peu plus loin dans l’article).

Pour programmer la carte en langage Arduino, il faut rajouter les paramètres du microcontrôleur (ESP32-C3-mini-1) dans l’IDE Arduino.

Pour cela, allez dans Fichier Préférences et copiez la ligne suivante dans le champ URL de gestionnaire de cartes supplémentaires :

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json

S’il y a déjà d’autres URL, vous pouvez ajouter celle là, à la suite (en la séparant d’une virgule).

Ajout des cartes ESP32 dans l'IDE Arduino

Allez ensuite dans Outils Type de carteGestionnaire de carte, tapez « esp32 » dans le champ de recherche et cliquez sur le bouton Installer.

Installations des cartes ESP32 dans l'IDE Arduino

Cela peut prendre quelque minutes, profitez en pour vous lever et faire quelques exercices d’assouplissement (vous passez certainement trop de temps assis sur votre fauteuil de bureau).

Téléchargement des cartes ESP32 dans l'IDE Arduino

Vous pouvez maintenant aller dans Outils – Type de Carte – ESP32 Arduino et sélectionner la carte LOLIN C3 Mini (j’ai eu un message d’erreur en sélectionnant tout de suite ESP32C3 Dev Modules).

Sélection d'une carte ESP32-C3 mini dans l'IDE Arduino

Reliez la PYBStick à l’ordinateur et sélectionnez le Port COM. On pourrait certainement affiner certains paramètres, mais pour l’instant, laissez-les par défaut.

Sélection du port de la carte PYBStick ESP32 dans l'IDE Arduino

Utilisez le même branchement qu’en MicroPython (la LED reliée au GPIO 6).

Branchement d'une LED au GPIO 6 de la PYBStick ESP32

Et téléversez le programme suivant :

// PYBStick ESP32 Test LED
int LED = 6;
void setup() {
  pinMode(LED,OUTPUT);
}

void loop() {
  digitalWrite(LED, HIGH);
  delay(1000);
  digitalWrite(LED, LOW);
  delay(1000);
}

Mais il y a de fortes chances que le 1er téléversement échoue (je pense que le firmware MicroPython bloque l’accès au port série).

Echec de téléversement d'un programme dans la PYBStick ESP32

Si vous rencontrez ce problème :

  • Assurez vous que les autres programmes qui utilisent eux aussi le port série (comme par exemple Thonny) sont bien fermés.
  • Débranchez la PYBStick ESP32
  • Appuyez sur le bouton BOOT
  • Rebranchez la carte (en gardant le doigt sur le bouton)
  • Lancez le téléversement
  • Attendez la fin du téléversement pour relâcher le bouton BOOT
Téléversement d'un programme dans la PYBStick ESP32

Si ça ne fonctionne toujours pas, utilisez ESP tool pour effacer le Firmware MicroPython (j’explique comment faire un peu plus loin).

Heureusement, il n’est pas nécessaire de répéter cette procédure pour les téléversements suivants. Désormais, vous pouvez programmer le microcontrôleur normalement (sans presser sur le bouton BOOT).

Si à ce stade vous rencontrez encore des erreurs de compilation, débranchez et rebranchez la PYBStick ou essayez de sélectionner la carte ESPC3 Dev Module.

Sélection de la carte ESPC3 Dev Module dans l'IDE Arduino

Réinstallation du firmware Micropython

ESPtool vous permet de copier, effacer ou sauvegarder le contenu de l’ESP32. Pour cela, téléchargez et installez la dernière version de Python. Cochez la case Add Python 3.10 to PATH et cliquez sur Install Now.

Installation de Python

Ensuite faites un clic droit sur l’icône Windows, sélectionnez Terminal (administrateur), répondez Oui à la question Voulez-vous autoriser… et tapez le texte suivant (et bien sûr, appuyez sur Entrée) :

pip install esptool

À la fin de l’installation vous pouvez vérifier que tout s’est bien passé en tapant :

esptool.py version
Affichage de la version d'ESP tool

Branchez la PYBStick à l’ordinateur et tapez l’instruction suivante pour avoir des infos sur la carte (notamment le numéro de port série) :

esptool.py flash_id
Affichage des caractéristiques de la PYBStick ESP32

Voilà comment sauvegarder le contenu de la carte (adaptez le numéro de port, le nom du fichier bin et son chemin) :

esptool.py -p COM23 -b 460800 read_flash 0x0 0x400000 C:\PYBStick_ESP32.bin
Sauvegarde du firmware de la PYBStick ESP32

Et comment restaurer l’image (précédemment sauvegardée) :

esptool.py -c esp32c3 -p COM23 -b 460800 write_flash 0x0 C:\PYBStick_ESP32.bin
Restauration du firmware de la PYBStick ESP32

Il est possible d’effacer la mémoire de la carte (sans installer de firmware) :

esptool.py -c esp32c3 -p COM23 erase_flash
Effacement de la mémoire de la PYBStick ESP32

Mais vous pouvez aussi tester un autre firmware.

Attention, n’installez pas n’importe quel firmware depuis une source douteuse, il y a certainement un risque de briquer la carte (et bien sûr dans ce cas, je décline toute responsabilité).

Par exemple, téléchargez la dernière version du firmware MicroPython ESP32-C3 with USB et tapez (en adaptant bien sûr, le numéro de port, le nom du fichier bin et son chemin) :

esptool.py -c esp32c3 -p COM23 -b 460800 write_flash -z 0x0 C:\esp32c3-usb-20220618-v1.19.1.bin
Installation d'un nouveau firmware sur la PYBStick ESP32

Mais ce n’est pas toujours aussi facile, il y a parfois des problèmes de communication qui bloquent l’accès au port série (comme lors du 1er téléversement avec l’IDE Arduino).

Echec d'installation d'un firmware sur la PYBStick ESP32

Malheureusement, je n’ai pas de recette miracle à vous proposer, il vous faudra un peu de patience et de persévérance. Mais je vais vous donner quelques pistes et après plusieurs tentatives vous devriez parvenir à débloquer votre carte.

  • Débranchez et rebranchez la carte
  • Ouvrez le Gestionnaire de périphériques (clic droit sur le bouton Windows), débranchez la carte, rebranchez la, tapez votre commande dans le terminal, appuyez sur les 2 boutons à la fois (le périphérique série USB COM23 disparait), relâchez les boutons et aussitôt que le périphérique série USB réapparaît, appuyez sur la touche Entrée.
Déblocage de la PYBStick ESP32
  • Et si ça ne fonctionne toujours pas, essayez de re-flasher la carte avec l’IDE Arduino…

Conclusion

Les 2 cartes PYBStick ESP32 (micro USB et USB A) sont déjà disponibles chez MC Hobby pour une dizaine d’euros. Alors si vous cherchez un ESP32 fabriqué avec amour par un petit artisan Français (à gauche sur la photo) à un prix très raisonnable, n’hésitez pas…

Frédéric PIERSON, Dominique MEURISSE et Jean-Christophe QUETIN
Ben oui, en France on n’a pas de pétrole, mais on a le Minitel !!!

Sources et liens utiles

Publicité

3 réflexions sur “PYBStick ESP32

  1. Merci JC pour ce bel article. Pour en revenir au téléchargement avec esptool.py, les difficultés viennent du fait que j’ai banni le circuit CP2102 (convertisseur USB-UART) pour utiliser le contrôleur USB natif de l’ESP32C3. Donc plus de signaux de contrôles RTS-CTS pour piloter le reset et le gpio8 pour rentrer le micro en mode bootloader. Il faut donc effectivement jouer des boutons pour forcer ce mode à la main. Mais on récupère au passage une uart de libre. Rendez-vous sur le forum.mchobby.be pour en discuter 😉

    J’aime

    1. Bonjour Orzel,
      Merci pour cette précision.
      Pour les infos plus techniques, j’ai mis à la fin de l’article un lien la fiche produit (où on trouve toutes les caractéristiques du microcontrôleur).

      J’aime

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s