Utilisation du capteur MPU6050 en MicroPython
Je viens d’ajouter un nouveau capteur à ma platine de test NodeMCU Lolin, à savoir le MPU6050 qui contient un gyroscope et un accélérateur. Afin de pouvoir l’utiliser j’ai écrit une librairie en MicroPython qui est accessible à l’adresse https://github.com/itechnofrance/micropython/tree/master/librairies/mpu6050
Autant vous dire que j’ai passé beaucoup de temps pour comprendre le fonctionnement de ce capteur mais j’ai fini par y arriver.
Les fonctions de la librairie sont les suivantes :
– fonction detect() qui permet de détecter le capteur sur le bus I2C.
– fonction reset() qui permet d’initialiser le capteur.
– fonction config() qui permet de configurer le capteur.
– fonction lecture_capteur() qui permet de lire le gyroscope, l’accéléromètre et la température.
– les fonctions temp(), acc() et gyro() qui vous donnent les valeurs en brut.
– la fonction angle() qui permet de récupérer les angles X et Y.
Un premier programme exemple permet de récupérer les différentes valeurs et de les afficher sur l’écran OLED dont voici le contenu :
#
# Programme d’utilisation de la librairie MPU6050
#
# Auteur : iTechnoFrance
#
from machine import I2C, Pin
import ssd1306
import mpu6050
import time
# Declaration I2C
# // D1 -> GPIO05 –> SDA
# // D2 -> GPIO04 –> SCL
i2c = I2C(scl=Pin(4), sda=Pin(5), freq=400000)
# Declaration OLED SSD1306
oled = ssd1306.SSD1306_I2C(128, 64, i2c, 0x3c) # 128 x 64 pixels
oled.fill(0) # efface l’ecran
oled.text(« Calibr. MPU6050 », 0, 0)
oled.show()
mpu_6050 = mpu6050.MPU6050(i2c) # declaration mpu6050
oled.text(« Adresse : », 0, 10)
oled.text(hex(mpu_6050.adresse), 80, 10)
mpu_6050.lecture_capteurs()
oled.text(« Temp : », 0, 20)
oled.text(« %2.1f » % mpu_6050.temperature, 80, 20)
oled.show()
time.sleep(10)
if (mpu_6050.detect()):
while True:
oled.fill(0) # efface l’ecran
mpu_6050.lecture_capteurs()
oled.text(« GX: », 0, 0)
oled.text(« %i » % mpu_6050.gyroX, 30, 0)
oled.text(« %i » % mpu_6050.gyroX_calibre, 80, 0)
oled.text(« GY: », 0, 10)
oled.text(« %i » % mpu_6050.gyroY, 30, 10)
oled.text(« %i » % mpu_6050.gyroY_calibre, 80, 10)
oled.text(« GZ: », 0, 20)
oled.text(« %i » % mpu_6050.gyroZ, 30, 20)
oled.text(« %i » % mpu_6050.gyroZ_calibre, 80, 20)
oled.text(« AX: », 0, 30)
oled.text(« %i » % mpu_6050.accX, 30, 30)
oled.text(« %i » % mpu_6050.accX_calibre, 80, 30)
oled.text(« AY: », 0, 40)
oled.text(« %i » % mpu_6050.accY, 30, 40)
oled.text(« %i » % mpu_6050.accY_calibre, 80, 40)
oled.text(« AZ: », 0, 50)
oled.text(« %i » % mpu_6050.accZ, 30, 50)
oled.text(« %i » % mpu_6050.accZ_calibre, 80, 50)
oled.show()
time.sleep(0.1)
else:
oled.fill(0) # efface l’ecran
oled.text(« MPU not detected », 0, 0)
oled.show()
|
Un second programme d’utilisation de la librairie permet de récupérer les angles calculés dont voici le contenu :
#
# Programme d’utilisation de la librairie MPU6050
#
# Auteur : iTechnoFrance
#
from machine import I2C, Pin
import ssd1306
import mpu6050
import time
# Declaration I2C
# // D1 -> GPIO05 –> SDA
# // D2 -> GPIO04 –> SCL
i2c = I2C(scl=Pin(4), sda=Pin(5), freq=400000)
# Declaration OLED SSD1306
oled = ssd1306.SSD1306_I2C(128, 64, i2c, 0x3c) # 128 x 64 pixels
oled.fill(0) # efface l’ecran
oled.text(« Calibr. MPU6050 », 0, 0)
oled.show()
mpu_6050 = mpu6050.MPU6050(i2c) # declaration mpu6050
oled.text(« Adresse : », 0, 10)
oled.text(hex(mpu_6050.adresse), 80, 10)
mpu_6050.lecture_capteurs()
oled.text(« Temp : », 0, 20)
oled.text(« %2.1f » % mpu_6050.temperature, 80, 20)
oled.show()
time.sleep(10)
if (mpu_6050.detect()):
while True:
oled.fill(0) # efface l’ecran
mpu_6050.lecture_capteurs()
oled.text(« Angle X: », 0, 0)
oled.text(« %i » % mpu_6050.AngleX, 80, 0)
oled.text(« Angle Y: », 0, 10)
oled.text(« %i » % mpu_6050.AngleY, 80, 10)
oled.text(« Angle Z: », 0, 20)
oled.text(« %i » % mpu_6050.AngleZ, 80, 20)
oled.show()
time.sleep(0.1)
else:
oled.fill(0) # efface l’ecran
oled.text(« MPU not detected », 0, 0)
oled.show()
|
Il ne reste plus qu’à étudier maintenant une utilisation de ce capteur…
Catégories :NodeMCU
micropython, mpu6050, NodeMCU
Bonjour,
Tout d’abord, un grand merci pour le travail que vous avez effectué, et pour son généreux partage.
Je cherche à utiliser le mpu6050 avec ma pyboard, et étant novice, je ne suis pas certain de tout comprendre. Si j’ai bien compris, copier le contenu du lien « https://github.com/itechnofrance/micropython/tree/master/librairies/mpu6050 » au début de mon programme (dans le boot.py) permettra l’importation « import mpu6050 »?
Merci de votre temps.
Bonjour.
Oui il faut récupérer les sources sur github