Publié le 21 janvier 2021 - par

Raspberry Pi PICO la carte Microcontrôleur de la Fondation

Après avoir révolutionné le monde du SBC (Single Board Computer) avec sa famille Raspberry Pi, la Fondation débarque dans le monde du microcontrôleur avec cette carte Raspberry Pi PICO à 5€ qui va sans doute se faire une place au milieu des nombreuses cartes disponibles. Le microcontrôleur RP2040 a été créé par la Fondation. Il est disponible avec un SDK C/C++ et supporte la version officielle de MicroPython.

Cliquez pour obtenir des informations sur les niveaux

Comme on est aux débuts de cette carte et que les docs, même si elles existent, sont encore en développement, j’ai classé cet article en “Avancé”. Si vous avez déjà pratiqué les PyBoard, Arduino ou autres vous devriez vous en sortir. Pour les débutants il faudra vous armer de persévérance et de curiosité…

Carte microcontrôleur Raspberry Pi PICO

Nouvelle surprise du côté de la Fondation Raspberry Pi avec la sortie de cette carte PICO, comportant une microcontrôleur double cœur conçu par la Fondation.

Caractéristiques de la carte

La carte Raspberry Pi Pico est une carte microcontrôleur à faible coût (~5€) et à haute performance avec des interfaces numériques flexibles. Ses principales caractéristiques sont les suivantes :

  • Microcontrôleur RP2040 conçu par Raspberry Pi au Royaume-Uni
  • Processeur ARM Cortex M0+ à double cœur, horloge flexible fonctionnant jusqu’à 133 MHz
  • 264 Ko de SRAM et 2 Mo de mémoire Flash embarquée
  • Le module peut se souder directement sur une carte
  • Prise en charge de l’hôte et du périphérique USB 1.1 (OTG)
  • Mise en veille à puissance réduite et modes “dormants”
  • Programmation par glisser-déposer en utilisant le stockage de masse via USB
  • 26 broches GPIO multifonctions
  • 2 × SPI, 2 × I2C, 2 × UART, 3 × 12-bit ADC, 16 × canaux PWM contrôlables
  • Horloge et minuterie précises intégrées
  • Capteur de température
  • Bibliothèques accélérées en virgule flottante intégrées
  • 8 × machines d’état à entrées/sorties programmables (PIO) pour le support de périphériques personnalisés

Le microcontrôleur

Ci-dessus le synoptique du microcontrôleur. Contenu dans un boîtier de 7x7mm, celui-ci intègre un grand nombre de composants au service des 2 cœurs.

La documentation du RP2040 fournit ce schéma d’ connexion pour le RP2040.

Schéma

Cliquez pour agrandir

Le schéma est remarquable de simplicité. Le microcontrôleur RP2040 U1 occupe bien sûr la place centrale. Il est alimenté par un circuit à découpage U2 situé en haut du schéma à gauche : RT6150B un buck converter qui accepte de 1,8 à 5,5 volts en entrée. La mémoire flash U3 est au centre à gauche c’est un modèle 16M bits (2Go) de type W25Q16DV. En cliquant sur les liens de ce paragraphe, vous aurez accès aux datasheets (feuilles de caractéristiques) des composants, dont la très imposante documentation du microcontrôleur RP2040 qui comprend plus de 600 pages…

Implantation des composants

Le plan d’implantation vous permet de retrouver les composants du schéma.

La carte comporte une LED embarquée, reliée au GPIO 25 (Pin 25 en Micropython). Elle permet de vérifier le bon fonctionnement de la carte en réalisant un premier programme “hello world”.

Dimensions physiques

La carte PICO a un très faible encombrement avec ses 21×51 mm. Malgré sa taille réduite, elle offre quand même 43 pastilles pour la connexion.

Connectique

La carte ne comporte aucun composant sur sa parte inférieure. Cela permet de la poser directement sur une carte “mère”. Il faudra simplement veiller à ce que les points tests ne soient pas en contact avec des pistes de cette carte “mère”. Le marquage sous la carte permet de repérer les branchements. Cependant, le microcontrôleur offre une grande souplesse de configuration des entrées sorties.

Broche de connexion à souder

Chaque connexion peut se voir attribuer différents rôles. On voit ici que deux possibilités existent pour utiliser la carte :

  • Les trous permettent de souder des broches (paragraphe suivant). Si vous les soudez dessous vous pourrez connecter la carte PICO dans une breadboard. Vous pourrez aussi utiliser directement des fils Dupont. Si vous n’utilisez que des fils Dupont vous pouvez souder les broches vers le haut.
  • On peut aussi prévoir une carte “mère” qui recevra la carte. Dans ce cas la carte pourra être soudée directement sur des pastilles prévues à cet effet, de la même façon qu’on soude les ESP8266. On peut aussi équiper la carte mère de pins mâles et y connecter la carte PICO.

Cliquer pour agrandir

Si cette possibilité d’utilisation souple est un avantage car elle permet d’utiliser au mieux toutes les ressources internes du microcontrôleur, elle risque d’entraîner une complexité de gestion en raison de toutes ces possibilités. Si vous démarrez avec ce genre de carte, il vaut mieux figer vos choix (au début) et utiliser une version standardisée pour vos réalisations.

Dominique de McHobby a réalisé cette synthèse qui est plus lisible, vous retrouverez toutes les informations et traductions sur le blog et le wiki de McHobby.

Comparaison avec d’autres cartes

Sur cette image de gauche à droite : Carte PyBoard, Carte Raspberry Pi PICO et NodeMCU.

Monter des broches sur Raspberry Pi PICO

J’ai choisi de souder les broches sous la carte pour pouvoir l’utiliser sur une carte breadboard, plus pratique pour les tests. Pour cette opération il va falloir souder les broches. Si vous ne l’avez jamais fait, je vous conseille de vous faire aider, ou de lire mon ebook gratuit sur la soudure et de vous entraîner un peu avant de vous lancer. J’ai également montré comment souder sur cette vidéo de la carte NadHAT de Garatronic.

Je commence par couper deux rangées de 20 pinoches que je plante dans la breadboard au bon écartement (3ème rangée de trous de chaque côté du centre). Vérifiez bien que les pinoches sont parfaitement enfoncées et le plus parfaitement possible perpendiculaires à la breadboard.

 

Mettez la carte PICO en place sur les pinoches. Normalement si les pins sont bien positionnées ça force à peine pour rentrer.

Vous pouvez maintenant manier le fer à souder pour souder proprement les deux barettes de pinoches sur la carte. Prenez votre temps, il faut que ce soit bien fait pour assurer une longue durée de vie à vos soudures 🙂

Il reste à poser les pinoches pour la connexion Debug. J’ai choisi de les positionner sur le dessus de la carte pour pouvoir y connecter facilement des connecteurs Dupont. Allez, courage, il reste 3 petites soudure à réaliser !

Voilà le connecteur Debug est lui aussi en place, la carte est prête à être utilisée.

Bien entendu en fonction de l’utilisation que vous en ferez, vous pourrez monter les pinoches différemment ou carrément ne pas les monter du tout. Si vous concevez une carte mère, c’est elle qui pourra comporter les pins mâles, la carte PICO étant soudée dessus directement ou munie de connecteurs femelles.

Installer MicroPython

Update du 2 avril 2021 : MicroPython se trouve maintenant ici : suivez ce lien

L’installation de MicroPython sur la carte PICO se fait par un simple glisser/déposer. Sur le Raspberry Pi accédez à la page https://github.com/raspberrypi/micropython/releases et téléchargez le fichier pico_micropython :

Le fichier sera enregistré dans le dossier Downloads.
Maintenez le bouton BOOTSEL de la carte PICO puis connectez la carte PICO au Raspberry Pi avec le câble USB. C’est de cette façon que la carte PICO expose la mémoire comme un périphérique de stockage (clé USB). Vous verrez apparaître une fenêtre

Il y a aussi la “clé USB” nommée RPI-RP2 qui est apparue sur le bureau. Cliquez sur le bouton Valider.

La fenêtre de la carte PICO RPI-RP2 s’ouvre. Elle contient les fichiers INDEX.HTM et INFO_UF2.TXT. Ouvrez le répertoire Downloads dans une autre fenêtre. Le fichier que vous avez téléchargé s’y trouve.

Cliquez sur le fichier .uf2 et emmenez le sur le dossier RPI-RP2. La copie est effectuée rapidement puis la carte reboote automatiquement et le nouveau firmware est en service. C’est aussi simple que cela.

Dialoguer avec la carte Raspberry Pi PICO

Connecter la carte Pico en USB

La carte PICO est prévue pour être alimentée par le port microUSB. prévoyez un câble USB/microUSB pour la relier au Raspberry Pi. Cet article destiné à des débutants avec ce style de carte ne traite que de MicroPython.

Utiliser un émulateur de terminal

La carte PICO dialogue avec l’extérieur en mode texte. Via le port USB il est possible d’échanger des informations de façon bidirectionnelle avec la carte. Une liaison série via USB relie la carte PICO à un terminal. Pour rappel, un terminal informatique est constitué d’un écran et d’un clavier et tout ce qu’il peut faire c’est envoyer des caractères sur une ligne série, ou afficher ceux qu’il reçoit sur cette ligne série.

Problème : Le Raspberry Pi n’est PAS un terminal informatique. Pour l’utiliser comme tel, il va falloir utiliser un émulateur de terminal comme minicom (recommandé par la Fondation) ou screen dont je vous ai déjà parlé (référez vous à cet article pour son utilisation).
Pour l’un comme pour l’autre il faudra passer par une installation car ils ne font pas partie de la distribution Raspberry Pi OS installée sur votre Raspberry Pi. Installez celui que vous voudrez.

Utilisation de l’interface REPL

REPL, c’est quoi donc ?
L’interface USB de la carte PICOpermet également à la carte d’exposer un port série pour communiquer avec le Raspberry Pi ainsi qu’un interpréteur de commande Python interactif appelé REPL. C’est le MicroPython Interactive Interpreter Mode.

L’interpréteur de commande REPL permet:

  • De voir les messages envoyés par vos script MicroPython,
  • D’interagir avec vos scripts en cours de fonctionnement (arrêter le script, inspecter l’état de variables)
  • De tester des scripts en cours de développement (importation à la volée avec la commande import).
  • De saisir des instructions Python pour tester des fonctionnalités de la plateforme microcontrôleur de façon interactive.

Connecter screen à la carte PICO

Ici j’ai choisi d’utiliser screen il y a des exemples avec minicom plus loin.


Dans la fenêtre qui s’ouvre rien ne s’affiche dans un premier temps. Appuyez sur la touche [ENTRÉE] pour faire apparaître le prompt de MicroPython   >>>
Vous pouvez commencer à utiliser REPL en ligne avec la carte PICO. Ici j’ai tapé la commande print (‘hello PICO !’) pour vérifier que ça fonctionne (il n’y a pas de message d’erreur donc c’est bon). Ensuite j’ai fait un [CTRL + D]  ce qui a eu pour effet de resetter la carte PICO qui a affiché les informations sur la version de MicroPython et de la carte PICO.

Faire clignoter la LED embarquée

Le premier programme, le “Hello World” du microcontrôleur consiste à allumer une LED. Ça tombe bien, la carte PICO embarque une LED connectée au GPIO 25 !
Entrez les lignes suivantes pour vérifier que la LED s’allume et s’éteint :

Si tout s’est bien passé, vous venez de réaliser votre première commande avec la carte PICO. Bravo ! Comme je dis toujours, si vous savez allumer une LED… remplacez la par un relais, vous commandez un radiateur, une porte de garage, un vérin etc…

On peut aussi envoyer un programme complet dans REPL :

Dans la fenêtre REPL vous avez le prompt   >>>
Tapez [CTRL + E]
La fenêtre affiche maintenant

Copiez le programme ci-dessous et collez le dans la fenêtre REPL (en raison des modifications faites par WordPress, il est possible que la copie de ce programme ne fonctionne pas… dans ce cas je vous conseille de saisir le programme dans un éditeur de texte. c’est plus simple et… ça marche ! Vous pouvez aussi télécharger le fichier en cliquant sur ce lien.


J’ai utilisé Thonny pour saisir le programme :

puis cliquez sur [CTRL + D] => La LED se met à clignoter mais le prompt  >>> ne revient pas car le programme tourne.


Pour clore le programme et revenir au prompt, tapez [CTRL+ C]

Vous avez à nouveau la main sur REPL. Pour sortir de REPL utilisez [CTRL + A] + Q

Lorsque vous fermez cette fenêtre puis que vous relancez screen pour vous connecter, vous aurez sans doute cette réponse :

pi@raspberrypi:~ $ screen /dev/ttyACM0
[screen is terminating]

Dans ce cas pour rétablir la liaison, débranchez et rebranchez la prise microUSB de la carte PICO.

Connecter le Raspberry Pi et la carte PICO via les UARTs

Une autre façon de faire communiquer le Raspberry Pi avec la carte PICO est de passer par les UARTs de chaque carte.

MicroPython pour le RP2040 fournit également le REPL sur l’UART0 de la carte

Il faudra relier les deux Tx/Rx des cartes en liaison croisée comme ci-dessus. Le câble microUSB utilisé ici est relié à une alimentation 5V/3A, il ne relie pas la carte PICO à un port USB du Raspberry PI.

Raspberry Pi Raspberry Pi Pico
GND GND
GPIO15 (UART_RX0) GPIO0 (UART0_TX)
GPIO14 (UART_TX0) GPOI1 (UART0_RX)

Avec cette connexion, vous pourrez vous connecter au REPL. La première chose à faire est d’activer le port série UART sur le Raspberry Pi 4. Pour ce faire, lancez raspi-config

Et allez dans Interface Options -> Serial Port puis sélectionnez “Non” lorsqu’on vous demande “Voulez vous que le prompt shell soit accessible via l’interface série” (Would you like a login shell to be accessible over serial?)  et sélectionnez “Oui” lorsqu’on vous demande “Voulez vous activer le port série matériel?” (Would you like the serial port hardware to be enabled?).

Vous devriez voir quelque-chose comme ci-dessous:

  • L’invite de commande sur port série est désactivé
  • L’interface série est activée

En quittant raspi-config, vous devez choisir “Oui” et redémarrer votre Raspberry Pi pour activer le port série. Ensuite connectez-vous à la carte en utilisant minicom connecté à /dev/serial0,

Ici encore, si la connexion ne semble pas fonctionner, redémarrez le Raspberry Pi 4, ouvrez un terminal et tapez la commande minicom… Cette fois ça devrait fonctionner. A partir de là vous pouvez exécuter des instructions MicroPython ou copier un programme comme vu précédemment.

Installer ampy

Pour pouvoir transférer des fichiers, modules, programmes… dans le système de fichier de MicroPython, Adafruit a créé un outil que nous pouvons utiliser ici : ampy.


Testez ensuite l’installation :


Si vous obtenez l’aide d’ampy, tout s’est bien passé.

Ajouter des modules/des programmes

J’ai mis le programme test.py sur le bureau. Transfert vers le système de fichier (FS) de MicroPython :

Lister les fichiers présents

On peut maintenant lister les fichiers présents dans le FS MicroPython :

Exécuter un programme

J’ai créé un programme test.py qui contient le programme de clignotement de la LED vu précédemment. Placez vous dans le dossier qui contient ce programme et tapez :


Le programme présent sur le Raspberry Pi est exécuté sur la carte Raspberry Pi PICO

Créer un fichier main() dans Raspberry Pi PICO

Renommez (ou copiez) le fichier test.py  en main.py. Transférez le fichier sur la carte PICO

Débranchez puis rebranchez la carte Raspberry Pi PICO. Le programme main.py est exécuté automatiquement (s’il est présent) par MicroPython. La LED de la carte PICO se met à clignoter. Tant que le programme main.py sera présent, à chaque démarrage de PICO il sera lancé et la LED clignotera.

Supprimer un fichier

La commande ampy permet également de supprimer des fichiers présents dans le FS MicroPython :

Avec rm vous pouvez supprimer un fichier du FS MicroPython. Il existe encore d’autres commandes comme mkdir, rmdir ou encore get qui permet de lister un fichier présent sur PICO.

Piloter un anneau de LEDs

Au delà du clignotement de la LED embarquée de la carte PICO, j’ai trouvé intéressant de mettre en œuvre cet exemple, trouvé dans le Pico Python SDK.

Doc en français
J’en profite pour vous indiquer qu’avec Dominique de McHobby, nous avons traduit ce document. Dominique y a aussi ajouté des compléments. Vous pouvez le consulter en cliquant sur ce lien.

Anneau de LED

Vous pouvez utiliser un anneau de LEDs Adafruit, comme le fait la Fondation. J’ai utilisé un autre modèle, vendu par 5 et un peu moins cher. Le brochage est différent mais ça ne pose pas de problème particulier.

J’ai conservé la liaison entre le Raspberry Pi 4 et la carte Raspberry Pi PICO via les UARTs.

L’anneau de LEDs est alimenté par le 3,3v de la carte PICO et le signal de commande est fourni par le GPIO 6 de la carte PICO (broche 9). Le programme est paramétrable pour le nombre de LEDs et le port utilisé.
Vous pouvez télécharger le fichier LED_RGB.py en cliquant sur ce lien. Positionnez vous dans le dossier qui contient le fichier (généralement Downloads avec Raspberry Pi OS), dézippez le. Vous obtenez le fichier LED_RGB.py. Mettez ce programme dans le FS MicroPython


Puis exécutez le


Vous devriez voir les LED de l’anneau changer de couleur…

Conclusion

Avec cette nouvelle carte Raspberry Pi PICO, la Fondation Raspberry Pi met un pied dans le monde des microcontrôleurs et de MicroPython. Il faudra être tolérant(e) et accepter d’essuyer les plâtres. Mais vous pourrez découvrir ce monde passionnant, au même titre que le Raspberry Pi dans son domaine.

Quand on a suivi la révolution qu’a amené le Raspberry Pi, puis son entrée dans le monde de l’entreprise, on peut imaginer que la carte PICO va avoir à terme un impact sur le développement de solutions standardisées à base de microcontrôleurs. Pour un coût minime de 5€ environ, il sera possible d’équiper de nombreux projets avec cette carte PICO…

Dans les développements possibles, vu la place disponible sur la carte, je verrai bien un circuit WiFi/Bluetooth comme celui qui équipe les Raspberry Pi… On attend les prochaines versions.

Retrouvez la version PDF en français du document publié par la Fondation et traduit par Dominique (McHobby) et François (framboise314) disponible ici : Démarrer avec Raspberry Pi PICO

Les makers vont encore avoir plein d’idées !

Guide de démarrage de la carte PICO en anglais

Hackspace Magazine spécial PICO en anglais

 

Sources

 

 

 

Share Button

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

19 réflexions au sujet de « Raspberry Pi PICO la carte Microcontrôleur de la Fondation »

    1. François MOCQ Auteur de l’article

      Merci Patrice 🙂
      avec l’aide de McHobby avec qui on a bossé ces 2 dernières semaines et traduit la doc de la Fondation en Français 🙂 et Merci à la Fondation qui m’a envoyé la carte il y a 2 semaines 🙂

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

      Bonjour… oui mais on a un Linux qui tourne en arrière plan dans le RasPi donc d’autres contraintes… et sur le Pi on n’a pas d’entrées ADC… et… le Pi coute plus cher 🙂 c’est un peu comme la différence entre Raspberry Pi et Arduino, on ne les utilise pas pour le même type de projets

      Répondre
  1. Claude

    Bonjour François,
    Je souhaite bonne chance au pi-pico mais il arrive dans un monde bien encombré.
    Il y a le bien établi écosystème Arduino avec maintenant sa version pro.
    Perso j’utilise le Bluepill (STM32F103) en gros équivalent au pi-pico. Pour moins de 5€ tu as la carte plus le stlink pour programmer et débugger. Si tu as besoin de plus de puissance, pour quelque euros de plus tu as un STM32F4 avec l’unité de calcul hard. On peut utiliser l’ide arduino mais je préfère l’outil STM32Cube. Au total tu as une chaine pro : configuration graphiques, bibliothèques middleware, debugger in circuit…

    Répondre
  2. J4l13n

    Bonjour
    Merci pour cet article très bien détaillé et très riche en information !

    Est il programmable via l’IDE d’Arduino ?

    Sinon est-ce prévu?

    Cordialement

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

      bonjour
      pour le moment je ne sais pas mais Arduino va sortir une carte à base du même processeur RP2040 créé par Raspberry Pi. Il devrait donc apparaître dans l’IDE Arduino 🙂

      Répondre
  3. miguipda

    Merci pour cet article attirant et très bien détaillé.

    Un besoin de travail avec cette carte :
    Certes restant tributaire des périphériques utilisés, mais son usage avec une batterie solaire (vendue tout en un) serait d’autant plus utile pour différent projets d’autonomie

    Merci à vous

    Répondre
  4. Jean-Yves

    Merci encore pour cet article extraordinaire, encore une fois, qui me re-donne envie de ressortir un peu mes vieilleries “pi” pour faire quelques expériences…!!!
    Un bonjour super chaud de la Réunion…!!!

    Répondre
      1. Jean-Yves

        Bonjour, ben à force de lire tes reportages ici et là, j’ai eu envie d’en commander…. Bon c’est fait, en cours de livraison à l’heure de l’écriture (Faut ça fasse le tour du monde avant de trouver la Réunion…!). Encore merci pour ta passion communicative…!

        Répondre
  5. Christian Thomas

    Bonjour François et merci pour ton article, clair et précis comme d’habitude.

    Je m’interroge vraiment sur l’avenir de cette carte dépourvue de WIFI (voire de Bluetooth).
    A la comparaison (performances + possibilités) / cout elle aura du mal à tenir la comparaison avec un Raspberry Zéro WH à 10,44 € qui peut communiquer sans autre artifice.

    Si l’on reste dans le domaine des microcontrôleurs, cette carte aura aussi beaucoup de mal aussi à concurrencer les ESP-8266 et autres ESP-32 (ce dernier possédant en plus deux sorties analogiques). La aussi programmable via Arduino ou micro-Python.

    Christian (F1CIY)

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

      Bonjour Christian
      Je pense que c’est un coup d’essai de la Fondation et comme il reste de la place sur la carte on peut envisager une version avec le WiFi (Bluetooth ?) comme je le mentionne dans ma conclusion.
      Arduino est d’ailleurs dans la course avec le RP2040 (il ne doit donc pas être si mauvais que ça 🙂 ) et va sortir une carte équipée du même microcontrôleur mais avec le WiFi. Ce sera évidemment accessible via l’IDE Arduino…
      arduino RP2040 WiFi
      De mon côté je pense que c’est le début d’une nouvelle aventure …
      73’s
      François
      f1gyt

      Répondre
  6. NETeagle

    Dommage que ce RP2040 soit conçu et fabriqué avec une processus ancien (40nm). Du coup sa consommation est très supérieure aux nouveaux micros en 28nm (STM32G0XX par ex). Cela va être très handicapant pour toutes les applications low power et embarquées …

    Répondre
  7. Le boulou vincent

    bonjour.
    Merci de ce tutoriel sur cette nouvelle carte. Si j’ai bien compris il est possible de l’utiliser sans la souder sur une carte support, simplement avec un cable usb relié au raspberry pi.
    Python n’étant pas mon truc, je vais regarder s’il existe un assembleur pour cette carte.

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

      Bonjour vincent
      oui c est ça
      après pour piloter des composants externes ou recevoir des infos il faut quand même souder 🙂
      mais pour commencer à découvrir, le port USB suffit
      je ne sais pas s il y a deja un ASM, c’est possible
      la Fondation a sorti un SDK Python et un C/C++

      Répondre
  8. Ping : Utiliser les extensions Pimoroni avec Raspberry Pi Pico - Framboise 314, le Raspberry Pi à la sauce française....

Laisser un commentaire

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

Complétez ce captcha SVP * Time limit is exhausted. Please reload CAPTCHA.

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