Skip to content

Utiliser une centrale inertielle avec la Raspberry Pi Pico

Intérêt des centrales inertielles

Définition

Les centrales inertielles permettent la mesure de l'accélération (en m/s²) et de la vitesse angulaire (en rad/s) dans les trois axes de l'espace.

On retrouve, entre autres, des centrales inertielles dans les produits du quotidien :

  • Stabilisateur de smartphone (pour acquérir la position de la poignée du stabilisateur)
  • Drône (pour acquérir la position du drône)
  • ...

On se propose ici d'utiliser la centrale inertielle MPU6050.

Cablâge à la Raspberry Pi Pico

Cablâge

Pour utiliser la centrale inertielle MPU6050, il suffit de réaliser quatre connexions comme indiqué ci-dessous :

Image title

  • Rouge : se connecte à VSYS ou sur le 3.3V
  • Noir : broche de masse
  • Jaune et Blanc : connexion aux broches GPIO du Pico pour établir une communication basée sur le protocole I2C.

Notez qu'il existe plusieurs GPIO sur l'appareil (ici j'ai choisi 0 et 1) mais on peut en choisir d'autres.

Qu'est-ce que I2C ?

Liaison numérique I2C

L'I2C (Inter-Integrated Circuit) est un protocole de communication qui permet à plusieurs appareils de communiquer entre eux via un bus à deux fils.

Il est couramment utilisé dans les appareils électroniques pour communiquer entre les circuits intégrés (CI) sur la même carte.

Fils utilisés par le bus I2C

Les deux fils d'un bus I2C sont les lignes SDA (données) et SCL (horloge).

La ligne SDA transporte les données, tandis que la ligne SCL est utilisée pour synchroniser le transfert de données.

Dans I2C, un appareil agit comme maître et contrôle l'horloge, tandis que les autres appareils agissent comme esclaves.

L'appareil maître initie la communication et génère le signal d'horloge, tandis que les appareils esclaves répondent aux demandes du maître.

Le protocole I2C est largement utilisé en raison de sa simplicité, de son faible nombre de broches et de sa capacité multi-maîtres.

Application du bus I2C

Il est utilisé dans de nombreuses applications telles que les capteurs, les mémoires, les convertisseurs analogique / numérique et les écrans LCD ou OLED.

I2C est un protocole de communication largement utilisé et pris en charge par la plupart des microcontrôleurs y compris le Raspberry Pi Pico.

Exercice 7.1

Enregistrer ces modules dans le répertoire /lib sur la Raspberry Pi Pico :

Exercice 7.2

Enregistrer le code suivant dans n’importe quel script sur votre appareil :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
    from machine import Pin, I2C
    from imu import MPU6050
    from time import sleep

    i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
    imu = MPU6050(i2c)

    while True:
        ax=round(imu.accel.x, 2)
        ay=round(imu.accel.y, 2)
        az=round(imu.accel.z, 2)
        gx=round(imu.gyro.x)
        gy=round(imu.gyro.y)
        gz=round(imu.gyro.z)
        print("ax :", ax)
        print("ay :", ay)
        print("az :", az)
        print("gx :", gx)
        print("gy :", gy)
        print("gz :", gz)
        sleep(0.2) 

Ce script :

  • instancie un objet i2c via le module MPU6050
  • extrait les valeurs dans une boucle while toutes les 0.2 secondes.

Exécuter le programme précédent.