Съдържание:

Свързване на 3-осен сензор за жироскоп BMG160 с Raspberry Pi: 5 стъпки
Свързване на 3-осен сензор за жироскоп BMG160 с Raspberry Pi: 5 стъпки

Видео: Свързване на 3-осен сензор за жироскоп BMG160 с Raspberry Pi: 5 стъпки

Видео: Свързване на 3-осен сензор за жироскоп BMG160 с Raspberry Pi: 5 стъпки
Видео: Широкоъгълен Сгъваем Дрон с Видео в Реално Време #05881 | 4Sales.bg 2024, Юли
Anonim
Image
Image

В днешния свят повече от половината младежи и деца обичат игрите и всички, които я обичат, очаровани от техническите аспекти на игрите, знаят значението на усещането за движение в тази област. Ние също бяхме изумени от едно и също нещо и само за да го представим на дъските, мислехме да работим върху сензор за жироскоп, който може да измери ъгловата скорост на всеки обект. И така, сензорът, който взехме, за да се справим със задачата, е BMG160. BMG160 е 16-битов, цифров, триосен, жироскопен сензор, който може да измерва ъгловата скорост в три перпендикулярни размери на помещението.

В този урок ще демонстрираме работата на BMG160 с Raspberry pi, използвайки Java като език за програмиране.

Хардуерът, който ще ви е необходим за тази цел, е следният:

1. BMG160

2. Малина Пи

3. I2C кабел

4. I2C щит за Raspberry 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 щит за Raspberry Pi

5. Ethernet кабел

Стъпка 3: Свързване на хардуера:

Хардуерно свързване
Хардуерно свързване
Хардуерно свързване
Хардуерно свързване

Разделът за свързване на хардуер основно обяснява необходимите кабелни връзки между сензора и малиновото пи. Осигуряването на правилни връзки е основната необходимост, докато работите върху всяка система за желания изход. И така, необходимите връзки са както следва:

BMG160 ще работи над I2C. Ето примерната електрическа схема, демонстрираща как да свържете всеки интерфейс на сензора.

Извън кутията, дъската е конфигурирана за I2C интерфейс, като такава препоръчваме да използвате тази връзка, ако иначе не сте агностици. Всичко, от което се нуждаете, са четири проводника!

Изискват се само четири връзки Vcc, Gnd, SCL и SDA щифтове и те са свързани с помощта на I2C кабел.

Тези връзки са показани на снимките по -горе.

Стъпка 4: Измерване на триосен жироскоп с помощта на Java код:

3-осно измерване на жироскоп с помощта на Java код
3-осно измерване на жироскоп с помощта на Java код
Измерване на триосен жироскоп с помощта на Java код
Измерване на триосен жироскоп с помощта на Java код

Предимството на използването на малинов pi е, че ви осигурява гъвкавостта на езика за програмиране, на който искате да програмирате платката, за да свържете интерфейса на сензора с нея. Използвайки това предимство на тази дъска, ние демонстрираме тук нейното програмиране в Java. Java кодът за BMG160 може да бъде изтеглен от нашата github общност, която е Dcube Store Community.

Както и за улеснение на потребителите, ние обясняваме кода и тук: Като първа стъпка от кодирането трябва да изтеглите библиотеката pi4j в случай на java, тъй като тази библиотека поддържа функциите, използвани в кода. Така че, за да изтеглите библиотеката, можете да посетите следната връзка:

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 Hz

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 ("X-ос на въртене: %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 Hz 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)); if (yGyro> 32767) {yGyro -= 65536; } int zGyro = ((данни [5] & 0xFF) * 256 + (данни [4] & 0xFF)); ако (zGyro> 32767) {zGyro -= 65536; }

Изходът се отпечатва с помощта на функцията System.out.println () в следния формат.

System.out.println ("X-ос на въртене: %d %n", xGyro); System.out.println ("Y-ос на въртене: %d %n", yGyro); System.out.println ("Z-ос на въртене: %d %n", zGyro);

Изходът на сензора е показан на горната снимка.

Стъпка 5: Приложения:

Приложения
Приложения

BMG160 има разнообразни приложения в устройства като мобилни телефони, устройства за интерфейс на човешка машина. Този сензорен модул е проектиран да отговаря на изискванията за потребителски приложения като стабилизация на изображението (DSC и телефон с камера), игри и посочващи устройства. Използва се и в системи, които изискват разпознаване на жестове, и в системите, използвани при навигация на закрито.

Препоръчано: