Outils pour utilisateurs

Outils du site


informatique:projets:python-mpu6050

Python MPU6050

python-mpu6050 est une classe d'abstraction permettant de communiquer avec un MPU6050 via le bus i2c.

Ce circuit est un accéléromètre/gyroscope 6 axes fabriqué par TDK InvenSense.

MPU6050 Datasheet

Documentation

L'ensemble du code est commenté de manière suffisamment explicite, nous reprendrons juste ici les principales méthodes ainsi que le résultat fourni.

NOTA : Le code est compatible PyDOC, un simple 'help(mpu6050.mpu6050)' devrait permettre d'avoir un minimum d'informations sur la syntaxe.

GetAccelerometerValues

Lis les registres d'accéléromètres et renvoie un tuple contenant les valeurs X, Y, Z (exprimé en g). Si le paramètre 'rotation=True' est activé, le tuple contiendra deux valeurs en plus :

  • rotation x (exprimé en degrés décimaux)
  • rotation y (exprimé en degrés décimaux)

(la méthode permettant de calculer cette rotation est inspirée de cet article http://www.hobbytronics.co.uk/accelerometer-info)

Paramètres :

  • rotation :
    Booléen permettant d'activer ou non le renvoi des valeurs de rotation du circuit
Exemple
import mpu6050
 
chip = mpu6050.mpu6050(address=0x68, bus=1, debug=True)
x, y, z, rotx, roty = chip.GetAccelerometerValues(rotation=True)
 
>> [DEBUG] Accessing MPU6050 at address 0x68 on bus 1
>> [DEBUG] Reading Accel and Gyro config
>> [DEBUG] > Reading 2 bytes from register 0x1b
>> [DEBUG] > MPU6050 response : [0x00 0x00]
>> [DEBUG] > Setting Gyro sensitivity to '250°/s' (131.0 LSB/°/s)
>> [DEBUG] > Setting Accel sensitivity to '2g' (16384.0 LSB/g)
>>
>> [DEBUG] Reading accelerometer registers
>> [DEBUG] > Reading 6 bytes from register 0x3b
>> [DEBUG] > MPU6050 response : [0x00 0xA0 0xFF 0x58 0x3A 0x08]
>> [DEBUG] MPU6050 accelerometer response :
>> [DEBUG] > Accel X = 0.009765625g
>> [DEBUG] > Accel Y = -0.01025390625g
>> [DEBUG] > Accel Z = 0.90673828125g
>> [DEBUG] > Rotation X = 0.617015632991°
>> [DEBUG] > Rotation Y = -0.647867698234°

GetFIFOStatus

Renvoi le nombre d'entrées se trouvant actuellement dans le buffer FIFO du MCU6050. Ce buffer est utilisé lors de la communication avec d'autres capteurs sur le bus i2c secondaire géré par le MCU6050.

Exemple
import mpu6050
 
chip = mpu6050.mpu6050(address=0x68, bus=1, debug=True)
chip.GetFIFOStatus()
 
>> [DEBUG] Accessing MPU6050 at address 0x68 on bus 1
>> [DEBUG] Reading Accel and Gyro config
>> [DEBUG] > Reading 2 bytes from register 0x1b
>> [DEBUG] > MPU6050 response : [0x00 0x00]
>> [DEBUG] > Setting Gyro sensitivity to '250°/s' (131.0 LSB/°/s)
>> [DEBUG] > Setting Accel sensitivity to '2g' (16384.0 LSB/g)
>>
>> [DEBUG] Reading FIFO count registers
>> [DEBUG] > Reading 2 bytes from register 0x72
>> [DEBUG] > MPU6050 response : [0x00 0x00]
>> [DEBUG] FIFO buffer contains 0 records

GetGyroscopeValues

Lis les registres du gyroscope et renvoi un tuple contenant l'accélération sur les 3 angles en degrés par secondes (en tenant compte des registres de calibration du MPU6050).

Exemple
import mpu6050
 
chip = mpu6050.mpu6050(address=0x68, bus=1, debug=True)
x, y, z = chip.GetGyroscopeValues()
 
>> [DEBUG] Accessing MPU6050 at address 0x68 on bus 1
>> [DEBUG] Reading Accel and Gyro config
>> [DEBUG] > Reading 2 bytes from register 0x1b
>> [DEBUG] > MPU6050 response : [0x00 0x00]
>> [DEBUG] > Setting Gyro sensitivity to '250°/s' (131.0 LSB/°/s)
>> [DEBUG] > Setting Accel sensitivity to '2g' (16384.0 LSB/g)
>>
>> [DEBUG] Reading gyroscope registers
>> [DEBUG] > Reading 6 bytes from register 0x43
>> [DEBUG] > MPU6050 response : [0x00 0x39 0x01 0x5F 0xFF 0xE0]
>> [DEBUG] MPU6050 gyroscope response :
>> [DEBUG] > X = 0.435114503817°/s
>> [DEBUG] > Y = 2.67938931298°/s
>> [DEBUG] > Z = -0.24427480916°/s

GetTemperature

Renvoie la température relevée par la sonde interne du MPU6050.

Exemple
import mpu6050
 
chip = mpu6050.mpu6050(address=0x68, bus=1, debug=True)
temp = chip.GetTemperature()
 
>> [DEBUG] Accessing MPU6050 at address 0x68 on bus 1
>> [DEBUG] Reading Accel and Gyro config
>> [DEBUG] > Reading 2 bytes from register 0x1b
>> [DEBUG] > MPU6050 response : [0x00 0x00]
>> [DEBUG] > Setting Gyro sensitivity to '250°/s' (131.0 LSB/°/s)
>> [DEBUG] > Setting Accel sensitivity to '2g' (16384.0 LSB/g)
>>
>> [DEBUG] Reading sensor temperature
>> [DEBUG] > Reading 2 bytes from register 0x41
>> [DEBUG] > MPU6050 response : [0xEF 0x60]
>> [DEBUG] Returned temperature is 24.01°C

WhoAmI

Renvoie la valeur du registre 'WHO_AM_I' du MPU6050. Ce registre contient l'adresse i2c du circuit.

Exemple
import mpu6050
 
chip = mpu6050.mpu6050(address=0x68, bus=1, debug=True)
add = chip.WhoAmI()
 
>> [DEBUG] Accessing MPU6050 at address 0x68 on bus 1
>> [DEBUG] Reading Accel and Gyro config
>> [DEBUG] > Reading 2 bytes from register 0x1b
>> [DEBUG] > MPU6050 response : [0x00 0x00]
>> [DEBUG] > Setting Gyro sensitivity to '250°/s' (131.0 LSB/°/s)
>> [DEBUG] > Setting Accel sensitivity to '2g' (16384.0 LSB/g)
>> 
>> [DEBUG] Reading WHO_AM_I register
>> [DEBUG] > Reading 1 bytes from register 0x75
>> [DEBUG] > MPU6050 response : [0x68]

Téléchargement

Pour le moment python-mpu6050 est distribué sous forme d'un paquet Debian.

Changelog

informatique/projets/python-mpu6050.txt · Dernière modification : 2022/11/27 17:27 de lestat

Outils de la page