Sisällysluettelo:
- Vaihe 1: Yleiskatsaus BMG160:
- Vaihe 2: Mitä tarvitset..
- Vaihe 3: Laitteiston kytkentä:
- Vaihe 4: 3-akselinen gyroskoopin mittaus Java-koodilla:
- Vaihe 5: Sovellukset:
Video: 3-akselisen gyroskooppianturin liitäntä BMG160 Raspberry Pi: 5 askelta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
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:
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..
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 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:
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:
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:
Liitäntä GPS -moduuliin Raspberry Pi -laitteella: 10 vaihetta
Liitäntä GPS -moduuliin Raspberry Pi: Hei kaverit !! Haluatko liittää GPS -moduulin Raspberry Pi: n kanssa? Mutta onko sen tekemisessä vaikeuksia? "Älä huoli, olen täällä auttamassa sinua! Voit aloittaa käyttämällä seuraavia osia:
Valitse SD -liitäntä ESP32: 12 askelta (kuvien kanssa)
Valitse SD -liitäntä ESP32: lle: Nämä ohjeet osoittavat jotain SD -käyttöliittymän valitsemisesta ESP32 -projektillesi
Liitäntä ADXL335 -anturi Raspberry Pi 4B -laitteessa neljässä vaiheessa: 4 vaihetta
Liitäntä ADXL335 -anturi Raspberry Pi 4B -laitteessa 4 vaiheessa: Tässä opetusohjelmassa aiomme liittää Raspberry Pi 4: n ADXL335 -kiihtyvyysanturin (Shunya O/S)
Liitäntä 3-akseliseen gyroskooppianturiin BMG160 hiukkasen kanssa: 5 vaihetta
Liitäntä 3-akseliseen gyroskooppianturiin BMG160 hiukkasen kanssa: Nykymaailmassa yli puolet nuorista ja lapsista pitää pelaamisesta ja kaikki, jotka pitävät siitä, ovat kiinnostuneita pelaamisen teknisistä näkökohdista, tietävät liikkeen tunnistamisen tärkeyden tämä verkkotunnus. Olimme myös hämmästyneitä samasta asiasta
MPU6050-kiihtyvyysmittari+gyroskooppianturin perusteet: 3 vaihetta
MPU6050-kiihtyvyysmittari+gyroskooppianturin perusteet: MPU6050 on erittäin hyödyllinen anturi. Mpu 6050 on IMU: Inertiaalinen mittausyksikkö (IMU) on elektroninen laite, joka mittaa ja raportoi kehon ominaisvoiman, kulmanopeuden ja joskus suunnan kehosta, käyttämällä yhdistelmää