다블(Dabble) 앱으로 제어하는 4륜 아두이노 로봇 만들기
부품 및 소모품
| 부품 |
수량 |
| 아두이노 우노 (Arduino UNO) |
1 |
| 브레드보드 |
1 |
| DC 모터 |
4 |
| HC-05 블루투스 모듈 |
1 |
| 점퍼 와이어 |
1 |
| L293D 듀얼 H-브리지 모터 드라이버 (TI) |
1 |
| DC 터미널 블록 |
1 |
| 모터 마운트 |
1세트 |
| 바퀴 |
1세트 |
앱 및 온라인 서비스
- 아두이노 IDE
- STEMpedia Dabble (안드로이드/iOS 앱, 구글 플레이에서 다운로드)
프로젝트 개요
아두이노 우노와 L293D 모터 드라이버, HC-05 블루투스 모듈을 사용하여 스마트폰 앱(Dabble)으로 무선 제어하는 4륜 로봇을 제작합니다. Dabble의 게임패드 모듈을 이용해 직관적인 조작이 가능합니다.
제작 단계
1단계: 차체 조립
- 섀시를 뒤집고 모터 마운트 4개를 M3 볼트/너트로 고정
- DC 모터 4개를 마운트에 M2 볼트/너트로 장착
- 각 모터 축에 바퀴 장착
- 조립체 뒤집기 → 차체 완성
2단계: 브레인 장착 및 배선
아두이노 우노를 차체에 고정하고 브레드보드로 회로 구성:
- 왼쪽 모터 2개 병렬 연결, 오른쪽 모터 2개 병렬 연결
- L293D 인에이블 핀: 디지털 10, 11 (PWM 속도 제어)
- L293D 방향 핀: 디지털 4, 5, 6, 7 (m1_dir1, m1_dir2, m2_dir1, m2_dir2)
- L293D VCC: 아두이노 5V, VC: 외부 배터리
- 모든 GND 공통 연결 (아두이노, 배터리, L293D)
3단계: 블루투스 모듈 연결
- HC-05 TX → 아두이노 핀 2 (SoftwareSerial RX)
- HC-05 RX → 아두이노 핀 3 (SoftwareSerial TX) *전압 분할 권장
- VCC/GND 연결
4단계: 외부 배터리 연결
DC 터미널 블록 또는 DC 잭을 통해 모터 구동용 외부 배터리 연결. 아두이노와 GND 공통 필수.
아두이노 코드
#define CUSTOM_SETTINGS
#define INCLUDE_GAMEPAD_MODULE
#include <Dabble.h>
#define motor1_en 10
#define motor2_en 11
#define motor1_dir1 4
#define motor1_dir2 5
#define motor2_dir1 6
#define motor2_dir2 7
void setup() {
Serial.begin(9600);
Dabble.begin(38400); // HC-05 보드레이트 (UNO는 38400 이하 권장)
for (unsigned int i = 4; i < 8; i++) {
pinMode(i, OUTPUT);
}
pinMode(motor1_en, OUTPUT);
pinMode(motor2_en, OUTPUT);
}
void loop() {
Dabble.processInput();
if (GamePad.isUpPressed()) {
Serial.print("UP");
forward();
} else if (GamePad.isDownPressed()) {
Serial.print("DOWN");
backward();
} else if (GamePad.isLeftPressed()) {
Serial.print("Left");
left();
} else if (GamePad.isRightPressed()) {
Serial.print("Right");
right();
} else {
Serial.println("stop");
Stop();
}
}
void forward() {
analogWrite(motor1_en, 255);
analogWrite(motor2_en, 255);
digitalWrite(motor1_dir1, HIGH);
digitalWrite(motor1_dir2, LOW);
digitalWrite(motor2_dir1, HIGH);
digitalWrite(motor2_dir2, LOW);
}
void backward() {
analogWrite(motor1_en, 255);
analogWrite(motor2_en, 255);
digitalWrite(motor1_dir1, LOW);
digitalWrite(motor1_dir2, HIGH);
digitalWrite(motor2_dir1, LOW);
digitalWrite(motor2_dir2, HIGH);
}
void left() {
analogWrite(motor1_en, 255);
analogWrite(motor2_en, 255);
digitalWrite(motor1_dir1, LOW);
digitalWrite(motor1_dir2, HIGH);
digitalWrite(motor2_dir1, HIGH);
digitalWrite(motor2_dir2, LOW);
}
void right() {
analogWrite(motor1_en, 255);
analogWrite(motor2_en, 255);
digitalWrite(motor1_dir1, HIGH);
digitalWrite(motor1_dir2, LOW);
digitalWrite(motor2_dir1, LOW);
digitalWrite(motor2_dir2, HIGH);
}
void Stop() {
analogWrite(motor1_en, 0);
analogWrite(motor2_en, 0);
digitalWrite(motor1_dir1, LOW);
digitalWrite(motor1_dir2, LOW);
digitalWrite(motor2_dir1, LOW);
digitalWrite(motor2_dir2, LOW);
}
다블(Dabble) 앱 사용법
- 구글 플레이에서 "Dabble" 설치
- 앱 실행 → 블루투스 연결 (HC-05 페어링 후 연결)
- 모듈 메뉴에서 "Gamepad" 선택
- 디지털 모드에서 좌측 방향키 사용:
- 위: 전진
- 아래: 후진
- 좌: 좌회전
- 우: 우회전
확장 아이디어
Dabble은 게임패드 외에도 조이스틱, 가속도계, 음성 제어, LED 제어, 핀 모니터링, 데이터 로깅 등 다양한 모듈을 제공합니다. 이를 활용해 로봇 기능을 확장할 수 있습니다.