블루투스로 다중 서보 모터 제어: Arduino & 안드로이드 앱
부품 및 소모품
| 부품 |
수량 |
비고 |
| Arduino UNO (또는 Mega - 6개 이상 서보 시) |
1 |
RobotDyn UNO 사용 |
| HC-06 블루투스 모듈 |
1 |
기타 호환 모듈 가능 |
| 서보 모터 |
6 |
테스트용 1개로도 가능 |
| 점퍼 와이어 세트 (MM/FF/MF) |
1 |
| 안드로이드 스마트폰 |
1 |
앱 설치용 |
프로젝트 소개
단일 서보 제어 앱에 이어 다중 서보 제어 앱을 제작했습니다. 안드로이드 앱으로 블루투스를 통해 최대 10개 서보까지 제어 가능합니다 (Arduino Mega 사용 시).
앱 다운로드
Google Play 스토어에서 "Bluetooth Servo Control" 등으로 검색하여 다운로드 (제작자 배포 앱). 소스 코드 필요 시 제작자 연락.
배선도
- HC-06 VCC → 5V, GND → GND
- HC-06 TXD → Arduino RX (핀 0), RXD → Arduino TX (핀 1) ※ 업로드 시 블루투스 모듈 분리 필수
- 서보 1~6: 핀 9, 10, 11, 3, 5, 6 (PWM 핀)
- 서보 전원: 별도 5~6V 공급 권장 (Arduino 5V 핀으로는 6개 동시 구동 불가)
HC-06 설정 변경 (선택)
USB-TTL 프로그래머로 HC-06과 직결하여 AT 명령어로 설정 변경 가능:
AT → OK 응답 확인
AT+NAMExyz → 모듈 이름을 "xyz"로 변경 (응답: OKsetname)
AT+PIN1234 → 페어링 PIN을 1234로 변경 (응답: OKsetPIN)
AT+BAUD4 → 보드레이트 9600 설정 (기본값)
상세 명령어는 첨부 PDF 참조.
소스 코드
/* 작성자: Danny van den Brande
안드로이드 앱으로 다중 서보 제어
핀 부족 시 Mega 사용 권장 */
#include
Servo myservo[10]; // 배열로 관리
byte serialA;
void setup() {
// 서보 핀 할당 (UNO 기준 6개 PWM 핀)
myservo[0].attach(9); // 서보 1
myservo[1].attach(10); // 서보 2
myservo[2].attach(11); // 서보 3
myservo[3].attach(3); // 서보 4
myservo[4].attach(5); // 서보 5
myservo[5].attach(6); // 서보 6
// myservo[6].attach( ); // 7번 이상 시 Mega에서 핀 지정
Serial.begin(9600); // HC-06 보드레이트와 일치해야 함
}
void loop() {
if (Serial.available() > 2) {
serialA = Serial.read(); // 첫 바이트 (앱에서 보내는 식별자)
Serial.println(serialA);
unsigned int servopos = Serial.read(); // 하위 바이트
unsigned int servopos1 = Serial.read(); // 상위 바이트
unsigned int realservo = (servopos1 * 256) + servopos; // 16비트 값 복원
Serial.println(realservo);
// 서보별 값 범위: 1000~1180(서보1), 2000~2180(서보2), ... 6000~6180(서보6)
for (int i = 0; i < 6; i++) {
int base = (i + 1) * 1000;
if (realservo >= base && realservo < base + 180) {
int angle = map(realservo, base, base + 180, 0, 180);
myservo[i].write(angle);
Serial.print("Servo "); Serial.print(i+1); Serial.println(" ON");
delay(10);
break;
}
}
// 7~10번 서보 사용 시 주석 해제 및 핀 할당 필요
}
}
회로도
Fritzing 회로도 이미지 제공: Arduino UNO, HC-06, 6개 서보 병렬 연결. 서보 전원은 별도 배터리/BEC 권장.
주의사항
- 코드 업로드 전 HC-06 모듈 반드시 분리 (RX/TX 핀 공유로 업로드 실패 방지)
- 서보 6개 동시 구동 시 Arduino 5V 레귤레이터 과부하 → 외부 전원 필수
- 앱에서 서보 번호에 따라 1000단위 오프셋으로 데이터 전송 (1000~1180, 2000~2180...)
- HC-06 기본 보드레이트 9600, 변경 시 코드와 동일하게 맞출 것