아두이노 드론 만들고 직접 코딩하기 - 서민우 지음

#준비물

hm 10에 대한 이미지 검색결과
#HM10 BLE
-블루투스 통신과 직렬통신을 연결해주는 모듈
-모바일 기기의 블루투스 마스터 모듈과 아두이노와 같은 임베디드 시스템의 직렬통신 모듈을 연결해준다.

아두이노 프로 마이크로에 대한 이미지 검색결과
#아두이노 프로 마이크로
- ATmega32u4칩을 사용하고 있습니다.
- 보드를 Arduino Leonardo로 선택합니다.

#MPU6050
I2C 통신을 합니다.

#다두이노 드론 앱
- 플레이 스토어에서 다운 가능합니다. 2019.07.31 기준 앱스토어에는 없습니다.
- MSP(Multiwii Serial Protocol)라고 하는 통신 방식을 통해 드론에 메시지를 전달합니다.
- MSP는 MultiWii flight controller(FC)와의 표준 통신 방법을 제공합니다.
- 다두이노 드론 앱과 아두이노 프로 마이크로는 MSP 프로토콜을 이용하여 메시지를 주고 받습니다.

#MSP protocol
MSP 메시지 형식
msp 프로토콜에 대한 이미지 검색결과

#드론 컨트롤
drone roll pitch yaw에 대한 이미지 검색결과

# Roll, Pitch, Yaw
관련 이미지

---
# 코드 프레임워크

Part 1. Pitch, Roll, Yaw 각속도와 각도 구하기

1. 원시 자이로 값 읽기

mpu6050_t mpu6050 = {
  .i2c_addr = 0x68,
  .PWR_MGMT_1 = 0x6b,
  .GYRO_XOUT_H = 0x43
};

2. 원시 자이로 평균값 구하기
- 프로그램 실행 시 한번만 실행
- 수평 상태에서의 자이로 평균값

3. 자이로 값 보정하기
보정값 = 원시값 - 평균값
0에 가까운 값이 구해짐.

4. 회전 각속도 구하기
- MPU6050의 FS_SEL 레지스터의 값에 따라
최대 표현범위와 각도당 자이로 센서 값이 달라집니다.
mpu 6050 fs_sel에 대한 이미지 검색결과
회전 각속도 = 자이로 보정값 / (FS_SEL값에 따른 Sensitivity Scale Factor)

5. 주기 시간 계산하기
micros() 함수를 이용해 계산한다.

6. 회전각도 구하기


Part 2. 드론 균형 잡기

pid 시뮬레이션 사이트 :
- 구글에 pid simulation이라고 검색하면 pid.xls 파일을 받을 수 있다.

7. 각도로 드론 균형 힘 값 계산하기
p : a
i : c
d : b에 해당




8. 모터 속도 계산하기
주의 : 이 책에서 만든 드론에는 mpu6050의 y축 좌표가 앞쪽을 바라보고있다.







자이로 센서의 값이 어디로 회전하는게 +인지에 따라 식이 달라질 수 있음.

9. 원격 Throttle 입력 받기


10. 모터 속도 적용하기


11. 드론 균형 힘 값 계산에 각속도 추가하기


12. 드론 조종 시 목표 각도 도달하기












Comments