CodingMaker

아두이노 RC카 만들기 본문

Arduino

아두이노 RC카 만들기

메이커K 2018. 7. 17. 05:10

 

1. 재료 살펴보기 

 

DC 모터와 on/off 스위치의 경우 납땜이 되어있지 않아 점퍼선으로 납땜을 하였다. 

전원 케이블 역시 스위치에 연결하기위해 빨강선을 잘라 점퍼선을 끼울수 있게 만들었다. 납땜이 힘들경우 남땜이 되어있는 재료를 구입할 수 있다.(이 경우는 추가비용이 발생한다.)

 

 

2. DC 모터 회전시켜보기

 

 

DC 모터에는 A(파랑색)을 사용)와 B(초록색) 두개의 선이 있다. 이 두개의 선에 전압을 넣어주면 DC 모터가 회전하거나 정지하게 할 수 있다. 

 

 

전압에 따른 회전 방향 (9V 연결잭에 건전지를 끼운 후 두 전선을 모터와 연결한 후 회전 방향을 확인해 본다)

 

B 전선  A 전선  회전 방향 
0V  0V  정지 
5V 0V  정회전 
0V  5V  역회전
5V 5V   정지

 

 

 

 

 

그럼 아두이노의 4번과 5번핀에 DC모터를 연결한 후 회전 시켜보자.

DC모터의 두개의 선을 각각 디지털 4번과 5번 핀에 연결한다.

 

 

이렇게 코딩을 했지만 모터가 회전하지 않는다 왜냐하면 전류 공급이 DC 모터를 돌릴수 없을 정도로 작기 때문이다. 그래서 "모터드라이버"를 사용한다. 

모터 드라이버는 강한 전류 공급을 위한 펌프 역할을 한다.

모터드라이버 아두이노 
B-1A  D3
B-1B D5
 GND GND
VCC Vin

A-1A D6
A-1B D9

 

 

 

 

회로도

 

 

DC모터의 두개의 핀을 각각 모터드라이버의 연두색 부분(터미널)에 연결한 후 드라이버로 조여 준다. 

모터 드라이버의 6개의 핀을 표와 같이 아두이노에 연결한다.

모터를 시계방향 반시계방향으로 회전 시켜본다.

 

블루투스를 여러 사람이 동시에 잡게 되면 보통 HC-06이 휴대폰에 엄청 많아져서 내꺼 블루투스를 찾기가 힘들다.

그래서 블루투스의 이름을 바꿔주는 작업을 미리하면 좋다.

먼저 아래와 같은 코드를 아두이노 스케치에서 작성한다.

 

#include <SoftwareSerial.h>


SoftwareSerial BT(7, 8); // RX, TX


void setup() {
  Serial.begin(9600);
  BT.begin(9600);
  }


void loop() { 
  if (BT.available()) {
    Serial.write(BT.read());
  }
  if (Serial.available()) {
    BT.write(Serial.read());
  }
}

그런다음 블루투스의 RX를 아두이노의 8번에 꽃고 블루투스의 TX는 아두이노의 7번에 꽂아준다.

그런다음 코드를 아두이노에 업로드한다. 이때 포트가 제대로 연결되어있는지와 아두이노가 우노이면 우노가 선택되었는지 등의 연결을 반드시 체크한다.

그런다음 시리얼모니터를 켠다.

아래와 같이 시리얼 모니터에 AT라고 입력한 후 Enter를 누른다.

 

 

혹시 OK가 입력되지 않으면 line ending 없음과 9600 보드레이트가 선택되어있는지 확인한다.

잘 설정이 되어있으면 아래와 같이 OK가 입력된다. 그럼 잘 연결된 것이다.

 

 

이제 AT+NAME를 입력하고 그 다음에는 새롭게 지정할 자신만 알아볼수 있는 이름을 만든다. 

예제에서는 KTB1이라는 이름을 만들었다. 이때 띄어쓰기는 하지 않는다. 

 

 

이름이 넣어 Enter를 누르면 아래와 같이 OKsetname이라는 메세지가 뜨면 이름바꾸기 성공!!!

 

 

왼쪽처럼 처음의 블루투스 이름은 HC-06으로 동일하다. 그래서 오른쪽처럼 KTB1처럼 자신만의 이름으로 바꿔주면 블루투스 찾기가 용이하다.

 

 

 

아래와 같이 RC카 앱을 만든후 블루투스를 연결하려한다면 쉽게 자신의 이름을 찾을 수 있다.

 

 

 

3. 모터카 본체 모델링하기

 

아두이노 보드와 브래드보드 기타 부품들이 안착할 메인 판을 Fusion 360으로 모델링한후 3D 프린터로 출력한다.

모델링과 3D 프린터가 힘들경우 관련 키트를 구매하면 레이저커팅된 판이 같이 온다. 구매해서 간편하게 사용할 수 있다.

 

2차 사이즈와 위치 수정한 후의 모델링

 

 

 

4. 모터카 조립하기

 

1차 모델링해서 출력한 판에 모터카를 조립해본다.

 

 

1차 모델링은 사이즈와 위치잡기에서 오류가 생겼다. 브래드보드가 맞지 않아 들어가지 않고 스위치부분의 구멍밑에 DC모터가 있어서 스위치를 끼울수가 없었다.
2차로 다시 모델링 수정후 출력을 다시 했다.

 

다행히 한번의 재 수정으로 딱 맞게 각각의 부품들이 자리를 잡았다. 

14센티로 작게 만든 이유는 MARV 프린터가 최대로 쓸수 있는 사이즈여서 할수없이 빡빡하게 모델링할수 밖에 없었다.

크게 뽑을수 있는 프린터가 있을 경우 좀 더 여유있는 사이즈로 모델링을 하면 더 좋겠다.

오른쪽 바퀴의 아래쪽 선이 가장 오른쪽에 연결하고 왼쪽 아래 선이 가장 왼쪽에 연결한다.

 

 

모터드라이브와 아두이노 메인보드를 각각 핀의 위치에 연결한다.

 

 

 

 

블루투스 센서를 메인보드에 연결한다.

 

5. 아두이노

아두이노에서 아래와 같이 코드를 작성한 후 업로드한다.

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
#include <SoftwareSerial.h>
SoftwareSerial BT(78);
 
void forward1() {
  analogWrite(30); //오른쪽 아래
  analogWrite(5150); 
  analogWrite(6150);
  analogWrite(90); //왼쪽 아래
}
void backward1() {
  analogWrite(3150);
  analogWrite(50);
  analogWrite(60);
  analogWrite(9150);
}
void turnleft() {
  analogWrite(3150);
  analogWrite(50);
  analogWrite(6150);
  analogWrite(90);
}
void turnright() {
  analogWrite(30);
  analogWrite(5150);
  analogWrite(60);
  analogWrite(9150);
}
 
void stopall() {
  analogWrite(30);
  analogWrite(50);
  analogWrite(60);
  analogWrite(90);
}
 
void setup() {
  pinMode(3, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(9, OUTPUT);
  BT.begin(9600);
}
 
void loop() {
  // 함수를 사용하여 전진,후진,좌회전,우회전,정지
  if (BT.available()) {
    char c = BT.read();
    if (c == 'f')forward1();
    if (c == 'b')backward1();
    if (c == 'l')turnleft();
    if (c == 'r')turnright();
    if (c == 's')stopall();
  }
}

rccar.ino
다운로드

 

 

기본적으로 RC카는 무선으로 조정하기 때문에 앱인밴터를 사용하여 스마트폰으로 RC카를 제어하는 코드를 작성한다.

 

6. 스마트폰으로 모터카 제어하기

 

이미지 파일을 먼저 다운 받는다.

 

img.zip
다운로드

 

아두이노에 블루투스센서를 추가하여 앱인벤터에서 코드를 작성한 후 스마트폰으로 모터카를 조정해본다.

먼저 아래와 같이 앱인벤터를 열어서 작성한다.

 

 

 

 

 

 

 

 

7. 스마트폰으로 모터카 운전 테스트하기

 

앱 인벤터로 만든 앱으로 자동차가 우회전 좌회전 직진 후진이 정상적으로 작동하는치 테스트해본다.