2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
MMA8452Q - это умный, маломощный, трехосевой, емкостной, микромашинный акселерометр с разрешением 12 бит. Гибкие возможности программирования пользователем предоставляются с помощью встроенных функций в акселерометр, конфигурируемых на два контакта прерывания. Он имеет выбираемую пользователем полную шкалу ± 2 г / ± 4 г / ± 8 г с данными, отфильтрованными фильтром высоких частот, а также нефильтрованными данными, доступными в реальном времени. Вот его демонстрация с Raspberry Pi с использованием кода Python.
Шаг 1: Что вам нужно..
1. Raspberry Pi
2. MMA8452Q
3. Кабель I²C
4. I²C Shield для Raspberry Pi
5. Кабель Ethernet.
Шаг 2: Подключения:
Возьмите щит I2C для raspberry pi и осторожно наденьте его на контакты gpio raspberry pi.
Затем подключите один конец кабеля I2C к датчику MMA8452Q, а другой конец - к экрану I2C.
Также подключите кабель Ethernet к Pi, или вы можете использовать модуль Wi-Fi.
Подключения показаны на картинке выше.
Шаг 3: Код:
Код Python для MMA8452Q можно скачать из нашего репозитория github - ControlEverythingCommunity
Вот ссылка.
Мы использовали библиотеку SMBus для кода Python, шаги по установке SMBus на Raspberry Pi описаны здесь:
pypi.python.org/pypi/smbus-cffi/0.5.1
Вы также можете скопировать код отсюда, он выглядит следующим образом:
# Распространяется по свободной лицензии.
# Используйте его как хотите, для получения прибыли или бесплатно, при условии, что он соответствует лицензиям на связанные с ним работы.
# MMA8452Q
# Этот код предназначен для работы с мини-модулем MMA8452Q_I2CS I2C.
импортировать smbus
время импорта
# Получить шину I2C
автобус = smbus. SMBus (1)
# MMA8452Q адрес, 0x1C (28)
# Выбрать регистр управления, 0x2A (42)
# 0x00 (00) Режим ожидания
bus.write_byte_data (0x1C, 0x2A, 0x00)
# MMA8452Q адрес, 0x1C (28)
# Выбрать регистр управления, 0x2A (42)
# 0x01 (01) Активный режим
bus.write_byte_data (0x1C, 0x2A, 0x01)
# MMA8452Q адрес, 0x1C (28)
# Выбрать регистр конфигурации, 0x0E (14)
# 0x00 (00) Установить диапазон +/- 2g
bus.write_byte_data (0x1C, 0x0E, 0x00)
time.sleep (0,5)
# MMA8452Q адрес, 0x1C (28)
# Считать данные обратно из 0x00 (0), 7 байт
# Регистр состояния, MSB оси X, LSB оси X, MSB оси Y, LSB оси Y, MSB оси Z, LSB оси Z
data = bus.read_i2c_block_data (0x1C, 0x00, 7)
# Конвертируем данные
xAccl = (данные [1] * 256 + данные [2]) / 16
если xAccl> 2047:
xAccl - = 4096
yAccl = (данные [3] * 256 + данные [4]) / 16
если yAccl> 2047:
yAccl - = 4096 г
Accl = (данные [5] * 256 + данные [6]) / 16
если zAccl> 2047:
zAccl - = 4096
# Выводить данные на экран
print "Ускорение по оси X:% d"% xAccl
print "Ускорение по оси Y:% d"% yAccl
print "Ускорение по оси Z:% d"% zAccl
Шаг 4: Приложения:
MMA8452Q имеет различные приложения, в том числе приложения E-Compass, обнаружение статической ориентации, которое включает в себя портрет / пейзаж, вверх / вниз, влево / вправо, определение положения сзади / спереди, ноутбук, электронную книгу и обнаружение падения и падения ноутбука в режиме реального времени. определение ориентации, включая виртуальную реальность и игровую трехмерную обратную связь о положении пользователя, анализ активности в реальном времени, такой как подсчет шагов шагомером, обнаружение свободного падения для жесткого диска, резервное копирование по GPS и многое другое.