Агуулгын хүснэгт:

Бөөрөлзгөнө Pi-тай BMG160 3 тэнхлэгтэй гироскоп мэдрэгчийн интерфейс: 5 алхам
Бөөрөлзгөнө Pi-тай BMG160 3 тэнхлэгтэй гироскоп мэдрэгчийн интерфейс: 5 алхам

Видео: Бөөрөлзгөнө Pi-тай BMG160 3 тэнхлэгтэй гироскоп мэдрэгчийн интерфейс: 5 алхам

Видео: Бөөрөлзгөнө Pi-тай BMG160 3 тэнхлэгтэй гироскоп мэдрэгчийн интерфейс: 5 алхам
Видео: Equipment Corner- OctoPrint configuration 2024, Долдугаар сарын
Anonim
Image
Image

Өнөөгийн ертөнцөд залуучууд, хүүхдүүдийн талаас илүү хувь нь тоглоом тоглох дуртай байдаг бөгөөд тоглоомын техникийн талаас нь сонирхдог бүх хүмүүс энэ чиглэлээр хөдөлгөөн мэдрэхийн ач холбогдлыг мэддэг. Бид мөн адил зүйлийг гайхаж, самбар дээр байрлуулахын тулд аливаа объектын өнцгийн хурдыг хэмжих гироскоп мэдрэгч дээр ажиллах талаар бодож үзсэн. Тиймээс даалгаврыг шийдвэрлэхийн тулд бидний авсан мэдрэгч бол BMG160 юм. BMG160 бол дижитал, гурван тэнхлэгтэй, гироскопын мэдрэгч бөгөөд өрөөний перпендикуляр гурван хэмжээсээр өнцгийн хурдыг хэмжих боломжтой.

Энэхүү гарын авлагад бид програмчлалын хэл болгон Java -г ашиглан BMG160 -ийн Raspberry pi -тэй хэрхэн ажиллахыг харуулах болно.

Энэ зорилгоор танд хэрэгтэй тоног төхөөрөмж дараах байдалтай байна.

1. BMG160

2. Raspberry Pi

3. I2C кабель

4. Raspberry Pi -д зориулсан I2C бамбай

5. Ethernet кабель

Алхам 1: BMG160 -ийн тойм:

Чамд юу хэрэгтэй вэ..!!
Чамд юу хэрэгтэй вэ..!!

Юуны өмнө бид танд BMG160 мэдрэгч модулийн үндсэн шинж чанарууд болон түүн дээр ажилладаг холбооны протоколыг танилцуулахыг хүсч байна.

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

Мэдрэгчийн ажилладаг холбооны протокол нь I2C юм. I2C нь нэгдсэн хэлхээний товчлол юм. Энэ бол SDA (цуваа өгөгдөл) ба SCL (цуваа цаг) шугамаар дамжуулан харилцаа холбоо явагддаг харилцаа холбооны протокол юм. Энэ нь олон төхөөрөмжийг нэгэн зэрэг холбох боломжийг олгодог. Энэ бол хамгийн энгийн бөгөөд үр дүнтэй харилцааны протоколын нэг юм.

Алхам 2: Танд хэрэгтэй зүйл..

Чамд юу хэрэгтэй вэ..!!
Чамд юу хэрэгтэй вэ..!!
Чамд юу хэрэгтэй вэ..!!
Чамд юу хэрэгтэй вэ..!!
Чамд юу хэрэгтэй вэ..!!
Чамд юу хэрэгтэй вэ..!!

Зорилгодоо хүрэхийн тулд бидэнд шаардлагатай материалууд нь дараахь тоног төхөөрөмжийн бүрэлдэхүүн хэсгүүдийг агуулдаг.

1. BMG160

2. Raspberry Pi

3. I2C кабель

4. Raspberry Pi -д зориулсан I2C бамбай

5. Ethernet кабель

Алхам 3: Тоног төхөөрөмжийн холболт:

Тоног төхөөрөмжийн холболт
Тоног төхөөрөмжийн холболт
Тоног төхөөрөмжийн холболт
Тоног төхөөрөмжийн холболт

Тоног төхөөрөмжийн холболтын хэсэг нь үндсэндээ мэдрэгч ба бөөрөлзгөнө pi хооронд шаардлагатай утас холболтыг тайлбарладаг. Аливаа систем дээр ажиллахад шаардлагатай гаралтын хувьд зөв холболтыг хангах нь хамгийн чухал зүйл юм. Тиймээс шаардлагатай холболтууд дараах байдалтай байна.

BMG160 нь I2C дээр ажиллах болно. Мэдрэгчийн интерфэйс бүрийг хэрхэн яаж холбохыг харуулсан утасны диаграмын жишээ энд байна.

Хайрцагнаас гадуурх самбар нь I2C интерфэйс дээр тохируулагдсан байдаг тул хэрэв та өөр ойлголтгүй бол энэ холболтыг ашиглахыг зөвлөж байна. Танд ердөө дөрвөн утас л хангалттай!

Vcc, Gnd, SCL, SDA зүүг зөвхөн дөрвөн холболт шаарддаг бөгөөд эдгээр нь I2C кабелийн тусламжтайгаар холбогддог.

Эдгээр холболтыг дээрх зурган дээр харуулав.

Алхам 4: Java код ашиглан 3 тэнхлэгтэй гироскопын хэмжилт:

Java код ашиглан 3 тэнхлэгтэй гироскопын хэмжилт
Java код ашиглан 3 тэнхлэгтэй гироскопын хэмжилт
Java код ашиглан 3 тэнхлэгтэй гироскопын хэмжилт
Java код ашиглан 3 тэнхлэгтэй гироскопын хэмжилт

Бөөрөлзгөнө pi ашиглах давуу тал нь мэдрэгчийг интерфэйстэй холбохын тулд самбарыг програмчлах хэлний уян хатан байдлыг өгдөг. Энэхүү самбарын давуу талыг ашиглахын тулд бид Java програмчлалыг энд харуулав. BMG160 -ийн Java кодыг манай github нийгэмлэгээс татаж авч болно Dcube Store Community.

Хэрэглэгчдэд хялбар байхын тулд бид кодыг энд тайлбарлаж байна: Кодлох эхний алхам бол java тохиолдолд pi4j номын санг татаж авах хэрэгтэй, учир нь энэ номын сан нь кодонд ашиглагддаг функцийг дэмждэг. Тиймээс номын санг татаж авахын тулд та дараах линкээр орж үзэх боломжтой.

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 ) Exception хаядаг

{

// I2C автобус үүсгэх

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

// I2C төхөөрөмж авах, BMG160 I2C хаяг нь 0x68 (104)

I2CDevice төхөөрөмж = bus.getDevice (0x68);

// Мужийн бүртгэлийг сонгоно уу

// Бүрэн хэмжээний масштабыг тохируулах, 2000 dps

device.write (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.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. I2CD төхөөрөмжийг импортлох; com.pi4j.io.i2c. I2CFactory импортлох; java.io. IOException импортлох;

Кодын энэ хэсэг нь мэдрэгчийг бичих () функцийг ашиглан холбогдох тушаалуудыг бичих замаар өнцгийн хурдыг хэмжих боломжийг олгодог бөгөөд дараа нь read () функцийг ашиглан өгөгдлийг уншдаг.

// Хүрээний бүртгэлийг сонгох // Бүрэн хэмжээний мужийг тохируулах, 2000 dps device.write (0x0F, (байт) 0x80); // зурвасын өргөний бүртгэлийг сонгох // Bandwidth 200 Hz device.write (0x10, (byte) 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 ба камер-утас), тоглоом, заагч төхөөрөмж гэх мэт хэрэглэгчийн хэрэглээний шаардлагыг хангахад зориулагдсан болно. Энэ нь дохио зангаа таних шаардлагатай систем, дотор навигацид ашигладаг системд ашиглагддаг.

Зөвлөмж болгож буй: