Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-23 15:02
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:
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..
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:
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:
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:
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:
Grensesnitt GPS -modul med bringebær Pi: 10 trinn
Grensesnitt GPS -modul med Raspberry Pi: Hei folkens! Ønsker du å koble til en GPS -modul med Raspberry Pi? Men har du problemer med å gjøre det? "Ikke bekymre deg, jeg er her for å hjelpe deg! Du kan starte med å bruke følgende deler:
Cocktailmaskin med GUI bringebær: 7 trinn (med bilder)
Cocktailmaskin med GUI Bringebær: Liker du teknologi og fest? Dette prosjektet er laget for deg! I denne opplæringen vil vi lage en automatisert cocktailmaskin med et grafisk grensesnitt. Alt styrt av bringebæret! EDIT: Jeg har laget en ny enklere og billigere lenken her
Automatisk videokonferanse for bestemor med bringebær Pi: 9 trinn (med bilder)
Automatisk videokonferanse for bestemor med bringebær Pi: Jeg er bekymret for min 90 år gamle bestemor fordi selv hun skulle bli hjemme under COVID-epidemien, kommer hun stadig ut og gjør " essensielt " ting på gata, som å kjøpe noen lodd, snakke med naboer. JEG
Bringebær Pi i naturen! Utvidet timelapse med batteristrøm: 10 trinn (med bilder)
Bringebær Pi i naturen! Utvidet timelapse med batteristrøm: Motivasjon: Jeg ønsket å bruke batteridrevet Raspberry Pi-kamera til å ta bilder en gang om dagen utendørs for å lage langsiktige time-lapse-videoer. Min spesielle søknad er å registrere plantevekst på grunndekke denne våren og sommeren. Utfordring: D
LCD 16x2 grensesnitt med bringebær Pi: 7 trinn
LCD 16x2 grensesnitt med Raspberry Pi: Hei venner, I dag grensesnitt jeg 16x2 Display til Raspberry pi