Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
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 Arduino Nano.
Maskinvaren du trenger for dette formålet er som følger:
1. BMG160
2. Arduino Nano
3. I2C -kabel
4. I2C -skjold for Arduino Nano
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. Arduino Nano
3. I2C -kabel
4. I2C -skjold for Arduino Nano
Trinn 3: Maskinvaretilkobling:
Maskinvarekoblingsdelen forklarer i utgangspunktet ledningsforbindelsene som kreves mellom sensoren og Arduino. Å 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 Arduino-kode:
La oss begynne med arduino -koden nå.
Mens vi bruker sensormodulen med arduinoen, inkluderer vi Wire.h -biblioteket. "Wire" -biblioteket inneholder funksjonene som letter i2c -kommunikasjonen mellom sensoren og arduino -kortet.
Hele arduino -koden er gitt nedenfor for brukerens bekvemmelighet:
#include // BMG160 I2C -adressen er 0x68 (104)
#define Addr 0x68
ugyldig oppsett ()
{
// Initialiser I2C -kommunikasjon som MASTER
Wire.begin ();
// Initialize Serial Communication, set baud rate = 9600
Serial.begin (9600);
// Start I2C -overføring
Wire.beginTransmission (Addr);
// Velg Avstandsregister
Wire.write (0x0F);
// Konfigurer full skala 2000 dps
Wire.write (0x80);
// Stopp I2C -overføring
Wire.endTransmission ();
// Start I2C -overføring
Wire.beginTransmission (Addr);
// Velg båndbredderegister
Wire.write (0x10);
// Angi båndbredde = 200 Hz
Wire.write (0x04);
// Stopp I2C -overføring
Wire.endTransmission ();
forsinkelse (300);
}
hulrom ()
{
usignerte int -data [6];
// Start I2C -overføring
Wire.beginTransmission (Addr);
// Velg Gyrometer dataregister
Wire.write (0x02);
// Stopp I2C -overføring
Wire.endTransmission ();
// Be om 6 byte med data
Wire.requestFrom (Addr, 6);
// Les 6 byte med data
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb
hvis (Wire.available () == 6)
{
data [0] = Wire.read ();
data [1] = Wire.read ();
data [2] = Wire.read ();
data [3] = Wire.read ();
data [4] = Wire.read ();
data [5] = Wire.read ();
}
forsinkelse (300);
// Konverter dataene
int xGyro = ((data [1] * 256) + data [0]);
int yGyro = ((data [3] * 256) + data [2]);
int zGyro = ((data [5] * 256) + data [4]);
// Utdata til seriell skjerm
Serial.print ("X-rotasjonsakse:");
Serial.println (xGyro); Serial.print ("Y-aksen for rotasjon:");
Serial.println (yGyro); Serial.print ("Z-aksen for rotasjon:");
Serial.println (zGyro);
forsinkelse (500);
}
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.