Publié le 19 septembre 2022 - par

Carte WaveShare RP2040-ZERO

Depuis la sortie du Raspberry Pi PICO et la disponibilité du microcontrôleur RP2040, de nombreux fabricants ont utilisé cet circuit pour concevoir des cartes. Je vous ai présenté en août la carte XIAO RP2040 de Seeedstudio. Aujourd’hui c’est le tour de la carte RP2040-Zero de Waveshare. Je vous propose de commencer à la prendre en main au travers de quelques programmes simples en microPython. Pour les tests j’utiliserai un Thonny sous Windows 11 qu’une majorité de débutants utilisent. J’utilise le même programme avec un Pi 4 ou un Pi 400, référez vous à mes précédents articles pour plus d’informations.

Carte miniature Waveshare RP2040-Zero

Présentation

La carte Waveshare RP2040-Zero est une carte miniature, plus petite qu’une carte SD…

Elle embarque le puissant processeur double-cœur RP2040 qui peut fonctionner avec une horloge jusqu’à 133 MHz, et qui est un microcontrôleur à faible consommation. La RP2040-Zero dispose également de 264 Ko de SRAM et de 2 Mo de mémoire Flash embarquée, ce qui permet de sauvegarder et d’exécuter davantage de programmes.

Contrairement à la XIAO RP2040, la Waveshare RP2040-Zero ne possède pas de LED Power, ni de LED utilisateur. Ça gagne un peu de place et ça économise un peu de courant (?).

Composants de la carte RP2040-Zero

La carte RP2040-Zero supporte la programmation Arduino, MicroPython et CircuitPython. Tout ce qui est valable pour le Raspberry Pi PICO est applicable ici.

Cet article se base sur l’utilisation de microPython.

  1. Connecteur USB Type-C
  2. W25Q16JVUXIQ
    2MB NOR-Flash
  3. Bouton BOOT
    appuyez sur ce bouton lors de la réinitialisation pour entrer en mode téléchargement
  4. Bouton RESET
  5. WS2812
    LED RGB
  1. ME621
    Low dropout LDO, courant max 800MA
  2. RP2040
    Processeur double cœur, fréquence de fonctionnement jusqu’à 133MHz
  3. Broches du RP2040
    10 points de soudure, dont 9 pour GPIO

Dimensions de la carte RP2040-Zero

Cette petite carte présente de bonnes performances en matière de traitement et consomme peu d’énergie. Elle a une taille minuscule (23.5x18mm) et peut être utilisée pour des dispositifs portables et des petits projets.

GPIO accessibles sur la carte RP2040-Zero

La carte RP2040-Zero possède 20 broches GPIO qu’on peut configurer, mais aussi sous la carte 9 pastilles à souder donnant accès aux GPIO 17 à 25. Ce sont donc 29 broches GPIO au total qui sont accessibles.

La carte RP2040-Zero supporte la programmation Arduino, MicroPython et CircuitPython. Tout ce qui est valable pour le Raspberry Pi PICO est applicable ici.

Cet article se base sur l’utilisation de microPython.

Caractéristiques

  • Microcontrôleur RP2040 conçue par la Fondation Raspberry Pi au Royaume-Uni
  • Processeur Arm Cortex M0+ à double cœur, horloge flexible pouvant atteindre 133 MHz
  • 264 Ko de SRAM et 2 Mo de mémoire Flash intégrée.
  • Connecteur USB-C, pou les mises à jour, facile à utiliser
  • Le module est conçu pour accepter des broches à souder ou pour être soudé directement sur une carte de circuit imprimé (PCB)
  • USB 1.1 avec prise en charge des périphériques et des hôtes
  • Modes veille et sommeil à faible consommation
  • Programmation par glisser-déposer à l’aide d’une mémoire de masse via USB
  • 29  broches GPIO multifonctions (20× via les broches, 9 via les pastilles à souder) :  2 × SPI, 2 × I2C, 2 × UART, 4 × ADC 12 bits, 16 × canaux PWM contrôlables
  • Horloge et minuterie précises embarquées
  • Capteur de température
  • Librairies de virgule flottante accélérée sur la puce
  • 8 × machines d’état à E/S programmables (PIO) pour le support de périphériques personnalisés

Mise à jour au démarrage

Lorsque vous connectez la carte RP2040-Zero à une prise USB, elle embarque un programme de test qui fait défiler les couleurs de la LED RGB. Cela vous permet de vérifier rapidement que la carte est opérationnelle.

Lors de la première connexion avec le PC ou le Raspbery Pi, si Thonny est lancé et que le Compilateur sélectionné est celui du Raspbery Pi PICO, vous aurez peut-être cette fenêtre :

On vous propose de mettre à jour la version de microPython présente sur la carte RP2040-Zero. Vous pouvez accepter sans problème. Après la mise à jour, la carte redémarre mais la LED RGB ne s’allume plus car le programme de test a été supprimé lors de la mise à jour de microPython.

Entrer dans le mode Bootloader

Parfois, la connexion à la carte RP2040-Zero peut disparaître lorsque la programmation par l’utilisateur échoue ou qu’un programme ne rend pas la main. On peut résoudre ce problème par l’opération suivante :

Appuyez sur le bouton « BOOT », maintenez le appuyé et connectez la carte RP2040-Zero à votre ordinateur.
L’ordinateur fera apparaître un disque USB.

À ce stade, la puce entre en mode Bootloader et le port d’accès apparaît à nouveau. Le RP2040 possède deux partitions, l’une est le Bootloader et l’autre le programme utilisateur. Le produit contient un code de bootloader dans la mémoire du système lorsqu’il quitte l’usine. Il est possible de le modifier en procédant comme ci-dessus.

 

Vous verrez apparaître cette fenêtre RPI-RP2. Il suffira de faire un glisser déposer d’un bootloader en .UFO pour recharger microPython ou un autre système. Certains fabricants proposent leur propre mouture de microPython avec les librairies nécessaires pour gérer certains composants déjà intégrées.

Il m’arrive aussi, quand je mets des programmes en démarrage automatique sur le RP2040, de prévoir une « porte de sortie » pour arrêter le programme et reprendre la main avec Thonny. J’utilise parfois l’appui sur un ou 2 boutons poussoir, ou une autre méthode. Le programme lorsqu’il détecte cet événement s’arrête et rend la main.

Reset – Réinitialisation

Si vous voulez réinitialiser la carte RP2040-Zero, effectuez les étapes suivantes :

  • Connectez la carte RP2040-Zero à votre ordinateur.
  • Appuyez une fois sur le bouton « RESET ».

Le programme redémarre.

Schéma de la carte

Cliquez pour agrandir

Ce schéma vos permet de repérer les éléments présents sur la carte et de voir comment les différents composants sont connectés.

Mise en œuvre de microPython

Introduction à MicroPython

MicroPython est un interpréteur Python doté d’une fonction de compilation partielle de code natif. Il fournit un sous-ensemble de fonctionnalités de Python 3.5, implémenté pour les processeurs embarqués et les systèmes contraints. Il est différent de CPython et vous pouvez lire plus sur les différences ici.

Mise en route

A son arrivée, lorsque je connecte la carte RP2040-Zero  au PC via USB, un programme interne anime la LED RGB. Ce programme a été installé par Waveshare, sans doute pour tester le bon fonctionnement de la carte en production.

Ce programme tourne en boucle et ne rend pas la main. On va devoir mettre un nouveau microPython dans la carte avant de l’utiliser. Cela va la réinitialiser. En cas de carte récalcitrante, il existe une autre solution qui remet l’ensemble de la mémoire à zéro. C’est flash_nuke.uf2 qui est disponible ici. Il suffit de le télécharger et de le copier en suivant la procédure ci-dessous pour remettre le microcontrôleur RP2040 dans l’état où il était à à sa sortie d’usine.

Installer microPython

Si la mise à jour vous a été proposée au premier démarrage et que vous avez accepté, cette procédure d’installation est déjà faite. Passez à la suite.

De plus cette procédure vous sera utile si vous décidez de changer de Bootloader par la suite.

Téléchargez microPython pour RP2040 en version .UF2. J’ai choisi la dernière version.

Comme vu plus haut, appuyez sur le bouton « B » et connectez le port USB-C. Cette fois la carte démarre en mode BOOTLOADER. La LED RGB reste éteinte. Une fenêtre RPI-RP2 s’ouvre sur le bureau.

Faites glisser le microPython…uf2 que vous avez téléchargé dans la fenêtre RPI-RP2. A la fin du transfert la fenêtre RPI-RP2 disparait et la carte reboote. Débranchez et rebranchez le port USB-C. La carte RP2040-Zero démarre « normalement » et le programme d’origine n’est plus exécuté. On va pouvoir commencer à s’amuser 😉

Le matériel utilisé

Tout d’abord, il faut connecter la carte RP2040-Zero à l’ordinateur et télécharger un code simple depuis MicroPython pour vérifier si la carte fonctionne bien.

Configuration matérielle utilisée :

  • 1 x RP2040-Zero
  • 1 x Câble Type USB-A -USB-C
  • 1 x PC ou Raspberry Pi

Installation de THonny

Étape 1. Téléchargez et installez la dernière version de l’éditeur Thonny en fonction de votre système d’exploitation. Sur Raspberry Pi, THonny est déjà installé si vous utilisez Raspberry Pi OS. Pour Windows la page de téléchargement de Thonny est ici pour la version 3.3 et là pour la version 4.0 (beta). Comme je fais ça pour le fun, j’ai choisi la version 4.0.

Si le programme d’origine tourne sur la carte RP2040-Zero, vous aurez cette réponse dans la console car Thonny ne peut pas accéder tant que le programme de démo tourne en boucle. Si vous avez installé la dernière version de microPython, la console sera active et affichera la version de microPython.

Étape 2. Lancez l’éditeur Thonny et Cliquez sur  » Outils→Options  » pour ouvrir les paramètres.

Étape 3. Choisissez l’onglet « Interpréteur » et sélectionnez « MicroPython (Raspberry Pi Pico) » et pour le port comme « Essayer de détecter le port automatiquement« .

Connexion de la carte RP2040-Zero

Connectez la carte RP2040-Zero au port USB du PC ou du Raspberry Pi. Lancez Thonny.

La partie basse (Console) montre le résultat du démarrage de microPython sur le RP2040. C’est bien la version que j’ai transférée dans la carte qui est exécutée. Dans le futur si une autre version existe, vous obtiendrez un résultat différent.

Pour tester la carte on va transférer un programme dans Thonny. Copiez et collez ce programme dans la fenêtre de Thonny (d’après https://core-electronics.com.au/guides/how-to-use-ws2812b-rgb-leds-with-raspberry-pi-pico/) :

Note : Si vous utilisez un Raspberry Pi, le programme est enregistré avant d’être exécuté. Ce n’est pas le cas sur Windows. Pensez bien à enregistrer le programme si vous voulez le garder.

Dans les deux cas il faut choisir si vous enregistrez le programme sur le PC ou le Raspberry Pi (Cet ordinateur) ou sur le RP2040 (Raspberry Pi Pico). Pour les programmes en essai privilégiez le PC ou le Raspberry Pi. On enregistrera sur le RP2040 les librairies pour les composants et les programmes qui s’exécuteront en automatique sur la carte XIAO RP2040.

Conclusion provisoire

Si ce programme fonctionne, c’est bon signe. Allumer et éteindre une LED c’est le « Hello World » du maker. Ça veut dire que la carte fonctionne et que toute la chaine de programmation fonctionne également. Une fois ce premier résultat obtenu, on peut passer à des choses un peu plus élaborées.

Animer la LED RGB sur la carte RP2040-Zero

Principe

Le LED RGB (Rouge-Vert-Bleu) qui se trouve sur la carte (entre les deux boutons poussoirs) est une LED « adressable » . En fait on envoie des octets les uns derrière les autres en série. Le circuit de la première LED les reçoit sur Din, il prélève les 3 premiers octets qu’il utilise pour configurer les trois couleurs. Le premier octet règle la luminosité du rouge (0 à255), Le second octet règle la luminosité du vert (0 à255), Le troisième octet règle la luminosité du bleu (0 à255). Sur certains modèles les couleurs peuvent avoir un ordre différent.

Les 3 LED sont proches et l’œil va mélanger les couleurs émises pour créer une couleur qui n’existe que dans votre tête, comme un pixel sur un écran TV.

Pour gérer la LED, on peut : soit tout écrire soi-même, soit utiliser une bibliothèque écrite par quelqu’un d’autre, qui sait gérer les LED adressables. Je vous explique un truc. Un bon informaticien, c’est un bon fainéant. Je m’explique… Si un programme existe et qu’il fonctionne bien, pourquoi le réinventer ? Il vaut mieux l’utiliser, ça permet de gagner du temps et de se consacrer à apprendre autre chose. A moins que vous vouliez apprendre à gérer ce genre de LED vous même, auquel cas ce sera à vous de lire les docs et d’écrire le programme. Si c’est le cas, faites en une bibliothèque, elle vous servira une autre fois et pourra aussi servir à d’autres si vous la partagez. C’est bien sûr juste mon avis…

Utiliser une bibliothèque ws2812

Je vous avais expliqué dans un précédent article comment installer une librairie ws2812.py. Il y en a plusieurs qui sont disponibles, j’ai choisi celle ci. On va

  • Télécharger la librairie sur le PC (ou le Raspberry Pi)
  • L’ouvrir dans Thonny
  • L’enregistrer dans la carte RP2040-Zero

De ce fait, la bibliothèque de gestion de la LED RGB adaptée à la carte RP2040-Zero sera présente sur notre carte Waveshare et sera donc disponible pour notre programme.

Télécharger la bibliothèque

Cliquez sur ce lien qui affiche la bibliothèque ws2812.py depuis Github. Sélectionnez tout le texte affiché sur la page web.

Collez la bibliothèque dans Thonny

Créez un nouveau fichier dans Thonny, Collez la totalité du texte copié dans la fenêtre de Thonny.

La bibliothèque est maintenant dans Thonny, on va la transférer dans le RP2040.

Enregistrer la bibliothèque dans le RP2040

Cliquez sur Enregistrer sous… et choisissez  Raspberry Pi Pico, ce qui va enregistrer la bibliothèque dans le RP2040.

Thonny va enregistrer le code qui apparait dans la fenêtre mais c’est vous qui allez lui donner un nom. Tapez ws2812.py dans la zone Nom de fichier. Il faut nommer la bibliothèque de cette façon car les programmes utilisent la bibli sous ce nom ! Après vous êtes libre de changer le nom, mais il faudra adapter vos programmes…
Cliquez sur OK pour enregistrer dans le RP2040.

Utiliser la bibliothèque

Fermer l’onglet ws2812.py de Thonny et ouvrez un nouveau programme (Fichier > Nouveau)
Chargez le code suivant dans Thonny (copier/coller):

Exécutez le programme, vous devriez obtenir ceci :

SI vous regardez le programme vous voyez les lignes

numpix = 1
qui correspond au nombre de LEDs à programmer… ici il y en a une !

 strip = ws2812.ws2812b(numpix,0,16)
Ici on utilise la bibliothèque ws2812 qu’on vient de mettre sur le RP2040, on lui passe les informations suivantes :

  • numpix = le nombre de LEDs à utiliser
  • La machine d’état à utiliser (ici la 0)
  • La broche Din (Data IN de la LED est sur le GPIO 16 du RP2040 => 16

 

Conclusion

Dans cet article vous avez pu découvrir la facilité de mise en ouvre de cette mini carte RP2040-Zero de Waveshare. Vous savez maintenant comment charger un firmware comme microPython dans la carte, utiliser Thonny pour exécuter un programme et ajouter une bibliothèque pour un composant. Plein de projets s’ouvrent à vous, vu le prix de la carte le risque est faible et c’est un bon outil pour apprendre à utiliser un microcontrôleur.

Si vous voulez partager vos projets, n’hésitez pas à me contacter, le les ajouterai sous cet article. Profitez également des commentaires pour dire ce que vous en pensez et parler de vos projets.

Cette carte est disponible sur Aliexpress à l’unité ou par lot de 5 à 7€ environ (sans ou avec les broches soudées).

 

Sources

 

À 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.

14 réflexions au sujet de « Carte WaveShare RP2040-ZERO »

  1. Jean-Michel Bapt

    Bonjour,

    Merci encore une fois pour vos articles très intéressants !

    J’ai essayé de comparer les caractéristiques de cette carte WaveShare RP2040-ZERO avec la carte XIAO RP2040 de Seeedstudio mais j’ai cherché sans les trouver deux renseignements concernant cette carte RP2040-ZERO :

    Au niveau des dimensions, qu’elle est son épaisseur puisque apparemment, et contrairement à la carte XIAO RP2040, il y a des composants des deux côtés ?
    La notice technique de la carte XIAO RP2040 indique que celle-ci dispose de 11 Digital I/O Pins et de 4 Analog I/O Pins. Cette indication ne figure pas (ou pas clairement) dans la notice technique de la carte RP2040-ZERO. Utilisant toutes les deux le même processeur, elle a très probablement 4 Analog I/O Pins (où sont elles ?) mais combien a-t-elle de Digital I/O Pins ? 25 ?Jean-Michel

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

      Bonjour
      Avec la prise, elle fait 6mm d’épaisseur, moins d’un mm sous la carte. A mon avis pour l’utiliser sur une carte mère il faudrait avoir les pastilles pour la souder et une découpe pour laisser passer les composants qui sont dessous.
      Regardez le plan des GPIOs, vous verrez les 4 entrées analogiques à gauche, indiquées ADC0 à ADC3. Les E/S numériques sont notées GPxx. Comme tout MCU, les broches peuvent avoir plusieurs usages définissables par programmation.
      De même si on considère les E/S numériques il y en 29 réparties sur les broches et sur les pastilles à souder sous la carte. Après, si par exemple vous utilisez 2 entées analogiques, il reste seulement 27 E/S numériques. Si vous utilisez encore en plus un bus I2C, il ne reste que 25 E/S numériques…
      vous me direz si c’est clair pour vous?
      cdt
      françois

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

      Bonjour Doudy
      La LED qui clignote c est pour montrer que ça fonctionne (« Hello Word »)
      Cette carte embarque un microcontrôleur double coeur, le même que celui du Raspberry Pi PICO. On a donc une carte aussi puissante que le PICO dans une taille minime.
      Arduino a sorti une carte avec le même MCU : https://fr.rs-online.com/web/p/arduino/2221486 et de nombreux fabricants l’utilisent également (Seeedstudio, Adafruit, Waveshare…) on trouve une large gamme de programmes.
      Les applications du Raspberry Pi PICO (et donc de cette carte) sont vraimùent très étendues…
      cdt
      françois

      Répondre
    2. Viriathe

      avec 4 ou 5 relais en plus elle peut remplacer à merveille le programmateur d’une machine à laver ou d’un lave vaisselle parce au vu du prix des programmateur en pièces de rechange au tant racheter un appareil neuf cela coûterait a peine plus cher.

      Répondre
  2. didifart

    Bojour,

    Merci pour cet article si bien détaillé.

    Est-ce qu’il est simple d’adapter un code fait au départ pour un arduino (AVR) au pico ?

     

    Merci

    Répondre
  3. Marlock

    Bonjour,

     

    Pourriez-vous faire un tuto pour l’utilisation avec Arduino ? Il n’existe rien de tel sur le net pour cette carte qui est pourtant très prometteuse !

     

    Merci par avance.

    Répondre
  4. DDE

    Bonjour,

    Article bien complet mais il manque un point important à aborder pour que cette carte soit réellement utilisable : Est-il possible d’alimenter cette carte sans connecter l’USB-C ? Sur le PICO on peut utiliser le port 39 VSYS. Quel port est utilisable sur le RP2040-Zero ?

    Merci par avance.

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

      Bonjour
      merci pour ce retour
      vous pouvez connecter directement du 5v entre les bornes 5v et masse
      Il n’y a pas de protection, il faut vous assurer que le 5V est stable
      Idem pour le 3,3v entre les bornes 3,3v et masse avec la certitude de ne jamais dépasser 3,3v !!
      Ne connectez pas non plus le 5v en direct sur le broches et la prise USB c…
      VSYS est particulier au PICO et n’existe pas sur cette carte
      cdt
      francois

      Répondre
  5. Elek

    Bonjour,
    Très bel article.
    J’ai deux questions.
    La première concerne l’alimentation : si j’alimente la carte avec 5 V via USB, puis-je utiliser en toute sécurité les 5 V et 3 V3 extraits des broches de la carte ?
    La seconde concerne la mémoire : puis-je utiliser la mémoire flash W25Q16JVUXIQ sur la carte (comment ?) dans mes programmes (j’ai besoin d’environ 32 octets) ou dois-je ajouter de la mémoire externe, par exemple via I2C ?

    Répondre
  6. Alex

    Merci vraiment pour ce boulot formidable que vous faites ,  grâce à vous tout au long des années je suis débloqué où je progresse merci encore continuer le plus possible.

    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.