Table des matières:
- Étape 1: Présentation du BMG160:
- Étape 2: Ce dont vous avez besoin..
- Étape 3: connexion matérielle:
- Étape 4: Mesure du gyroscope à 3 axes à l'aide du code Java:
- Étape 5: Candidatures:
Vidéo: Interfaçage du capteur gyroscope 3 axes BMG160 avec Raspberry Pi : 5 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
Dans le monde d'aujourd'hui, plus de la moitié des jeunes et des enfants sont friands de jeux et tous ceux qui en sont friands, fascinés par les aspects techniques du jeu, connaissent l'importance de la détection de mouvement dans ce domaine. Nous avons également été émerveillés par la même chose et juste pour l'amener sur les planches, nous avons pensé à travailler sur un capteur gyroscope qui peut mesurer le taux angulaire de n'importe quel objet. Ainsi, le capteur que nous avons utilisé pour faire face à la tâche est le BMG160. Le BMG160 est un capteur gyroscope numérique triaxial 16 bits qui peut mesurer la vitesse angulaire dans trois dimensions de pièce perpendiculaires.
Dans ce tutoriel, nous allons démontrer le fonctionnement du BMG160 avec Raspberry pi, en utilisant Java comme langage de programmation.
Le matériel dont vous aurez besoin à cette fin est le suivant:
1. BMG160
2. Framboise Pi
3. Câble I2C
4. Bouclier I2C pour Raspberry Pi
5. Câble Ethernet
Étape 1: Présentation du BMG160:
Tout d'abord, nous aimerions vous familiariser avec les fonctionnalités de base du module capteur qu'est le BMG160 et le protocole de communication sur lequel il fonctionne.
Le BMG160 est essentiellement un capteur gyroscope numérique triaxial 16 bits qui peut mesurer les taux angulaires. Il est capable de calculer des taux angulaires dans trois dimensions de pièce perpendiculaires, les axes x, y et z, et de fournir les signaux de sortie correspondants. Il peut communiquer avec la carte raspberry pi en utilisant le protocole de communication I2C. Ce module particulier est conçu pour répondre aux exigences des applications grand public ainsi qu'à des fins industrielles.
Le protocole de communication sur lequel fonctionne le capteur est I2C. I2C signifie le circuit inter-intégré. Il s'agit d'un protocole de communication dans lequel la communication s'effectue via des lignes SDA (données série) et SCL (horloge série). Il permet de connecter plusieurs appareils en même temps. C'est l'un des protocoles de communication les plus simples et les plus efficaces.
Étape 2: Ce dont vous avez besoin..
Les matériaux dont nous avons besoin pour atteindre notre objectif comprennent les composants matériels suivants:
1. BMG160
2. Framboise Pi
3. Câble I2C
4. Bouclier I2C pour Raspberry Pi
5. Câble Ethernet
Étape 3: connexion matérielle:
La section de raccordement matériel explique essentiellement les connexions de câblage requises entre le capteur et le raspberry pi. Assurer des connexions correctes est la nécessité de base tout en travaillant sur n'importe quel système pour la sortie souhaitée. Ainsi, les connexions requises sont les suivantes:
Le BMG160 fonctionnera sur I2C. Voici l'exemple de schéma de câblage, montrant comment câbler chaque interface du capteur.
Prête à l'emploi, la carte est configurée pour une interface I2C, en tant que telle, nous vous recommandons d'utiliser cette connexion si vous êtes par ailleurs agnostique. Tout ce dont vous avez besoin, c'est de quatre fils !
Seules quatre connexions sont nécessaires pour les broches Vcc, Gnd, SCL et SDA et celles-ci sont connectées à l'aide d'un câble I2C.
Ces connexions sont illustrées dans les images ci-dessus.
Étape 4: Mesure du gyroscope à 3 axes à l'aide du code Java:
L'avantage d'utiliser raspberry pi est qu'il vous offre la flexibilité du langage de programmation dans lequel vous souhaitez programmer la carte afin d'interfacer le capteur avec elle. Exploitant cet avantage de cette carte, nous démontrons ici sa programmation en Java. Le code Java pour BMG160 peut être téléchargé depuis notre communauté github qui est la communauté Dcube Store.
En plus de la facilité des utilisateurs, nous expliquons également le code ici: Comme première étape de codage, vous devez télécharger la bibliothèque pi4j dans le cas de Java, car cette bibliothèque prend en charge les fonctions utilisées dans le code. Donc, pour télécharger la bibliothèque, vous pouvez visiter le lien suivant:
pi4j.com/install.html
Vous pouvez également copier le code Java fonctionnel de ce capteur à partir d'ici:
importer com.pi4j.io.i2c. I2CBus;
importer com.pi4j.io.i2c. I2CDevice;
importer com.pi4j.io.i2c. I2CFactory;
importer java.io. IOException;
classe publique BMG160
{
public static void main(String args) lève une exception
{
// Créer un bus I2C
Bus I2CBus = I2CFactory.getInstance(I2CBus. BUS_1);
// Obtenir le périphérique I2C, l'adresse I2C du BMG160 est 0x68 (104)
Périphérique I2CDevice = bus.getDevice (0x68);
// Sélection du registre de plage
// Configurer la plage à pleine échelle, 2000 dps
périphérique.write(0x0F, (octet)0x80);
// Sélection du registre de bande passante
// Bande passante 200 Hz
périphérique.write(0x10, (octet)0x04);
Thread.sleep(500);
// Lecture de 6 octets de données
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb
octet données = nouvel octet[6];
device.read (0x02, données, 0, 6);
// Convertir les données
int xGyro = ((données[1] & 0xFF) * 256 + (données[0] & 0xFF));
si(xGyro > 32767)
{
xGyro -= 65536;
}
int yGyro = ((données[3] & 0xFF) * 256 + (données[2] & 0xFF));
si(yGyro > 32767)
{
yGyro -= 65536;
}
int zGyro = ((données[5] & 0xFF) * 256 + (données[4] & 0xFF));
si(zGyro > 32767)
{
zGyro -= 65536;
}
// Sortie des données à l'écran
System.out.printf("Axe X de rotation: %d %n", xGyro);
System.out.printf("Axe Y de rotation: %d %n", yGyro);
System.out.printf("Axe Z de rotation: %d %n", zGyro);
}
}
La librairie qui facilite la communication i2c entre le capteur et la carte est pi4j, ses différents packages I2CBus, I2CDevice et I2CFactory aident à établir la connexion.
importer com.pi4j.io.i2c. I2CBus;importer com.pi4j.io.i2c. I2CDevice; importer com.pi4j.io.i2c. I2CFactory; importer java.io. IOException;
Cette partie du code oblige le capteur à mesurer la vitesse angulaire en écrivant les commandes respectives à l'aide de la fonction write(), puis les données sont lues à l'aide de la fonction read().
// Sélectionner le registre de plage // Configurer la plage complète, 2000 dps device.write (0x0F, (byte)0x80); // Sélectionnez le registre de bande passante // Bande passante 200 Hz device.write (0x10, (byte)0x04); Thread.sleep(500);
// Lecture de 6 octets de données
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb byte data = new byte[6]; device.read (0x02, données, 0, 6);
Les données reçues du capteur sont converties au format approprié à l'aide des éléments suivants:
int xGyro = ((données[1] & 0xFF) * 256 + (données[0] & 0xFF)); if(xGyro > 32767) { xGyro -= 65536; } int yGyro = ((données[3] & 0xFF) * 256 + (données[2] & 0xFF)); if(yGyro > 32767) { yGyro -= 65536; } int zGyro = ((données[5] & 0xFF) * 256 + (données[4] & 0xFF)); if(zGyro > 32767) { zGyro -= 65536; }
La sortie est imprimée à l'aide de la fonction System.out.println(), au format suivant.
System.out.println("Axe X de rotation: %d %n", xGyro); System.out.println("Axe Y de rotation: %d %n", yGyro); System.out.println("Axe Z de rotation: %d %n", zGyro);
La sortie du capteur est montrée dans l'image ci-dessus.
Étape 5: Candidatures:
BMG160 a un nombre varié d'applications dans des appareils tels que les téléphones portables, les dispositifs d'interface homme-machine. Ce module de capteur a été conçu pour répondre aux exigences des applications grand public telles que la stabilisation d'image (DSC et appareil photo-téléphone), les jeux et les dispositifs de pointage. Il est également utilisé dans les systèmes qui nécessitent une reconnaissance des gestes et les systèmes utilisés dans la navigation intérieure.
Conseillé:
Interfaçage du capteur gyroscope à 3 axes BMG160 avec Arduino Nano : 5 étapes
Interfaçage du capteur gyroscope à 3 axes BMG160 avec Arduino Nano : dans le monde d'aujourd'hui, plus de la moitié des jeunes et des enfants aiment le jeu et tous ceux qui en sont friands, fascinés par les aspects techniques du jeu, connaissent l'importance de la détection de mouvement dans ce domaine. Nous avons également été étonnés par la même chose et
Interfaçage Arduino avec capteur à ultrasons et capteur de température sans contact : 8 étapes
Interfaçage Arduino avec capteur à ultrasons et capteur de température sans contact : De nos jours, les fabricants et les développeurs préfèrent Arduino pour le développement rapide du prototypage de projets. Arduino est une plate-forme électronique open source basée sur du matériel et des logiciels faciles à utiliser. Arduino a une très bonne communauté d'utilisateurs. Dans ce projet
Interfaçage du capteur gyroscope à 3 axes BMG160 avec particule : 5 étapes
Interfaçage du capteur gyroscope à 3 axes BMG160 avec particule : dans le monde d'aujourd'hui, plus de la moitié des jeunes et des enfants aiment le jeu et tous ceux qui en sont friands, fascinés par les aspects techniques du jeu, connaissent l'importance de la détection de mouvement dans ce domaine. Nous avons également été étonnés par la même chose et
Tutoriel du module 6DOF du gyroscope d'accélération à 3 axes GY-521 MPU6050 : 4 étapes
Tutoriel du module GY-521 MPU6050 Gyroscope d'accélération à 3 axes 6DOF: DescriptionCe module simple contient tout le nécessaire pour s'interfacer avec l'Arduino et d'autres contrôleurs via I2C (utilisez la bibliothèque Wire Arduino) et donner des informations de détection de mouvement pour 3 axes - X, Y et Z .SpécificationsPlages d'accéléromètre : ±2, ±
Capteur de champ magnétique à 3 axes : 10 étapes (avec photos)
Capteur de champ magnétique à 3 axes : les systèmes de transfert d'énergie sans fil sont en passe de remplacer la charge filaire conventionnelle. Cela va des minuscules implants biomédicaux à la recharge sans fil d'énormes véhicules électriques. Une partie intégrante de la recherche sur l'alimentation sans fil est