본문 바로가기

개발자/라즈베리파이4

Raspberry Pi Pico 가속도계, 자이로 MPU-6050

반응형

 

 

이번 포스팅에서는MPU-6050은 가속도계와 자이로미터를 결합한 관성 장치입니다. 가속도, 기울기 및 각속도를 측정하는 데 사용할 수 있습니다. 이 기사에서는 MicroPython으로 프로그래밍된 Raspberry Pi Pico와 함께 MPU-6050을 사용하는 방법을 살펴봅니다. 

 

가속도계/자이로 MPU-6050 및 Raspberry Pi Pico(MicroPython) 

 

가속도계를 사용하면 x, y 및 z의 3축에 따라 가속도 및/또는 중력장을 알 수 있습니다. x 및 y 축은 모듈에 표시되고 z 축은 모듈 평면에 수직입니다. 모듈이 고정되어 있고 테이블 위에 평평할 때 아래쪽으로 작용하는 중력으로 인해 z축을 따라 1g의 가속도가 측정됩니다. 측정된 가속도가 3축을 따라 0이면 MPU-6050 모듈이 자유 낙하합니다! 

 

자이로미터는 3축을 따라 각속도를 측정합니다. 모듈이 움직이지 않을 때 각속도의 3가지 성분은 원칙적으로 0입니다(그러나 정확한 결과를 위해서는 보정이 필요합니다). 

 

연결

 

MPU-6050 모듈에는 8개의 커넥터가 있지만 그 중 4개만 작동에 필요합니다(2개는 전원 공급, 2개는 I2C를 통한 데이터 전송).

  • MPU-6050 VCC 핀: Raspberry Pi Pico 3.3V 출력
  • MPU-6050 GND 핀: Raspberry Pi Pico GND 핀
  • MPU-6050 SCL 핀: Raspberry Pi Pico GP9 핀
  • MPA-6050 SDA 핀: Raspberry Pi Pico GP8 핀 

 

가속도계/자이로 MPU-6050 및 Raspberry Pi Pico(MicroPython)  이미지 출처 https://electroniqueamateur.blogspot.com/2022/03/accelerometregyro-mpu-6050-et-raspberry.html

 

 

imu.py 및 vector3d.py 드라이버 설치

 

필요한 라이브러리는 Github 저장소 micropython-mpu9x50 에서 찾을 수 있습니다 . "imu.py" 및 "vector3d.py" 파일을 Raspberry Pi Pico의 플래시 메모리에 복사해야 합니다. 

 

출처: 참고 사이트

 

스크립트 #1

 

이 첫 번째 스크립트는 가속도계와 자이로미터의 측정값을 표시합니다. 가속도계의 데이터에서 스크립트는 3개의 축(x, y 또는 z) 중 하나가 수직에 접근하는지 확인하려고 시도합니다. 스크립트는 자이로미터의 데이터를 기반으로 MPU-6050 모듈이 회전하는지 여부를 나타냅니다.

 

이 스크립트를 실행하고 MPU-6050 모듈의 방향을 다르게 지정하여 표시된 값이 어떻게 달라지는지 확인합니다. 

 

'''
Utilisation d'une centrale inertielle MPU6050
(accéléromètre + gyrometre) avec un Raspberry Pi Pico.
Pour plus d'infos:
https://electroniqueamateur.blogspot.com/2022/03/accelerometregyro-mpu-6050-et-raspberry.html
'''

from imu import MPU6050  # https://github.com/micropython-IMU/micropython-mpu9x50
import time
from machine import Pin, I2C

i2c = I2C(0, sda=Pin(8), scl=Pin(9), freq=400000)
imu = MPU6050(i2c)

# Affichage de la température
print("Temperature: ", round(imu.temperature,2), "°C")

while True:
    # lecture des valeurs
    acceleration = imu.accel
    gyrometre = imu.gyro
    
    print ("Acceleration x: ", round(acceleration.x,2), " y:", round(acceleration.y,2),
           "z: ", round(acceleration.z,2))

    print ("gyrometre x: ", round(gyrometre.x,2), " y:", round(gyrometre.y,2),
           "z: ", round(gyrometre.z,2))

# interprétation des données (accéléromètre)

    if abs(acceleration.x) > 0.8:
        if (acceleration.x > 0):
            print("L'axe x pointe vers le haut")
        else:
            print("L'axe x pointe vers le bas")

    if abs(acceleration.y) > 0.8:
        if (acceleration.y > 0):
            print("L'axe y pointe vers le haut")
        else:
            print("L'axe y pointe vers le bas")

    if abs(acceleration.z) > 0.8:
        if (acceleration.z > 0):
            print("L'axe z pointe vers le haut")
        else:
            print("L'axe z pointe vers le bas")

# interprétation des données (gyrometre)

    if abs(gyrometre.x) > 20:
        print("Rotation autour de l'axe x")

    if abs(gyrometre.y) > 20:
        print("Rotation autour de l'axe y")

    if abs(gyrometre.z) > 20:
        print("Rotation autour de l'axe z")
    
    time.sleep(0.2)

 

스크립트 #2

 

이 두 번째 예에서는 MPU-6050 모듈을 흔들면 Raspberry Pi Pico의 내장 LED가 켜집니다. 

 

'''
Utilisation d'une centrale inertielle MPU6050
(accéléromètre + gyrometre) avec un Raspberry Pi Pico.
La LED du Pico s'allume lorsqu'on secoue le MPU6050.
Pour plus d'infos:
https://electroniqueamateur.blogspot.com/2022/03/accelerometregyro-mpu-6050-et-raspberry.html
'''

from imu import MPU6050  # https://github.com/micropython-IMU/micropython-mpu9x50
import time
from machine import Pin, I2C

i2c = I2C(0, sda=Pin(8), scl=Pin(9), freq=400000)
imu = MPU6050(i2c)

# LED initialement éteinte
Pin(25, Pin.OUT).value(0)

while True:
    # lecture de l'accélération
    acceleration = imu.accel.magnitude
    print (acceleration)
    
    # la valeur au repos est 1
    if abs(acceleration - 1) > 0.1:
        print("Ca bouge!")   
        Pin(25, Pin.OUT).value(1) # on allume la LED
    else: 
        Pin(25, Pin.OUT).value(0) # on éteind la LED
        
    time.sleep(0.2)

 

참고 자료

가속도계/자이로 MPU-6050 및 Raspberry Pi Pico(MicroPython) 

 

 

 

반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

당신의 성공을 위해 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩