Orodha ya maudhui:

Kuingiliana kwa Sensor ya Gyroscope ya 3-Axis BMG160 na Raspberry Pi: Hatua 5
Kuingiliana kwa Sensor ya Gyroscope ya 3-Axis BMG160 na Raspberry Pi: Hatua 5

Video: Kuingiliana kwa Sensor ya Gyroscope ya 3-Axis BMG160 na Raspberry Pi: Hatua 5

Video: Kuingiliana kwa Sensor ya Gyroscope ya 3-Axis BMG160 na Raspberry Pi: Hatua 5
Video: How to use MPU-9250 Gyroscope, Accelerometer, Magnetometer for Arduino 2024, Julai
Anonim
Image
Image

Katika ulimwengu wa leo, zaidi ya nusu ya vijana na watoto wanapenda michezo ya kubahatisha na wale wote wanaopenda, wanavutiwa na mambo ya kiufundi ya uchezaji wanajua umuhimu wa kuhisi mwendo katika uwanja huu. Tulishangazwa pia na kitu hicho hicho na kuileta tu kwenye bodi, tulifikiria kufanya kazi kwa sensa ya gyroscope ambayo inaweza kupima kiwango cha angular cha kitu chochote. Kwa hivyo, sensa tuliyochukua kushughulikia kazi hiyo ni BMG160. BMG160 ni sensorer 16-bit, digital, triaxial, gyroscope ambayo inaweza kupima kiwango cha angular katika vipimo vitatu vya chumba.

Katika mafunzo haya, tutaonyesha kazi ya BMG160 na Raspberry pi, kwa kutumia Java kama lugha ya programu.

Vifaa ambavyo utahitaji kwa kusudi hili ni kama ifuatavyo:

1. BMG160

2. Raspberry Pi

3. Cable ya I2C

4. I2C Shield kwa Raspberry Pi

5. Cable ya Ethernet

Hatua ya 1: Muhtasari wa BMG160:

Unachohitaji..!!
Unachohitaji..!!

Kwanza kabisa tungependa kukujulisha na sifa za msingi za moduli ya sensorer ambayo ni BMG160 na itifaki ya mawasiliano ambayo inafanya kazi.

BMG160 kimsingi ni sensa ya 16-bit, dijiti, triaxial, gyroscope ambayo inaweza kupima viwango vya angular. Ina uwezo wa kuhesabu viwango vya angular katika vipimo vitatu vya chumba, x-, y- na z-mhimili, na kutoa ishara zinazofanana za pato. Inaweza kuwasiliana na bodi ya rasipberry pi kutumia itifaki ya mawasiliano ya I2C. Moduli hii imeundwa kukidhi mahitaji ya matumizi ya watumiaji na pia madhumuni ya viwanda.

Itifaki ya mawasiliano ambayo sensor inafanya kazi ni I2C. I2C inasimama kwa mzunguko uliounganishwa. Ni itifaki ya mawasiliano ambayo mawasiliano hufanyika kupitia SDA (data ya serial) na mistari ya SCL (saa ya serial). Inaruhusu kuunganisha vifaa vingi kwa wakati mmoja. Ni mojawapo ya itifaki rahisi na bora zaidi ya mawasiliano.

Hatua ya 2: Unachohitaji.. !

Unachohitaji..!!
Unachohitaji..!!
Unachohitaji..!!
Unachohitaji..!!
Unachohitaji..!!
Unachohitaji..!!

Vifaa ambavyo tunahitaji kutimiza lengo letu ni pamoja na vifaa vifuatavyo vya vifaa:

1. BMG160

2. Raspberry Pi

3. Cable ya I2C

4. I2C Shield Kwa Raspberry Pi

5. Cable ya Ethernet

Hatua ya 3: Kuunganishwa kwa vifaa:

Kuunganishwa kwa Vifaa
Kuunganishwa kwa Vifaa
Kuunganishwa kwa Vifaa
Kuunganishwa kwa Vifaa

Sehemu ya uunganishaji wa vifaa kimsingi inaelezea uunganisho wa wiring unaohitajika kati ya sensorer na pi ya raspberry. Kuhakikisha unganisho sahihi ni hitaji la msingi wakati unafanya kazi kwenye mfumo wowote wa pato unalotaka. Kwa hivyo, viunganisho vinavyohitajika ni kama ifuatavyo.

BMG160 itafanya kazi juu ya I2C. Hapa kuna mfano wa mchoro wa wiring, unaonyesha jinsi ya kuweka waya kila kiunganishi cha sensa.

Nje ya sanduku, bodi imesanidiwa kwa kiolesura cha I2C, kwa hivyo tunapendekeza utumie uunganisho huu ikiwa wewe ni agnostic. Unachohitaji ni waya nne!

Viunganisho vinne tu vinahitajika Vcc, Gnd, SCL na SDA pini na hizi zimeunganishwa kwa msaada wa kebo ya I2C.

Uunganisho huu umeonyeshwa kwenye picha hapo juu.

Hatua ya 4: Kipimo cha Gyroscope ya 3-Axis Kutumia Msimbo wa Java:

Kipimo cha Gyroscope ya 3-Axis Kutumia Msimbo wa Java
Kipimo cha Gyroscope ya 3-Axis Kutumia Msimbo wa Java
Kipimo cha Gyroscope ya 3-Axis Kutumia Msimbo wa Java
Kipimo cha Gyroscope ya 3-Axis Kutumia Msimbo wa Java

Faida ya kutumia rasipiberi pi ni kwamba, inakupa kubadilika kwa lugha ya programu ambayo unataka kupanga bodi ili kuunganisha kihisi nayo. Kuunganisha faida hii ya bodi hii, tunaonyesha hapa programu yake katika Java. Nambari ya Java ya BMG160 inaweza kupakuliwa kutoka kwa jamii yetu ya github ambayo ni Jumuiya ya Duka la Dcube.

Kama vile urahisi wa watumiaji, tunaelezea nambari hapa pia: Kama hatua ya kwanza ya kuweka alama unahitaji kupakua maktaba ya pi4j ikiwa ni java, kwa sababu maktaba hii inasaidia kazi zinazotumiwa kwenye nambari. Kwa hivyo, kupakua maktaba unaweza kutembelea kiunga kifuatacho:

pi4j.com/install.html

Unaweza kunakili nambari ya java inayofanya kazi ya sensa hii kutoka hapa pia:

kuagiza com.pi4j.io.i2c. I2CBus;

kuagiza com.pi4j.io.i2c. I2CDevice;

kuagiza com.pi4j.io.i2c. I2CFactory;

kuagiza java.io. IOException;

darasa la umma BMG160

{

umma tuli batili kuu (Kamba args ) hutupa Ubaguzi

{

// Unda basi ya I2C

Basi la I2C = I2CFactory.getInstance (I2CBus. BUS_1);

// Pata kifaa cha I2C, anwani ya BMG160 I2C ni 0x68 (104)

Kifaa cha I2CDevice = bus.getDevice (0x68);

// Chagua sajili ya masafa

// Sanidi kiwango kamili, 2000 dps

andika kifaa (0x0F, (byte) 0x80);

// Chagua rejista ya kipimo data

// Bandwidth 200 Hz

andika kifaa (0x10, (byte) 0x04);

Kulala (500);

// Soma ka 6 za data

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

data data = byte mpya [6];

soma kifaa (0x02, data, 0, 6);

// Badilisha data

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

ikiwa (xGyro> 32767)

{

xGyro - = 65536;

}

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

ikiwa (yGyro> 32767)

{

yGyro - = 65536;

}

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

ikiwa (zGyro> 32767)

{

zGyro - = 65536;

}

// Pato data kwa screen

System.out.printf ("X-Axis ya Mzunguko:% d% n", xGyro);

System.out.printf ("Y-axis ya Mzunguko:% d% n", yGyro);

System.out.printf ("Z-axis ya Mzunguko:% d% n", zGyro);

}

}

Maktaba ambayo inasaidia mawasiliano ya i2c kati ya sensa na bodi ni pi4j, vifurushi vyake anuwai I2CBus, I2CDevice na msaada wa I2CFactory kuanzisha unganisho.

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

Sehemu hii ya nambari hufanya sensorer kupima kiwango cha angular kwa kuandika amri husika kwa kutumia kazi ya kuandika () na kisha data inasomwa kwa kutumia kazi ya kusoma ().

// Chagua sajili ya masafa // Sanidi kiwango kamili, kifaa cha dps 2000. andika (0x0F, (byte) 0x80); // Chagua rejista ya bandwidth // Kifaa cha Bandwidth 200 Hz. Andika (0x10, (byte) 0x04); Kulala (500);

// Soma ka 6 za data

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb byte data = new byte [6]; soma kifaa (0x02, data, 0, 6);

Takwimu zilizopokelewa kutoka kwa sensorer hubadilishwa kuwa fomati inayofaa kwa kutumia zifuatazo:

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

Pato limechapishwa kwa kutumia kazi ya System.out.println (), katika muundo ufuatao.

System.out.println ("X-Axis ya Mzunguko:% d% n", xGyro); System.out.println ("Y-axis ya Mzunguko:% d% n", yGyro); System.out.println ("Z-mhimili wa Mzunguko:% d% n", zGyro);

Pato la sensor linaonyeshwa kwenye picha hapo juu.

Hatua ya 5: Maombi:

Maombi
Maombi

BMG160 ina idadi anuwai ya matumizi katika vifaa kama simu za rununu, vifaa vya kiunganishi vya mashine ya binadamu. Moduli hii ya sensorer imeundwa kukidhi mahitaji ya matumizi ya watumiaji kama vile utulivu wa picha (DSC na kamera-simu), vifaa vya michezo ya kubahatisha na kuelekeza. Inatumika pia katika mifumo ambayo inahitaji utambuzi wa ishara na mifumo inayotumika katika urambazaji wa ndani.

Ilipendekeza: