Utilisation du MPU-6050 avec le Raspberry Pi

Using the MPU-6050 with the Raspberry Pi

Le MPU-6050 est un dispositif de suivi de mouvement à 6 axes avec un gyroscope et un accéléromètre, ce qui le rend idéal pour les applications de détection de mouvement comme la robotique, les drones et les projets IoT. Dans ce guide, vous apprendrez à connecter et à utiliser le MPU-6050 avec un Raspberry Pi pour capturer les données de mouvement et d'orientation.


Ce dont vous aurez besoin

  1. Raspberry Pi (Tout modèle avec le support GPIO, par ex., PI 3, PI 4)
  2. Module MPU-6050
  3. Fils de planche à pain et de cavalier
  4. Un ordinateur avec un accès SSH au Raspberry Pi ou un clavier et un moniteur connectés
  5. Python installé sur le Raspberry Pi

Étape 1: Câblage du MPU-6050 au Raspberry Pi

Le MPU-6050 communique avec le Raspberry Pi à l'aide du protocole I2C.

Relations

Pin MPU-6050 Pin de framboise PI
VCC 3.3V (broche 1)
GND Terre (broche 6)
SDA SDA (broche 3, gpio2)
SCL SCL (broche 5, gpio3)

Note: Assurez-vous que le module MPU-6050 fonctionne à 3,3 V. La plupart des modules incluent un régulateur de tension, ce qui leur permet d'être alimenté avec 5V.


Étape 2: Activez l'interface I2C sur le Raspberry Pi

  1. Ouvrez l'outil de configuration Raspberry Pi:
    sudo raspi-config
    
  2. Se diriger vers Options d'interface> I2C et l'activer.
  3. Redémarrez le Raspberry Pi:
    sudo reboot
    

Étape 3: Installez les outils et les bibliothèques requises

  1. Mettez à jour votre Raspberry Pi:
    sudo apt update && sudo apt upgrade -y
    
  2. Installez les outils I2C:
    sudo apt install -y i2c-tools
    
  3. Installez les bibliothèques Python pour la communication I2C et le traitement des données:
    pip install smbus2
    

Étape 4: Vérifiez la connexion

  1. Utiliser i2cdetect Pour vérifier que le MPU-6050 est détecté dans le bus I2C:
    sudo i2cdetect -y 1
    
  2. Vous devriez voir le MPU-6050 à l'adresse 0x68 (ou 0x69 Si la broche AD0 est tirée haut). Sinon:
    • Vérifiez votre câblage.
    • Assurez-vous que le MPU-6050 est alimenté.

Étape 5: Lire les données du MPU-6050

Le script Python suivant lit les données d'accéléromètre et de gyroscope du MPU-6050.

Exemple de code python

import smbus2
import time

# MPU-6050 Registers and Address
MPU6050_ADDR = 0x68
PWR_MGMT_1 = 0x6B
ACCEL_XOUT_H = 0x3B
GYRO_XOUT_H = 0x43

# Initialize I2C bus
bus = smbus2.SMBus(1)

# Wake up the MPU-6050
bus.write_byte_data(MPU6050_ADDR, PWR_MGMT_1, 0)

def read_raw_data(addr):
    # Read two bytes of data from the given address
    high = bus.read_byte_data(MPU6050_ADDR, addr)
    low = bus.read_byte_data(MPU6050_ADDR, addr+1)
    value = (high << 8) | low
    # Convert to signed value
    if value > 32767:
        value -= 65536
    return value

try:
    while True:
        # Read accelerometer data
        accel_x = read_raw_data(ACCEL_XOUT_H)
        accel_y = read_raw_data(ACCEL_XOUT_H + 2)
        accel_z = read_raw_data(ACCEL_XOUT_H + 4)

        # Read gyroscope data
        gyro_x = read_raw_data(GYRO_XOUT_H)
        gyro_y = read_raw_data(GYRO_XOUT_H + 2)
        gyro_z = read_raw_data(GYRO_XOUT_H + 4)

        # Convert raw data to meaningful values (optional scaling may be needed)
        accel_x_scaled = accel_x / 16384.0
        accel_y_scaled = accel_y / 16384.0
        accel_z_scaled = accel_z / 16384.0

        gyro_x_scaled = gyro_x / 131.0
        gyro_y_scaled = gyro_y / 131.0
        gyro_z_scaled = gyro_z / 131.0

        print(f"Accelerometer: X={accel_x_scaled:.2f}, Y={accel_y_scaled:.2f}, Z={accel_z_scaled:.2f}")
        print(f"Gyroscope: X={gyro_x_scaled:.2f}, Y={gyro_y_scaled:.2f}, Z={gyro_z_scaled:.2f}")

        time.sleep(1)

except KeyboardInterrupt:
    print("Exiting...")

Étape 6: Applications du MPU-6050

  1. Suivi du mouvement: Suivez le mouvement et l'orientation dans la robotique ou les appareils portables.
  2. Systèmes de stabilisation: Mettez en œuvre la stabilisation gyroscopique pour les drones ou les cardans.
  3. Jeux: Créer des contrôleurs de jeu basés sur un mouvement.
  4. Projets IoT: Utilisez des données de mouvement pour déclencher des événements d'automatisation.

Dépannage

  1. Dispositif non détecté:

    • Vérifiez les connexions SDA et SCL.
    • Assurez-vous que l'interface I2C est activée sur le Raspberry Pi.
    • Vérifiez l'alimentation du MPU-6050.
  2. Lectures inexactes:

    • Calibrez le capteur en implémentant un décalage pour chaque axe.
    • Assurez-vous que le capteur est placé sur une surface stable.
  3. Erreurs I2C:

    • Assurez-vous qu'il n'y a pas d'appareils contradictoires sur le bus I2C.

Conclusion

Le MPU-6050 est un capteur de mouvement polyvalent qui peut ajouter des capacités de suivi de mouvement précises à vos projets Raspberry Pi. En suivant ce guide, vous pouvez configurer et utiliser le MPU-6050 pour des applications telles que la robotique, les systèmes de stabilisation et l'automatisation IoT. Expérimentez la mise à l'échelle et le filtrage des données pour affiner le capteur de vos besoins!

Laissez un commentaire

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.