Përmbajtje:

Ndërfaqja e sensorit të xhiroskopit me 3 boshte BMG160 me mjedër Pi: 5 hapa
Ndërfaqja e sensorit të xhiroskopit me 3 boshte BMG160 me mjedër Pi: 5 hapa

Video: Ndërfaqja e sensorit të xhiroskopit me 3 boshte BMG160 me mjedër Pi: 5 hapa

Video: Ndërfaqja e sensorit të xhiroskopit me 3 boshte BMG160 me mjedër Pi: 5 hapa
Video: RC Crash Arrma Limitless 8s 200+ км/ч. 2024, Nëntor
Anonim
Image
Image

Në botën e sotme, më shumë se gjysma e të rinjve dhe fëmijëve janë të dhënë pas lojrave dhe të gjithë ata që e duan atë, të magjepsur nga aspektet teknike të lojrave e dinë rëndësinë e ndjeshmërisë së lëvizjes në këtë fushë. Ne gjithashtu u mahnitëm nga e njëjta gjë dhe vetëm për ta sjellë atë në dërrasa, ne menduam të punojmë në një sensor xhiroskopi i cili mund të masë shkallën këndore të çdo objekti. Pra, sensori që morëm për t'u marrë me detyrën është BMG160. BMG160 është një sensor xhiroskop 16-bit, dixhital, treaksial, i cili mund të masë shkallën këndore në tre dimensione të dhomës pingul.

Në këtë tutorial, ne do të demonstrojmë punën e BMG160 me Raspberry pi, duke përdorur Java si gjuhë programimi.

Pajisjet kompjuterike që do t'ju nevojiten për këtë qëllim janë si më poshtë:

1. BMG160

2. Raspberry Pi

3. Kabllo I2C

4. Mburoja I2C për Raspberry Pi

5. Kabllo Ethernet

Hapi 1: Vështrim BMG160:

Ajo qe ju nevojitet.. !!
Ajo qe ju nevojitet.. !!

Para së gjithash, ne dëshirojmë t'ju njohim me veçoritë themelore të modulit të sensorit që është BMG160 dhe protokollin e komunikimit në të cilin funksionon.

BMG160 është në thelb një sensor xhiroskop 16-bit, dixhital, treaksial, i cili mund të masë normat këndore. Shtë i aftë të llogarisë ritmet këndore në tre dimensione të dhomës pingul, boshtin x-, y- dhe z, dhe të sigurojë sinjalet përkatëse të daljes. Mund të komunikojë me bordin e mjedrës pi duke përdorur protokollin e komunikimit I2C. Ky modul i veçantë është krijuar për të përmbushur kërkesat për aplikimet e konsumatorit, si dhe qëllimet industriale.

Protokolli i komunikimit në të cilin punon sensori është I2C. I2C qëndron për qarkun e integruar. Shtë një protokoll komunikimi në të cilin komunikimi zhvillohet përmes linjave SDA (të dhëna serike) dhe SCL (ora seriale). Mundëson lidhjen e shumë pajisjeve në të njëjtën kohë. Shtë një nga protokollet më të thjeshtë dhe më efikas të komunikimit.

Hapi 2: Ajo që ju nevojitet.. !

Ajo qe ju nevojitet.. !!
Ajo qe ju nevojitet.. !!
Ajo qe ju nevojitet.. !!
Ajo qe ju nevojitet.. !!
Ajo qe ju nevojitet.. !!
Ajo qe ju nevojitet.. !!

Materialet që na duhen për të arritur qëllimin tonë përfshijnë përbërësit e mëposhtëm të harduerit:

1. BMG160

2. Raspberry Pi

3. Kabllo I2C

4. Mburoja I2C Për Raspberry Pi

5. Kabllo Ethernet

Hapi 3: Bashkimi i harduerit:

Lidhja e harduerit
Lidhja e harduerit
Lidhja e harduerit
Lidhja e harduerit

Seksioni i lidhjes së harduerit në thelb shpjegon lidhjet e telave të kërkuara midis sensorit dhe mjedrës pi. Sigurimi i lidhjeve të sakta është nevoja themelore gjatë punës në çdo sistem për daljen e dëshiruar. Pra, lidhjet e nevojshme janë si më poshtë:

BMG160 do të funksionojë mbi I2C. Këtu është shembulli i diagramit të instalimeve elektrike, duke demonstruar se si të lidhni secilën ndërfaqe të sensorit.

Jashtë kutisë, bordi është i konfiguruar për një ndërfaqe I2C, si i tillë ne rekomandojmë përdorimin e këtij bashkimi nëse përndryshe jeni agnostik. Gjithçka që ju nevojitet janë katër tela!

Vetëm katër lidhje kërkohen kunjat Vcc, Gnd, SCL dhe SDA dhe këto janë të lidhura me ndihmën e kabllit I2C.

Këto lidhje demonstrohen në fotot e mësipërme.

Hapi 4: Matja e xhiroskopit me 3 boshte duke përdorur kodin Java:

Matja e xhiroskopit me 3 boshte duke përdorur kodin Java
Matja e xhiroskopit me 3 boshte duke përdorur kodin Java
Matja e xhiroskopit me 3 boshte duke përdorur kodin Java
Matja e xhiroskopit me 3 boshte duke përdorur kodin Java

Avantazhi i përdorimit të mjedrës pi është, që ju siguron fleksibilitetin e gjuhës programuese në të cilën dëshironi të programoni bordin në mënyrë që të ndërlidhni sensorin me të. Duke shfrytëzuar këtë avantazh të këtij bordi, ne po demonstrojmë këtu programimin e tij në Java. Kodi Java për BMG160 mund të shkarkohet nga komuniteti ynë github që është Dcube Store Community.

Si dhe për lehtësinë e përdoruesve, ne po e shpjegojmë kodin edhe këtu: Si hapi i parë i kodimit ju duhet të shkarkoni bibliotekën pi4j në rast java, sepse kjo bibliotekë mbështet funksionet e përdorura në kod. Pra, për të shkarkuar bibliotekën mund të vizitoni lidhjen e mëposhtme:

pi4j.com/install.html

Ju gjithashtu mund të kopjoni kodin java të punës për këtë sensor nga këtu:

import com.pi4j.io.i2c. I2CBus;

import com.pi4j.io.i2c. I2CDevice;

import com.pi4j.io.i2c. I2CFactory;

import java.io. IOException;

klasa publike BMG160

{

public static void main (String args ) hedh Exception

{

// Krijo autobus I2C

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

// Merrni pajisjen I2C, adresa BMG160 I2C është 0x68 (104)

Pajisja I2CDevice = bus.getDevice (0x68);

// Zgjidhni regjistrin e diapazonit

// Konfiguro gamën e plotë të shkallës, 2000 dps

pajisje.shkruaj (0x0F, (bajt) 0x80);

// Zgjidh regjistrin e gjerësisë së brezit

// Gjerësia e brezit 200 Hz

pajisje.shkruaj (0x10, (bajt) 0x04);

Thread.sleep (500);

// Lexoni 6 bajt të dhëna

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

bajt të dhëna = bajt i ri [6];

pajisje.lex (0x02, të dhëna, 0, 6);

// Shndërroni të dhënat

int xGyro = ((të dhënat [1] & 0xFF) * 256 + (të dhënat [0] & 0xFF));

nëse (xGyro> 32767)

{

xGyro -= 65536;

}

int yGyro = ((të dhënat [3] & 0xFF) * 256 + (të dhënat [2] & 0xFF));

nëse (yGyro> 32767)

{

yGyro -= 65536;

}

int zGyro = ((të dhënat [5] & 0xFF) * 256 + (të dhënat [4] & 0xFF));

nëse (zGyro> 32767)

{

zGyro -= 65536;

}

// Dalja e të dhënave në ekran

System.out.printf ("Boshti X i rrotullimit: %d %n", xGyro);

System.out.printf ("Y-boshti i rrotullimit: %d %n", yGyro);

System.out.printf ("Z-boshti i rrotullimit: %d %n", zGyro);

}

}

Biblioteka që lehtëson komunikimin i2c midis sensorit dhe bordit është pi4j, paketat e saj të ndryshme I2CBus, I2CDevice dhe I2CFactory ndihmojnë për të vendosur lidhjen.

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

Kjo pjesë e kodit bën që sensori të masë shkallën këndore duke shkruar komandat përkatëse duke përdorur funksionin write () dhe më pas të dhënat lexohen duke përdorur funksionin read ().

// Zgjidh regjistrin e diapazonit // Konfiguro gamën e plotë të shkallës, pajisjen 2000 dps. Shkruaj (0x0F, (bajt) 0x80); // Përzgjedh regjistrin e gjerësisë së brezit // Pajisja me gjerësi brezi 200 Hz.shkruaj (0x10, (bajt) 0x04); Thread.sleep (500);

// Lexoni 6 bajt të dhëna

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb byte të dhëna = bajt i ri [6]; pajisje.lex (0x02, të dhëna, 0, 6);

Të dhënat e marra nga sensori shndërrohen në formatin e duhur duke përdorur sa vijon:

int xGyro = ((të dhënat [1] & 0xFF) * 256 + (të dhënat [0] & 0xFF)); nëse (xGyro> 32767) {xGyro -= 65536; } int yGyro = ((të dhënat [3] & 0xFF) * 256 + (të dhënat [2] & 0xFF)); nëse (yGyro> 32767) {yGyro -= 65536; } int zGyro = ((të dhënat [5] & 0xFF) * 256 + (të dhënat [4] & 0xFF)); nëse (zGyro> 32767) {zGyro -= 65536; }

Dalja shtypet duke përdorur funksionin System.out.println (), në formatin e mëposhtëm.

System.out.println ("Boshti X i Rrotullimit: %d %n", xGyro); System.out.println ("Boshti Y i Rrotullimit: %d %n", yGyro); System.out.println ("boshti Z i rrotullimit: %d %n", zGyro);

Dalja e sensorit tregohet në figurën e mësipërme.

Hapi 5: Aplikimet:

Aplikimet
Aplikimet

BMG160 ka një numër të larmishëm aplikimesh në pajisje si celularët, pajisjet e ndërfaqes së makinerisë njerëzore. Ky modul sensor është projektuar për të përmbushur kërkesat për aplikimet e konsumatorëve, të tilla si stabilizimi i imazhit (DSC dhe aparati-telefon), lojërat dhe pajisjet e drejtimit. Gjithashtu përdoret në sistemet që kërkojnë njohjen e gjesteve dhe sistemet e përdorura në navigimin e brendshëm.

Recommended: