Sisällysluettelo:

3-akselisen gyroskooppianturin liitäntä BMG160 Raspberry Pi: 5 askelta
3-akselisen gyroskooppianturin liitäntä BMG160 Raspberry Pi: 5 askelta

Video: 3-akselisen gyroskooppianturin liitäntä BMG160 Raspberry Pi: 5 askelta

Video: 3-akselisen gyroskooppianturin liitäntä BMG160 Raspberry Pi: 5 askelta
Video: Hot Wire Foam Cutting Cnc Machine Review - FoxAlien HW40 2024, Heinäkuu
Anonim
Image
Image

Nykymaailmassa yli puolet nuorista ja lapsista pitää pelaamisesta ja kaikki, jotka pitävät siitä ja ovat kiinnostuneita pelaamisen teknisistä näkökohdista, tietävät liikkeen tunnistamisen tärkeyden tällä alalla. Olimme myös hämmästyneitä samasta asiasta ja vain tuodaksemme sen taululle, ajattelimme työskennellä gyroskooppianturin kanssa, joka voi mitata minkä tahansa kohteen kulmanopeuden. Joten anturi, jonka otimme tehtävän käsittelyyn, on BMG160. BMG160 on 16-bittinen, digitaalinen, kolmiaksiaalinen gyroskooppianturi, joka voi mitata kulmanopeuden kolmessa kohtisuorassa huoneen ulottuvuudessa.

Tässä opetusohjelmassa aiomme osoittaa BMG160: n toiminnan Raspberry pi: n kanssa käyttämällä Java -ohjelmointikieltä.

Tähän tarkoitukseen tarvittavat laitteet ovat seuraavat:

1. BMG160

2. Vadelma Pi

3. I2C -kaapeli

4. I2C Shield Raspberry Pi: lle

5. Ethernet -kaapeli

Vaihe 1: Yleiskatsaus BMG160:

Mitä tarvitset..!!
Mitä tarvitset..!!

Ensinnäkin haluamme tutustua BMG160 -anturimoduulin perusominaisuuksiin ja tiedonsiirtoprotokollaan, jolla se toimii.

BMG160 on pohjimmiltaan 16-bittinen, digitaalinen, kolmiaksiaalinen gyroskooppianturi, joka voi mitata kulmanopeuksia. Se pystyy laskemaan kulmanopeudet kolmella kohtisuoralla huonemitalla, x-, y- ja z-akselilla, ja tuottamaan vastaavat lähtösignaalit. Se voi kommunikoida vadelmapi -levyn kanssa I2C -yhteyskäytännön avulla. Tämä moduuli on suunniteltu täyttämään kuluttaja- ja teollisuuskäyttöön liittyvät vaatimukset.

Viestintäprotokolla, jolla anturi toimii, on I2C. I2C tarkoittaa integroitua piiriä. Se on viestintäprotokolla, jossa tiedonsiirto tapahtuu SDA- (sarjatiedot) ja SCL (sarjakello) -linjojen kautta. Se mahdollistaa useiden laitteiden yhdistämisen samanaikaisesti. Se on yksi yksinkertaisimmista ja tehokkaimmista viestintäprotokollista.

Vaihe 2: Mitä tarvitset..

Mitä tarvitset..!!
Mitä tarvitset..!!
Mitä tarvitset..!!
Mitä tarvitset..!!
Mitä tarvitset..!!
Mitä tarvitset..!!

Tavoitteemme saavuttamiseen tarvittavat materiaalit sisältävät seuraavat laitteistokomponentit:

1. BMG160

2. Vadelma Pi

3. I2C -kaapeli

4. I2C -kilpi Raspberry Pi: lle

5. Ethernet -kaapeli

Vaihe 3: Laitteiston kytkentä:

Laitteiston kytkentä
Laitteiston kytkentä
Laitteiston kytkentä
Laitteiston kytkentä

Laitteiston liitäntäosa selittää periaatteessa anturin ja vadelmapi: n väliset tarvittavat johdotusliitännät. Oikeiden liitosten varmistaminen on perustarve, kun työskentelet minkä tahansa järjestelmän kanssa halutun lähdön saavuttamiseksi. Tarvittavat liitännät ovat siis seuraavat:

BMG160 toimii I2C: n yli. Tässä on esimerkki kytkentäkaaviosta, joka osoittaa, miten anturin jokainen liitäntä kytketään.

Valmis levy on konfiguroitu I2C-rajapintaa varten, joten suosittelemme käyttämään tätä kytkentää, jos olet muuten agnostikko. Tarvitset vain neljä johtoa!

Tarvitaan vain neljä liitäntää Vcc, Gnd, SCL ja SDA, ja ne on kytketty I2C -kaapelin avulla.

Nämä yhteydet on esitetty yllä olevissa kuvissa.

Vaihe 4: 3-akselinen gyroskoopin mittaus Java-koodilla:

3-akselinen gyroskoopin mittaus Java-koodilla
3-akselinen gyroskoopin mittaus Java-koodilla
3-akselinen gyroskoopin mittaus Java-koodilla
3-akselinen gyroskoopin mittaus Java-koodilla

Raspberry pi: n käytön etuna on, että se tarjoaa joustavuuden ohjelmointikielelle, jolla haluat ohjelmoida levyn, jotta liitäntä anturiin sen kanssa. Hyödynnämme tämän levyn etua ja esittelemme sen ohjelmointia Javalla. BMG160: n Java -koodin voi ladata github -yhteisöltämme, joka on Dcube Store Community.

Käyttäjien helpottamiseksi selitämme koodin myös täällä: Ensimmäisenä koodausvaiheena sinun on ladattava pi4j -kirjasto java -tapauksessa, koska tämä kirjasto tukee koodissa käytettyjä toimintoja. Joten voit ladata kirjaston seuraavasta linkistä:

pi4j.com/install.html

Voit myös kopioida tämän anturin toimivan Java -koodin täältä:

tuonti com.pi4j.io.i2c. I2CBus;

tuoda com.pi4j.io.i2c. I2CDevice;

tuonti com.pi4j.io.i2c. I2CFactory;

tuoda java.io. IOException;

julkinen luokka BMG160

{

public staattinen void main (String args ) heittää Poikkeus

{

// Luo I2C -väylä

I2CBus -väylä = I2CFactory.getInstance (I2CBus. BUS_1);

// Hanki I2C -laite, BMG160 I2C -osoite on 0x68 (104)

I2CDlaitelaite = väylä.getDevice (0x68);

// Valitse aluerekisteri

// Määritä koko skaala -alue, 2000 dps

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

// Valitse kaistanleveysrekisteri

// Kaistanleveys 200 Hz

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

Kierteet.unen (500);

// Lue 6 tavua dataa

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

tavu data = uusi tavu [6];

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

// Muunna tiedot

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

jos (xGyro> 32767)

{

xGyro -= 65536;

}

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

jos (yGyro> 32767)

{

yGyro -= 65536;

}

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

jos (zGyro> 32767)

{

zGyro -= 65536;

}

// Tulosta tiedot näytölle

System.out.printf ("X-pyörimisakseli: %d %n", xGyro);

System.out.printf ("Y-pyörimisakseli: %d %n", yGyro);

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

}

}

Kirjasto, joka helpottaa i2c -tiedonsiirtoa anturin ja levyn välillä, on pi4j, ja sen eri paketit I2CBus, I2CDevice ja I2CFactory auttavat muodostamaan yhteyden.

tuoda com.pi4j.io.i2c. I2CBus; tuoda com.pi4j.io.i2c. I2CDevice; tuonti com.pi4j.io.i2c. I2CFactory; tuoda java.io. IOException;

Tämä koodin osa saa anturin mittaamaan kulmanopeuden kirjoittamalla vastaavat komennot write () -funktiolla ja sitten tiedot luetaan read () -funktiolla.

// Valitse aluerekisteri // Määritä koko asteikon alue, 2000 dps device.write (0x0F, (tavu) 0x80); // Valitse kaistanleveysrekisteri // Kaistanleveys 200 Hz laite. Kirjoittaa (0x10, (tavu) 0x04); Kierteet.unen (500);

// Lue 6 tavua dataa

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb tavu data = uusi tavu [6]; device.read (0x02, data, 0, 6);

Anturilta saadut tiedot muunnetaan sopivaan muotoon käyttämällä seuraavaa:

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

Tulos tulostetaan System.out.println () -toiminnolla seuraavassa muodossa.

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

Anturin lähtö näkyy yllä olevassa kuvassa.

Vaihe 5: Sovellukset:

Sovellukset
Sovellukset

BMG160: lla on monenlaisia sovelluksia laitteissa, kuten matkapuhelimissa, ihmisen ja koneen rajapintalaitteissa. Tämä anturimoduuli on suunniteltu täyttämään kuluttajasovellusten, kuten kuvanvakautuksen (DSC ja kamera-puhelin), peli- ja osoitinlaitteiden vaatimukset. Sitä käytetään myös järjestelmissä, jotka edellyttävät eleiden tunnistusta, ja järjestelmissä, joita käytetään sisäisessä navigoinnissa.

Suositeltava: