Мазмуну:

Raspberry Pi менен BMG160 3-октук гироскоп сенсорунун интерфейси: 5 кадам
Raspberry Pi менен BMG160 3-октук гироскоп сенсорунун интерфейси: 5 кадам

Video: Raspberry Pi менен BMG160 3-октук гироскоп сенсорунун интерфейси: 5 кадам

Video: Raspberry Pi менен BMG160 3-октук гироскоп сенсорунун интерфейси: 5 кадам
Video: Musicians talk about Buckethead 2024, Июль
Anonim
Image
Image

Бүгүнкү дүйнөдө, жаштардын жана балдардын жарымынан көбү оюндарды жакшы көрүшөт жана оюндун техникалык аспектилерине кызыккандар, бул чөйрөдө кыймыл сезүүнүн маанилүүлүгүн билишет. Бизди дагы ошол эле нерсе таң калтырды жана тактайга алып келүү үчүн, биз кандайдыр бир нерсенин бурчтук ылдамдыгын өлчөй турган гироскоп сенсорунун үстүндө иштөөнү ойлодук. Ошентип, биз тапшырманы чечүү үчүн кабыл алган сенсор BMG160. BMG160-бул 16-биттик, санариптик, үч фазалуу, гироскоптук сенсор, ал бөлмө перпендикулярынын үч өлчөмүндө бурчтук ылдамдыгын өлчөй алат.

Бул үйрөткүчтө, биз программалоо тили катары Java колдонуп, Raspberry pi менен BMG160тун иштешин көрсөтөбүз.

Бул үчүн сизге керектүү болгон жабдыктар төмөнкүлөр:

1. BMG160

2. Raspberry Pi

3. I2C кабели

4. Raspberry Pi үчүн I2C Shield

5. Ethernet кабели

1 -кадам: BMG160 Обзор:

Сизге эмне керек.. !!
Сизге эмне керек.. !!

Биринчиден, биз сизди BMG160 сенсор модулунун негизги функциялары жана ал иштеген байланыш протоколу менен тааныштыргыбыз келет.

BMG160 негизинен бурчтук ылдамдыгын өлчөй турган 16-бит, санарип, үч фазалуу, гироскоп сенсору. Бул бөлмө перпендикулярынын үч өлчөмүндө бурчтук ылдамдыктарды эсептей алат, x-, y- жана z-огу, жана тиешелүү чыгуу сигналдарын камсыздайт. Бул I2C байланыш протоколун колдонуп, малина пи тактасы менен байланыша алат. Бул модуль керектөөчүлөрдүн өтүнмөлөрүнө, ошондой эле өндүрүштүк максаттарга жооп берүү үчүн иштелип чыккан.

Сенсор иштеген байланыш протоколу I2C. I2C интегралдык схеманы билдирет. Бул байланыш протоколу, анда байланыш SDA (сериялык маалыматтар) жана SCL (сериялык саат) линиялары аркылуу ишке ашат. Бул бир эле учурда бир нече түзмөктү туташтырууга мүмкүндүк берет. Бул эң жөнөкөй жана эффективдүү байланыш протоколунун бири.

2 -кадам: Сизге эмне керек..

Сизге эмне керек.. !!
Сизге эмне керек.. !!
Сизге эмне керек.. !!
Сизге эмне керек.. !!
Сизге эмне керек.. !!
Сизге эмне керек.. !!

Максатыбызга жетүү үчүн бизге керектүү материалдар төмөнкү аппараттык компоненттерди камтыйт:

1. BMG160

2. Raspberry Pi

3. I2C кабели

4. Raspberry Pi үчүн I2C Shield

5. Ethernet кабели

3 -кадам: Аппараттык туташуу:

Аппараттык туташуу
Аппараттык туташуу
Аппараттык туташуу
Аппараттык туташуу

Аппараттык туташуу бөлүмү негизинен сенсор менен малина пи ортосунда талап кылынган зым байланыштарын түшүндүрөт. Туура туташууларды камсыздоо каалаган өндүрүш үчүн кандайдыр бир системада иштеп жатканда негизги зарылчылык болуп саналат. Ошентип, керектүү байланыштар төмөнкүлөр:

BMG160 I2C үстүндө иштейт. Бул жерде сенсордун ар бир интерфейсин кантип зым менен жабуу керектигин көрсөтүүчү зымдардын схемасы келтирилген.

Кутудан тышкары, такта I2C интерфейси үчүн конфигурацияланган, андыктан эгер сиз агностиксиз болсоңуз, анда бул байланышты колдонууну сунуштайбыз. Сизге болгону төрт зым керек!

Vcc, Gnd, SCL жана SDA төөнөгүчтөрүнө төрт гана туташуу керек жана алар I2C кабелинин жардамы менен туташкан.

Бул байланыштар жогорудагы сүрөттөрдө көрсөтүлгөн.

4-кадам: Java кодун колдонуу менен 3-октук гироскопту өлчөө:

Java кодун колдонуу менен 3-октук гироскопту өлчөө
Java кодун колдонуу менен 3-октук гироскопту өлчөө
Java кодун колдонуу менен 3-октук гироскопту өлчөө
Java кодун колдонуу менен 3-октук гироскопту өлчөө

Малина пи колдонуунун артыкчылыгы, башкача айтканда, сенсорго интерфейс үчүн тактаны программалоону каалаган программалоо тилинин ийкемдүүлүгүн камсыздайт. Бул тактанын артыкчылыгын колдонуп, биз бул жерде анын Java программасын көрсөтөбүз. BMG160 үчүн Java кодун биздин github коомчулугунан жүктөп алса болот, бул Dcube Store Community.

Колдонуучулардын ыңгайлуулугу үчүн, биз бул жерде дагы кодду түшүндүрүп жатабыз: коддоонун биринчи кадамы катары java болгон учурда pi4j китепканасын жүктөп алуу керек, анткени бул китепкана коддо колдонулган функцияларды колдойт. Ошентип, китепкананы жүктөө үчүн төмөнкү шилтемеге кире аласыз:

pi4j.com/install.html

Бул сенсордун java кодун бул жерден көчүрүп алсаңыз болот:

com.pi4j.io.i2c. I2CBus импорттоо;

com.pi4j.io.i2c. I2CDevice импорттоо;

com.pi4j.io.i2c. I2CFactory импорттоо;

java.io. IOException импорттоо;

коомдук класс BMG160

{

public static void main (String args ) Exception ыргытат

{

// I2C шинасын түзүү

I2CBus автобус = I2CFactory.getInstance (I2CBus. BUS_1);

// I2C аппаратын алыңыз, BMG160 I2C дареги 0x68 (104)

I2CDevice түзмөгү = bus.getDevice (0x68);

// Регистр диапазонун тандоо

// Толук масштабдуу диапазонду конфигурациялоо, 2000 dps

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, data, 0, 6);

// Маалыматты Convert

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 ("Y-айлануу огу: %d %n", yGyro);

System.out.printf ("Z-айлануу огу: %d %n", zGyro);

}

}

Сенсор менен тактанын ортосундагы i2c байланышын жеңилдеткен китепкана pi4j, анын ар кандай пакеттери I2CBus, I2CDevice жана I2CFactory байланышты түзүүгө жардам берет.

импорттоо com.pi4j.io.i2c. I2CBus; импорттоо com.pi4j.io.i2c. I2CDevice; com.pi4j.io.i2c. I2CFactory импорттоо; java.io. IOException импорттоо;

Коддун бул бөлүгү сенсорго write () функциясын колдонуп, тиешелүү буйруктарды жазуу менен бурчтук ылдамдыкты өлчөйт, андан кийин маалыматтар read () функциясынын жардамы менен окулат.

// Регистр диапазонун тандоо // Толук масштабдуу диапазонду конфигурациялоо, 2000 dps 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, data, 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 жана камера-телефон), оюн жана көрсөтүүчү түзмөктөр сыяктуу керектөөчүлөрдүн талаптарына жооп берүү үчүн иштелип чыккан. Бул жаңсоону таанууну талап кылган тутумдарда жана ички багыттоодо колдонулган системаларда колдонулат.

Сунушталууда: