9 Sep 22

Présentation de la Raspberry Pi pico zéro

Catégorie : hack

La carte de développement Rasperry Pi pico a été une grande nouveauté lorsqu'elle a été lancée en janvier 2021 par la fondation Raspperry Pi. Pour la première fois, il ne s'agissait pas d'un SBC (Single Board Computer) comme la série des Raspberry Pi, mais d'une carte contenant un microcontrôleur RP2040 développé par la fondation elle-même !

Comme pour les autres types de cartes de développement, de nombreux clônes sont apparus assez rapidement, dont la Raspberry pi pico zéro, dont les dimensions réduites (18×23.5 mm seulement) n'en font pas moins une carte puissante. Attention de ne pas confondre avec la Raspberry pi zéro qui est une version mini des SBC Raspberry Pi. Je me suis donc procuré une Raspberry pi pico zéro chez AliExpress pour moins de 5€ ! Et la petite carte n'a rien à envier à sa grande sœur :

  • la carte est également basée sur le microcontrôleur RP2040 à double cœur Cortex M0+ cadencé à 133 MHz (il parait qu'on peut même l'overclocker, à tester…). Ne cherchez pas le microcontrôleur sur la photo à droite, il se trouve en dessous ! On retrouvera donc les 264 ko de RAM inclus dans la puce pour stocker les variables (entre autres) lors de l'exécution des programmes
  • le RP2040 ne disposant pas de mémoire flash pour accueillir le firmware, la carte dispose d'une flash externe de 2 Mo.
  • chose impressionnante, sur les 26 broches GPIO de la Raspberry pi pico classique (donc hors masse, RUN et alimentations 5V et 3.3V), nous en retrouvons 25 sur la version zéro ! Et encore, la broche manquante est utilisée pour alimenter une diode RGB !
  • on retrouve donc les fonctionnalités habituelles : 2 contrôleurs SPI (bus de données série synchnone), 2 I2C (bus de données synchrone aussi), 2 UART (pour les communications série), 4 convertisseurs analogiques/numériques 12 bits, mais dont un est dédié au capteur de température interne du microcontrôleur, donc non utilisable pour autre chose, et enfin 16 canaux PWM
  • On retrouve également les 8 machines d'état programmables (PIO) qui ont constitué une grande nouveauté du microcontrôleur lorsqu'il est sorti. À ma connaissance, c'est quelque chose d'unique dans le monde des microcontrôleurs !

Finalement, on retrouve (presque) les mêmes choses sur la version zéro que ce que propose la carte officielle, ce qui en soit est déjà un défi au vu de ses dimensions. Mais on a même un peu plus que ça, car certains défauts de la carte de la fondation RaspBerry Pi ont été corrigés par la même occasion :

  • le connecteur est enfin en USB C. L'argument initial de la fondation pour intégrer un microUSB plutôt que de l'USB C était le prix.
  • il a été également reproché à la fondation de ne pas avoir ajouté de bouton RESET. En effet il faut débrancher et rebrancher la carte chaque fois qu'on veut la réinitialiser, pour téléverser le firmware par exemple. À force, ça fragilise la connectique (ou alors il faut le faire de l'autre côté du câble USB mais dans tous les cas c'est pénible). Une autre solution consiste à utiliser un bouton poussoir externe pour mettre la broche RUN à la masse et ainsi réinitialiser la carte. C'est maintenant corrigé sur cette petite zéro, où on va retrouver le classique bouton BOOT pour redémarrer en mode programmation, mais aussi un bouton RESET pour réinitialiser la carte.
  • on en a déjà parlé plus haut, la carte inclut une led RGB de type WS2812 connectée à la broche GP16. Brillante idée pour le déboguage des programmes, où on peut assigner une couleur différente à chaque état du système. Car en effet, il n'y a pas de broches pour une sonde SWD permettant de déboguer les programmes. D'un autre côté, au vu des dimensions de la carte, ça ne rentrerait vraiment pas !!!

Hormis l'absence de port de déboguage SWD, on note également quelques petits défauts pour cette carte :

  • la carte présente également des trous crénelés (castellated) pour permettre de la souder en surface, mais je ne vois pas comment c'est possible dans la mesure où il y a des composants sur la face inférieure. Là, je n'ai pas bien compris
  • le nombre de broches est très important, mais 9 GPIO (et une masse) sont disponibles par des points de soudure sur le dessous de la carte, pas très facile de venir soudes des choses ici. La miniaturisation a ses limites.

Qu'y a-t-il sur la carte ?

  1. connecteur USB C
  2. mémoire flash de 2 Mo (W25Q16JVUXIQ)
  3. bouton BOOT. Lorsqu'on presse ce bouton et que l'on réinitialise la carte, on entre alors en mode téléversement (pour y déposer un nouveau firmware)
  4. bouton RESET. Permet de réinitialiser la carte (pour relancer le programme, ou entrer en mode téléversement)
  5. led RGB WS2812 utilisable (entre autre) pour le déboguage
  6. régulateur à faible chute de tension ME621 (courant maximum 800 mA) pour alimenter le microcontrôleur RP2040
  7. microcontrôleur RP2040 : le (double) cœur du système, cadencé à 133 MHz
  8. points de soudure pour 9 broches GPIO et une masse

Brochage (pinout)

Le brochage est disponible sur le site de waveshare. Je vous remets ici l'image.

En conclusion

Une belle carte que cette Raspberry pi pico zéro, avec toute la puissance d'une Raspberry pi pico classique, dans un format ultraréduit ! J'aime particulièrement l'ajout du connecteur USB C et du bouton RESET, qui manquent à la version originale. La LED RGB pour le déboguage est une excellente idée, et fait oublier qu'il n'y a pas de port SWD.

Au final, une carte très intéressante. Il n'y a plus qu'à !