MPU6050, пожалуй, является самым популярным МЭМС-датчиком, используемым для проектов на основе Raspberry Pi и Arduino. Он имеет в своем составе 6-осевой инерциальный датчик (3-осевой акселерометр и 3-осевой гироскоп) с датчиком температуры. Его ценят за малую мощность, простоту и удивительную для такого недорогого датчика точность. Если вы хотите узнать, как эта штука работает с Raspberry Pi Pico, то читайте дальше.

Схема подключения датчика MPU6050 к Raspberry Pi Pico довольно проста и представлена далее. Красный провод подключается к VSYS на Pico для питания MPU6050, черный к земле (GND), а желтый и белый мы подключаем к контактам GPIO на Pico, чтобы установить связь по протоколу I2C.

I2C (Inter-Integrated Circuit) представляет собой протокол связи, который позволяет нескольким устройствам взаимодействовать друг с другом по двухпроводной шине. Он обычно используется в электронных устройствах для связи между интегральными схемами (ИС) на одной плате. Два провода на шине I2C – это линии SDA (последовательные данные) и SCL (последовательные тактовые импульсы). Линия SDA передает данные, а линия SCL используется для синхронизации передачи данных. В I2C одно устройство действует как ведущее и управляет тактированием, а другие устройства действуют как ведомые. Ведущее устройство инициирует связь и генерирует тактовый сигнал, а ведомые устройства отвечают на запросы ведущего. I2C широко используется из-за его простоты, малого количества выводов и возможности работы с несколькими мастерами. Он используется во многих приложениях, таких как датчики температуры, RTC, EEPROM, АЦП и ЖК-дисплеи. I2C – это широко используемый протокол связи, поддерживаемый большинством микроконтроллеров и микропроцессоров, включая Raspberry Pi Pico.
Теперь перейдем к программированию. Сохраните следующие библиотеки в каталоге lib на pico: https://github.com/shillehbean/youtube-channel/blob/main/vector3d.py и https://github.com/shillehbean/youtube-channel/blob/main/imu.py. Далее загрузите следующий код:
LED = machine.Pin("LED", machine.Pin.OUT)
LED.on()
from imu import MPU6050
from time import sleep
from machine import Pin, I2C
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
imu = MPU6050(i2c)
while True:
ax=round(imu.accel.x,2)
ay=round(imu.accel.y,2)
az=round(imu.accel.z,2)
gx=round(imu.gyro.x)
gy=round(imu.gyro.y)
gz=round(imu.gyro.z)
tem=round(imu.temperature,2)
print("ax",ax,"\t","ay",ay,"\t","az",az,"\t","gx",gx,"\t","gy",gy,"\t","gz",gz,"\t","Temperature",tem," ",end="\r")
sleep(0.2)
Данный скрипт устанавливает объект i2c, используемый в библиотеке MPU6050, и это то, что вам нужно, чтобы установить соединение. Далее скрипт извлекает значения с датчика в цикле while. Вам нужно будет вручную нажать «Stop» в программе, чтобы этот код завершился. В нашем случае мы также используем паузу длиной 0,2 секунды, чтобы не перегружать пользователя просмотром слишком большого количества значений, вы можете изменить это значение в большую или меньшую сторону.
© digitrode.ru