Innholdsfortegnelse:

Grensesnitt for 3-akse gyroskopsensor BMG160 med bringebær Pi: 5 trinn
Grensesnitt for 3-akse gyroskopsensor BMG160 med bringebær Pi: 5 trinn

Video: Grensesnitt for 3-akse gyroskopsensor BMG160 med bringebær Pi: 5 trinn

Video: Grensesnitt for 3-akse gyroskopsensor BMG160 med bringebær Pi: 5 trinn
Video: Со щитом или на щите! Австралия с VEEM Marine 2024, Juli
Anonim
Image
Image

I dagens verden er mer enn halvparten av ungdommen og barna glad i spill, og alle som er glad i det, fascinert av de tekniske aspektene ved spill, vet viktigheten av bevegelsesføling i dette domenet. Vi ble også overrasket over det samme, og bare for å bringe det på tavlene tenkte vi på å jobbe med en gyroskopsensor som kan måle vinkelfrekvensen til ethvert objekt. Så, sensoren vi tok for å håndtere oppgaven er BMG160. BMG160 er en 16-bits, digital, triaksial, gyroskopsensor som kan måle vinkelfrekvensen i tre vinkelrette romdimensjoner.

I denne opplæringen skal vi demonstrere hvordan BMG160 fungerer med Raspberry pi, ved å bruke Java som programmeringsspråk.

Maskinvaren du trenger for dette formålet er som følger:

1. BMG160

2. Bringebær Pi

3. I2C -kabel

4. I2C Shield for Raspberry Pi

5. Ethernet -kabel

Trinn 1: Oversikt over BMG160:

Hva trenger du..!!
Hva trenger du..!!

Først og fremst vil vi gjøre deg kjent med de grunnleggende funksjonene i sensormodulen som er BMG160 og kommunikasjonsprotokollen som den fungerer på.

BMG160 er i utgangspunktet en 16-biters, digital, triaksial, gyroskopsensor som kan måle vinkelhastigheter. Den er i stand til å beregne vinkelhastigheter i tre vinkelrette romdimensjoner, x-, y- og z-aksen, og gi de tilsvarende utgangssignalene. Den kan kommunisere med bringebær -pi -kortet ved hjelp av I2C -kommunikasjonsprotokollen. Denne modulen er designet for å oppfylle kravene til forbrukerapplikasjoner så vel som industrielle formål.

Kommunikasjonsprotokollen som sensoren fungerer på er I2C. I2C står for den interintegrerte kretsen. Det er en kommunikasjonsprotokoll der kommunikasjonen foregår gjennom SDA (seriell data) og SCL (seriell klokke) linjer. Det tillater tilkobling av flere enheter samtidig. Det er en av de enkleste og mest effektive kommunikasjonsprotokoller.

Trinn 2: Hva du trenger..

Hva trenger du..!!
Hva trenger du..!!
Hva trenger du..!!
Hva trenger du..!!
Hva trenger du..!!
Hva trenger du..!!

Materialene vi trenger for å nå målet vårt inkluderer følgende maskinvarekomponenter:

1. BMG160

2. Bringebær Pi

3. I2C -kabel

4. I2C Shield For Raspberry Pi

5. Ethernet -kabel

Trinn 3: Maskinvaretilkobling:

Maskinvaretilkobling
Maskinvaretilkobling
Maskinvaretilkobling
Maskinvaretilkobling

Maskinvaretilkoblingsdelen forklarer i utgangspunktet ledningsforbindelsene som kreves mellom sensoren og bringebær -pi. Å sikre riktige tilkoblinger er den grunnleggende nødvendigheten mens du arbeider på et hvilket som helst system for ønsket utgang. Så de nødvendige tilkoblingene er som følger:

BMG160 vil fungere over I2C. Her er eksempel på koblingsskjema, som viser hvordan du kobler til hvert grensesnitt på sensoren.

Uten boksen er brettet konfigurert for et I2C-grensesnitt, derfor anbefaler vi å bruke denne tilkoblingen hvis du ellers er agnostiker. Alt du trenger er fire ledninger!

Bare fire tilkoblinger kreves Vcc, Gnd, SCL og SDA -pinner, og disse er koblet til ved hjelp av I2C -kabel.

Disse sammenhengene er vist på bildene ovenfor.

Trinn 4: 3-akse gyroskopmåling ved hjelp av Java-kode:

3-akse gyroskopmåling ved hjelp av Java-kode
3-akse gyroskopmåling ved hjelp av Java-kode
3-akse gyroskopmåling ved hjelp av Java-kode
3-akse gyroskopmåling ved hjelp av Java-kode

Fordelen med å bruke bringebær pi er at det gir deg fleksibiliteten til programmeringsspråket der du vil programmere brettet for å koble sensoren til det. Ved å utnytte denne fordelen med dette brettet, demonstrerer vi her programmeringen i Java. Java -koden for BMG160 kan lastes ned fra vårt github -fellesskap som er Dcube Store Community.

I tillegg til brukernes brukervennlighet, forklarer vi koden også her: Som det første trinnet i kodingen må du laste ned pi4j -biblioteket i tilfelle java, fordi dette biblioteket støtter funksjonene som brukes i koden. Så for å laste ned biblioteket kan du besøke følgende lenke:

pi4j.com/install.html

Du kan også kopiere den fungerende java -koden for denne sensoren herfra:

importer com.pi4j.io.i2c. I2CBus;

importer com.pi4j.io.i2c. I2CDenhet;

importer com.pi4j.io.i2c. I2CFactory;

importer java.io. IOException;

offentlig klasse BMG160

{

public static void main (String args ) kaster Unntak

{

// Lag I2C -buss

I2CBus -buss = I2CFactory.getInstance (I2CBus. BUS_1);

// Få I2C -enhet, BMG160 I2C -adressen er 0x68 (104)

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

// Velg områderegister

// Konfigurer full skala, 2000 dps

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

// Velg båndbredderegister

// Båndbredde 200 Hz

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

Tråd. Sover (500);

// Les 6 byte med 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;

}

// Utdata til skjermen

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

System.out.printf ("Y-aksen for rotasjon: %d %n", yGyro);

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

}

}

Biblioteket som muliggjør i2c -kommunikasjon mellom sensoren og kortet er pi4j, dets forskjellige pakker I2CBus, I2CDevice og I2CFactory hjelper til med å etablere forbindelsen.

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

Denne delen av koden får sensoren til å måle vinkelhastigheten ved å skrive de respektive kommandoene ved hjelp av skrive () -funksjonen, og deretter leses dataene ved hjelp av lese () -funksjonen.

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

// Les 6 byte med data

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

Dataene som mottas fra sensoren konverteres til riktig format ved å bruke følgende:

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

Utskriften skrives ut med funksjonen System.out.println () i følgende format.

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

Sensorens utgang er vist på bildet ovenfor.

Trinn 5: Søknader:

Applikasjoner
Applikasjoner

BMG160 har et variert antall applikasjoner på enheter som mobiltelefoner, grensesnittenheter for mennesker. Denne sensormodulen er designet for å oppfylle kravene til forbrukerapplikasjoner som bildestabilisering (DSC og kameratelefon), spill og pekeenheter. Det brukes også i systemer som krever gjenkjenning av bevegelser og systemene som brukes i innendørs navigasjon.

Anbefalt: