1. I2C 활성화 설정
1) 라즈베리파이 터미널에서 'sudo raspi-config' 명령을 실행하여 설정 메뉴에 들어감
2) Interface Options > I2C를 선택하고 활성
3) 'sudo reboot -n' 명령으로 재부팅
4) 설정 확인하기
- 아래와 같이 명령어 입력 후 i2c 모듈과 i2c 디바이스 드라이버 확인
2. smbus 라이브러리 설치
1) 아래 명령어 순서대로 입력
sudo apt-get update
sudo apt-get install python3-smbus
sudo apt-get install i2c-tools
3. MPU6050 연결
1) 라즈베리파이4 핀맵을 보고 센서와 연결
- Ex)
- 1번 - VCC
- 3번 - SDA
- 5번 - SCL
- 14번 - GND
2) MPU6050 주소 확인
sudo i2cdetect -y 1
- 위와 같이 '0x68' 주소에 연결되거나 '0x69' 주소에 연결되어 있어야함
4. Python으로 가속도 그래프 그리기
- 10초 동안 3축 가속도를 읽고, 그래프를 이미지로 저장하는 코드
import smbus
import time
import matplotlib.pyplot as plt
# MPU6050 레지스터 주소
power_mgmt_1 = 0x6b
accel_x_out = 0x3b
accel_y_out = 0x3d
accel_z_out = 0x3f
# I2C 버스 생성
bus = smbus.SMBus(1)
# 센서 초기화
def init_sensor():
bus.write_byte_data(0x68, power_mgmt_1, 0)
# 가속도 값 읽기
def read_accel():
def read_word(reg):
high = bus.read_byte_data(0x68, reg)
low = bus.read_byte_data(0x68, reg+1)
val = (high << 8) + low
return val if val < 0x8000 else val - 65536
accel_x = read_word(accel_x_out)
accel_y = read_word(accel_y_out)
accel_z = read_word(accel_z_out)
return accel_x, accel_y, accel_z
def main():
init_sensor()
x_data = []
y_data = []
z_data = []
start_time = time.time()
try:
while time.time() - start_time < 10: # 10초 동안 데이터 읽기
accel_x, accel_y, accel_z = read_accel()
print(f"Accelerometer: X={accel_x}, Y={accel_y}, Z={accel_z}")
# 데이터 저장
x_data.append(accel_x)
y_data.append(accel_y)
z_data.append(accel_z)
time.sleep(0.1) # 0.1초마다 데이터 샘플링
except KeyboardInterrupt:
pass # 키보드인터럽트
# 그래프 그리기
plt.plot(x_data, label='X-Axis')
plt.plot(y_data, label='Y-Axis')
plt.plot(z_data, label='Z-Axis')
plt.xlabel('Time')
plt.ylabel('Acceleration')
plt.legend()
plt.savefig('acceleration_graph.png') # 이미지 파일로 저장
if __name__ == "__main__":
main()
'기타 > Raspberry Pi' 카테고리의 다른 글
22.07.24~22.08.01) 라즈베리파이 설정 및 기초 (0) | 2023.01.15 |
---|