Indholdsfortegnelse:
- Trin 1: BMG160 Oversigt:
- Trin 2: Hvad du har brug for..
- Trin 3: Hardware -tilslutning:
- Trin 4: 3-akset gyroskopmåling ved hjælp af Java-kode:
- Trin 5: Ansøgninger:
Video: Grænseflade mellem 3-akset gyroskopsensor BMG160 med hindbær Pi: 5 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
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:
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..
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 -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:
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:
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:
ESP32 -grænseflade med SSD1306 Oled med MicroPython: 5 trin
ESP32 -grænseflade med SSD1306 Oled med MicroPython: Micropython er pythons optimering og lille fodaftryk af python. Hvilket betød at bygge til en integreret enhed, der har hukommelsesbegrænsninger og lavt strømforbrug. Micropython er tilgængelig for mange controllerfamilier, herunder ESP8266, ESP32, Ardui
Let RFID MFRC522 -grænseflade med Arduino Nano: 4 trin (med billeder)
Nem RFID MFRC522 -grænseflade med Arduino Nano: Adgangskontrol er mekanismen inden for fysisk sikkerhed og informationssikkerhed for at begrænse anonym adgang/adgang til ressourcer i en organisation eller et geografisk område. Handlingen med adgang kan betyde forbrug, indtastning eller brug af
Styring af servo ved hjælp af MPU6050 mellem Arduino og ESP8266 med HC-12: 6 trin
Styring af servo ved hjælp af MPU6050 mellem Arduino og ESP8266 Med HC-12: I dette projekt styrer vi placeringen af en servomotor ved hjælp af mpu6050 og HC-12 til kommunikation mellem Arduino UNO og ESP8266 NodeMCU
Hej Blynk! Grænseflade mellem SPEEEduino og Blynk -appen: 5 trin
Hej Blynk! Grænseflade mellem SPEEEduino og Blynk-appen: Hvad er SPEEEduino? SPEEEduino er et Wi-Fi-aktiveret mikrokontrolkort baseret på Arduino-økosystemet, bygget til undervisere. SPEEEduino kombinerer formfaktoren og mikrokontrolleren til Arduino med ESP8266 Wi-Fi SoC, hvilket gør
Grænseflade mellem en CMUCam2 og en OOPIC: 5 trin
Grænseflade mellem en CMUCam2 og en OOPIC: Oversigt over, hvordan en CMUCam2 kobles til og OOPIC