Оглавление:

Подключение 3-осевого гироскопического датчика BMG160 к Raspberry Pi: 5 шагов
Подключение 3-осевого гироскопического датчика BMG160 к Raspberry Pi: 5 шагов

Видео: Подключение 3-осевого гироскопического датчика BMG160 к Raspberry Pi: 5 шагов

Видео: Подключение 3-осевого гироскопического датчика BMG160 к Raspberry Pi: 5 шагов
Видео: Трехосевой цифровой компас HMC5883L и Arduino 2024, Ноябрь
Anonim
Image
Image

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

В этом руководстве мы собираемся продемонстрировать работу BMG160 с Raspberry pi, используя Java в качестве языка программирования.

Для этого вам понадобится следующее оборудование:

1. BMG160

2. Raspberry Pi

3. Кабель I2C

4. I2C Shield для Raspberry Pi

5. Кабель Ethernet.

Шаг 1: Обзор BMG160:

Что вам нужно..!!
Что вам нужно..!!

Прежде всего, мы хотели бы познакомить вас с основными функциями сенсорного модуля BMG160 и протоколом связи, по которому он работает.

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

Протокол связи, по которому работает датчик, - I2C. I2C означает межинтегральную схему. Это протокол связи, в котором связь осуществляется через линии SDA (последовательные данные) и SCL (последовательные часы). Это позволяет одновременно подключать несколько устройств. Это один из самых простых и эффективных протоколов связи.

Шаг 2: Что вам нужно..

Что вам нужно..!!
Что вам нужно..!!
Что вам нужно..!!
Что вам нужно..!!
Что вам нужно..!!
Что вам нужно..!!

Материалы, которые нам нужны для достижения нашей цели, включают следующие компоненты оборудования:

1. BMG160

2. Raspberry Pi

3. Кабель I2C

4. I2C Shield для Raspberry Pi

5. Кабель Ethernet.

Шаг 3: Подключение оборудования:

Подключение оборудования
Подключение оборудования
Подключение оборудования
Подключение оборудования

В разделе «Подключение оборудования» в основном объясняются проводные соединения, необходимые между датчиком и Raspberry Pi. Обеспечение правильных соединений является основной необходимостью при работе с любой системой для достижения желаемого результата. Итак, необходимые подключения следующие:

BMG160 будет работать по I2C. Вот пример схемы подключения, демонстрирующий, как подключить каждый интерфейс датчика.

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

Требуются только четыре соединения, выводы Vcc, Gnd, SCL и SDA, которые подключаются с помощью кабеля I2C.

Эти соединения показаны на рисунках выше.

Шаг 4: Измерение 3-осевого гироскопа с использованием кода Java:

Измерение 3-осевого гироскопа с использованием кода Java
Измерение 3-осевого гироскопа с использованием кода Java
Измерение 3-осевого гироскопа с использованием кода Java
Измерение 3-осевого гироскопа с использованием кода Java

Преимущество использования raspberry pi заключается в том, что он обеспечивает гибкость языка программирования, на котором вы хотите запрограммировать плату, чтобы связать с ней датчик. Используя это преимущество этой платы, мы демонстрируем ее программирование на Java. Код Java для BMG160 можно загрузить в нашем сообществе github, которое называется Dcube Store Community.

Помимо удобства для пользователей, мы также объясняем код здесь: В качестве первого шага кодирования вам необходимо загрузить библиотеку pi4j в случае java, потому что эта библиотека поддерживает функции, используемые в коде. Итак, чтобы скачать библиотеку, вы можете перейти по следующей ссылке:

pi4j.com/install.html

Вы также можете скопировать рабочий java-код для этого датчика отсюда:

import com.pi4j.io.i2c. I2CBus;

import com.pi4j.io.i2c. I2CDevice;

import com.pi4j.io.i2c. I2CFactory;

import java.io. IOException;

публичный класс BMG160

{

public static void main (String args ) выдает исключение

{

// Создаем шину I2C

Шина I2CBus = I2CFactory.getInstance (I2CBus. BUS_1);

// Получение устройства I2C, адрес BMG160 I2C 0x68 (104)

I2CDevice device = 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

byte data = новый байт [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; import com.pi4j.io.i2c. I2CFactory; import java.io. IOException;

Эта часть кода заставляет датчик измерять угловую скорость, записывая соответствующие команды с помощью функции write (), а затем данные считываются с помощью функции read ().

// Выбор регистра диапазона // Настроить полный диапазон шкалы, 2000 dps device.write (0x0F, (byte) 0x80); // Выбор регистра пропускной способности // Полоса пропускания 200 Гц device.write (0x10, (byte) 0x04); Thread.sleep (500);

// Чтение 6 байтов данных

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb byte data = new byte [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 («Ось вращения X:% d% n», xGyro); System.out.println ("Ось Y вращения:% d% n", yGyro); System.out.println ("Ось Z вращения:% d% n", zGyro);

Выход датчика показан на картинке выше.

Шаг 5: Приложения:

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

BMG160 имеет разнообразное применение в таких устройствах, как сотовые телефоны и устройства человеко-машинного интерфейса. Этот сенсорный модуль был разработан для удовлетворения требований для потребительских приложений, таких как стабилизация изображения (DSC и камера-телефон), игровые и указывающие устройства. Он также используется в системах, требующих распознавания жестов, и в системах внутренней навигации.

Рекомендуемые: