MicroMod RP2040: premier contact MicroPython

Rebonjour à tous,

Après la présentation de l'écosystème MicroMod, il est temps de passer au choses sérieuses.

Premier Branchement

Avec le processeur MicroMod-RP2040 placé sur la carte périphérique (Carrier Board) Machine Learning, il est temps de brancher l'ensemble sur notre ordinateur via la prise USB-C.

La première chose que l'on constate c'est le clignotement de la LED statut bleue (sur la carte MicroMod-RP2040). Il y a donc déjà un programme en cours de fonctionnement sur la carte.

Le pression sur le bouton Reset arrête le fonctionnement du programme et celui-ci redémarre dès que le bouton Reset est relâché.

Pas de MicroPython sur la MicroMod-RP2040: 

Sous MicroPython, le branchement de la carte sur le port USB provoque l'ouverture d'un port série via USB... ce qui n'est pas le cas de cette carte.

MicroPython n'est donc pas flashé sur le Module-RP2040. Il faudra donc le faire par nous même.

C'est donc un programme en C qui fonctionne actuellement sur le module RP2040.

Télécharger MicroPython

Le firmware MicroPython pour le microcontrôleurs RP2040 est disponible sur le site MicroPython.org . Celui-ci devrait donc être compatible avec le MicroMod-RP2040.

Comme il n'existe pas de version spécifique de MicroPython pour le MicroMod-RP2040, nous allons simplement télécharger le firmware MicroPython pour Raspberry-Pico (donc pour le processeur RP2040).

Rendez-vous sur MicroPython.org puis sélectionnez l'entrée Download.
Dans les options de filtrages, sélectionnez l'entrée du portage correspondant à RP2.

Sélectionner les firmwares MicroPython pour RP2040

Voici à quoi ressemble la page de téléchargement une fois le port rp2 sélectionné.


Faire défiler les plateformes jusqu'à la plateforme Pico. 

Sélectionner la plateforme Raspberry-Pi Pico
(Le Pico est la plateforme native du RP2040)

Ensuite, il ne reste plus qu'a cliquer sur le lien de téléchargement du Firmware le plus récent (version 1.17 dans la capture ci-dessous).

Dans le cas des plateformes RP2040, le firmware se présente fous la forme d'un fichier au format UF2.

Télécharger le firmware MicroPython

Une fois le firmware téléchargé, nous allons le charger sur la plateforme MicroMod-RP2040.

Activer le mode Flash/Boot

Pour téléverser le firmware sur le MicroMod-RP2040, il faut mettre le microcontrôleur RP2040 en mode Flash. 

Enfoncez le bouton Boot, puis presser/relacher le bouton Reset et, finalement, relacher le bouton Boot.

Le mode Flash active un lecteur USB sur ma carte MicroPython, ce qui provoque l'apparition d'un nouveau périphérique de stockage RPI-RP2 dans le navigateur de fichiers.

MicroMod-RP2040 en boot mode

Dans ce mode spécial, le MicroContrôleur RP2040 peut être reprogrammé en glissant/déposant un fichier UF2 sur le lecteur. C'est comme cela que le firmware MicroPython sera installé sur le MicroMod-RP2040.

Note:
Sur une machine Linux (Ubuntu + Linux Mint Mate) comme nous l'utilisons, le résultat de la commande dmesg affiche également des informations concernant l'activation du mode Flash.

$ dmesg
...
[2257284.633688] usb 2-3: new full-speed USB device number 74 using xhci_hcd
[2257284.783037] usb 2-3: New USB device found, idVendor=2e8a, idProduct=0003
[2257284.783042] usb 2-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[2257284.783045] usb 2-3: Product: RP2 Boot
[2257284.783048] usb 2-3: Manufacturer: Raspberry Pi
[2257284.783050] usb 2-3: SerialNumber: E0C9125B0D9B
[2257284.784161] usb-storage 2-3:1.0: USB Mass Storage device detected
[2257284.784572] scsi host6: usb-storage 2-3:1.0
[2257285.806542] scsi 6:0:0:0: Direct-Access     RPI      RP2              3    PQ: 0 ANSI: 2
[2257285.807396] sd 6:0:0:0: Attached scsi generic sg2 type 0
[2257285.807513] sd 6:0:0:0: [sdb] 262144 512-byte logical blocks: (134 MB/128 MiB)
[2257285.807897] sd 6:0:0:0: [sdb] Write Protect is off
[2257285.807902] sd 6:0:0:0: [sdb] Mode Sense: 03 00 00 00
[2257285.808212] sd 6:0:0:0: [sdb] No Caching mode page found
[2257285.808221] sd 6:0:0:0: [sdb] Assuming drive cache: write through
[2257285.813805]  sdb: sdb1
[2257285.815195] sd 6:0:0:0: [sdb] Attached SCSI removable disk

On peut y voir l'activation et l'ouverture d'un lecteur Flash de 128 MiB (128 Mega Bit, donc 128/8=16 Mio, 16 Mega octets).

Glisser/déposer le fichier MicroPythonxxxxx.UF2 dans le lecteur et attendre que la plateforme redémarre.
Le lecteur USB disparaît une fois l'opération terminée.

Voilà, MicroPython est flashé sur le module MicroMod-RP2040 .
Au besoin n'hésitez pas à presser le bouton Reset pour effectuer une redémarrage matériel de la plateforme.

Vérifier la présence de MicroPython

Maintenant que MicroPython est en place sur le module MicroMod-RP2040, nous devrions avoir un port USB-Série accessible sur l'interface USB.

Cela peut se vérifier très facilement dans le gestionnaire de périphérique de Windows ou dans les messages kernel sur une machine Linux (grâce à l'utilitaire mesg).

$ dmesg
...
[2262312.494871] usb 2-3: new full-speed USB device number 75 using xhci_hcd
[2262312.648813] usb 2-3: New USB device found, idVendor=2e8a, idProduct=0005
[2262312.648819] usb 2-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[2262312.648821] usb 2-3: Product: Board in FS mode
[2262312.648824] usb 2-3: Manufacturer: MicroPython
[2262312.648826] usb 2-3: SerialNumber: e46030f803473d25
[2262312.649995] cdc_acm 2-3:1.0: ttyACM0: USB ACM device

La dernière ligne identifie un périphérique série (cdc) sur ttyACM0

Nous allons donc pourvoir nous connecter sur la session REPL (ligne de commande MicroPython sur le MicroContrôleur) à l'aide d'un terminal comme Putty (putty.org, multiplateforme).

Configuration du terminal pour accéder
à l'invite de commande MicroPython.

Ce qui affiche un terminal avec l'invite de commande MicroPython ">>>".

Pressez la touche de retour clavier (Return) si l'invite MicroPython n'est pas visible.

Invite de commande MicroPython

En pressant la combinaison de touche CTRL+D, il est possible de réinitialiser la machine virtuelle MicroPython.

Modifier l'état de la LED statut

La LED bleue présente sur le MicroMod-RP2040 est branchée sur le GPIO 25 du microcontrôleur RP2040. 

Il est donc possible de la contrôler à l'aide des instructions suivantes encodées dans la session REPL.

from machine import Pin
led = Pin(25, Pin.OUT)
# allume la LED
led.value( 1 )
# eteind la LED
led.value( 0 )

Bus I2C - connecteur Qwiic

Le connecteur Qwiic (bus I2C) utilise le bus I2C placé sur le connecteur M.2 .
Selon le schéma de Sparkfun (ci-dessous), le bus I2C est placé sur GP4=sda et GP5=scl .

Raccordement du RP2040 sur le MicroMod-RP2040

Selon la documentation du Pico, GP4 & GP5 n'est pas une configuration par défaut du bus I2C (mais un bus I2C placé sur des broches alternative).

Position et fonction par défaut de GP4 et GP5

from machine import I2C, Pin
i2c = I2C( 0, sda=Pin(4), scl=Pin(5) )
i2c.scan()


Voilà... déjà pas si mal pour un premier contact!

Aucun commentaire