31. 스마트 폰 블루투스 RC CAR
Step1. 개요
모터드라이버(L239N)를 이용하여 아두이노 RC CAR를 만들어 보겠습니다. 리모컨은 스마트폰의 어플을 다운받아 자동차를 전진, 후진, 좌회전, 우회전, 빠른 좌회전, 빠른 우회전을 할 수 있습니다. 스마트폰과 자동차의 송수신을 위해 블루투스가 필요합니다. 바퀴는 앞에 1개, 뒤어 두개로 연결합니다. 네바퀴모두 제어하려면 마찰이 커서 전압이 매우 높아야 합니다. 따라서 뒷바퀴에만 모터와 연결하였습니다. 좌회전과 우회전을 하려면 모터를 각각 제어할 수 있어야 합니다. 좌회전할 때는 오른쪽 바퀴만 전진하면 되고 우회전은 그 반대가 되겠습니다. 아두이노는 3.3V와 5V 전압이 제공되는데 실제 해보니 9V전압이 필요합니다. 또한 모터를 제어하려면 모터드라이버를 사용해야 원하는 작동을 할 수 있습니다. 차후에 리모컨없이 자율적으로 작동할 수 있도록 초음파센서를 장착하여 자율 주행할 수 있는 초음파 모형 자동차를 만들어 볼 생각입니다.
아두이노, 브레드보드, 모터드라이버, 블루투스, 점퍼선,9V 홀더2개,우드락차체(두꺼운 상자),바퀴2개, DC모터2개,캐스터 바퀴1개,점퍼 케이블Step 2. 준비물
몸체는 두꺼운 우드락을 이용해도 됩니다. 바퀴는 페드병 뚜껑을 이용해도 됩니다. 페트병 뚜껑에 고무풍선을 적당히 잘라 씌워 마찰을 크게하면 잘 됩니다. DC모터는 분리수거할 때 버려진 장난감에서 얻을 수 있을 겁니다. 그리고 각 부품이 프레임에 잘 부착되도록 글루건을 이용하여 붙입니다. 케스터 바퀴는 철물점에서 1500원 정도 들어 구입할 수 있습니다. 여기서 사용된 프레임과 바퀴4개는 해외직구로 저렴하게 구입하였습니다.(만원정도 들었으나 국내에서는 가격이 좀 비싼 편입니다.) 제가 사용하는 부품은 대부분 해외직구로 싸게 구입했습니다.
9V홀더 |
motor driver(L239N) |
blueTooth |
Jumper Cable |
Arduino UNO |
Bread Board |
wheel |
caster wheel |
Step 3 회로도
각 부분의 연결표는 다음과 같습니다.
Step 4. code skech
아두이노 소프트웨어를 실행하여 다음 코드를 에라없이 입력하여 컴파일 실행하여 아래 내용을 업로드합니다.이때 시리얼 통신 라이브러리를 포함시킵니다.
#include <SoftwareSerial.h> //시리얼 통신 라이브러리 호출
//모터 PIN 설정
#define LEFT_A1 4 //왼쪽 바퀴
#define LEFT_B1 5 //왼쪽 바퀴
#define RIGHT_A2 6 //오른쪽 바퀴
#define RIGHT_B2 7 //오른쪽 바퀴
//블루투스 PIN 설정
#define BLUE_TX 2 //블루투스 TX
#define BLUE_RX 3 //블루투스 RX
SoftwareSerial mySerial(BLUE_TX, BLUE_RX); //시리얼 통신을 위한 객체선언
char value; //블루투스에서 받는 값
void setup() {
Serial.begin(9600); //시리얼모니터
mySerial.begin(9600); //블루투스 시리얼 개방
pinMode(LEFT_A1, OUTPUT);
pinMode(RIGHT_A2, OUTPUT);
pinMode(LEFT_B1, OUTPUT);
pinMode(RIGHT_B2, OUTPUT);
Serial.println("Arduino Bluetooth Car is ready to start");
}
void loop() {
while(mySerial.available()) //mySerial에 전송된 값이 있으면
{
value = mySerial.read(); //전송값 읽음
Serial.print(value);
if(value == 'l'){ //좌회전(강)
Serial.println("left");
left();
}else if(value == 'r'){ //우회전(강)
Serial.println("right");
right();
}else if(value == 'f'){ //전진
Serial.println("forward");
forward();
}else if(value == 'b'){ //후진
Serial.println("backward");
backward();
}else if(value == 'w'){ //우회전(약)
Serial.println("slow right");
sRight();
}else if(value == 'q'){ //좌회전(약)
Serial.println("slow left");
sLeft();
}else if(value == 's'){ //정지
Serial.println("stop");
stop();
}
}
}
// 자동차 움직임 정의 Function 들
void forward(){ // 전진
digitalWrite(LEFT_A1, HIGH);
digitalWrite(LEFT_B1, LOW);
digitalWrite(RIGHT_A2, HIGH);
digitalWrite(RIGHT_B2, LOW);
}
void backward(){ // 후진
digitalWrite(LEFT_A1, LOW);
digitalWrite(LEFT_B1, HIGH);
digitalWrite(RIGHT_A2, LOW);
digitalWrite(RIGHT_B2, HIGH);
}
void left(){ // 좌회전 - 오른쪽 바퀴가 전전,왼쪽 바퀴는 후진하면서 빠르게 좌회전
digitalWrite(LEFT_A1, LOW);
digitalWrite(LEFT_B1, HIGH);
digitalWrite(RIGHT_A2, HIGH);
digitalWrite(RIGHT_B2, LOW);
}
void right(){ // 우회전 -왼쪽 바퀴가 전진,왼쪽 바퀴는 후진하면서 빠르게 우회전
digitalWrite(LEFT_A1, HIGH);
digitalWrite(LEFT_B1, LOW);
digitalWrite(RIGHT_A2, LOW);
digitalWrite(RIGHT_B2, HIGH);
}
void sLeft(){ //느리게 좌회전- 오른쪽 바퀴만 전진,왼쪽 바퀴는 정지하여 천천히 좌회전
digitalWrite(LEFT_A1, LOW);
digitalWrite(LEFT_B1, LOW);
digitalWrite(RIGHT_A2, HIGH);
digitalWrite(RIGHT_B2, LOW);
}
void sRight(){ // 느리게 우회전 -왼쪽바퀴는 전진,오른쪽 바퀴는 정지하여 천천히 우회전
digitalWrite(LEFT_A1, HIGH);
digitalWrite(LEFT_B1, LOW);
digitalWrite(RIGHT_A2, LOW);
digitalWrite(RIGHT_B2, LOW);
}
void stop(){ // 정지
digitalWrite(LEFT_A1, LOW);
digitalWrite(LEFT_B1, LOW);
digitalWrite(RIGHT_A2, LOW);
digitalWrite(RIGHT_B2, LOW);
}
발췌 사이트:
http://www.instructables.com/id/How-to-use-the-L298-Motor-Driver-Module-Arduino-Tu/
Step 5. 블루투스 어플리케이션
구글 플레이스토어에서 불루투스 컨트롤러를 다운 받아 설치합니다.
아래그림처럼 키설정을 합니다.
키설정 |
깜박이던 불루투스모듈이 정지되면 스마트폰과 블루투스가 연동이 된 것입니다. 그러면 버튼을 터치하면 바퀴(DC모터)가 작동됩니다.
실제 스마트폰 불루투스 명령어 모습 |
Step 6. 시연 동영상
전압은 9V건전지 2개를 사용했습니다. 만약 그 이하이면 정상적으로 작동하지 않습니다. 위동영상은 전진,정지,후진, 좌회전,강한 좌회전, 우회전, 강한 우회전을 순서대로 스마트폰으로 불루투스를 이용한 원격제어를 한 모습입니다.
0개의 덧글:
댓글 쓰기
에 가입 댓글 [Atom]
<< 홈