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

스마트폰 G-센서 제어 로봇카: 아두이노 & 블루투스 기반 RC카 제작

부품 및 소모품

부품수량비고
아두이노 우노1메인 컨트롤러
HC-06 블루투스 모듈1스마트폰과 무선 통신 (HC-05도 사용 가능)
L298N 모터 드라이버1DC 기어 모터 2채널 구동
2륜 로봇카 플랫폼1차체, 모터, 바퀴 포함 키트 권장

소프트웨어 및 서비스

프로젝트 개요

스마트폰의 자이로스코프(G-센서)를 조이스틱처럼 사용해 로봇카를 무선 제어하는 프로젝트입니다. RemoteXY 서비스를 이용해 별도 앱 개발 없이 모바일 인터페이스를 생성하고, 아두이노 코드에 자동 통합됩니다.

제작 단계

1단계: 하드웨어 조립

로봇카 플랫폼에 아두이노 우노, HC-06 블루투스 모듈, L298N 드라이버, 배터리를 장착하고 회로도에 따라 배선합니다. 기어 모터 2개는 좌/우 바퀴를 독립 구동합니다.

2단계: RemoteXY GUI 설계

  1. RemoteXY 에디터(https://remotexy.com/en/editor/) 접속
  2. 조이스틱 컨트롤 추가 → 'G-sensor' 모드 활성화 (스마트폰 기울임으로 제어)
  3. 토글 스위치 추가 (LED 온/오프 등 부가 기능용)
  4. 'Get source code' 클릭해 아두이노 스케치 생성

3단계: 라이브러리 설치 및 기본 테스트

RemoteXY 라이브러리(https://remotexy.com/en/library/)를 아두이노 IDE에 설치 후 생성된 스케치를 업로드합니다. 모바일 앱(RemoteXY 다운로드 페이지에서 설치)과 블루투스 페어링해 GUI 동작 확인.

4단계: 모터 제어 로직 추가

생성된 스케치의 `RemoteXY` 구조체에 조이스틱 X/Y 값(`joystick_1_x`, `joystick_1_y`)이 들어옵니다. 이를 좌/우 모터 속도로 변환하는 `Wheel()` 함수를 구현하고 `loop()`에서 호출합니다.

차동 구동 공식:

조이스틱 값 범위(-100~100)를 PWM(0~255)로 매핑(`v * 2.55`)해 `analogWrite`로 출력합니다.

5단계: 모바일 앱 연결 및 실행

  1. 스마트폰에 RemoteXY 앱 설치
  2. 앱 실행 → 블루투스 버튼 → 모듈 선택 (HC-05/06 보통 'HC-06' 또는 'INVOR'로 표시)
  3. 연결 완료 후 스마트폰 기울여 로봇카 제어

완성 코드 (핵심부)

#define REMOTEXY_MODE__SOFTWARESERIAL
#include <SoftwareSerial.h>
#include <RemoteXY.h>

#define REMOTEXY_SERIAL_RX 2
#define REMOTEXY_SERIAL_TX 3
#define REMOTEXY_SERIAL_SPEED 9600

// RemoteXY 설정 배열 (에디터에서 자동 생성)
unsigned char RemoteXY_CONF[] = { 3,0,23,0,1,5,5,15,41,11,43,43,1,2,0,6,5,27,11,5,79,78,0,79,70,70,0 };

struct {
  signed char joystick_1_x;  // -100~100
  signed char joystick_1_y;  // -100~100
  unsigned char switch_1;    // 0/1
  unsigned char connect_flag;
} RemoteXY;

// 모터 핀 정의
#define PIN_MOTOR_RIGHT_UP 7
#define PIN_MOTOR_RIGHT_DN 6
#define PIN_MOTOR_RIGHT_SPEED 10
#define PIN_MOTOR_LEFT_UP 5
#define PIN_MOTOR_LEFT_DN 4
#define PIN_MOTOR_LEFT_SPEED 9
#define PIN_LED 13

unsigned char RightMotor[3] = {PIN_MOTOR_RIGHT_UP, PIN_MOTOR_RIGHT_DN, PIN_MOTOR_RIGHT_SPEED};
unsigned char LeftMotor[3] = {PIN_MOTOR_LEFT_UP, PIN_MOTOR_LEFT_DN, PIN_MOTOR_LEFT_SPEED};

void Wheel(unsigned char *motor, int v) {
  if (v > 100) v = 100;
  if (v < -100) v = -100;
  if (v > 0) {
    digitalWrite(motor[0], HIGH);
    digitalWrite(motor[1], LOW);
    analogWrite(motor[2], v * 2.55);
  } else if (v < 0) {
    digitalWrite(motor[0], LOW);
    digitalWrite(motor[1], HIGH);
    analogWrite(motor[2], (-v) * 2.55);
  } else {
    digitalWrite(motor[0], LOW);
    digitalWrite(motor[1], LOW);
    analogWrite(motor[2], 0);
  }
}

void setup() {
  pinMode(PIN_MOTOR_RIGHT_UP, OUTPUT);
  pinMode(PIN_MOTOR_RIGHT_DN, OUTPUT);
  pinMode(PIN_MOTOR_LEFT_UP, OUTPUT);
  pinMode(PIN_MOTOR_LEFT_DN, OUTPUT);
  pinMode(PIN_LED, OUTPUT);
  RemoteXY_Init();
}

void loop() {
  RemoteXY_Handler();
  digitalWrite(PIN_LED, RemoteXY.switch_1 ? HIGH : LOW);
  Wheel(RightMotor, RemoteXY.joystick_1_y - RemoteXY.joystick_1_x);
  Wheel(LeftMotor, RemoteXY.joystick_1_y + RemoteXY.joystick_1_x);
}

회로도

제공된 배선도 이미지 참조 (아두이노 - 블루투스 - L298N - 모터 연결).

확장 아이디어

제조공정

  1. 블루투스 제어 라즈베리 파이 로봇 만들기 - 오디오 피드백 포함
  2. 파이썬으로 와이파이 제어 라즈베리파이 로봇 만들기 – 단계별 가이드
  3. 아두이노만으로 DTMF 디코더 구축하기 – 추가 IC 불필요
  4. 아두이노로 모니터 앰비라이트(Ambilight) 시스템 직접 만들기
  5. SERENA: TFT LCD 터치스크린 탑재 아두이노 메가 2560 커스텀 알람 시스템
  6. 아두이노와 스마트폰으로 만드는 스마트 전압계 – 초간단 DIY 프로젝트
  7. 라즈베리파이 모터 쉴드로 만드는 안드로이드 제어 원격 주행 로봇
  8. 낡은 RC카를 아두이노와 엑스박스 컨트롤러로 조종하는 차량으로 개조하기
  9. 아두이노 나노로 만드는 음성 제어 로봇 - 블루투스와 안드로이드 앱 활용
  10. MobBob: 아두이노 로봇 직접 만들기, 안드로이드 스마트폰으로 매끄럽게 제어