Satura rādītājs:

3 asu žiroskopa sensora BMG160 saskarne ar Raspberry Pi: 5 soļi
3 asu žiroskopa sensora BMG160 saskarne ar Raspberry Pi: 5 soļi

Video: 3 asu žiroskopa sensora BMG160 saskarne ar Raspberry Pi: 5 soļi

Video: 3 asu žiroskopa sensora BMG160 saskarne ar Raspberry Pi: 5 soļi
Video: ЛУЧШИЕ НАСТРОЙКИ ГИРОСКОПА в STANDOFF 2 2024, Jūlijs
Anonim
Image
Image

Mūsdienu pasaulē vairāk nekā puse jauniešu un bērnu aizraujas ar spēlēm, un visi, kam tā patīk, aizraujas ar spēļu tehniskajiem aspektiem, zina, cik liela nozīme šajā jomā ir kustību noteikšanai. Mēs arī bijām pārsteigti par to pašu, un, lai to parādītu uz dēļiem, mēs domājām strādāt pie žiroskopa sensora, kas var izmērīt jebkura objekta leņķisko ātrumu. Tātad sensors, kuru mēs izmantojām uzdevuma risināšanai, ir BMG160. BMG160 ir 16 bitu digitāls, triaksiāls žiroskopa sensors, kas var izmērīt leņķisko ātrumu trīs perpendikulāros telpas izmēros.

Šajā apmācībā mēs demonstrēsim BMG160 darbību ar Raspberry pi, izmantojot programmēšanas valodu Java.

Aparatūra, kas jums būs nepieciešama šim nolūkam, ir šāda:

1. BMG160

2. Aveņu Pi

3. I2C kabelis

4. I2C vairogs Raspberry Pi

5. Ethernet kabelis

1. darbība: BMG160 pārskats:

Ko tev vajag..!!
Ko tev vajag..!!

Vispirms mēs vēlētos jūs iepazīstināt ar BMG160 sensora moduļa pamatfunkcijām un sakaru protokolu, kurā tas darbojas.

BMG160 būtībā ir 16 bitu digitāls, triaksiāls žiroskopa sensors, kas var izmērīt leņķisko ātrumu. Tas spēj aprēķināt leņķisko ātrumu trīs perpendikulāros telpas izmēros-x, y un z asī un nodrošināt atbilstošos izejas signālus. Tas var sazināties ar aveņu pi plati, izmantojot I2C sakaru protokolu. Šis konkrētais modulis ir izstrādāts, lai apmierinātu prasības attiecībā uz patēriņa lietojumiem, kā arī rūpnieciskiem mērķiem.

Sakaru protokols, kurā darbojas sensors, ir I2C. I2C apzīmē integrēto shēmu. Tas ir sakaru protokols, kurā saziņa notiek, izmantojot SDA (sērijas dati) un SCL (sērijas pulksteņa) līnijas. Tas ļauj vienlaikus savienot vairākas ierīces. Tas ir viens no vienkāršākajiem un efektīvākajiem sakaru protokoliem.

2. solis: kas jums nepieciešams..

Ko tev vajag..!!
Ko tev vajag..!!
Ko tev vajag..!!
Ko tev vajag..!!
Ko tev vajag..!!
Ko tev vajag..!!

Materiāli, kas nepieciešami mūsu mērķa sasniegšanai, ietver šādas aparatūras sastāvdaļas:

1. BMG160

2. Aveņu Pi

3. I2C kabelis

4. I2C vairogs Raspberry Pi

5. Ethernet kabelis

3. darbība. Aparatūras savienošana:

Aparatūras savienojums
Aparatūras savienojums
Aparatūras savienojums
Aparatūras savienojums

Aparatūras savienošanas sadaļa pamatā izskaidro nepieciešamos vadu savienojumus starp sensoru un aveņu pi. Pareizu savienojumu nodrošināšana ir pamatvajadzība, strādājot pie jebkuras sistēmas vēlamajam rezultātam. Tātad nepieciešamie savienojumi ir šādi:

BMG160 darbosies, izmantojot I2C. Šeit ir elektroinstalācijas shēmas piemērs, kas parāda, kā savienot katru sensora saskarni.

Izņemot komplektu, tāfele ir konfigurēta I2C saskarnei, tāpēc mēs iesakām izmantot šo savienojumu, ja esat citādi agnostiķis. Viss, kas Jums nepieciešams, ir četri vadi!

Nepieciešami tikai četri savienojumi Vcc, Gnd, SCL un SDA, un tie ir savienoti, izmantojot I2C kabeli.

Šie savienojumi ir parādīti iepriekš redzamajos attēlos.

4. solis: 3 asu žiroskopa mērīšana, izmantojot Java kodu:

3 asu žiroskopa mērīšana, izmantojot Java kodu
3 asu žiroskopa mērīšana, izmantojot Java kodu
3 asu žiroskopa mērīšana, izmantojot Java kodu
3 asu žiroskopa mērīšana, izmantojot Java kodu

Aveņu pi izmantošanas priekšrocība ir tā, ka tas nodrošina programmēšanas valodas elastību, kādā vēlaties programmēt tāfeli, lai sasaistītu sensoru ar to. Izmantojot šīs plates priekšrocības, mēs šeit demonstrējam tās programmēšanu Java. BMG160 Java kodu var lejupielādēt no mūsu github kopienas, kas ir Dcube Store Community.

Tāpat kā lietotāju ērtībai, mēs šeit arī izskaidrojam kodu: Kā pirmais kodēšanas solis java gadījumā ir jālejupielādē bibliotēka pi4j, jo šī bibliotēka atbalsta kodā izmantotās funkcijas. Tātad, lai lejupielādētu bibliotēku, varat apmeklēt šo saiti:

pi4j.com/install.html

Šeit varat arī nokopēt šī sensora darba Java kodu:

importēt com.pi4j.io.i2c. I2CBus;

importēt com.pi4j.io.i2c. I2CDevice;

importēt com.pi4j.io.i2c. I2CFactory;

importēt java.io. IOException;

publiskā klase BMG160

{

public static void main (String args ) metieni Izņēmums

{

// Izveidot I2C kopni

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

// Iegūt I2C ierīci, BMG160 I2C adrese ir 0x68 (104)

I2CDierīces ierīce = bus.getDevice (0x68);

// Atlasīt diapazona reģistru

// Pilna skalas diapazona konfigurēšana, 2000 dps

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

// Atlasiet joslas platuma reģistru

// Joslas platums 200 Hz

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

Vītne.miega (500);

// Lasīt 6 baitus datu

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

baits dati = jauns baits [6];

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

// Konvertēt datus

int xGyro = ((dati [1] un 0xFF) * 256 + (dati [0] un 0xFF));

ja (xGyro> 32767)

{

xGyro -= 65536;

}

int yGyro = ((dati [3] un 0xFF) * 256 + (dati [2] un 0xFF));

ja (yGyro> 32767)

{

yGyro -= 65536;

}

int zGyro = ((dati [5] un 0xFF) * 256 + (dati [4] un 0xFF));

ja (zGyro> 32767)

{

zGyro -= 65536;

}

// Izvadiet datus ekrānā

System.out.printf ("Rotācijas X ass: %d %n", xGyro);

System.out.printf ("Rotācijas Y ass: %d %n", yGyro);

System.out.printf ("Z rotācijas ass: %d %n", zGyro);

}

}

Bibliotēka, kas atvieglo i2c saziņu starp sensoru un plati, ir pi4j, un tās dažādās paketes I2CBus, I2CDevice un I2CFactory palīdz izveidot savienojumu.

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

Šī koda daļa liek sensoram izmērīt leņķisko ātrumu, rakstot attiecīgās komandas, izmantojot funkciju write (), un pēc tam dati tiek nolasīti, izmantojot funkciju read ().

// Atlasīt diapazona reģistru // Konfigurēt pilnu skalas diapazonu, 2000 dps device.write (0x0F, (baits) 0x80); // Atlasīt joslas platuma reģistru // Joslas platums 200 Hz ierīce. Rakstīt (0x10, (baits) 0x04); Vītne.miega (500);

// Lasīt 6 baitus datu

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb baits dati = jauns baits [6]; device.read (0x02, dati, 0, 6);

No sensora saņemtie dati tiek pārveidoti atbilstošā formātā, izmantojot tālāk norādīto.

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

Izvade tiek izdrukāta, izmantojot funkciju System.out.println () šādā formātā.

System.out.println ("Rotācijas X ass: %d %n", xGyro); System.out.println ("Rotācijas Y ass: %d %n", yGyro); System.out.println ("Z rotācijas ass: %d %n", zGyro);

Sensora izeja ir parādīta attēlā iepriekš.

5. darbība. Lietojumprogrammas:

Lietojumprogrammas
Lietojumprogrammas

BMG160 ir dažādas lietojumprogrammas tādās ierīcēs kā mobilie tālruņi, cilvēka un mašīnas saskarnes ierīces. Šis sensora modulis ir izstrādāts, lai atbilstu prasībām, kas attiecas uz tādām patērētāju vajadzībām kā attēlu stabilizācija (DSC un kamera-tālrunis), spēļu un rādītājierīces. To izmanto arī sistēmās, kurām nepieciešama žestu atpazīšana, un sistēmās, ko izmanto iekštelpu navigācijā.

Ieteicams: