• Première étape
  • Matériel et accessoires ; GPIO
  • Projets
  • Logiciel
    • Serveur Web
  • Arduino & ESP8266
  • Automatisation de la maison
  • Sonstiges
    • News
Facebook Twitter YouTube
Tutorials for Raspberry Pi Tutorials for Raspberry Pi
  • Matériel et accessoires ; GPIO
  • Projets
  • Logiciel
  • Serveur Web
  • Première étape
  • Automatisation de la maison
  • Anglais
  • Allemand
Tutorials for Raspberry Pi Tutorials for Raspberry Pi
Home»Matériel et accessoires ; GPIO»Mesure de la rotation et de l’accélération avec le Raspberry Pi

Mesure de la rotation et de l’accélération avec le Raspberry Pi

Facebook Twitter LinkedIn Tumblr Email Reddit
Mesure de la rotation et de l'accélération avec le Raspberry Pi
Share
Facebook Twitter LinkedIn Email Tumblr Reddit Telegram WhatsApp

Les capteurs d’accélération et de rotation sont surtout connus des smartphones. La rotation de l’appareil peut être détectée et adressée directement.

Avec le Raspberry Pi et un capteur Gyroscope / Accélérateur, il est possible de mesurer la rotation ainsi que l’accélération des 3 axes.
Dans ce tutoriel, je montre comment utiliser le MPU 6050 et comment lire les valeurs en utilisant I2C, ce qui est démontré dans une vidéo.

Composants

Pour ce tutoriel, j’ai utilisé les composants suivants :

  • Raspberry Pi
  • Module d’accélération du capteur d’accélération
  • Femelle- Câble Jumper Femelle

Le module a 2 connecteurs à pin, l’un d’eux est plié. J’ai soudé les pins pliés à la carte du capteur, ce qui économise de l’espace (voir photo) :

20151125_205159

Installation

La chose pratique à propos de I2C est que très peu de pins sont utilisés. Des huit pins du capteur, nous n’avons plus qu’à connecter le top 4 :

Raspberry Pi MPU 6050
Pin 1 (3.3V) VCC
Pin 3 (SDA) SDA
Pin 5 (SCL) SCL
Pin 6 (GND) GND

GY-521_accelerometer_Gyroscope_Steckplatine

Activer I²C sur le Raspberry Pi

Tout d’abord, nous activons SPI et I2C. Si vous l’avez déjà fait dans un tutoriel précédent, vous pouvez sauter cette étape.

sudo raspi-config

Ici nous trouvons le menu d’activation des services. Sous « Advanced Options » il y a l’entrée « A7 I2C », que nous activons (Ceci peut différer dans d’autres versions Raspbian). Pour les anciennes versions de Raspbian, les entrées du fichier /etc/modprobe.d/raspi-blacklist.conf doivent être extraits (avec #).

Nous éditons ensuite le fichier des modules:

sudo nano /etc/modules

Si les lignes suivantes ne sont pas déjà incluses, ajoutez-les et redémarrez le Pi (sudo reboot):

Shell
1
2
i2c-bcm2708
i2c-dev

Nous pouvons maintenant installer rapidement les outils nécessaires :

sudo apt-get install i2c-tools python-smbus

Commençons un petit test. Le paramètre -y 1représente la révision 2. Si vous avez un complètement vieux Pi (avant 2013), vous devrez spécifier un 0 plutôt :

sudo i2cdetect -y 1

Si le gyroscope est correctement connecté, vous verrez cette sortie (si vous avez d’autres modules I2C connectés, leurs adresses hexadécimales devraient être affichées) :

pi@raspberrypi ~ $ sudo i2cdetect -y 1
 0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Pour adresser l’appareil avec l’adresse 68 (Attention : Hexadécimal) sous le registre, entrez ce qui suit :

sudo i2cget -y 1 0x68 0x75

Lisez le module MPU-6050

La manière la plus pratique de lire le capteur d’accélération est probablement Python. Par conséquent, nous créons un fichier et collons le code suivant.

sudo nano gyro.py

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/usr/bin/python
import smbus
import math
 
# Register
power_mgmt_1 = 0x6b
power_mgmt_2 = 0x6c
 
def read_byte(reg):
    return bus.read_byte_data(address, reg)
 
def read_word(reg):
    h = bus.read_byte_data(address, reg)
    l = bus.read_byte_data(address, reg+1)
    value = (h << 8) + l
    return value
 
def read_word_2c(reg):
    val = read_word(reg)
    if (val >= 0x8000):
        return -((65535 - val) + 1)
    else:
        return val
 
def dist(a,b):
    return math.sqrt((a*a)+(b*b))
 
def get_y_rotation(x,y,z):
    radians = math.atan2(x, dist(y,z))
    return -math.degrees(radians)
 
def get_x_rotation(x,y,z):
    radians = math.atan2(y, dist(x,z))
    return math.degrees(radians)
 
bus = smbus.SMBus(1) # bus = smbus.SMBus(0) fuer Revision 1
address = 0x68       # via i2cdetect
 
# Aktivieren, um das Modul ansprechen zu koennen
bus.write_byte_data(address, power_mgmt_1, 0)
 
print "Gyroskop"
print "--------"
 
gyroskop_xout = read_word_2c(0x43)
gyroskop_yout = read_word_2c(0x45)
gyroskop_zout = read_word_2c(0x47)
 
print "gyroskop_xout: ", ("%5d" % gyroskop_xout), " skaliert: ", (gyroskop_xout / 131)
print "gyroskop_yout: ", ("%5d" % gyroskop_yout), " skaliert: ", (gyroskop_yout / 131)
print "gyroskop_zout: ", ("%5d" % gyroskop_zout), " skaliert: ", (gyroskop_zout / 131)
 
print
print "Beschleunigungssensor"
print "---------------------"
 
beschleunigung_xout = read_word_2c(0x3b)
beschleunigung_yout = read_word_2c(0x3d)
beschleunigung_zout = read_word_2c(0x3f)
 
beschleunigung_xout_skaliert = beschleunigung_xout / 16384.0
beschleunigung_yout_skaliert = beschleunigung_yout / 16384.0
beschleunigung_zout_skaliert = beschleunigung_zout / 16384.0
 
print "beschleunigung_xout: ", ("%6d" % beschleunigung_xout), " skaliert: ", beschleunigung_xout_skaliert
print "beschleunigung_yout: ", ("%6d" % beschleunigung_yout), " skaliert: ", beschleunigung_yout_skaliert
print "beschleunigung_zout: ", ("%6d" % beschleunigung_zout), " skaliert: ", beschleunigung_zout_skaliert
 
print "X Rotation: " , get_x_rotation(beschleunigung_xout_skaliert, beschleunigung_yout_skaliert, beschleunigung_zout_skaliert)
print "Y Rotation: " , get_y_rotation(beschleunigung_xout_skaliert, beschleunigung_yout_skaliert, beschleunigung_zout_skaliert)

Sauvegardez-le avec CTRL + O et quittez l’éditeur avec CTRL + X. Vous pouvez alors exécuter le script.

sudo python gyro.py

Maintenant, vous verrez une sortie qui contient toutes les données capturées :

Gyroskop
--------
gyroskop_xout:   -260  skaliert:  -2
gyroskop_yout:   -154  skaliert:  -2
gyroskop_zout:     78  skaliert:  0

Beschleunigungssensor
---------------------
beschleunigung_xout:   -1048  skaliert:  -0.06396484375
beschleunigung_yout:    -676  skaliert:  -0.041259765625
beschleunigung_zout:   16644  skaliert:  1.01586914062
X Rotation:  -2.32121150537
Y Rotation:  3.59994842011

Pour en savoir plus sur les accéléromètres et les gyroscopes, vous devriez lire cet article.

Enfin, un petit exemple de vidéo démontrant l’utilisation du capteur en direct :

Accéléromètre Capteur d'accélération GY-521 Gyroscope Gyroscope i2c MPU-6050 Stabilisateur gyroscopique
Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
Previous ArticleContrôle du Servo moteur de Raspberry Pi
Next Article Comment configurer un serveur FTP Raspberry Pi – Installation du serveur Web

Related Posts

Connecter un clavier Raspberry Pi – Code Lock

Construire un capteur de porte / fenêtre Raspberry Pi avec Reed Relais

Utiliser Raspberry Pi comme récepteur radio (autoradio FM, PC de voiture)

MCP3008 : Lire des signaux analogiques sur le Raspberry Pi

Leave A Reply Cancel Reply

Module GSM Raspberry Pi – Internet mobile (LTE, 3G, UMTS)

Communication sans fil entre les Raspberry Pi via le courtier/client MQTT

Fabriquez votre propre serre automatique Raspberry Pi

Ecran LCD Raspberry Pi : Affichage 16×2 caractères (HD44780)

Evaluation de l’humidité du sol avec le Raspberry Pi

Télécommandez une Raspberry Pi avec un émetteur radio de 433Mhz

ABONNEZ-VOUS MAINTENANT
Et recevez de nouveaux tutoriels dans votre boîte de réception.
Cliquez ici pour soumettre!

Merci!

Nous vous contacterons bientôt.

Tutorials for Raspberry Pi
Facebook Twitter YouTube
  • Politique de confidentialité
  • Conditions de service & Politique sur les cookies

Type above and press Enter to search. Press Esc to cancel.