Indholdsfortegnelse:

Grænseflade mellem 3-akset gyroskopsensor BMG160 med hindbær Pi: 5 trin
Grænseflade mellem 3-akset gyroskopsensor BMG160 med hindbær Pi: 5 trin

Video: Grænseflade mellem 3-akset gyroskopsensor BMG160 med hindbær Pi: 5 trin

Video: Grænseflade mellem 3-akset gyroskopsensor BMG160 med hindbær Pi: 5 trin
Video: How to use MPU-9250 Gyroscope, Accelerometer, Magnetometer for Arduino 2024, Juli
Anonim
Image
Image

I dagens verden er mere end halvdelen af de unge og børn glad for spil, og alle dem, der er vilde med det, fascineret af de tekniske aspekter ved spil, kender vigtigheden af bevægelsesføling på dette område. Vi var også overrasket over det samme, og bare for at bringe det på tavlerne tænkte vi på at arbejde på en gyroskopsensor, som kan måle vinkelfrekvensen for ethvert objekt. Så den sensor, vi tog op for at håndtere opgaven, er BMG160. BMG160 er en 16-bit, digital, triaksial, gyroskopsensor, der kan måle vinkelfrekvensen i tre vinkelrette rumdimensioner.

I denne vejledning vil vi demonstrere, hvordan BMG160 fungerer med Raspberry pi, ved hjælp af Java som programmeringssprog.

Hardware, som du får brug for til dette formål, er som følger:

1. BMG160

2. Hindbær Pi

3. I2C -kabel

4. I2C Shield til Raspberry Pi

5. Ethernet -kabel

Trin 1: BMG160 Oversigt:

Hvad du har brug for..!!
Hvad du har brug for..!!

Først og fremmest vil vi gerne gøre dig bekendt med de grundlæggende funktioner i sensormodulet, der er BMG160, og kommunikationsprotokollen, som det fungerer på.

BMG160 er dybest set en 16-bit, digital, triaksial, gyroskopsensor, der kan måle vinkelhastigheder. Den er i stand til at beregne vinkelhastigheder i tre vinkelrette rumdimensioner, x-, y- og z-aksen og levere de tilsvarende udgangssignaler. Det kan kommunikere med hindbær pi -kortet ved hjælp af I2C -kommunikationsprotokollen. Dette særlige modul er designet til at opfylde krav til forbrugerapplikationer såvel som industrielle formål.

Kommunikationsprotokollen, som sensoren fungerer på, er I2C. I2C står for det interintegrerede kredsløb. Det er en kommunikationsprotokol, hvor kommunikationen finder sted gennem SDA (serielle data) og SCL (serielle ur) linjer. Det tillader tilslutning af flere enheder på samme tid. Det er en af de enkleste og mest effektive kommunikationsprotokoller.

Trin 2: Hvad du har brug for..

Hvad du har brug for..!!
Hvad du har brug for..!!
Hvad du har brug for..!!
Hvad du har brug for..!!
Hvad du har brug for..!!
Hvad du har brug for..!!

De materialer, vi har brug for for at nå vores mål, omfatter følgende hardwarekomponenter:

1. BMG160

2. Hindbær Pi

3. I2C -kabel

4. I2C Shield Til Raspberry Pi

5. Ethernet -kabel

Trin 3: Hardware -tilslutning:

Hardware -tilslutning
Hardware -tilslutning
Hardware -tilslutning
Hardware -tilslutning

Hardware -tilslutningssektionen forklarer grundlæggende de ledningsforbindelser, der kræves mellem sensoren og hindbær pi. At sikre korrekte forbindelser er den grundlæggende nødvendighed, mens du arbejder på et hvilket som helst system til den ønskede output. Så de nødvendige forbindelser er som følger:

BMG160 fungerer over I2C. Her er eksemplet på ledningsdiagram, der viser, hvordan du tilslutter hver grænseflade på sensoren.

Out-of-the-box er tavlen konfigureret til en I2C-grænseflade, som sådan anbefaler vi at bruge denne tilslutning, hvis du ellers er agnostiker. Alt du behøver er fire ledninger!

Der kræves kun fire tilslutninger Vcc, Gnd, SCL og SDA ben, og disse er forbundet ved hjælp af I2C kabel.

Disse forbindelser er vist på billederne ovenfor.

Trin 4: 3-akset gyroskopmåling ved hjælp af Java-kode:

3-akset gyroskopmåling ved hjælp af Java-kode
3-akset gyroskopmåling ved hjælp af Java-kode
3-akset gyroskopmåling ved hjælp af Java-kode
3-akset gyroskopmåling ved hjælp af Java-kode

Fordelen ved at bruge hindbær pi er, det vil sige giver dig fleksibiliteten i det programmeringssprog, hvor du vil programmere tavlen, for at interface sensoren med den. Ved at udnytte denne fordel ved dette kort demonstrerer vi her sin programmering i Java. Java -koden til BMG160 kan downloades fra vores github -fællesskab, der er Dcube Store Community.

Ud over brugernes brugervenlighed forklarer vi også koden her: Som det første trin i kodningen skal du downloade pi4j -biblioteket i tilfælde af java, fordi dette bibliotek understøtter de funktioner, der bruges i koden. Så for at downloade biblioteket kan du besøge følgende link:

pi4j.com/install.html

Du kan også kopiere den fungerende java -kode til denne sensor herfra:

importer com.pi4j.io.i2c. I2CBus;

import com.pi4j.io.i2c. I2CDevice;

import com.pi4j.io.i2c. I2CFactory;

import java.io. IOException;

offentlig klasse BMG160

{

public static void main (String args ) kaster Undtagelse

{

// Opret I2C -bus

I2CBus bus = I2CFactory.getInstance (I2CBus. BUS_1);

// Hent I2C -enhed, BMG160 I2C -adressen er 0x68 (104)

I2CDevice -enhed = bus.getDevice (0x68);

// Vælg områderegister

// Konfigurer fuld skala, 2000 dps

device.write (0x0F, (byte) 0x80);

// Vælg båndbredderegister

// Båndbredde 200 Hz

device.write (0x10, (byte) 0x04);

Tråd. Sover (500);

// Læs 6 bytes data

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb

byte data = ny byte [6];

device.read (0x02, data, 0, 6);

// Konverter data

int xGyro = ((data [1] & 0xFF) * 256 + (data [0] & 0xFF));

hvis (xGyro> 32767)

{

xGyro -= 65536;

}

int yGyro = ((data [3] & 0xFF) * 256 + (data [2] & 0xFF));

hvis (yGyro> 32767)

{

yGyro -= 65536;

}

int zGyro = ((data [5] & 0xFF) * 256 + (data [4] & 0xFF));

hvis (zGyro> 32767)

{

zGyro -= 65536;

}

// Output data til skærmen

System.out.printf ("X-rotationsakse: %d %n", xGyro);

System.out.printf ("Rotations-akse: %d %n", yGyro);

System.out.printf ("Rotations-akse: %d %n", zGyro);

}

}

Biblioteket, der letter i2c -kommunikation mellem sensoren og kortet, er pi4j, dets forskellige pakker I2CBus, I2CDevice og I2CFactory hjælper med at etablere forbindelsen.

import com.pi4j.io.i2c. I2CBus; import com.pi4j.io.i2c. I2CDevice; import com.pi4j.io.i2c. I2CFactory; import java.io. IOException;

Denne del af koden får sensoren til at måle vinkelfrekvensen ved at skrive de respektive kommandoer ved hjælp af skrivefunktionen (), og derefter læses dataene ved hjælp af funktionen læse ().

// Vælg områderegister // Konfigurer fuldskalaområde, 2000 dps device.write (0x0F, (byte) 0x80); // Vælg båndbredderegister // Båndbredde 200 Hz enhed. Skriv (0x10, (byte) 0x04); Tråd. Sover (500);

// Læs 6 bytes data

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb byte data = ny byte [6]; device.read (0x02, data, 0, 6);

Data modtaget fra sensoren konverteres til det relevante format ved hjælp af følgende:

int xGyro = ((data [1] & 0xFF) * 256 + (data [0] & 0xFF)); hvis (xGyro> 32767) {xGyro -= 65536; } int yGyro = ((data [3] & 0xFF) * 256 + (data [2] & 0xFF)); hvis (yGyro> 32767) {yGyro -= 65536; } int zGyro = ((data [5] & 0xFF) * 256 + (data [4] & 0xFF)); hvis (zGyro> 32767) {zGyro -= 65536; }

Outputtet udskrives ved hjælp af funktionen System.out.println () i følgende format.

System.out.println ("X-rotationsakse: %d %n", xGyro); System.out.println ("Rotations-akse: %d %n", yGyro); System.out.println ("Rotations-akse: %d %n", zGyro);

Sensorens output er vist på billedet ovenfor.

Trin 5: Ansøgninger:

Ansøgninger
Ansøgninger

BMG160 har et varieret antal applikationer på enheder som mobiltelefoner, grænsefladeenheder til mennesker. Dette sensormodul er designet til at opfylde krav til forbrugerapplikationer såsom billedstabilisering (DSC og kameratelefon), spil og pegeudstyr. Det bruges også i systemer, der kræver gestusgenkendelse og de systemer, der bruges til indendørs navigation.

Anbefalede: