Publié le 25 octobre 2022 - par

Carte Garatronic PybStick26-ESP32C3

Garatronic m’a fait parvenir sa nouvelle carte PybStick26-ESP32C3 conçue et fabriquée en France pour que je la teste. Comme toute la série de carte PybStick26, celle-ci a un format miniature. Elle embarque un ESP32 C3 qui vient compléter la gamme des PybStick utilisant STM32 ou RP2040. On peut envisager des conceptions compactes et puissantes, avec accès WiFi et Bluetooth grâce à cette carte. Elle existe en 2 versions, une USB A qui se connecte directement sur une prise USB de PC ou de Raspberry Pi, pratique pour le développement, et une version micro USB moins encombrante, plus adaptée pour des projets embarqués.

Carte Garatronic PybStick26-ESP32C3

Présentation de la carte

La carte existe en 2 versions. Elles sont identiques à l’exception de la prise USB qui diffère. Un modèle équipé d’une prise USB A est à mon avis plus approprié au développement car il se connecte directement sur la prise USB d’un PC ou comme ci-dessous sur un Raspberry Pi. Le modèle avec prise micro USB est plus compact et me semble plus adapté à une application embarquée.

PybStick26-ESP32C3 prise USB A sur un Raspberry Pi 400

Schéma

Les électroniciens noteront le montage de la LED D2 : Il faut appuyer un moment sur le bouton RESET pour que le transistor conduise et que la LED s’allume (environ 4s).

Composants


La présence de l’ESP 32 réduit fortement le nombre des composants nécessaires. Un bouton RESET est actif après un appui de 4 secondes (une LED s’allume près de la prise USB) et un bouton BOOT permet de démarrer en mode BOOT.
Une LED RGB placée entre les deux boutons poussoirs affiche des couleurs pour tester un programme, renvoyer un état à l’utilisateur…

Le dessous des cartes est dépourvu de composants, on peut envisager de coller la PybStick26 au double face dans un boitier. On peut aussi souder des broches pour connecter des fils aux E/S ou mettre la carte sur une breadboard (carte de prototypage). La carte comporte 26 trous (d’où son nom de PybStick26) répartis de chaque côté. La sérigraphie indique clairement le nom de chacune des broches. La version micro USB est nommée PybDIP-ESP32C3 pour la différencier.

Dimensions

La carte PybStick26-ESP32C3 mesure 18x35mm (hors prise USB), l’antenne de l’ESP32 dépasse de 5 mm. L’épaisseur est de 4mm avec la prise micro USB, alors qu’on passe à 6 mm avec la prise USB A, plus épaisse et soudée sous la carte (patte traversante).
La prise USB A ajoute 15 mm en longueur à la carte.

ESP32 C3

L’ESP32 C3 est un SoC (System on a Chip) : microcontrôleur monocœur Wi-Fi et Bluetooth 5 (LE), basé sur l’architecture RISC-V open-source. Il trouve le juste équilibre entre puissance, capacités d’E/S et sécurité, offrant ainsi une solution optimale et économique pour les appareils connectés. La disponibilité de la connectivité Wi-Fi et Bluetooth 5 (LE) facilite non seulement la configuration de l’appareil, mais aussi une variété de cas d’utilisation basés sur la double connectivité.
Le modèle utilisé sur la carte Garatronic PybStick26-ESP32C3 est le ESP32-C3-Mini-1 dont vous trouverez la notice technique en cliquant sur ce lien.

CPU et mémoire

Processeur RISC-V 32 bits à un seul cœur, jusqu’à 160 MHz
– 384 KO DE ROM
– 400 Ko SRAM (16 Ko pour le cache)
– 8 Ko SRAM dans la RTC
– Flash intégré de 4 Mo

WiFi

Conforme à la norme EEE 802.11 b/g/n
– Plage de fréquence centrale du canal de fonctionnement : 2412 ~ 2484 MHz
– Prend en charge une largeur de bande de 20 MHz, 40 MHz dans la bande 2,4 GHz
– Prise en charge simultanée de l’infrastructure BSS en mode station, mode SoftAP, mode station + SoftAP et mode promiscuous.
Notez que lorsque l’ESP32-C3 scanne en mode Station, le canal SoftAP change en même temps que le canal Station.

Bluetooth

Bluetooth LE : Bluetooth 5, Bluetooth mesh
– Vitesse : 125 Kbps, 500 Kbps, 1 Mbps, 2 Mbps
– Mécanisme interne entre le Wi-Fi et Bluetooth pour partager la même antenne

Périphériques

GPIO, SPI, UART, I2C, I2S, gestion de télécommande, contrôleur LED PWM, contrôleur DMA, contrôleur TWAI® (compatible avec la norme ISO 11898-1, c’est-à-dire la spécification CAN 2.0), contrôleur série USB /JTAG, capteur de température, SAR ADC, temporisateurs à usage général, temporisateurs de chien de garde (watchdog).

Oscillateur intégré
– Oscillateur à cristal de 40 MHz

Conditions de fonctionnement
– Tension d’alimentation : 3.0 ~ 3.6 V

Température ambiante de fonctionnement :
-40 ~ +85 °C

 

La carte est équipée d’une LED RGB qu’on peut piloter avec l’ESP32. Les deux boutons poussoirs encadrent la LED. A droite BOOT, à gauche RAZ.

 

La carte existe en deux modèles, ici le modèle « court » evec un port USB-C. La carte existe aussi en version USB-A qu’on peut directement connecter sur la prise USB d’un PC ou d’un Raspberry Pi.

photo de la carte PybStick avec annotations

Les éléments de la PybStick ESP32

Mise en œuvre

Sur un PC ou un Raspberry Pi, j’ai utilisé Thonny pour programmer l’ESP32 en microPython. Il faut bien entendu aller dans Exécuter > Sélectionner l’interpréteur > et choisir l’interpréteur MicroPython (ESP32) pour travailler avec cette carte.

Au démarrage vous aurez l’affichage du MicroPython de la PybStick ESP32 :

Je ne vais pas développer trop la programmation de l’ESP32 ici, car c’est plutôt un article de présentation de la PybStick32.

Dans l’ESP32 en mode autonome il y a 2 fichiers : le fichier boot.py est exécuté à chaque boot, puis le fichier main.py qui est le programme principal sera exécuté. Cette séquence sera répétée à chaque mise en route de l’ESP32.

Voici un premier programme pour faire défiler les couleurs sur la LED RGB :

Vous pouvez le télécharger en cliquant sur ce lien.

Un serveur web sur la carte PybStick26 ESP32

Ce qui m’intéressait c’était de tester la possibilité (PoC) de piloter « quelque chose » depuis une page web diffusée par l’ESP32. Ici on va faire simple en pilotant une LED RGB, mais imaginez ce que ça peut devenir en mettant plusieur PybStick ESP32, en connectant des relais, des MosFET et autres gadgets et en pilotant le tout à partir d’un Raspberry Pi… Je vois votre sourire et la petite lumière qui vient de s’allumer dans vos yeux !

Pour commencer j’ai utilisé un programme de RandomNerdTutorials qui permet d’allumer / Éteindre la LED

Le programme une fois chargé, on se connecte sur l’adresse IP de l’ESP32 et les boutons permettent d’allumer et éteindre une LED.

Après il suffit de l’adapter pour piloter la couleur de la LED RGB à partir d’une page Web comme ici :

 

Vous pouvez télécharger le programme en cliquant sur ce lien.

Conclusion

Une carte accessible financièrement et facile à programmer si vous pratiquez le microPython ou l’IDE Arduino. Vous trouverez un très bon article sur cette carte, écrit par l’ami Jean-Christophe sur https://arduiblog.com/2022/10/10/pybstick-esp32. Un autre article intéressant sur cette carte sur https://papsdroidfr.github.io/configuration/Pybstick-C3 écrit par Olivier.

cartes pybstick USB A et USB CVous trouverez ces cartes pour 10€ environ sur le site du distributeur officiel de PybStick : McHobby.

Sources

http://electroniqueamateur.blogspot.com/2019/10/bluetooth-serie-avec-lesp32.html

MicroPython: Wi-Fi Manager with ESP32 (ESP8266 compatible)

https://github.com/cpopp/MicroPythonSamples

https://github.com/tayfunulu/WiFiManager

 

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

11 réflexions au sujet de « Carte Garatronic PybStick26-ESP32C3 »

  1. yann

    Bonjour,

    En n’utilisant pas uPython, sans doute aussi le moyen le plus économique de commencer à jouer sur RISC-V?!!

    A voir si côté librairies standards, la fourniture est correcte.

    Cdt.

    Répondre
  2. Vagniez josette

    Bonjour

    Tout d’abord un grand merci pour votre site qui m’aide beaucoup.

    Je viens de recevoir 2 carte garatronic pybDIPESP32C3 de chez mac hobby grace à vous.

    J’aimerai connecter un capteur BME280 sur cette carte pouvez vous m’indiquer les gpio pour SDA et SCL.

    Un grande merci d’une mamie de 70 ans qui s’amuse à programmer ces superbes cartes.

    Répondre
  3. Josette

    Bonjour

    problème de détection i2c bme280

    j’ai utilisé le programme suivant

    MicroPython v1.18-1028-g0e8c2204d-dirty on 2022-09-15; PYBSTICK26_C3 with ESP32C3
    Type « help() » for more information.
    >>> from machine import I2C
    >>> i2c = machine.SoftI2C(scl=machine.Pin(8), sda=machine.Pin(9))
    Traceback (most recent call last):
    File « <stdin> », line 1, in <module>
    NameError: name ‘machine’ isn’t defined
    >>> i2c.scan()
    [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119]
    >>>

    je n’ai pas le résultat attendu comme ci dessous en rouge
    (Après avoir branché un composant sur un bus I2C il est facile de détecter sa présence à l’aide d’une opération de scan. )

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      je suis en train de regarder
      j’ai ajouté 2 résistances de 4K7 en pull up
      résultat identique
      >>> from machine import SoftI2C, Pin
      >>> i2c = SoftI2C(scl=Pin(8), sda=Pin(9))
      >>> i2c.scan()
      [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119]

      Une idée ?

      Répondre
  4. Josette

    Bonjour François
    pour vérification j’ai connecté le bme280 sur une carte esp32 feather d’adafruit
    Quand je connecte le sda de la carte à la borne SDO du BME280 voici le résultat
    >>> %Run -c $EDITOR_CONTENT
    Scan i2c bus…
    No i2c device !
    >>>
    ensuite je connecte le SDA à la borne SDI du BME280 j’obtiens :
    >>> %Run -c $EDITOR_CONTENT
    Scan i2c bus…
    i2c devices found: 1
    Decimal address:  119  | Hexa address:  0x77
    >>>
    Quand je transfère les branchements sur le PYBStick26 ESP32C3 scl(8) sda(9)
    resultat :

    >>> %Run -c $EDITOR_CONTENT
    Scan i2c bus…
    i2c devices found: 112
    Decimal address:  8  | Hexa address:  0x8
    Decimal address:  9  | Hexa address:  0x9
    Decimal address:  10  | Hexa address:  0xa
    Decimal address:  11  | Hexa address:  0xb
    Decimal address:  12  | Hexa address:  0xc
    Decimal address:  13  | Hexa address:  0xd
    Decimal address:  14  | Hexa address:  0xe
    Decimal address:  15  | Hexa address:  0xf
    Decimal address:  16  | Hexa address:  0x10
    Decimal address:  17  | Hexa address:  0x11
    Decimal address:  18  | Hexa address:  0x12
    Decimal address:  19  | Hexa address:  0x13
    Decimal address:  20  | Hexa address:  0x14
    Decimal address:  21  | Hexa address:  0x15
    Decimal address:  22  | Hexa address:  0x16
    Decimal address:  23  | Hexa address:  0x17
    Decimal address:  24  | Hexa address:  0x18
    Decimal address:  25  | Hexa address:  0x19
    Decimal address:  26  | Hexa address:  0x1a
    Decimal address:  27  | Hexa address:  0x1b
    Decimal address:  28  | Hexa address:  0x1c
    Decimal address:  29  | Hexa address:  0x1d
    Decimal address:  30  | Hexa address:  0x1e
    Decimal address:  31  | Hexa address:  0x1f
    Decimal address:  32  | Hexa address:  0x20
    Decimal address:  33  | Hexa address:  0x21
    Decimal address:  34  | Hexa address:  0x22
    Decimal address:  35  | Hexa address:  0x23
    Decimal address:  36  | Hexa address:  0x24
    Decimal address:  37  | Hexa address:  0x25
    Decimal address:  38  | Hexa address:  0x26
    Decimal address:  39  | Hexa address:  0x27
    Decimal address:  40  | Hexa address:  0x28
    Decimal address:  41  | Hexa address:  0x29
    Decimal address:  42  | Hexa address:  0x2a
    Decimal address:  43  | Hexa address:  0x2b
    Decimal address:  44  | Hexa address:  0x2c
    Decimal address:  45  | Hexa address:  0x2d
    Decimal address:  46  | Hexa address:  0x2e
    Decimal address:  47  | Hexa address:  0x2f
    Decimal address:  48  | Hexa address:  0x30
    Decimal address:  49  | Hexa address:  0x31
    Decimal address:  50  | Hexa address:  0x32
    Decimal address:  51  | Hexa address:  0x33
    Decimal address:  52  | Hexa address:  0x34
    Decimal address:  53  | Hexa address:  0x35
    Decimal address:  54  | Hexa address:  0x36
    Decimal address:  55  | Hexa address:  0x37
    Decimal address:  56  | Hexa address:  0x38
    Decimal address:  57  | Hexa address:  0x39
    Decimal address:  58  | Hexa address:  0x3a
    Decimal address:  59  | Hexa address:  0x3b
    Decimal address:  60  | Hexa address:  0x3c
    Decimal address:  61  | Hexa address:  0x3d
    Decimal address:  62  | Hexa address:  0x3e
    Decimal address:  63  | Hexa address:  0x3f
    Decimal address:  64  | Hexa address:  0x40
    Decimal address:  65  | Hexa address:  0x41
    Decimal address:  66  | Hexa address:  0x42
    Decimal address:  67  | Hexa address:  0x43
    Decimal address:  68  | Hexa address:  0x44
    Decimal address:  69  | Hexa address:  0x45
    Decimal address:  70  | Hexa address:  0x46
    Decimal address:  71  | Hexa address:  0x47
    Decimal address:  72  | Hexa address:  0x48
    Decimal address:  73  | Hexa address:  0x49
    Decimal address:  74  | Hexa address:  0x4a
    Decimal address:  75  | Hexa address:  0x4b
    Decimal address:  76  | Hexa address:  0x4c
    Decimal address:  77  | Hexa address:  0x4d
    Decimal address:  78  | Hexa address:  0x4e
    Decimal address:  79  | Hexa address:  0x4f
    Decimal address:  80  | Hexa address:  0x50
    Decimal address:  81  | Hexa address:  0x51
    Decimal address:  82  | Hexa address:  0x52
    Decimal address:  83  | Hexa address:  0x53
    Decimal address:  84  | Hexa address:  0x54
    Decimal address:  85  | Hexa address:  0x55
    Decimal address:  86  | Hexa address:  0x56
    Decimal address:  87  | Hexa address:  0x57
    Decimal address:  88  | Hexa address:  0x58
    Decimal address:  89  | Hexa address:  0x59
    Decimal address:  90  | Hexa address:  0x5a
    Decimal address:  91  | Hexa address:  0x5b
    Decimal address:  92  | Hexa address:  0x5c
    Decimal address:  93  | Hexa address:  0x5d
    Decimal address:  94  | Hexa address:  0x5e
    Decimal address:  95  | Hexa address:  0x5f
    Decimal address:  96  | Hexa address:  0x60
    Decimal address:  97  | Hexa address:  0x61
    Decimal address:  98  | Hexa address:  0x62
    Decimal address:  99  | Hexa address:  0x63
    Decimal address:  100  | Hexa address:  0x64
    Decimal address:  101  | Hexa address:  0x65
    Decimal address:  102  | Hexa address:  0x66
    Decimal address:  103  | Hexa address:  0x67
    Decimal address:  104  | Hexa address:  0x68
    Decimal address:  105  | Hexa address:  0x69
    Decimal address:  106  | Hexa address:  0x6a
    Decimal address:  107  | Hexa address:  0x6b
    Decimal address:  108  | Hexa address:  0x6c
    Decimal address:  109  | Hexa address:  0x6d
    Decimal address:  110  | Hexa address:  0x6e
    Decimal address:  111  | Hexa address:  0x6f
    Decimal address:  112  | Hexa address:  0x70
    Decimal address:  113  | Hexa address:  0x71
    Decimal address:  114  | Hexa address:  0x72
    Decimal address:  115  | Hexa address:  0x73
    Decimal address:  116  | Hexa address:  0x74
    Decimal address:  117  | Hexa address:  0x75
    Decimal address:  118  | Hexa address:  0x76
    Decimal address:  119  | Hexa address:  0x77
    >>>
    Si j’inverse scl(9) sda(8) j’obtiens  🙁 comme indiquer sur github.com/espressif/arduino-esp32...)
    >>> %Run -c $EDITOR_CONTENT
    Scan i2c bus…
    No i2c device !
    >>>

    Si je lance le programme print valuebme280.pyj
    >>> %Run -c $EDITOR_CONTENT
    BME280 values:
    0.00C
    0.00hPa
    0.00%
    BME280 values:
    0.00C
    0.00hPa
    0.00%
    BME280 values:
    0.00C
    0.00hPa
    0.00%
    BME280 values:
    0.00C
    0.00hPa
    0.00%

    alors que le BME fonctionne sur ESP32 feather avec les bonnes valeurs temp, hum, press;

    voilà où j’en suis de mes essais

    Bonne journée
    Josette

    Répondre
      1. Josette

        Bonjour Frédéric

        merci pour votre topic.
        J’ai fait comme indiqué et tout fonctionne

        le scan du BME280 donne la réponse ci dessous

        Scan i2c bus…
        i2c devices found: 1
        Decimal address: 119 | Hexa address: 0x77
        >>>

        et le programme print valuebme280 donne :

        BME280 values:
        21.19C
        997.25hPa
        47.46%
        BME280 values:
        21.10C
        997.41hPa
        47.44%

        Merci pour votre réponse rapide je vais pouvoir m’amuser avec ma nouvelle carte

        Bonne soirée
        Josette

        Répondre
        1. Frederic Pierson

          Tant mieux. Il y a juste un petit ajustement à faire sur votre programme, soustraire trois degrés à la température remontée par votre BME280 car si un membre de notre cher gouvernement voit ça, ça va jazzer 🙂

          Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.