Obsah:

Rozhranie 3-osového gyroskopického senzora BMG160 s Raspberry Pi: 5 krokov
Rozhranie 3-osového gyroskopického senzora BMG160 s Raspberry Pi: 5 krokov

Video: Rozhranie 3-osového gyroskopického senzora BMG160 s Raspberry Pi: 5 krokov

Video: Rozhranie 3-osového gyroskopického senzora BMG160 s Raspberry Pi: 5 krokov
Video: Rozhranie #3 - Pospíš & Sillay, Nany Hudák, Veronika Kostková a Veronika Jarábková, FI 2024, November
Anonim
Image
Image

V dnešnom svete viac ako polovica mládeže a detí miluje hry a všetci, ktorí ju majú radi, fascinovaní technickými aspektmi hrania, poznajú dôležitosť snímania pohybu v tejto oblasti. Boli sme tiež ohromení rovnakou vecou a len aby sme to uviedli na dosky, napadlo nás pracovať na gyroskopickom senzore, ktorý dokáže merať uhlovú rýchlosť akéhokoľvek objektu. Senzor, ktorý sme použili pri riešení tejto úlohy, je BMG160. BMG160 je 16-bitový, digitálny, trojosový, gyroskopický senzor, ktorý dokáže merať uhlovú rýchlosť v troch kolmých rozmeroch miestnosti.

V tomto tutoriáli ukážeme, ako funguje BMG160 s Raspberry pi pomocou programovacieho jazyka Java.

Hardvér, ktorý budete na tento účel potrebovať, je nasledujúci:

1. BMG160

2. Raspberry Pi

3. Kábel I2C

4. I2C štít pre Raspberry Pi

5. Ethernetový kábel

Krok 1: Prehľad BMG160:

Čo potrebuješ..!!
Čo potrebuješ..!!

V prvom rade by sme vás chceli zoznámiť so základnými funkciami senzorového modulu BMG160 a komunikačným protokolom, na ktorom funguje.

BMG160 je v zásade 16-bitový, digitálny, trojosový, gyroskopický snímač, ktorý dokáže merať uhlové rýchlosti. Je schopný vypočítať uhlové rýchlosti v troch kolmých rozmeroch miestnosti, osi x, y a z, a poskytovať zodpovedajúce výstupné signály. S komunikačnou doskou Raspberry Pi môže komunikovať pomocou komunikačného protokolu I2C. Tento konkrétny modul je navrhnutý tak, aby spĺňal požiadavky na spotrebiteľské aplikácie aj na priemyselné účely.

Komunikačný protokol, na ktorom senzor funguje, je I2C. I2C znamená interintegrovaný obvod. Ide o komunikačný protokol, v ktorom komunikácia prebieha prostredníctvom liniek SDA (sériové údaje) a SCL (sériové hodiny). Umožňuje pripojenie viacerých zariadení súčasne. Je to jeden z najjednoduchších a najefektívnejších komunikačných protokolov.

Krok 2: Čo potrebujete.. !

Čo potrebuješ..!!
Čo potrebuješ..!!
Čo potrebuješ..!!
Čo potrebuješ..!!
Čo potrebuješ..!!
Čo potrebuješ..!!

Materiály, ktoré potrebujeme na dosiahnutie nášho cieľa, obsahujú nasledujúce hardvérové komponenty:

1. BMG160

2. Raspberry Pi

3. Kábel I2C

4. I2C štít pre Raspberry Pi

5. Ethernetový kábel

Krok 3: Pripojenie hardvéru:

Pripojenie hardvéru
Pripojenie hardvéru
Pripojenie hardvéru
Pripojenie hardvéru

Časť zapojenia hardvéru v zásade vysvetľuje zapojenie potrebné medzi senzorom a malinovým pi. Zabezpečenie správneho pripojenia je základnou potrebou pri práci na akomkoľvek systéme s požadovaným výstupom. Potrebné spojenia sú teda tieto:

BMG160 bude fungovať cez I2C. Tu je príklad schémy zapojenia, ktorá ukazuje, ako prepojiť každé rozhranie snímača.

Hneď po vybalení je doska nakonfigurovaná na rozhranie I2C, preto vám toto pripojenie odporúčame použiť, ak ste inak agnostik. Všetko, čo potrebujete, sú štyri drôty!

Vyžadujú sa iba štyri pripojenia Vcc, Gnd, SCL a SDA piny, ktoré sú prepojené pomocou kábla I2C.

Tieto spojenia sú znázornené na obrázkoch vyššie.

Krok 4: Meranie 3-osového gyroskopu pomocou kódu Java:

Meranie 3-osého gyroskopu pomocou kódu Java
Meranie 3-osého gyroskopu pomocou kódu Java
Meranie 3-osého gyroskopu pomocou kódu Java
Meranie 3-osého gyroskopu pomocou kódu Java

Výhodou použitia maliny pi je, že vám poskytuje flexibilitu programovacieho jazyka, v ktorom chcete dosku programovať, aby ste s ňou mohli prepojiť senzor. S využitím tejto výhody tejto dosky tu demonštrujeme jej programovanie v Jave. Kód Java pre BMG160 je možné stiahnuť z našej komunity github, ktorou je komunita obchodu Dcube.

Rovnako ako pre jednoduchosť používateľov, vysvetľujeme kód aj tu: Ako prvý krok kódovania si musíte stiahnuť knižnicu pi4j v prípade jazyka Java, pretože táto knižnica podporuje funkcie použité v kóde. Ak si chcete stiahnuť knižnicu, môžete navštíviť nasledujúci odkaz:

pi4j.com/install.html

Pracovný kód java pre tento senzor môžete skopírovať aj tu:

import com.pi4j.io.i2c. I2CBus;

import com.pi4j.io.i2c. I2CDevice;

import com.pi4j.io.i2c. I2CFactory;

import java.io. IOException;

verejná trieda BMG160

{

public static void main (String args ) hodí výnimku

{

// Vytvorenie zbernice I2C

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

// Získať zariadenie I2C, adresa BMG160 I2C je 0x68 (104)

I2CDevice zariadenie = bus.getDevice (0x68);

// Vyberte register rozsahu

// Konfigurácia celého rozsahu stupnice, 2 000 dps

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

// Vyberte register šírky pásma

// Šírka pásma 200 Hz

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

Thread.sleep (500);

// Prečítajte 6 bajtov údajov

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

bajt dáta = nový bajt [6];

device.read (0x02, dáta, 0, 6);

// Previesť údaje

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

ak (xGyro> 32767)

{

xGyro -= 65536;

}

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

ak (yGyro> 32767)

{

yGyro -= 65536;

}

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

ak (zGyro> 32767)

{

zGyro -= 65536;

}

// Výstup údajov na obrazovku

System.out.printf ("os x rotácie: %d %n", xGyro);

System.out.printf ("os Y rotácie: %d %n", yGyro);

System.out.printf ("os Z rotácie: %d %n", zGyro);

}

}

Knižnica, ktorá uľahčuje komunikáciu i2c medzi senzorom a doskou, je pi4j a jej rôzne balíky I2CBus, I2CDevice a I2CFactory pomáhajú nadviazať spojenie.

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

Táto časť kódu spôsobuje, že senzor meria uhlovú rýchlosť zápisom príslušných príkazov pomocou funkcie write () a potom sa údaje načítajú pomocou funkcie read ().

// Vyberte register rozsahu // Konfigurujte rozsah plného rozsahu, 2000 dps device.write (0x0F, (byte) 0x80); // Vyberte register šírky pásma // Šírka pásma 200 Hz zariadenie.písať (0x10, (bajt) 0x04); Thread.sleep (500);

// Prečítajte 6 bajtov údajov

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

Údaje prijaté zo snímača sa prevedú do vhodného formátu pomocou nasledujúceho postupu:

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

Výstup je vytlačený pomocou funkcie System.out.println () v nasledujúcom formáte.

System.out.println ("os x rotácie: %d %n", xGyro); System.out.println ("os rotácie Y: %d %n", yGyro); System.out.println ("os Z rotácie: %d %n", zGyro);

Výstup senzora je zobrazený na obrázku vyššie.

Krok 5: Aplikácie:

Aplikácie
Aplikácie

BMG160 má rôzny počet aplikácií v zariadeniach, ako sú mobilné telefóny, zariadenia s rozhraním človek -stroj. Tento senzorový modul bol navrhnutý tak, aby spĺňal požiadavky na spotrebiteľské aplikácie, ako je stabilizácia obrazu (DSC a telefón s fotoaparátom), herné a ukazovacie zariadenia. Používa sa tiež v systémoch, ktoré vyžadujú rozpoznávanie gest a v systémoch používaných vo vnútornej navigácii.

Odporúča: