mercredi 2 mars 2022

Accéléromètre/gyro MPU-6050 et Raspberry Pi Pico (MicroPython)

Le MPU-6050 est une centrale inertielle qui combine un accéléromètre et un gyromètre. On peut s'en servir pour mesurer l'accélération, l'inclinaison et la vitesse angulaire. Dans cet article, nous explorons l'utilisation d'un MPU-6050 avec un Raspberry Pi Pico programmé en MicroPython.


L'accéléromètre permet de connaître l'accélération et/ou le champ gravitationnel selon 3 axes: x, y et z. Les axes x et y sont illustrés sur le module, alors que l'axe z est perpendiculaire au plan du module. Lorsque le module est immobile, à plat sur une table, une accélération de 1 g sera mesurée selon l'axe z, à cause de la force de gravité qui agit vers le bas. Si l'accélération mesurée est nulle selon les 3 axes, c'est que le module MPU-6050 est en chute libre!

Le gyromètre mesure la vitesse angulaire selon les 3 axes. Lorsque le module est immobile, les 3 composantes de la vitesse angulaire sont, en principe, nulles (une calibration est toutefois nécessaire pour que le résultat soit exact).

Connexions

Le module MPU-6050 comporte 8 connecteurs, mais seulement 4 d'entre eux sont nécessaires à son fonctionnement (2 pour l'alimentation, et 2 pour la transmission des données par I2C):

  • Broche VCC du MPU-6050 : Sortie 3,3 V du Raspberry Pi Pico
  • Broche GND du MPU-6050: Broche GND du Raspberry Pi Pico
  • Broche SCL du MPU-6050: Broche GP9 du Raspberry Pi Pico
  • Broche SDA du MPU-6050: Broche GP8 du Raspberry Pi Pico



Installation des pilotes imu.py et vector3d.py

Les bibliothèques nécessaires se trouvent sur le dépôt Github micropython-mpu9x50. Les fichiers "imu.py" et "vector3d.py" doivent être copiés dans la mémoire flash du Raspberry Pi Pico.


Script #1

Ce premier script affiche les mesures issues de l'accéléromètre et du gyromètre. À partir des données de l'accéléromètre, le script tente de déterminer si un des 3 axes (x, y ou z) s'approche de la verticale. À partir des données du gyromètre, le script indique si le module MPU-6050 est en train de tourner.

Exécutez ce script, et orientez le module MPU-6050 de différentes façon pour voir comment varient les valeurs affichées.

-

-


Script #2

Dans ce deuxième exemple, la LED intégrée du Raspberry Pi Pico s'allume lorsqu'on agite le module MPU-6050.

-

-

À lire aussi:


Yves Pelletier (Facebook)

Dans un blog près de chez vous (22)


 Quelques articles intéressants publiés publiés ailleurs au cours des dernières semaines:

RitonDuino

MCHobby

Jelora

Tutoduino

Conceptions et réalisations électroniques (Félix Popineau)


lundi 14 février 2022

Raspberry Pi Pico et nRF24L01 (MicroPython)

Dans cet article, nous établissons une communication sans fil entre deux Raspberry Pi Pico munis d'un module nRF24L01. Les Raspberry Pi Pico seront programmés en MicroPython.


Les modules nRF24L01 sont conçus pour transmettre des informations à une fréquence radio de 2,4 GHz. Chaque module peut émettre et capter des signaux. La portée peut être de quelques dizaines de mètres (j'ai fait mes test avec deux modules distants d'environ 10 mètres et situés dans deux pièces différentes).

Connexions

Je possède deux paires de modules nRF24L01: des modules verts comportant 10 broches clairement identifiées, et des modules noirs comportant 8 broches qui ne comportent aucune identification.

Chaque Raspberry Pi Pico a été branché à un module nRF24L01 de la façon suivante:

  • Broche VCC du nRF24L01 : sortie 3,3 V du Raspberry Pi Pico
  • Broche GND du nRF24L01 : broche GND du Raspberry Pi Pico
  • Broche SCK du nRF24L01 : broche GP6 du Raspberry Pi Pico
  • Broche MOSI du nRF24L01 : broche GP7 du Raspberry Pi Pico
  • Broche MISO du nRF24L01 : broche GP4 du Raspberry Pi Pico
  • Broche IRQ du nRF24L01: pas branchée
  • Broche CE du nRF24L01 : broche GP12 du Raspberry Pi Pico
  • Broche CSN du nRF24L01: broche GP5 du Raspberry Pi Pico
De plus, il est souvent recommandé d'ajouter un condensateur de 10 µF entre les broches GND et VCC du module nRF24L01: c'est une solution à considérer si vous constatez un fonctionnement erratique.


Installation de la bibliothèque nrf24l01.py

Après avoir téléchargé la bibliothèque nrf24l01.py, il est important d'installer le fichier nrf24l01.py dans la mémoire flash du Raspberry Pi Pico (en utilisant, par exemple, le volet "Fichiers" de Thonny).


Cette bibliothèque est accompagnée d'un programme très bien fait intitulé "nrf24l01test.py". Pour l'utiliser avec le Raspberry Pi Pico, vous devrez toutefois modifier les numéros des broches au début du programme.

En me basant sur cet exemple, j'ai produit deux scripts distincts conçus pour être utilisés simultanément sur deux Raspberry Pi Pico différents: un script pour l'émetteur, et un script pour le récepteur.

Script de l'émetteur

Une fois par seconde, ce Raspberry Pi Pico incrémente un nombre entier et le fait émettre par le module nRF24L01. Il vérifie ensuite s'il reçoit une réponse de la part du récepteur.

-

-


Script du récepteur

Si ce Raspberry Pi Pico reçoit un message en provenance de l'émetteur, il calcule le modulo du nombre reçu et retourne le résultat à l'émetteur (il retourne donc le nombre "0" lorsqu'il reçoit un nombre pair, et le nombre "1" lorsqu'il reçoit un nombre impair).

-

-



À lire également:

D'autres projets impliquant le Raspberry Pi Pico:

D'autres projets impliquant le module nRF24L01:


Yves Pelletier (Facebook)