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

블루투스 제어 장애물 회피 로봇: 스마트 원격 조종 차량 만들기

부품 및 소모품

부품수량비고
Arduino Nano R31메인 컨트롤러
L298N 듀얼 H-브리지 모터 드라이버1모터 2개 제어
HC-SR04 초음파 거리 센서1장애물 감지
HC-05 블루투스 모듈1스마트폰과 통신
RGB 확산형 공통 애노드 LED1로봇 상태 표시
양방향 로직 레벨 컨버터1HC-05(3.3V) ↔ Arduino(5V) 신호 변환
저항 330Ω1LED 전류 제한
브레드보드1회로 구성용
브레드보드 전원 모듈 5V/3.3V1안정적 전원 공급
DC 기어드 모터 12V2구동용
점퍼 와이어 (수/암)1세트배선용

소프트웨어 및 앱

프로젝트 소개

코로나19 봉쇄 기간 동안 12년 만에 로봇 제작 취미를 되살려 만든 프로젝트입니다. 스마트폰으로 블루투스를 통해 로봇을 제어하며, 초음파 센서로 전방 장애물을 감지하면 자동으로 정지하는 기능을 갖추었습니다.

시스템 구성

  1. 제어: 스마트폰(Arduino BlueControl 앱) → 블루투스(HC-05) → 아두이노 나노(시리얼 수신)
  2. 구동: 아두이노 나노 → L298N 모터 드라이버(PWM 속도 제어) → DC 기어드 모터 2개 (전진/후진/좌/우)
  3. 안전: HC-SR04 초음파 센서로 전방 20cm 내 장애물 감지 시 자동 정지
  4. 상태 표시: RGB LED로 동작 상태 표시 (초록: 전진, 빨강: 정지/장애물, 파랑: 후진 등)

핵심 포인트

조립 구조

소스 코드

/* Bluetooth Controlled Obstacle Avoidance Robot
   Prepared by: Alok Talukdar
   Date: 09.05.2020 */
#include <SoftwareSerial.h>

// L298N 모터 제어 핀
#define IN1 5   // 우측 모터
#define IN2 4
#define IN3 3   // 좌측 모터
#define IN4 2
#define ENA 9   // 우측 PWM
#define ENB 10  // 좌측 PWM

// RGB LED 핀 (공통 애노드)
#define redLED 8
#define greenLED A0
#define blueLED 11

// HC-SR04 초음파 센서
const int trigPin = 6;
const int echoPin = 7;
float duration, distance;

// HC-05 블루투스 (소프트웨어 시리얼)
SoftwareSerial mySerial(12, 13);  // RX=12, TX=13
String data;
int btVal;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  mySerial.begin(9600);
  
  pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT);
  pinMode(ENA, OUTPUT); pinMode(ENB, OUTPUT);
  pinMode(redLED, OUTPUT); pinMode(blueLED, OUTPUT); pinMode(greenLED, OUTPUT);
  
  digitalWrite(IN1, LOW); digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW); digitalWrite(IN4, LOW);
  analogWrite(redLED, 255);   // 공통 애노드: HIGH=OFF
  digitalWrite(blueLED, HIGH);
  digitalWrite(greenLED, HIGH);
}

void loop() {
  // 블루투스 명령 수신
  while (mySerial.available()) {
    data = mySerial.readStringUntil('\n');
  }
  btVal = data.toInt();
  
  switch (btVal) {
    case 1: forward(); setLED(0, 255, HIGH); dist(); break;      // 전진
    case 2: reverse(); setLED(255, HIGH, LOW); break;            // 후진
    case 3: left(); break;                                       // 좌회전
    case 4: right(); break;                                      // 우회전
    case 5: stoprobot(); setLED(HIGH, 0, HIGH); break;           // 정지
    default: setLED(HIGH, 255, HIGH); break;
  }
}

// 모터 제어 함수들
void forward() {
  for(int i=0; i<=100; i++) {
    analogWrite(ENA, i); analogWrite(ENB, i);
    digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
    digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);
  }
}

void reverse() {
  for(int j=0; j<=100; j++) {
    analogWrite(ENA, j); analogWrite(ENB, j);
    digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH);
    digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);
  }
}

void left() {
  analogWrite(ENA, 127); analogWrite(ENB, 0);
  digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
  digitalWrite(IN3, HIGH); digitalWrite(IN4, HIGH);
}

void right() {
  analogWrite(ENA, 0); analogWrite(ENB, 127);
  digitalWrite(IN1, HIGH); digitalWrite(IN2, HIGH);
  digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);
}

void stoprobot() {
  analogWrite(ENA, 0); analogWrite(ENB, 0);
  digitalWrite(IN1, LOW); digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW); digitalWrite(IN4, LOW);
}

void setLED(byte g, byte r, byte b) {
  digitalWrite(greenLED, g);
  analogWrite(redLED, r);
  digitalWrite(blueLED, b);
}

void dist() {
  digitalWrite(trigPin, LOW); delayMicroseconds(2);
  digitalWrite(trigPin, HIGH); delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration * 0.0343) / 2;  // cm 단위
  
  if (distance < 20) {  // 20cm 이내 장애물
    stoprobot();
    setLED(HIGH, 0, HIGH);  // 빨강 점등 (정지 상태)
  }
  delay(1000);
}

회로도

프로젝트 페이지의 'Schematics' 섹션에서 전체 회로도 이미지 확인 가능.

확장 아이디어

제조공정

  1. 라즈베리 파이 기반 비전 기반 장애물 회피 모바일 로봇
  2. 블루투스 제어 라즈베리 파이 로봇 만들기 - 오디오 피드백 포함
  3. 아두이노 & 라즈베리 파이로 인터넷 제어 영상 스트리밍 로봇 만들기
  4. 라즈베리 파이 기반 제스처 제어 로봇
  5. 라즈베리 파이 & 안드로이드 스마트폰으로 WiFi 제어 로봇 만들기
  6. 윈도우 10 IoT 코어 라즈베리파이 2로 음성 제어 로봇 만들기
  7. 파이썬으로 와이파이 제어 라즈베리파이 로봇 만들기 – 단계별 가이드
  8. ROObockey: 정밀 보조 원격 제어 스트리트 하키 로봇
  9. 아두이노와 초음파 센서를 이용한 AI 기반 장애물 회피 시스템
  10. 아두이노 나노로 만드는 음성 제어 로봇 - 블루투스와 안드로이드 앱 활용