Используйте акселерометр для определения величины ускорения свободного падения по осям X, Y, Z. Датчик отвечает за поворот дисплея в современном телефоне или подсчёт шагов в фитнес-браслете.
Если вам необходимо определить положение вашего девайса в пространстве, обратите внимания на IMU-сенсор на 10 степеней свободы.
Акселерометр в обзоре IMU-модуля.
В качестве мозга для считывания показаний с датчика рассмотрим платформу из серии Arduino, например, Uno.
На аппаратном уровне инерционный модуль общается с управляющей электроникой по шине I²C. Но не переживайте о битах и байтах: используйте библиотеку TroykaIMU и на выходе получите готовы данные.
Подключите акселерометр к пинам питания и шины I²C — SDA и SCL платформы Arduino Uno. Для коммуникации используйте соединительные провода «мама-папа».
Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield, которая одевается сверху на Arduino Uno методом бутерброда. Для коммуникации используйте трёхпроводной шлейф «мама-мама», который идёт в комплекте с датчиком.
С Troyka Slot Shield провода не понадобятся вовсе.
В качестве примера выведем в Serial-порт величины ускорения свободного падения по осям X, Y и Z.
// библиотека для работы I²C #include <Wire.h> // библиотека для работы с модулями IMU #include <TroykaIMU.h> // создаём объект для работы с акселерометром Accelerometer accel; void setup() { // открываем последовательный порт Serial.begin(115200); // выводим сообщение о начале инициализации Serial.println("Accelerometer init..."); // инициализация акселерометра accel.begin(); // устанавливаем чувствительность акселерометра // 2g — по умолчанию, 4g, 8g accel.setRange(RANGE_2G); // выводим сообщение об удачной инициализации Serial.println("Initialization completed"); } void loop() { // вывод направления и величины ускорения в м/с² по оси X Serial.print(accel.readAX()); Serial.print("\t\t"); // вывод направления и величины ускорения в м/с² по оси Y Serial.print(accel.readAY()); Serial.print("\t\t"); // вывод направления и величины ускорения в м/с² по оси Z Serial.print(accel.readAZ()); Serial.print("\t\t"); Serial.println(""); delay(100); /* // вывод направления и величины ускорения в м/с² по X, Y и Z float x, y, z; accel.readAXYZ(&x, &y, &z); Serial.print(x); Serial.print("\t\t"); Serial.print(y); Serial.print("\t\t"); Serial.print(z); Serial.println(""); delay(100); */ }
В качестве мозга для считывания показаний с датчика рассмотрим платформы из серии Espruino, например, Iskra JS.
Подключите акселерометр к пинам питания и шины I²C — SDA и SCL платформы Iskra JS. Для коммуникации используйте соединительные провода «мама-папа».
Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield, которая одевается сверху на Iskra JS методом бутерброда. Для коммуникации используйте трёхпроводной шлейф «мама-мама», который идёт в комплекте с датчиком.
С Troyka Slot Shield провода не понадобятся вовсе.
В качестве примера выведем в консоль величины ускорения свободного падения по осям X, Y и Z.
// Настраиваем шину I2C I2C1.setup({sda: SDA, scl: SCL, bitrate: 400000}); // Подключаем модуль var accel = require('@amperka/accelerometer').connect(I2C1); // Инициализируем модуль accel.init(); setInterval(function(){ // Отображаем силы, действующие на акселерометр print(accel.read('G')); }, 500);
В качестве мозга для считывания показаний с датчика рассмотрим одноплатные компьютеры Raspberry Pi, например, Raspberry Pi 4.
Подключите акселерометр к пинам SDA и SCL шины I²C компьютера Raspberry Pi.
Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Cap, которая надевается сверху на малину методом бутерброда.
А написать пример кода для Raspberry Pi оставим вам домашним заданием.
Акселерометр выполнен на чипе LIS331DLH и представляет собой миниатюрный датчик ускорения, разработанный по технологии MEMS от компании STMicroelectronics. Адрес устройства по умолчанию равен 0x18, но может быть изменен на 0x19. Подробности читайте в разделе смена адреса модуля.
Линейный понижающий регулятор напряжения NCP698SQ33T1G обеспечивает питание MEMS-чипа и других компонентов сенсора. Диапазон входного напряжения от 3,3 до 5 вольт. Выходное напряжение 3,3 В с максимальным выходным током 150 мА.
Преобразователь логических уровней PCA9306DCT необходим для сопряжения датчика с разными напряжениями логических уровней от 3,3 до 5 вольт. Другими словами сенсор совместим как с 3,3 вольтовыми платами, например, Raspberry Pi, так и с 5 вольтовыми — Arduino Uno.
Датчик подключается к управляющей электронике через две группы Troyka-контактов:
Иногда в проекте необходимо использовать несколько акселерометров. Для этого на модуле предусмотрены контактная площадка. Для смена адреса капните каплей припоя на отведённую контактную площадку.
Модуль | Адрес без перемычки | Адрес с перемычкой |
---|---|---|
Акселерометр | 0x18 | 0x19 |