Sisukord:

3-teljelise güroskoopianduri BMG160 liidestamine Raspberry Pi-ga: 5 sammu
3-teljelise güroskoopianduri BMG160 liidestamine Raspberry Pi-ga: 5 sammu
Anonim
Image
Image

Tänapäeva maailmas armastavad rohkem kui pooled noored ja lapsed mängimist ning kõik, kellele see meeldib, on hasartmängude tehnilistest aspektidest lummatud, teavad selles valdkonnas liikumisandurite tähtsust. Meid hämmastas see sama asi ja lihtsalt selle tahvlitele toomiseks mõtlesime töötada güroskoobi anduri kallal, mis suudab mõõta mis tahes objekti nurkkiirust. Niisiis, andur, mille ülesande lahendamiseks kasutasime, on BMG160. BMG160 on 16-bitine digitaalne, kolmeteljeline güroskoobi andur, mis suudab mõõta nurgakiirust kolmes risti asetsevas ruumis.

Selles õpetuses demonstreerime BMG160 tööd Raspberry pi -ga, kasutades programmeerimiskeelena Java.

Riistvara, mida selleks vajate, on järgmine:

1. BMG160

2. Vaarika Pi

3. I2C kaabel

4. I2C kilp Raspberry Pi jaoks

5. Etherneti kaabel

1. samm: BMG160 ülevaade:

Mida sa vajad..!!
Mida sa vajad..!!

Kõigepealt soovime tutvustada teile BMG160 andurimooduli põhiomadusi ja sideprotokolli, millel see töötab.

BMG160 on põhimõtteliselt 16-bitine digitaalne, kolmeteljeline güroskoobisensor, mis suudab mõõta nurkkiirust. See on võimeline arvutama nurkkiirusi kolmes risti asetsevas ruumimõõdus, x-, y- ja z-teljel, ning andma vastavad väljundsignaalid. See saab suhelda vaarika pi plaadiga, kasutades I2C sideprotokolli. See konkreetne moodul on loodud nii tarbijate kui ka tööstuse jaoks.

Sideprotokoll, millel andur töötab, on I2C. I2C tähistab integraallülitust. See on suhtlusprotokoll, milles side toimub SDA (jadaandmed) ja SCL (jadakell) liinide kaudu. See võimaldab ühendada mitu seadet korraga. See on üks lihtsamaid ja tõhusamaid suhtlusprotokolle.

Samm: mida vajate..

Mida sa vajad..!!
Mida sa vajad..!!
Mida sa vajad..!!
Mida sa vajad..!!
Mida sa vajad..!!
Mida sa vajad..!!

Eesmärgi saavutamiseks vajalikud materjalid sisaldavad järgmisi riistvarakomponente:

1. BMG160

2. Vaarika Pi

3. I2C kaabel

4. I2C kilp Raspberry Pi jaoks

5. Etherneti kaabel

3. samm: riistvara ühendamine:

Riistvara ühendamine
Riistvara ühendamine
Riistvara ühendamine
Riistvara ühendamine

Riistvara ühendamise jaotis selgitab põhimõtteliselt anduri ja vaarika pi vahel vajalikke juhtmestiku ühendusi. Soovitud väljundi mis tahes süsteemiga töötamisel on põhivajadus õigete ühenduste tagamine. Seega on vajalikud ühendused järgmised:

BMG160 töötab üle I2C. Siin on näide ühendusskeemist, mis näitab, kuidas anduri iga liidest ühendada.

Valmis plaat on konfigureeritud I2C liidese jaoks, seega soovitame seda ühendamist kasutada, kui olete muidu agnostik. Kõik, mida vajate, on neli juhtmest!

Vaja on ainult nelja ühendust Vcc, Gnd, SCL ja SDA ning need ühendatakse I2C kaabli abil.

Neid seoseid on näidatud ülaltoodud piltidel.

4. samm: 3-teljeline güroskoobi mõõtmine Java-koodi abil:

3-teljeline güroskoobi mõõtmine Java-koodi abil
3-teljeline güroskoobi mõõtmine Java-koodi abil
3-teljeline güroskoobi mõõtmine Java-koodi abil
3-teljeline güroskoobi mõõtmine Java-koodi abil

Vaarika pi kasutamise eeliseks on see, et saate paindlikult programmeerimiskeelt, milles soovite plaati programmeerida, et andurit sellega liidestada. Kasutades selle plaadi eeliseid, demonstreerime siin selle programmeerimist Java -s. BMG160 Java -koodi saab alla laadida meie githubi kogukonnast, mis on Dcube Store Community.

Lisaks kasutajate mugavusele selgitame koodi ka siin: kodeerimise esimese sammuna peate java korral alla laadima raamatukogu pi4j, kuna see teek toetab koodis kasutatavaid funktsioone. Niisiis, teegi allalaadimiseks võite külastada järgmist linki:

pi4j.com/install.html

Siit saate kopeerida ka selle anduri töötava java koodi:

import com.pi4j.io.i2c. I2CBus;

import com.pi4j.io.i2c. I2CDevice;

import com.pi4j.io.i2c. I2CFactory;

importige java.io. IOException;

avalik klass BMG160

{

public static void main (String args ) viskab Erand

{

// Loo I2C siin

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

// Hangi I2C seade, BMG160 I2C aadress on 0x68 (104)

I2CDseadme seade = buss.getDevice (0x68);

// Valige vahemiku register

// Täieliku skaala vahemiku seadistamine, 2000 dps

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

// Valige ribalaiuse register

// ribalaius 200 Hz

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

Niit.unenägu (500);

// Lugege 6 baiti andmeid

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

bait andmed = uus bait [6];

device.read (0x02, andmed, 0, 6);

// Teisenda andmed

int xGyro = ((andmed [1] ja 0xFF) * 256 + (andmed [0] ja 0xFF));

kui (xGyro> 32767)

{

xGyro -= 65536;

}

int yGyro = ((andmed [3] ja 0xFF) * 256 + (andmed [2] ja 0xFF));

kui (yGyro> 32767)

{

yGyro -= 65536;

}

int zGyro = ((andmed [5] ja 0xFF) * 256 + (andmed [4] ja 0xFF));

kui (zGyro> 32767)

{

zGyro -= 65536;

}

// Andmete väljastamine ekraanile

System.out.printf ("Pöörlemise X-telg: %d %n", xGyro);

System.out.printf ("Y pöörlemistelg: %d %n", yGyro);

System.out.printf ("Z-pöörlemistelg: %d %n", zGyro);

}

}

Teek, mis hõlbustab i2c suhtlust anduri ja plaadi vahel, on pi4j, selle erinevad paketid I2CBus, I2CDevice ja I2CFactory aitavad ühendust luua.

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

See koodi osa paneb anduri mõõtma nurkkiirust, kirjutades vastavad käsud, kasutades funktsiooni write (), ja seejärel loetakse andmed funktsiooni read () abil.

// Vali vahemiku register // Täieliku skaala vahemiku seadistamine, 2000 dps device.write (0x0F, (bait) 0x80); // Vali ribalaiuse register // Bandwidth 200 Hz device.write (0x10, (bait) 0x04); Niit.unenägu (500);

// Lugege 6 baiti andmeid

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb bait andmed = uus bait [6]; device.read (0x02, andmed, 0, 6);

Andurilt saadud andmed teisendatakse sobivasse vormingusse, kasutades järgmist.

int xGyro = ((andmed [1] ja 0xFF) * 256 + (andmed [0] ja 0xFF)); kui (xGyro> 32767) {xGyro -= 65536; } int yGyro = ((andmed [3] ja 0xFF) * 256 + (andmed [2] ja 0xFF)); kui (yGyro> 32767) {yGyro -= 65536; } int zGyro = ((andmed [5] ja 0xFF) * 256 + (andmed [4] ja 0xFF)); if (zGyro> 32767) {zGyro -= 65536; }

Väljund prinditakse funktsiooni System.out.println () abil järgmises vormingus.

System.out.println ("X-pöörlemistelg: %d %n", xGyro); System.out.println ("Y pöörlemistelg: %d %n", yGyro); System.out.println ("Z-pöörlemistelg: %d %n", zGyro);

Anduri väljund on näidatud ülaltoodud pildil.

Samm: rakendused:

Rakendused
Rakendused

BMG160 -l on mitmesuguseid rakendusi sellistes seadmetes nagu mobiiltelefonid, inimese ja masina liideseadmed. See andurimoodul on loodud vastama tarbijatele mõeldud rakendustele, nagu pildistabilisaator (DSC ja kaamera-telefon), mängudele ja osutusseadmetele. Seda kasutatakse ka süsteemides, mis nõuavad žestide tuvastamist, ja süsteemides, mida kasutatakse siseruumides navigeerimiseks.

Soovitan: