Բովանդակություն:

3 առանցքի գիրոսկոպի տվիչի BMG160 ինտերֆեյս ՝ ազնվամորու Pi- ի հետ. 5 քայլ
3 առանցքի գիրոսկոպի տվիչի BMG160 ինտերֆեյս ՝ ազնվամորու Pi- ի հետ. 5 քայլ

Video: 3 առանցքի գիրոսկոպի տվիչի BMG160 ինտերֆեյս ՝ ազնվամորու Pi- ի հետ. 5 քայլ

Video: 3 առանցքի գիրոսկոպի տվիչի BMG160 ինտերֆեյս ՝ ազնվամորու Pi- ի հետ. 5 քայլ
Video: Երկիր Լուսին. 3-րդ դասարան 2024, Նոյեմբեր
Anonim
Image
Image

Today'sամանակակից աշխարհում երիտասարդների և երեխաների կեսից ավելին սիրում է խաղեր, և բոլոր նրանք, ովքեր սիրում են այն, հիացած են խաղերի տեխնիկական կողմերով, գիտեն շարժման զգայարանների կարևորությունն այս ոլորտում: Մենք նույնպես ապշեցինք նույն բանից և պարզապես այն տախտակների վրա բերելու համար մենք մտածեցինք աշխատել գիրոսկոպի տվիչի վրա, որը կարող է չափել ցանկացած օբյեկտի անկյունային արագությունը: Այսպիսով, սենսորը, որը մենք վերցրեցինք առաջադրանքը լուծելու համար, BMG160 է: BMG160- ը 16-բիթանոց, թվային, եռակի, գիրոսկոպի տվիչ է, որը կարող է անկյունաչափը չափել սենյակի երեք ուղղահայաց հարթություններում:

Այս ձեռնարկում մենք ցույց կտանք BMG160- ի աշխատանքը Raspberry pi- ի հետ ՝ օգտագործելով Java- ն որպես ծրագրավորման լեզու:

Սարքավորումները, որոնք ձեզ անհրաժեշտ կլինեն այս նպատակով, հետևյալն են.

1. BMG160

2. Ազնվամորի Պի

3. I2C մալուխ

4. I2C Shield ազնվամորու Pi- ի համար

5. Ethernet մալուխ

Քայլ 1: BMG160 ակնարկ

Այն, ինչ ձեզ պետք է.. !!
Այն, ինչ ձեզ պետք է.. !!

Առաջին հերթին մենք կցանկանայինք ձեզ ծանոթացնել սենսորային մոդուլի հիմնական հատկանիշներին, որն է BMG160- ը և հաղորդակցության արձանագրությունը, որի վրա այն աշխատում է:

BMG160- ը հիմնականում 16-բիթանոց, թվային, եռակի, գիրոսկոպի տվիչ է, որը կարող է չափել անկյունային արագությունները: Այն ունակ է հաշվել անկյունային արագությունները սենյակի երեք ուղղահայաց հարթություններում ՝ x-, y- և z առանցքները և ապահովել համապատասխան ելքային ազդանշաններ: Այն կարող է շփվել ազնվամորու pi տախտակի հետ ՝ օգտագործելով I2C հաղորդակցության արձանագրությունը: Այս մոդուլը նախատեսված է բավարարելու սպառողական ծրագրերի, ինչպես նաև արդյունաբերական նպատակների պահանջները:

Հաղորդակցության արձանագրությունը, որի վրա աշխատում է սենսորը, I2C է: I2C- ը նշանակում է ինտեգրված միացում: Այն հաղորդակցման արձանագրություն է, որի միջոցով հաղորդակցությունը տեղի է ունենում SDA (սերիական տվյալներ) և SCL (սերիական ժամացույց) գծերի միջոցով: Այն թույլ է տալիս միաժամանակ միացնել բազմաթիվ սարքեր: Այն ամենապարզ և ամենաարդյունավետ հաղորդակցման արձանագրություններից մեկն է:

Քայլ 2: Այն, ինչ ձեզ պետք է..

Այն, ինչ ձեզ պետք է.. !!
Այն, ինչ ձեզ պետք է.. !!
Այն, ինչ ձեզ պետք է.. !!
Այն, ինչ ձեզ պետք է.. !!
Այն, ինչ ձեզ պետք է.. !!
Այն, ինչ ձեզ պետք է.. !!

Նյութերը, որոնք մեզ անհրաժեշտ են մեր նպատակին հասնելու համար, ներառում են հետևյալ ապարատային բաղադրիչները.

1. BMG160

2. Ազնվամորի Պի

3. I2C մալուխ

4. I2C Shield For Raspberry Pi

5. Ethernet մալուխ

Քայլ 3: Սարքավորման միացում

Սարքավորումների միացում
Սարքավորումների միացում
Սարքավորումների միացում
Սարքավորումների միացում

Սարքավորումների միացման բաժինը հիմնականում բացատրում է սենսորի և ազնվամորու pi- ի միջև պահանջվող լարերի միացումները: Connectionsանկալի ելքի համար ցանկացած համակարգի վրա աշխատելիս հիմնական անհրաժեշտությունն է հիմնական կապերի ապահովումը: Այսպիսով, անհրաժեշտ կապերը հետևյալն են.

BMG160- ը կաշխատի I2C- ով: Ահա միացման սխեմայի օրինակ, որը ցույց է տալիս, թե ինչպես միացնել սենսորի յուրաքանչյուր միջերեսը:

Տուփից դուրս, տախտակը կազմաձևված է I2C ինտերֆեյսի համար, ուստի խորհուրդ ենք տալիս օգտագործել այս կապը, եթե այլապես ագնոստիկ եք: Ձեզ անհրաժեշտ է չորս լար:

Միայն չորս միացում է պահանջվում Vcc, Gnd, SCL և SDA կապում, որոնք միացված են I2C մալուխի օգնությամբ:

Այս կապերը ցուցադրվում են վերը նշված նկարներում:

Քայլ 4: 3 առանցքի գիրոսկոպի չափում `օգտագործելով Java ծածկագիրը

3 առանցքի գիրոսկոպի չափում `օգտագործելով Java ծածկագիրը
3 առանցքի գիրոսկոպի չափում `օգտագործելով Java ծածկագիրը
3 առանցքի գիրոսկոպի չափում `օգտագործելով Java ծածկագիրը
3 առանցքի գիրոսկոպի չափում `օգտագործելով Java ծածկագիրը

Ազնվամորու pi- ի օգտագործման առավելությունն այն է, որ ձեզ տալիս է ծրագրավորման այն լեզվի ճկունությունը, որով ցանկանում եք ծրագրավորել տախտակը `սենսորը դրա հետ միացնելու համար: Օգտագործելով այս տախտակի այս առավելությունը, մենք այստեղ ցույց ենք տալիս դրա ծրագրավորումը Java- ում: BMG160- ի Java կոդը կարելի է ներբեռնել մեր github համայնքից, որը Dcube Store Community- ն է:

Ինչպես նաև օգտվողների հեշտության համար, մենք այստեղ բացատրում ենք ծածկագիրը. Այսպիսով, գրադարանը ներբեռնելու համար կարող եք այցելել հետևյալ հղումը.

pi4j.com/install.html

Այս սենսորի աշխատանքային java ծածկագիրը կարող եք պատճենել նաև այստեղից.

ներմուծել com.pi4j.io.i2c. I2CBus;

ներմուծել com.pi4j.io.i2c. I2CD սարք;

ներմուծել com.pi4j.io.i2c. I2CFactory;

ներմուծում java.io. IOException;

հանրային դաս BMG160

{

public static void main (String args ) նետում է Բացառություն

{

// Ստեղծել I2C ավտոբուս

I2CBus ավտոբուս = I2CFactory.getInstance (I2CBus. BUS_1);

// Ստացեք I2C սարք, BMG160 I2C հասցեն ՝ 0x68 (104)

I2CDevice սարք = bus.getDevice (0x68);

// Ընտրեք տիրույթի գրանցամատյան

// Կարգավորել մասշտաբի ամբողջական տիրույթը, 2000 դ/ վրկ

device.write (0x0F, (բայթ) 0x80);

// Ընտրեք թողունակության գրանցամատյան

// Թողունակություն 200 Հց

device.write (0x10, (բայթ) 0x04);

Thread.sleep (500);

// Կարդացեք տվյալների 6 բայթ

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

բայթ տվյալներ = նոր բայթ [6];

device.read (0x02, տվյալներ, 0, 6);

// Փոխարկել տվյալները

int xGyro = ((տվյալները [1] & 0xFF) * 256 + (տվյալները [0] & 0xFF));

եթե (xGyro> 32767)

{

xGyro -= 65536;

}

int yGyro = ((տվյալները [3] & 0xFF) * 256 + (տվյալները [2] & 0xFF));

եթե (yGyro> 32767)

{

yGyro -= 65536;

}

int zGyro = ((տվյալները [5] & 0xFF) * 256 + (տվյալները [4] & 0xFF));

եթե (zGyro> 32767)

{

zGyro -= 65536;

}

// Ելքի տվյալները էկրանին

System.out.printf («Պտույտի առանցք. %D %n», xGyro);

System.out.printf ("Պտույտի առանցք. %D %n", yGyro);

System.out.printf («Պտույտի Z առանցքը ՝ %d %n», zGyro);

}

}

Գրադարանը, որը հեշտացնում է i2c հաղորդակցումը սենսորի և տախտակի միջև, pi4j է, դրա տարբեր փաթեթները I2CBus, I2CDevice և I2CFactory- ն օգնում են կապ հաստատել:

ներմուծել com.pi4j.io.i2c. I2CBus; ներմուծել com.pi4j.io.i2c. I2CD սարք; ներմուծել com.pi4j.io.i2c. I2CFactory; ներմուծում java.io. IOException;

Կոդի այս հատվածը ստիպում է սենսորին չափել անկյունային արագությունը ՝ գրելով համապատասխան հրամաններ ՝ օգտագործելով () գործառույթը, այնուհետև տվյալները կարդացվում են կարդալու () գործառույթի միջոցով:

// Ընտրեք տիրույթի գրանցամատյան // Կարգավորեք ամբողջ մասշտաբի տիրույթը, 2000 dps սարք: գրել (0x0F, (բայթ) 0x80); // Ընտրեք թողունակության գրանցամատյան // թողունակություն 200 Հց սարք. Գրել (0x10, (բայթ) 0x04); Thread.sleep (500);

// Կարդացեք տվյալների 6 բայթ

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb բայթ տվյալներ = նոր բայթ [6]; device.read (0x02, տվյալներ, 0, 6);

Սենսորից ստացված տվյալները փոխարկվում են համապատասխան ձևաչափի ՝ օգտագործելով հետևյալը.

int xGyro = ((տվյալները [1] & 0xFF) * 256 + (տվյալները [0] & 0xFF)); եթե (xGyro> 32767) {xGyro -= 65536; } int yGyro = ((տվյալները [3] & 0xFF) * 256 + (տվյալները [2] & 0xFF)); եթե (yGyro> 32767) {yGyro -= 65536; } int zGyro = ((տվյալները [5] & 0xFF) * 256 + (տվյալները [4] & 0xFF)); եթե (zGyro> 32767) {zGyro -= 65536; }

Ելքը տպվում է System.out.println () գործառույթի միջոցով ՝ հետևյալ ձևաչափով:

System.out.println («Պտտման առանցք. %D %n», xGyro); System.out.println («Պտույտի Y- առանցք. %D %n», yGyro); System.out.println («Պտույտի Z առանցքը ՝ %d %n», zGyro);

Սենսորի ելքը ցուցադրվում է վերևի նկարում:

Քայլ 5: Դիմումներ

Դիմումներ
Դիմումներ

BMG160- ը բազմազան թվով ծրագրեր ունի այնպիսի սարքերում, ինչպիսիք են բջջային հեռախոսները, մարդկային մեքենաների ինտերֆեյսի սարքերը: Այս սենսորային մոդուլը նախագծված է սպառողների համար այնպիսի պահանջների բավարարման համար, ինչպիսիք են պատկերի կայունացումը (DSC և տեսախցիկ-հեռախոս), խաղային և ցուցիչ սարքերը: Այն օգտագործվում է նաև այն համակարգերում, որոնք պահանջում են ժեստերի ճանաչում և ներքին նավարկության մեջ օգտագործվող համակարգեր:

Խորհուրդ ենք տալիս: