산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

아두이노와 안드로이드로 룸바 크리에이트 2 제어하기: 단계별 가이드

부품 및 소모품

아이로봇 룸바 크리에이트 2 (Roomba Create 2) 1개
아두이노 우노 1개
HC-06 블루투스 모듈 1개
푸시 버튼 1개

앱 및 온라인 서비스

프로젝트 개요

2016년 인스트럭터블 로봇 콘테스트 우승 상품으로 받은 룸바 크리에이트 2(약 $200)를 아두이노와 안드로이드 앱으로 제어하는 프로젝트입니다. 시리얼 통신으로 룸바의 모터, LED, 사운드를 제어하고, 블루투스로 스마트폰에서 원격 조종합니다.

깃허브 전체 코드 | 참고 라이브러리 (Dom Amato)

룸바 크리에이트 2 이해하기

하드웨어 사양

OI (Open Interface) 제어 모드

시리얼 통신 설정

룸바 기본 보드레이트 115,200 → 아두이노 소프트웨어 시리얼용 19,200으로 변경 필수.

보드레이트 변경 방법 (2가지)

  1. 전원 끄고 Clean 버튼 10초 이상 누르기 → 하강 음계 재생 후 19,200 고정
  2. 미니딘 5번 핀(보드레이트 변경)에 50-500ms 로우 펄스 3회 입력

아두이노-룸바 배선 (미니딘 7핀)

룸바 깨우기 및 모드 진입


void wakeUp() {
  digitalWrite(ddPin, HIGH); delay(100);
  digitalWrite(ddPin, LOW);  delay(500);
  digitalWrite(ddPin, HIGH); delay(2000);
}

void startSafe() {
  Roomba.write(128);  // START
  Roomba.write(131);  // SAFE MODE
  delay(1000);
}

LED 및 디스플레이 제어

파워 LED (청색/녹색/빨강, 밝기 조절)

setPowerLED(color, intensity);  // color: 0=녹, 128=주황, 255=빨강 / intensity: 0-255

기타 4개 LED (고정 밝기)

setDebrisLED(ON); setDockLED(ON); setSpotLED(ON); setWarningLED(ON);

7세그먼트 디스플레이


// 숫자 직접 표시 (코드 163)
setDigitLEDs(1, 2, 3, 4);  // "1234"

// ASCII 근사 표시 (코드 164)
writeLEDs('s', 't', 'o', 'p');  // "STOP"

이동 제어 명령


// Drive (속도, 반경) - 코드 137
drive(velocity, radius);  // velocity: ±500mm/s, radius: ±2000mm

// Drive Direct (좌/우 속도) - 코드 145
driveWheels(right, left);  // ±500mm/s

// Drive PWM - 코드 146
driveWheelsPWM(rightPWM, leftPWM);  // ±255

편의 함수 예시


turnCW(40, 180);      // 제자리 우회전 180도
turnCCW(40, 180);     // 제자리 좌회전 180도
driveStop();          // 정지
driveLeft(20);        // 좌측 모터만 회전 (좌회전)
driveRight(20);       // 우측 모터만 회전 (우회전)

블루투스 원격 제어

HC-06 설정

기본 9600 → AT+BAUD5 명령으로 19200 변경 (아두이노-룸바 속도와 맞춤)

안드로이드 앱 (MJRoBot BT Remote Control)

버튼전송 문자동작
전진w직진
후진s후진
우회전d우회전
좌회전a좌회전
정지f모터 정지 + "STOP" 표시
모드 전환m세이프 모드 재진입 (절벽 등 감지 후 복구)
속도 ++최대 500까지 10씩 증가
속도 --최소 50까지 10씩 감소

메인 루프 코드


void loop() {
  checkBTcmd();   // 블루투스 명령 수신 확인
  manualCmd();    // 명령에 따른 동작 실행
}

void checkBTcmd() {
  if (BT1.available()) {
    command = BT1.read();
    BT1.flush();
  }
}

void manualCmd() {
  switch (command) {
    case 'm': startSafe(); BT1.println("Safe mode"); playSound(3); break;
    case 'f': driveStop(); writeLEDs('s','t','o','p'); break;
    case 'w': drive(motorSpeed, 0); writeLEDs(' ','g','o',' '); break;
    case 'd': driveRight(motorSpeed); writeLEDs('r','i','g','h'); break;
    case 'a': driveLeft(motorSpeed); writeLEDs('l','e','f','t'); break;
    case 's': drive(-motorSpeed, 0); writeLEDs('b','a','c','k'); break;
    case '+': if(motorSpeed<500) motorSpeed+=10; break;
    case '-': if(motorSpeed>50) motorSpeed-=10; break;
  }
}

마무리 및 향후 계획

이 튜토리얼은 룸바 제어의 기초만 다룹니다. 향후 라즈베리 파이 연동으로 인터넷 제어, 센서 데이터 활용, 매핑/내비게이션 등 고급 기능을 다룰 예정입니다. 전자공학과 로봇공학의 재미를 더 많은 분과 나누고 싶습니다!

블로그: MJRoBot.org (포르투갈어)

제조공정

  1. Satellite CCRMA 키트로 센서 구동 오디오 이펙트 만들기
  2. 삼성 SAMI, 아두이노 우노, 라즈베리 파이로 빠르고 신뢰성 높은 화재 감지 시스템 구축
  3. 아두이노 & 라즈베리 파이로 인터넷 제어 영상 스트리밍 로봇 만들기
  4. 아두이노, 1Sheeld, IR 제어로 만능 안드로이드 리모컨 만들기
  5. 서보 모터 구동 장애물 회피 로봇: 아두이노 & HC-SR04로 제작하기
  6. 안드로이드 연동 DIY 저가 휴대용 체온계 만들기
  7. 아두이노 & MPU6050: SG90 & MG996R 서보 모터 정밀 제어
  8. 볼트 IoT와 아두이노 우노로 구현하는 무선 LED 밝기 제어 (PWM 6채널)
  9. u-blox LEA-6H GPS 모듈: 아두이노 & 파이썬 연동 가이드
  10. 아두이노 Due에서 음성 인식 및 합성 마스터하기