728x90
728x90
안녕하세요! 오랜만입니다.
그동안 많은 일이 있었지만 안타깝게도 과제연구에 대해서는 크게 진전했다고 할만한 것이 없었습니다.
지난 글 : 직접 드론 만들어보기(준비물 구매)
https://deepdeepit.tistory.com/6
먼저 라즈베리파이 3B 모델을 선배님께 물려받아 라즈비안을 설치하고 핵심 요소인 openCV를 설치하려 하였으나 라즈베리파이가 불안정해서 4번 실패를 하였습니다. 심지어 설치 작업이 최소 4시간정도가 소요되기 때문에 정말 많은 시간을 소모하였습니다.
드론은 모터를 모두 캘리브레이션하여 모터를 구동시키는 것 까지 성공하였고 대부분의 보드와 부품들을 부착하였습니다. 지금은 다시 재배치를 한 상태입니다.
드론에 ESC 연결을 다음 회로도와 같이 합니다.
드론 캘리브레이션 코드는 다음과 같습니다. 인터넷과 아두이노 책을 참고하여 servo 라이브러리를 이용하여 작성하였습니다. 코드 옆에 주석으로 설명을 해놓았습니다.
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
#include <Servo.h> //모터 구동을 위한 servo 라이브러리
Servo esc_a; //servo 변수인 ESC_(모터번호)를 선언합니다.
Servo esc_b;
Servo esc_c;
Servo esc_d;
int AAA = 0; //ESC로 들어갈 값을 잠시 저장해줄 임시 정수형 변수를 선언하고 초기값을 0으로 선언합니다.
int BBB = 0; //이때 초기값 0이 최소값이 됩니다.
int CCC = 0;
int DDD = 0;
void setup() {
Serial.begin(9600); //시리얼 통신 선언
esc_a.attach(6, 1000, 2000); //ESC로 연결되는 핀을 6~9번 핀을 사용합니다.
esc_b.attach(7, 1000, 2000);
esc_c.attach(8, 1000, 2000);
esc_d.attach(9, 1000, 2000);
Serial.setTimeout(50); //parseInt으로 값을 받을때 기본 값인 1s를 50ms로 설정합니다.
esc_a.write(0); //servo 변수의 초기의 읽기값을 0으로 설정합니다.
esc_b.write(0);
esc_c.write(0);
esc_d.write(0);
}
//무한반복문으로 시리얼 통신으로 값을 주고받습니다.
void loop() {
esc_a.write(AAA + 0); //입력값에 오차값을 더하여 대입합니다.
esc_b.write(BBB + 0); //각 모터와 ESC별로 편차가 존재하므로 이를 줄여주기 위하여 오차값을 더하거나 뺍니다.
esc_c.write(CCC + 0); //이 과정이 캘리브레이션이며 일단은 오차값을 0으로 설정하였습니다.
esc_d.write(DDD + 0);
Serial.print(AAA); //시리얼모니터에 변수값 출력 및 새로 ESC에 대입할 값 입력을 받습니다.
Serial.println('\t');
Serial.print(BBB);
Serial.println('\t');
Serial.print(CCC);
Serial. println('\t');
Serial.print(DDD);
Serial.println('\t');
}
void serialEvent()
{
while (Serial.available()) {
AAA = Serial.parseInt(); //시리얼 입력값을 변수에 대입하여 ESC에 대입합니다.
BBB = Serial.parseInt();
CCC = Serial.parseInt();
DDD = Serial.parseInt();
}
}
|
cs |
위의 코드로 구동시킨 드론의 영상입니다. 띄우는것은 드론을 바닥에 묶어놓고 해야 하기 때문에 모터 구동까지만 진행하였습니다.
드론 상단에는 아두이노를 드론 보드와 연결해 전원을 공급받고 각 모터와 연결합니다.
감사합니다! 많은 기대 부탁드립니다!
728x90
728x90