INHOUDSOPGAWE:

Koppelvlak van 3-as-gyroscoopsensor BMG160 met Framboos Pi: 5 stappe
Koppelvlak van 3-as-gyroscoopsensor BMG160 met Framboos Pi: 5 stappe

Video: Koppelvlak van 3-as-gyroscoopsensor BMG160 met Framboos Pi: 5 stappe

Video: Koppelvlak van 3-as-gyroscoopsensor BMG160 met Framboos Pi: 5 stappe
Video: 3 мегапикселя камера видеонаблюдения. Стоит ли покупать? На что влияет разрешение? 2024, Julie
Anonim
Image
Image

In die huidige wêreld is meer as die helfte van die jeug en kinders dol op speletjies, en almal wat daarvan hou, gefassineer deur die tegniese aspekte van spel, ken die belangrikheid van bewegingswaarneming op hierdie gebied. Ons was ook verbaas oor dieselfde ding, en net om dit op die planke te plaas, het ons daaraan gedink om aan 'n gyroscoopsensor te werk wat die hoeksnelheid van enige voorwerp kan meet. Die sensor wat ons aangeneem het om die taak te hanteer, is BMG160. BMG160 is 'n 16-bis, digitale, triaksiale, gyroscoopsensor wat die hoeksnelheid in drie loodregte kamerafmetings kan meet.

In hierdie handleiding gaan ons die werking van BMG160 met Raspberry pi demonstreer, met behulp van Java as programmeertaal.

Die hardeware wat u vir hierdie doel benodig, is soos volg:

1. BMG160

2. Framboos Pi

3. I2C -kabel

4. I2C -skild vir Framboos Pi

5. Ethernet -kabel

Stap 1: Oorsig BMG160:

Wat jy nodig het..!!
Wat jy nodig het..!!

In die eerste plek wil ons u vertroud maak met die basiese kenmerke van die sensormodule BMG160 en die kommunikasieprotokol waarop dit werk.

BMG160 is basies 'n 16-bis, digitale, triaksiale, gyroscoopsensor wat hoeksnelhede kan meet. Dit is in staat om hoeksnelhede in drie loodregte kamerafmetings, die x-, y- en z-as, te bereken en die ooreenstemmende uitsetsignale te verskaf. Dit kan kommunikeer met die framboos -pi -bord met behulp van die I2C -kommunikasieprotokol. Hierdie spesifieke module is ontwerp om aan die vereistes vir verbruikerstoepassings sowel as industriële doeleindes te voldoen.

Die kommunikasieprotokol waarop die sensor werk, is I2C. I2C staan vir die inter-geïntegreerde stroombaan. Dit is 'n kommunikasieprotokol waarin die kommunikasie plaasvind deur middel van SDA (seriële data) en SCL (seriële klok) lyne. Dit maak dit moontlik om verskeie toestelle gelyktydig te verbind. Dit is een van die eenvoudigste en doeltreffendste kommunikasieprotokolle.

Stap 2: Wat u benodig..

Wat jy nodig het..!!
Wat jy nodig het..!!
Wat jy nodig het..!!
Wat jy nodig het..!!
Wat jy nodig het..!!
Wat jy nodig het..!!

Die materiaal wat ons nodig het om ons doel te bereik, bevat die volgende hardeware -komponente:

1. BMG160

2. Framboos Pi

3. I2C -kabel

4. I2C -skild vir Framboos Pi

5. Ethernet -kabel

Stap 3: Hardeware -aansluiting:

Hardeware -aansluiting
Hardeware -aansluiting
Hardeware -aansluiting
Hardeware -aansluiting

Die hardeware -aansluitingsgedeelte verduidelik basies die bedradingverbindings wat tussen die sensor en die framboospi benodig word. Die korrekte noodsaaklikheid is om korrekte verbindings te verseker terwyl u aan 'n stelsel werk vir die gewenste uitset. Die vereiste verbindings is dus soos volg:

Die BMG160 werk oor I2C. Hier is die voorbeeld -bedradingsdiagram wat demonstreer hoe om elke koppelvlak van die sensor aan te sluit.

Uit die boks is die bord gekonfigureer vir 'n I2C-koppelvlak, daarom beveel ons aan dat u hierdie aansluiting gebruik as u anders agnosties is. Al wat u nodig het, is vier drade!

Slegs vier verbindings is nodig Vcc-, Gnd-, SCL- en SDA -penne en dit word met behulp van I2C -kabel verbind.

Hierdie verbindings word getoon in die foto's hierbo.

Stap 4: Meting met 3-assige gyroscoop met behulp van Java-kode:

Meting met 3-assige gyroscoop met behulp van Java-kode
Meting met 3-assige gyroscoop met behulp van Java-kode
Meting met 3-assige gyroscoop met behulp van Java-kode
Meting met 3-assige gyroscoop met behulp van Java-kode

Die voordeel van die gebruik van framboos pi is dat dit u die buigsaamheid bied van die programmeertaal waarin u die bord wil programmeer om die sensor daarmee te koppel. Deur hierdie voordeel van hierdie bord te benut, demonstreer ons hier die programmering daarvan in Java. Die Java -kode vir BMG160 kan afgelaai word van ons github -gemeenskap, dit is Dcube Store Community.

Behalwe vir die gemak van die gebruikers, verduidelik ons die kode ook hier: As die eerste stap van kodering moet u die pi4j -biblioteek aflaai in geval van java, want hierdie biblioteek ondersteun die funksies wat in die kode gebruik word. Om die biblioteek af te laai, kan u die volgende skakel besoek:

pi4j.com/install.html

U kan die werkende Java -kode vir hierdie sensor ook hier kopieer:

invoer com.pi4j.io.i2c. I2CBus;

voer com.pi4j.io.i2c. I2CD -toestel in;

invoer com.pi4j.io.i2c. I2CFactory;

invoer java.io. IOException;

openbare klas BMG160

{

openbare statiese leegte hoof (String argumente ) gooi uitsondering

{

// Skep I2C -bus

I2CBus -bus = I2CFactory.getInstance (I2CBus. BUS_1);

// Kry I2C -toestel, BMG160 I2C -adres is 0x68 (104)

I2CD -toestel = bus.getDevice (0x68);

// Kies reeksregister

// Stel die volle skaalreeks op, 2000 dps

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

// Kies bandwydte -register

// Bandwydte 200 Hz

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

Draad.slaap (500);

// Lees 6 grepe data

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

byte data = nuwe byte [6];

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

// Skakel data om

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

as (xGyro> 32767)

{

xGyro -= 65536;

}

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

as (yGyro> 32767)

{

yGyro -= 65536;

}

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

as (zGyro> 32767)

{

zGyro -= 65536;

}

// Uitset data na die skerm

System.out.printf ("X-rotasie-as: %d %n", xGyro);

System.out.printf ("Y-as van rotasie: %d %n", yGyro);

System.out.printf ("Z-as van rotasie: %d %n", zGyro);

}

}

Die biblioteek wat i2c -kommunikasie tussen die sensor en die bord vergemaklik, is pi4j, sy verskillende pakkette I2CBus, I2CDevice en I2CFactory help om die verbinding tot stand te bring.

invoer com.pi4j.io.i2c. I2CBus; invoer com.pi4j.io.i2c. I2CDevice; invoer com.pi4j.io.i2c. I2CFactory; invoer java.io. IOException;

Hierdie deel van die kode laat die sensor die hoeksnelheid meet deur die onderskeie opdragte met die skryf () -funksie te skryf en dan word die data gelees met die lees () -funksie.

// Kies reeksregister // Stel volskaalse reeks op, 2000 dps device.write (0x0F, (byte) 0x80); // Kies bandwydte -register // Bandwydte 200 Hz -toestel.skryf (0x10, (byte) 0x04); Draad.slaap (500);

// Lees 6 grepe data

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

Die data wat van die sensor ontvang word, word omgeskakel in die toepaslike formaat deur die volgende te gebruik:

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

Die uitvoer word gedruk met die System.out.println () -funksie, in die volgende formaat.

System.out.println ("X-rotasie-as: %d %n", xGyro); System.out.println ("Y-as van rotasie: %d %n", yGyro); System.out.println ("Z-as van rotasie: %d %n", zGyro);

Die uitset van die sensor word op die foto hierbo getoon.

Stap 5: Aansoeke:

Aansoeke
Aansoeke

BMG160 het 'n uiteenlopende aantal toepassings op toestelle soos selfone, toestelle vir menslike masjienkoppelvlak. Hierdie sensormodule is ontwerp om aan die vereistes vir verbruikerstoepassings te voldoen, soos beeldstabilisering (DSC en kamera-telefoon), speel- en wysapparate. Dit word ook gebruik in stelsels wat gebaarherkenning vereis en die stelsels wat gebruik word vir binnenshuise navigasie.

Aanbeveel: