Мазмуну:

3-октук Гироскоп сенсорунун BMG160 менен Arduino Nano интерфейси: 5 кадам
3-октук Гироскоп сенсорунун BMG160 менен Arduino Nano интерфейси: 5 кадам

Video: 3-октук Гироскоп сенсорунун BMG160 менен Arduino Nano интерфейси: 5 кадам

Video: 3-октук Гироскоп сенсорунун BMG160 менен Arduino Nano интерфейси: 5 кадам
Video: Zigbee пульт на три кнопки для Tuya Smart, интеграция в Home Assistant 2024, Ноябрь
Anonim
Image
Image

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

Бул окуу куралында биз BMG160тун Arduino Nano менен иштешин көрсөтөбүз.

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

1. BMG160

2. Ардуино Нано

3. I2C кабели

4. Arduino Nano үчүн I2C Shield

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

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

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

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

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

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

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

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

1. BMG160

2. Ардуино Нано

3. I2C кабели

4. Arduino Nano үчүн I2C Shield

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

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

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

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

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

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

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

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

3-октук гироскопту өлчөө Arduino коду
3-октук гироскопту өлчөө Arduino коду
3-октук гироскопту өлчөө Arduino коду
3-октук гироскопту өлчөө Arduino коду

Эми arduino коду менен баштайлы.

Arduino менен сенсор модулун колдонуп жатканда, биз Wire.h китепканасын камтыйт. "Wire" китепканасы сенсор менен arduino тактасынын ортосундагы i2c байланышын жеңилдетүүчү функцияларды камтыйт.

Колдонуучунун ыңгайлуулугу үчүн ардуино коду төмөндө келтирилген:

#камтыйт // BMG160 I2C дареги 0x68 (104)

#define Addr 0x68

жараксыз орнотуу ()

{

// I2C байланышын MASTER катары баштаңыз

Wire.begin ();

// Сериялык байланышты баштоо, байдын ылдамдыгын орнотуу = 9600

Serial.begin (9600);

// I2C берүүнү баштоо

Wire.beginTransmission (Addr);

// Range register тандаңыз

Wire.write (0x0F);

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

Wire.write (0x80);

// I2C берүүнү токтотуу

Wire.endTransmission ();

// I2C берүүнү баштоо

Wire.beginTransmission (Addr);

// Bandwidth регистрин тандаңыз

Wire.write (0x10);

// Орнотуу жөндөмдүүлүгү = 200 Гц

Wire.write (0x04);

// I2C берүүнү токтотуу

Wire.endTransmission ();

кечигүү (300);

}

боштук цикл ()

{

кол коюлбаган int маалыматтары [6];

// I2C берүүнү баштоо

Wire.beginTransmission (Addr);

// Гирометрдин маалымат регистрин тандаңыз

Wire.write (0x02);

// I2C берүүнү токтотуу

Wire.endTransmission ();

// 6 байт маалымат сураңыз

Wire.requestFrom (Addr, 6);

// 6 байт маалыматтарды окуңуз

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

эгер (Wire.available () == 6)

{

data [0] = Wire.read ();

data [1] = Wire.read ();

data [2] = Wire.read ();

маалымат [3] = Wire.read ();

data [4] = Wire.read ();

маалымат [5] = Wire.read ();

}

кечигүү (300);

// Маалыматты конвертациялоо

int xGyro = ((маалымат [1] * 256) + маалымат [0]);

int yGyro = ((маалыматтар [3] * 256) + маалыматтар [2]);

int zGyro = ((маалыматтар [5] * 256) + маалыматтар [4]);

// Сериялык мониторго маалыматтарды чыгаруу

Serial.print ("X-Axis Rotation:");

Serial.println (xGyro); Serial.print ("Y-Axis Rotation:");

Serial.println (yGyro); Serial.print ("Z-Axis Rotation:");

Serial.println (zGyro);

кечигүү (500);

}

5 -кадам: Тиркемелер:

Колдонмолор
Колдонмолор

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

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