- Composants requis:
- Capteur gyroscopique MPU6050:
- La description:
- Schéma de circuit et explication:
- Configuration du Raspberry Pi pour le capteur Gyro MPU6050:
- Explication de la programmation:
Le capteur MPU6050 a de nombreuses fonctions sur une seule puce. Il se compose d'un accéléromètre MEMS, d'un gyroscope MEMS et d'un capteur de température. Ce module est très précis lors de la conversion des valeurs analogiques en numérique car il dispose d'un convertisseur analogique-numérique 16 bits pour chaque canal. Ce module est capable de capturer les canaux x, y et z en même temps. Il dispose d'une interface I2C pour communiquer avec le contrôleur hôte. Ce module MPU6050 est une puce compacte ayant à la fois un accéléromètre et un gyroscope. C'est un appareil très utile pour de nombreuses applications comme les drones, les robots, les capteurs de mouvement. Il est également appelé accéléromètre gyroscope ou triple axe.
Aujourd'hui, dans cet article, nous allons interfacer ce MPU6050 avec Raspberry Pi et afficher les valeurs sur un écran LCD 16x2.
Composants requis:
- Tarte aux framboises
- MPU-6050
- POT 10K
- Cavalier
- Planche à pain
- Source de courant
Capteur gyroscopique MPU6050:
Le MPU-6050 est un gyroscope et accéléromètre à 8 broches et 6 axes dans une seule puce. Ce module fonctionne sur la communication série I2C par défaut mais il peut être configuré pour l'interface SPI en configurant son registre. Pour I2C, cela a des lignes SDA et SCL. Presque toutes les broches sont multifonctionnelles mais ici nous ne procédons qu'avec des broches de mode I2C.
Configuration des broches:
Vcc: - cette broche est utilisée pour alimenter le module MPU6050 par rapport à la terre
GND: - c'est une broche de masse
SDA: - La broche SDA est utilisée pour les données entre le contrôleur et le module mpu6050
SCL: - La broche SCL est utilisée pour l'entrée d'horloge
XDA: - Il s'agit de la ligne de données du capteur I2C SDA pour la configuration et la lecture à partir de capteurs externes ((optionnel) non utilisé dans notre cas)
XCL: - Il s'agit de la ligne d'horloge du capteur I2C SCL pour la configuration et la lecture à partir de capteurs externes ((optionnel) non utilisé dans notre cas)
ADO: - I2C Slave Address LSB (non applicable dans notre cas)
INT: - Broche d'interruption pour l'indication de données prêtes.
Nous avons précédemment interfacé MPU6050 avec Arduino.
La description:
Dans cet article, nous affichons les lectures de température, de gyroscope et d'accéléromètre sur un écran LCD à l' aide du MPU6050 avec Raspberry Pi. Si vous êtes nouveau sur Raspberry Pi, parcourez notre section tutoriels Raspberry Pi et apprenez à démarrer avec Raspberry Pi.
Dans ce projet, nous avons d'abord montré la valeur de la température sur l'écran LCD et après un certain temps, nous montrons les valeurs du gyroscope, puis après un certain temps, nous avons des lectures d'accéléromètre comme indiqué dans les images ci-dessous:
Schéma de circuit et explication:
Le schéma de circuit, pour interfacer MPU6050 avec Raspberry Pi, est très simple ici nous avons utilisé un LCD et MPU6050. Un pot de 10k est utilisé pour contrôler la luminosité de l'écran LCD. En relation avec le MPU6050, nous avons effectué 4 connexions dans lesquelles nous avons connecté l'alimentation 3.3v et la masse du MPU6050 au 3.3v et à la masse du Raspberry Pi. Les broches SCL et SDA du MPU6050 sont connectées aux broches physiques 3 (GPIO2) et 5 (GPIO3) de Raspberry. Les écrans LCD RS, RW et EN sont directement connectés au GPIO18 et au 23 du Raspberry Pi. La broche de données est directement connectée au numéro de broche numérique GPIO24, GPIO25, GPIO8 et GPIO7. En savoir plus sur l'interface LCD avec Raspberry Pi ici.
Configuration du Raspberry Pi pour le capteur Gyro MPU6050:
Avant de commencer la programmation, nous devons activer i2c de Raspberry Pi en utilisant la méthode donnée:
Étape 1: activer la communication I2C
Avant d'installer la bibliothèque Adafruit SSD1306, nous devons activer la communication I2C dans Raspberry Pi.
Pour faire ce type dans la console Raspberry Pi:
sudo Raspi -config
Et puis un écran bleu apparaîtra. Sélectionnez maintenant l'option d'interface
Après cela, nous devons sélectionner I2C
Après cela, nous devons sélectionner oui et appuyer sur Entrée, puis ok
Après cela, nous devons redémarrer raspberry pi en exécutant la commande ci-dessous:
redémarrage de sodo
Étape 2: Installez python-pip et la bibliothèque GPIO
sudo apt-get install build-essential python-dev python-pip
Après cela, nous devons installer la bibliothèque GPIO Raspberry Pi
sudo pip installe RPi.GPIO
Étape 3: Installez la bibliothèque smbus
Enfin, nous devons installer la bibliothèque smbus dans Raspberry Pi en utilisant la commande donnée:
sudo apt-get install python-smbus
Étape 4: Installez la bibliothèque MPU6050
Après cela, nous devons installer la bibliothèque MPU6050 en utilisant la commande donnée
sudo pip installer mpu6050
Nous pouvons maintenant trouver des exemples de codes dans les exemples. L'utilisateur peut tester ce code en le téléchargeant directement sur le Raspberry Pi ou en le personnalisant selon les besoins. Ici, nous avons affiché les valeurs des axes X, Y et Z du MPU6050 sur un écran LCD 16x2. Vous pouvez trouver le code Python complet à la fin du didacticiel.
Explication de la programmation:
Le code Python complet est donné à la fin ici, nous expliquons quelques parties importantes du code.
Dans le programme Python, nous avons importé une bibliothèque requise comme time, smbus et GPIO.
import smbus importation heure importation RPi.GPIO comme gpio
Après cela, nous devons prendre une adresse de registre pour configurer le MPU6050 et obtenir des valeurs de celui-ci. Nous avons également pris quelques variables pour calibrer et initialiser le bus pour I2C.
PWR_M = 0x6B DIV = 0x19 CONFIG = 0x1A GYRO_CONFIG = 0x1B INT_EN = 0x38 ACCEL_X = 0x3B ACCEL_Y = 0x3D ACCEL_Z = 0x3F GYRO_X = 0x43 GYRO_Y = 0x45 GYRO_Z = 0x47 TEMP = 0x41 Adresse du bus = 0x41 Adresse du périphérique 0x68 AxCal = 0 AyCal = 0 AzCal = 0 GxCal = 0 GyCal = 0 GzCal = 0
Ensuite, nous avons écrit quelques fonctions pour conduire 16x2LCD comme commencer def (), def cmd (ch), écriture def (ch), def impression (str), def clear () etc . Vous pouvez également vérifier l'interfaçage de l'écran LCD avec Raspberry Pi.
Après cela, nous devons initialiser le module MPU6050
def InitMPU (): bus.write_byte_data (Device_Address, DIV, 7) bus.write_byte_data (Device_Address, PWR_M, 1) bus.write_byte_data (Device_Address, CONFIG, 0) bus.write_byte_data (Device_Address, GYRO_CON_Data_data (Device_Address, GYRO_CONFIG), INT_EN, 1) temps.leep (1)
Après cela, nous devons écrire certaines fonctions pour lire les valeurs du MPU6050 et les afficher sur l'écran LCD. La fonction donnée est utilisée pour lire les données du MPU6050
def readMPU (addr): high = bus.read_byte_data (Device_Address, addr) low = bus.read_byte_data (Device_Address, addr + 1) value = ((high << 8) - low) if (value> 32768): value = valeur - 65536 valeur de retour
La fonction donnée est utilisée pour lire les données de l' accéléromètre et du gyromètre
def accel (): x = readMPU (ACCEL_X) y = readMPU (ACCEL_Y) z = readMPU (ACCEL_Z) Ax = (x / 16384.0-AxCal) Ay = (y / 16384.0-AyCal) Az = (z / 16384.0-AzCal) #print "X =" + str (Ax) display (Ax, Ay, Az) time.sleep (.01) def gyro (): global GxCal global GyCal global GzCal x = readMPU (GYRO_X) y = readMPU (GYRO_Y) z = readMPU (GYRO_Z) Gx = x / 131.0 - GxCal Gy = y / 131.0 - GyCal Gz = z / 131.0 - GzCal #print "X =" + str (Gx) affichage (Gx, Gy, Gz) time.leep (. 01)
Après cela, nous avons écrit une fonction de lecture de température
def temp (): tempRow = readMPU (TEMP) tempC = (tempRow / 340.0) + 36.53 tempC = "%. 2f"% tempC print tempC setCursor (0,0) Print ("Temp:") Print (str (tempC)) time.sleep (.2)
La fonction def calibrate () est utilisée pour calibrer le MPU6050 et la fonction def display () est utilisée pour afficher les valeurs sur l'écran LCD. Vérifiez ces fonctions dans le code complet ci-dessous.
Après cela, nous avons commencé à l'écran LCD, initialize et étalonner le MPU6050 puis dans tout boucle, nous avons appelé tous les trois ensemble de valeurs de MPU- température, accéléromètre et gyroscope et leur a montré sur LCD.
commencer(); Print ("MPU6050 Interface") setCursor (0,1) Print ("Circuit Digest") time.sleep (2) InitMPU () calibrate () while 1: InitMPU () clear () for i in range (20): temp () clear () Print ("Accel") time.sleep (1) for i in range (30): accel () clear () Print ("Gyro") time.sleep (1) for i in range (30): gyro ()
Le gyroscope et l'accéléromètre MPU6050 sont tous deux utilisés pour détecter la position et l'orientation de n'importe quel appareil. Gyro utilise la gravité terrestre pour déterminer les positions des axes x, y et z et l'accéléromètre détecte en fonction du taux de changement de mouvement. Nous avons déjà utilisé l'accéléromètre avec Arduino dans plusieurs de nos projets comme:
- Robot contrôlé par geste de la main basé sur un accéléromètre
- Système d'alerte d'accident de véhicule basé sur Arduino
- Alarme de détecteur de tremblement de terre utilisant Arduino