Оглавление:

Отслеживание движения с использованием MPU-6000 и Particle Photon: 4 шага
Отслеживание движения с использованием MPU-6000 и Particle Photon: 4 шага

Видео: Отслеживание движения с использованием MPU-6000 и Particle Photon: 4 шага

Видео: Отслеживание движения с использованием MPU-6000 и Particle Photon: 4 шага
Видео: Руководство по Python для 6-осевого датчика отслеживания движения Raspberry Pi MPU-6000 2024, Ноябрь
Anonim
Image
Image

MPU-6000 - это 6-осевой датчик слежения за движением, в который встроены 3-осевой акселерометр и 3-осевой гироскоп. Этот датчик способен эффективно отслеживать точное положение и местоположение объекта в трехмерной плоскости. Его можно использовать в системах, требующих анализа положения с высочайшей точностью.

В этом руководстве было проиллюстрировано взаимодействие сенсорного модуля MPU-6000 с фотоном частицы. Для считывания значений ускорения и угла поворота мы использовали частицу с адаптером I2C. Этот адаптер I2C делает подключение к модулю датчика простым и надежным.

Шаг 1: Требуемое оборудование:

Требуемое оборудование
Требуемое оборудование
Требуемое оборудование
Требуемое оборудование
Требуемое оборудование
Требуемое оборудование

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

1. МПУ-6000

2. Частичный фотон

3. Кабель I2C

4. I2C Shield для фотонов частиц

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

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

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

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

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

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

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

Шаг 3. Код для отслеживания движения:

Код для отслеживания движения
Код для отслеживания движения

А теперь давайте начнем с кода частицы.

При использовании сенсорного модуля с arduino мы включаем библиотеки application.h и spark_wiring_i2c.h. Библиотека application.h и spark_wiring_i2c.h содержит функции, которые облегчают обмен данными i2c между датчиком и частицей.

Полный код частицы приведен ниже для удобства пользователя:

# include # include // IP-адрес MPU-6000 0x68 (104) #define Addr 0x68 int xGyro = 0, yGyro = 0, zGyro = 0, xAccl = 0, yAccl = 0, zAccl = 0; void setup () {// Устанавливаем переменную Particle.variable ("i2cdevice", "MPU-6000"); Particle.variable ("xAccl", xAccl); Particle.variable ("yAccl", yAccl); Particle.variable ("zAccl", zAccl); Particle.variable ("xGyro", xGyro); Particle.variable ("yGyro", yGyro); Particle.variable ("zGyro", zGyro); // Инициализируем связь I2C как Master Wire.begin (); // Инициализируем последовательную связь, устанавливаем скорость передачи = 9600 Serial.begin (9600); // Запуск передачи I2C Wire.beginTransmission (Addr); // Выбор регистра конфигурации гироскопа Wire.write (0x1B); // Полный диапазон шкалы = 2000 dps Wire.write (0x18); // Остановка передачи I2C Wire.endTransmission (); // Запуск передачи I2C Wire.beginTransmission (Addr); // Выбор регистра конфигурации акселерометра Wire.write (0x1C); // Полный диапазон шкалы = +/- 16g Wire.write (0x18); // Остановка передачи I2C Wire.endTransmission (); // Запуск передачи I2C Wire.beginTransmission (Addr); // Выбираем регистр управления питанием Wire.write (0x6B); // ФАПЧ со ссылкой xGyro Wire.write (0x01); // Остановка передачи I2C Wire.endTransmission (); задержка (300); } void loop () {данные типа int без знака [6]; // Запуск передачи I2C Wire.beginTransmission (Addr); // Выбираем регистр данных Wire.write (0x3B); // Остановка передачи I2C Wire.endTransmission (); // Запрос 6 байтов данных Wire.requestFrom (Addr, 6); // Считываем 6 байт данных if (Wire.available () == 6) {data [0] = Wire.read (); данные [1] = Wire.read (); данные [2] = Wire.read (); данные [3] = Wire.read (); данные [4] = Wire.read (); данные [5] = Wire.read (); } задержка (800); // Преобразование данных xAccl = ((data [1] * 256) + data [0]); если (xAccl> 32767) {xAccl - = 65536; } yAccl = ((данные [3] * 256) + данные [2]); если (yAccl> 32767) {yAccl - = 65536; } zAccl = ((данные [5] * 256) + данные [4]); если (zAccl> 32767) {zAccl - = 65536; } задержка (800); // Запуск передачи I2C Wire.beginTransmission (Addr); // Выбираем регистр данных Wire.write (0x43); // Остановка передачи I2C Wire.endTransmission (); // Запрос 6 байтов данных Wire.requestFrom (Addr, 6); // Считываем 6 байт данных if (Wire.available () == 6) {data [0] = Wire.read (); данные [1] = Wire.read (); данные [2] = Wire.read (); данные [3] = Wire.read (); данные [4] = Wire.read (); данные [5] = Wire.read (); } // Конвертируем данные xGyro = ((data [1] * 256) + data [0]); если (xGyro> 32767) {xGyro - = 65536; } yGyro = ((данные [3] * 256) + данные [2]); если (yGyro> 32767) {yGyro - = 65536; } zGyro = ((данные [5] * 256) + данные [4]); если (zGyro> 32767) {zGyro - = 65536; } // Выводим данные на панель управления Particle.publish («Ускорение по оси X:», String (xAccl)); задержка (1000); Particle.publish («Ускорение по оси Y:», String (yAccl)); задержка (1000); Particle.publish («Ускорение по оси Z:», String (zAccl)); задержка (1000); Particle.publish («Ось вращения X:», String (xGyro)); задержка (1000); Particle.publish («Ось вращения Y:», String (yGyro)); задержка (1000); Particle.publish («Z-ось вращения:», String (zGyro)); задержка (1000); }

Функция Particle.variable () создает переменные для хранения выходных данных датчика, а функция Particle.publish () отображает выходные данные на панели инструментов сайта.

Выходной сигнал датчика показан на рисунке выше для справки.

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

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

MPU-6000 - это датчик отслеживания движения, который находит свое применение в интерфейсе управления движением смартфонов и планшетов. В смартфонах эти датчики могут использоваться в таких приложениях, как команды жестов для приложений и управления телефоном, расширенные игры, дополненная реальность, захват и просмотр панорамных фотографий, а также навигация для пешеходов и транспортных средств. Технология MotionTracking может превращать телефоны и планшеты в мощные интеллектуальные устройства 3D, которые можно использовать в самых разных приложениях, от мониторинга здоровья и фитнеса до сервисов на основе определения местоположения.

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