첫 아두이노 로봇 만들기: 초보자를 위한 종합 가이드
부품 및 소모품
아두이노 우노 ×1
Adafruit L293D 모터 쉴드 ×1
HC-SR04 초음파 센서 ×1
HC-05 블루투스 모듈 ×1
기어드 모터 ×2
바퀴 ×2
캐스터 휠 ×2
9V 배터리 ×3
9V 배터리 클립 ×3
암-암 점퍼 와이어 ×8
플라스틱 박스 (섀시) ×1
필요한 도구
앱 및 라이브러리
Bluetooth Electronics 앱 (스마트폰 제어용)
아두이노 IDE
Adafruit Motor Shield 라이브러리
프로젝트 개요
아두이노 입문자를 위한 첫 로봇 프로젝트입니다. 블루투스 스마트폰 제어, 장애물 회피, 벽 따라가기, 미로 찾기 등 4가지 모드를 하나의 로봇으로 구현합니다. 원하시는 기능만 골라 만드셔도 됩니다.
1. 섀시 제작 (플라스틱 박스 활용)
박스 양쪽에 모터 장착용 구멍 2개 뚫기
모터 2개 장착 및 바퀴 결합
바닥에 캐스터 휠 장착용 구멍 3개 뚫고 고정
2. 배터리 구성
모터용 9V 배터리 2개를 병렬 연결해 모터 쉴드 PWR(EXT PWR) 단자에 공급. 아두이노용 별도 9V 배터리 1개를 DC 잭으로 연결. 스위치로 전원 제어.
3. 아두이노 + 모터 쉴드 조립
모터 쉴드를 아두이노 위에 장착
모터 쉴드 점퍼 제거 (외부 전원 사용 시 필수)
왼쪽 모터 → M1 단자, 오른쪽 모터 → M3 단자 연결
배터리 팩 → EXT PWR 단자 연결
4. 블루투스 모듈 및 스위치 연결
BT TX → 아두이노 RX (Pin 0)
BT RX → 아두이노 TX (Pin 1) ※ 분압기 권장
BT VCC → 5V, GND → GND
전원 스위치는 박스 후면에 장착
5. 초음파 센서 장착
박스 상단에 글루건으로 고정. 'ㄴ'자 브라켓 활용 권장.
VCC → 5V, GND → GND
Trig → 아두이노 A1 (아날로그 1)
Echo → 아두이노 A0 (아날로그 0)
6. 전체 회로도
소프트웨어: 4가지 모드 코드
Adafruit Motor Shield 라이브러리(AFMotor.h) 필수. 라이브러리 매니저에서 설치하세요.
① 블루투스 제어 모드
스마트폰 앱(Bluetooth Electronics)에서 버튼 매핑: F(전진), B(후진), L(좌회전), R(우회전), I/J/G/H(대각), S(정지), 0~9/q(속도 0~255)
#include <AFMotor.h>
AF_DCMotor motorRight(1, MOTOR12_64KHZ);
AF_DCMotor motorLeft(3, MOTOR12_64KHZ);
char dataIn = 'S'; int vel = 0;
void setup() {
Serial.begin(9600);
motorRight.setSpeed(0); motorLeft.setSpeed(0);
motorRight.run(RELEASE); motorLeft.run(RELEASE);
}
void loop() {
char det = check(); // 시리얼 수신 처리
switch(det) {
case 'F': motorRight.run(FORWARD); motorLeft.run(FORWARD); break;
case 'B': motorRight.run(BACKWARD); motorLeft.run(BACKWARD); break;
case 'L': motorRight.run(FORWARD); motorLeft.run(FORWARD);
motorRight.setSpeed(vel); motorLeft.setSpeed(vel/4); break;
case 'R': motorRight.run(FORWARD); motorLeft.run(FORWARD);
motorRight.setSpeed(vel/4); motorLeft.setSpeed(vel); break;
case 'S': motorRight.run(RELEASE); motorLeft.run(RELEASE); break;
// 속도 설정 '0'~'9','q' 처리 생략
}
}
int check() {
if (Serial.available() > 0) {
dataIn = Serial.read();
// dataIn에 따라 determinant 반환 로직
}
return determinant;
}
② 장애물 회피 모드
초음파 센서로 25cm 이내 장애물 감지 시 제자리 회전(한 바퀴 후진, 한 바퀴 전진)
void loop() {
long duration, distance;
digitalWrite(trigPin, LOW); delayMicroseconds(2);
digitalWrite(trigPin, HIGH); delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1; // cm
if (distance < 25) {
motorLeft.run(BACKWARD); motorRight.run(FORWARD); // 회전
} else {
motorRight.run(FORWARD); motorLeft.run(FORWARD); // 직진
}
delay(15);
}
③ 벽 따라가기 모드
30cm 이내 벽 감지 시 우회전하며 벽을 따라 감
if (distance < 30) {
motorRight.run(FORWARD); motorLeft.run(RELEASE); delay(500);
} else {
motorRight.run(RELEASE); motorLeft.run(FORWARD); delay(15);
}
④ 통합 파이널 스케치 (블루투스 + 장애물회피 + 벽따라가기)
블루투스 명령으로 모드 전환: 'b'(장애물회피), 'm'(벽따라가기), 'F','B','L','R'...'S'(수동 제어)
void loop() {
char det = check();
switch(det) {
case 'F': case 'B': case 'L': case 'R': case 'I': case 'J': case 'G': case 'H': case 'S':
// 수동 제어 코드
break;
case 'b': // 장애물 회피 모드 진입
// 장애물 회피 로직 반복 실행 (다른 명령 수신 전까지)
break;
case 'm': // 벽 따라가기 모드 진입
// 벽 따라가기 로직 반복 실행
break;
}
}
블루투스 앱 설정 (Bluetooth Electronics)
앱 설치 후 아두이노와 페어링 (비번: 1234 또는 0000)
버튼 레이아웃 편집: 위 코드의 문자 매핑에 맞게 버튼 할당
슬라이더로 속도(0~255) 제어 가능
마무리
이제 여러분의 첫 아두이노 로봇이 완성되었습니다! 블루투스로 직접 조종하거나, 자율 주행 모드로 장애물을 피하고 벽을 따라가게 해보세요. 코드 수정으로 미로 찾기 등 더 복잡한 행동도 프로그래밍할 수 있습니다.
질문이나 제안은 댓글로 남겨주세요. 블로그: robotechmaker.com