- Informatique
- Arduino
- Projets
- Mécanique
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.
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.
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 :
(la méthode permettant de calculer cette rotation est inspirée de cet article http://www.hobbytronics.co.uk/accelerometer-info)
Paramètres :
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°
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.
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
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).
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
Renvoie la température relevée par la sonde interne du MPU6050.
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
Renvoie la valeur du registre 'WHO_AM_I' du MPU6050. Ce registre contient l'adresse i2c du circuit.
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]
Pour le moment python-mpu6050 est distribué sous forme d'un paquet Debian.
Changelog