MicroMod RP2040 : introduction à l'écosystème MicroMod sous MicroPython

Bonjour à tous,

Préambule

Cela faisait un moment que je voulais me pencher sur l'écosystème MicroMod de SparkFun

Je profite de l'occasion de la sortie de la carte Processeur MicroMod RP2040, donc compatible MicroPython, pour étudier la gamme et quelques interfaces.

A ma demande, Sparkfun a envoyé du matériel d'évaluation pour inspecter l'écosystème MicroMod et la connectique Qwiic dont SparkFun est l'inventeur.
Il y aura donc une série d'article autour du MicroMod RP2040.

Qu'est ce que MicroMod ?

MicroMod est une interface pour un écosystème modulaire qui permet de connecter un microcontrôleur la "carte processeur" (processor board) sur différentes cartes de support de périphériques (dite carrier board).

Processeur MicroMod RP2040

Carte périphérique ATP (carrier board)
permet d'accéder à toutes les broches du connecteur M.2

L'écosystème MicroMod est conçu autour du connecteur standard M.2 (src: wikipedia) rendu populaire par les disques SSD. 

Connecteur M.2 (TE Connectivity)

Ce connecteur 75 broches, avec détrompeur, permet d'échanger facilement le processeur sur la carte périphérique. Sparkfun a normalisé l'emplacement des différents bus, interfaces, GPIO, alimentation sur le connecteur M.2, ce qui rend les modules processeurs facilement interchangeables en cours de prototypage.

Vous pouvez choisir le processeur le mieux adapté à votre projet et la carte périphérique sélectionnée.

Carrier board:
unité matérielle qui complète un module de traitement CoM (Computer on Module). La combinaison des deux éléments est souvent appelée Single Board Computer (SBC). 

MicroMod function module:
Plus récemment, la gamme s'est étendue avec les modules de fonction (Function Module) mais cela sort du cadre des présents articles.

Interface MicroMod

Avant de s'attarder sur le processeur MicroMod-RP2040 et la carte périphérique sélectionnée, je ne résiste pas à faire un petit tour de l'interface MicroMod sur le connecteur M.2.
Dans les meilleurs configurations, ce connecteur de 75 broches permet de communiquer un maximum de 49 GPIOs du processeur (processor board) vers la carte Périphérique (carrier board).


Comme l'indique le schéma ci-dessus, MicroMod prend en charge les signaux/bus:

  • Audio
  • UART
  • GPIO / BUS (comme USB et USB_HOST)
  • I2C
  • SPI
  • SDIO (carte SD)
  • Dedicated, les signaux minimum prédéfinit sur toutes les processor boards incluant:
    • 2x Analogique
    • 2x PWM
    • 2x GPIO numériques

Il est possible d'obtenir une information détaillée des broches MicroMod sur cette page de SparkFun.

La carte processeur MicroMod-RP2040

Le MicroMod-RP2040 utilise le microcontrôleur double coeur RP2040 développé par la fondation Raspberry-Pi pour sa carte Raspberry-Pi Pico.

Quelques détails du processeur MicroMod-RP2040 de SparkFun

On y retrouve les spécifications suivantes:

  • Double coeur ARM Cortex-M0+ à 133MHz
  • 264KB de mémoire SRAM réparti dans 6 banques
  • Mémoire Flash externe (via QSPI) de 16 MB, de quoi stocker énormément de ressources
  • 30 broches GPIOs multi-fonction:
    • Support matériel spécifique pour les périphériques les plus utilisés.
    • Entrées/Sorties programmables (PIO) fonctionnant indépendamment deux deux coeurs.
    • 4 canaux ADC 12-bits et capteur de température interne
  • Fonction USB 1.1 Client (programmation) et USB Hôte (pour connecter des périphériques USB sur le Pico)
  • Supports MicroPython (firmware natif)
  • Support C/C++
  • Interface SWD: permettant le débogage rapide et facile.
  • Une LED de statut

La carte périphérique Machine Learning

Côté Carrier Board, c'est la carte "Machine Learning" qui fera l'objet de notre attention. Cette carte offre de nombreuses interfaces périphériques intéressantes pour effectuer de multiples explorations de l'écosystème MicroMod

MicroMod Machine Learning Carrier Board (SparkFun)
Cliquer pour agrandir
 

Cette carte propose les fonctionnalités suivantes:

  • 2 microphones MEMS: un micro PDM activé par défaut, un micro I2S en option sélectionnable via un cavalier)
  • Un accéléromètre 3 axes LIS2DH12
  • Un connecteur USB-C pour la programmation
  • Un connecteur Micro-SD (exploitant l'interface SPI)
  • Un connecteur Caméra (avec 8 lignes de données)
  • Un connecteur Qwiic (compatible StemmaQT) transportant un bus I2C et permettant de faire du prototypage rapide.
  • Plusieurs connecteurs breakout pour les bus principaux (I2C, SPI)
  • Un breakout des Dedicated pins : 2x signaux PWM, 2x entrées analogiques, 2x broches GPIOs disponibles sur toutes les cartes processeurs. 

Des modules Qwiic

Cette découverte ne serait pas complète si l'on n'utilisait pas de modules Qwiic avec cette découverte MicroMod.

L'interface Qwiic utilise des fiches JST-SH 4 broches pour transporter un bus I2C (SDA, SCL) ainsi qu'une alimentation 3.3V+GND.

Source: les connecteurs DIY

Ce qu'il y a de vraiment génial avec le bus I2C c'est qu'il est possible de chaîner plusieurs modules sur un seul bus (pour autant qu'ils aient chacun une adresse différente).

Cette interface est vraiment très pratique pour faire du prototypage rapide. Elle est par ailleurs récupérée par Adafruit Industries sous le nom StemmaQT qui utilise le même connecteur et même brochage (mais une alimentation 5V).

Voici les quelques modules que nous allons utiliser pour faire nos exploration. Ce sera l'occasion de préparer de nouveaux pilotes MicroPython s'ils n'existent pas encore.

Modules I2C SparkFun à interface Qwiic

Aucun commentaire