일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- kodak t-max 400
- FujiFilm C200
- ZeissIkon ZI
- SONY A7
- cf80/2.8
- 4870
- Hasselblad 500cm
- G28/2.8
- Contax G2
- FujiFilm GFX50s
- 2018 미국출장
- cf50/4 fle
- N80/4
- Kodak Ektar 100
- Germany
- Kodak 400TX
- GRD2
- M-Rokkor 40/2
- Mamiya 7
- cs50/2.5
- Minolta TC-1
- Nikon 28Ti
- Leica M7
- Rollei35s
- Kodak T-Max 100
- fujifilm velvia 50
- 2019 유럽여행
- Kodak 5222
- Minolta CLE
- Kentmere 400
- Today
- Total
J 창고
라즈베리파이와 MPU6050 본문
한 3개월간 해봤던 프로젝트에서 사용한 방법이다.
라즈베리파이 GPIO의 I2C통신을 통해서(SCL, SDA) 받아오는데
아쉽게도 DMP까진 구현하질 못했다.
센서값을 통해서 상보필터를 씌워서 구현하는 정도로 만족해서 사용했다..
뭔가 더 하고 싶었는데..
다른걸 구현하느라 시간도 없다보니 그냥 넘어갔다.
http://ozzmaker.com/2013/04/29/guide-to-interfacing-a-gyro-and-accelerometer-with-a-raspberry-pi/
위의 링크에서 많은 도움을 얻었다.
다만 위의 링크는 다른 센서를 이용했기에
저 소스를 기반으로 MPU6050에 맞게 컨버팅 해봤다.
그리고 밑의 소스를 바탕으로 구현하려면 여기에 올려 놓은 i2c-dev,h 파일이 필요하다.
#include "i2c-dev.h"
i2c-dev.h 파일을 들여다 보고 잘 연구해 보면 소스를 더 좋게 만들 수 있을 것 같은데
뭐 시간 때문에.... ㅠㅠ
또한 당연히 GPIO를 활용하기 때문에 wiringPi 라이브러리는 필수로 설치해야 한다.
==================== Device 장치 Open ===================
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
| cs |
================== Register Read 함수와 Write, Write2함수 ============
Write함수는 그냥 덮어쓰는 함수
Write2함수는 읽어온 후 원하는 비트만 셋 해서 다시 쓰는 함수
또 안에 보면 Block단위로 읽어오는 함수도 있음.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
| cs |
======================== 센서값 읽어오기 ============
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
| cs |
====================== 센서값 계산부 ========================================
센서값 읽어들인 후 LOOP_CYCLE만큼 Delay 하여
그 Delay한 시간을 Gyroscope 값을 계산할 dt로 활용한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
| cs |