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.
Au sommaire :
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.
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.
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.
Vous 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
https://github.com/cpopp/MicroPythonSamples
https://github.com/tayfunulu/WiFiManager
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.
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.
Bonjour Josette
il y a également ici un exemple en Anglais :
https://randomnerdtutorials.com/esp32-bme680-sensor-arduino/
https://randomnerdtutorials.com/esp32-web-server-with-bme280-mini-weather-station/
Vous me direz si la réponse de Didier et celle ci vous ont aidée ?
ps ici c est un papi de 69 ans 😉
cordialement
Francois
hello
sur le git d emchobby il y a une page avec un exemple de connection I2C
I2C(1) sur S3=sda et S5=scl
https://github.com/mchobby/pyboard-driver/tree/master/PYBStick
A+D
merci pour votre réponse
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. )
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 ?
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
Bonjour Josette,
Je viens de faire un petit topic qui devrait vous aider : forum
Bonne continuation.
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
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 🙂