로봇과 대화하기: 간단한 음성 인식 로봇 프로젝트 > 초보자를 위한 로봇 프로젝트

본문 바로가기
사이트 내 전체검색

초보자를 위한 로봇 프로젝트

로봇과 대화하기: 간단한 음성 인식 로봇 프로젝트

페이지 정보

profile_image
작성자 관리자
댓글 0건 조회 287회 작성일 25-11-20 13:07

본문

로봇과 대화하기: 간단한 음성 인식 로봇 프로젝트

로봇과 대화하는 것은 마치 영화 속에서나 볼 법한 일처럼 느껴지지만, 사실 간단한 음성 인식 기술을 활용하면 우리만의 로봇도 명령에 반응하여 움직이게 할 수 있습니다. 이 프로젝트는 블루투스 모듈과 스마트폰 앱을 이용하여 로봇에게 음성으로 명령을 내리고 로봇이 움직이도록 하는 방법을 설명해 드립니다.


1단계: 음성 인식 로봇의 '원리' 이해하기

이 프로젝트의 음성 인식 로봇은 다음과 같은 원리로 작동합니다.


명령 (음성): 사용자가 스마트폰 마이크에 로봇에게 명령할 단어(예: "전진", "왼쪽")를 말합니다.

음성 인식 (스마트폰 앱): 스마트폰 앱이 사용자의 음성을 텍스트로 변환합니다.

데이터 변환 (스마트폰 앱): 앱은 인식된 텍스트에 해당하는 미리 정해진 문자(예: "전진" → 'F', "왼쪽" → 'L')를 만듭니다.

무선 전송 (블루투스): 스마트폰 앱이 이 명령 문자를 블루투스 통신을 통해 무선 신호로 변환하여 로봇에게 전송합니다.

명령 수신 (블루투스 모듈): 로봇에 연결된 HC-05 또는 HC-06 블루투스 모듈이 무선 신호를 받아 아두이노가 이해할 수 있는 디지털 신호(문자)로 바꿉니다.

판단 (아두이노): 아두이노가 블루투스 모듈로부터 받은 명령 문자(예: 'F')를 읽고, 그에 따라 어떤 움직임을 해야 할지 코드를 통해 판단합니다.

행동 (모터): 아두이노의 판단에 따라 모터 드라이버를 통해 로봇 바퀴의 모터를 제어하여 로봇을 움직입니다.

2단계: 필수 준비물 확인 및 구매

원격 제어 RC카 프로젝트와 대부분 동일하며, 여기에 스마트폰 음성 인식 앱이 추가됩니다.


컨트롤러:

아두이노 우노 R3 (Arduino Uno R3) 호환 보드: 1개

USB 케이블: 아두이노와 컴퓨터 연결용.

로봇 섀시:

2WD 로봇 자동차 섀시 키트: 1개 (모터 2개, 바퀴 2개, 프레임, 캐스터 포함)

액추에이터:

모터 드라이버 (L298N): 1개 (DC 모터 2개 제어용)

통신 모듈:

HC-05 또는 HC-06 블루투스 모듈: 1개

전원:

AA 배터리 홀더 (4개용): 1개 (모터 전원용)

AA 배터리: 4개

(선택 사항) 9V 배터리 & 스냅 커넥터: 아두이노 별도 전원용.

연결 재료:

브레드보드: 1개 (선택 사항)

점퍼 케이블 (수-수, 수-암): 넉넉하게

공구:

드라이버 세트, 니퍼, 양면테이프 또는 글루건.

스마트폰: 음성 인식 앱 설치용.

3단계: 로봇의 '몸' 조립하기 (기계적 조립)

RC카 프로젝트와 동일합니다.


로봇 섀시 조립: 프레임, 모터, 바퀴, 캐스터 등을 조립합니다.

아두이노/모터 드라이버 고정: 아두이노 보드와 L298N 모터 드라이버를 로봇 프레임에 단단히 고정합니다.

블루투스 모듈 고정: HC-06/HC-05 모듈을 로봇 프레임의 적절한 위치에 고정합니다 (양면테이프 이용).

4단계: 로봇의 '신경망' 연결하기 (전기 배선)

원격 제어 RC카 프로젝트와 동일하게 배선합니다. HC-06 RXD 핀의 전압 분배 회로에 주의하세요.


바퀴 모터와 L298N 모터 드라이버 연결

전원부 연결

L298N 드라이버와 아두이노 연결

HC-05/HC-06 블루투스 모듈과 아두이노 연결:

HC-06 VCC → 아두이노 5V

HC-06 GND → 아두이노 GND

HC-06 TXD → 아두이노 핀 2 (SoftwareSerial의 RX 핀으로 사용)

HC-06 RXD → 아두이노 핀 3 (SoftwareSerial의 TX 핀으로 사용)

(HC-06 RXD와 아두이노 핀 3 사이에 전압 분배 저항 회로 권장 - 1kΩ, 2kΩ)

배선 시 주의사항: 모든 배선은 전원이 없는 상태에서 하고, 정확한 연결을 거듭 확인해야 합니다.


5단계: 로봇의 '명령' 프로그래밍하기 (아두이노 코딩)

원격 제어 RC카 프로젝트의 코드와 거의 동일합니다.


5.1. 아두이노 IDE 설정 (이전 프로젝트와 동일)

5.2. 음성 인식 로봇 기본 코드 예시

cpp



#include <SoftwareSerial.h> // SoftwareSerial 라이브러리 포함


// 모터 제어 핀 정의 (L298N 기준)

const int motor1_in1 = 8;

const int motor1_in2 = 9;

const int motor2_in1 = 10;

const int motor2_in2 = 11;

const int motor1_ena = 5; // 왼쪽 모터 속도 (PWM 핀)

const int motor2_enb = 6; // 오른쪽 모터 속도 (PWM 핀)


// 블루투스 모듈 연결 핀 정의 (SoftwareSerial)

// HC-06 TXD -> Arduino Pin 2 (SoftwareSerial RX)

// HC-06 RXD -> Arduino Pin 3 (SoftwareSerial TX, 저항 분배 회로 권장)

SoftwareSerial btSerial(2, 3); 


// 모터 속도 (0-255)

const int drive_speed = 180; // 주행 속도

const int turn_speed = 150;  // 회전 속도


void setup() {

  // 모터 제어 핀들을 출력으로 설정

  pinMode(motor1_in1, OUTPUT);

  pinMode(motor1_in2, OUTPUT);

  pinMode(motor2_in1, OUTPUT);

  pinMode(motor2_in2, OUTPUT);

  pinMode(motor1_ena, OUTPUT);

  pinMode(motor2_enb, OUTPUT);


  Serial.begin(9600);   // 컴퓨터 시리얼 모니터 시작 (디버깅용)

  btSerial.begin(9600); // 블루투스 시리얼 통신 시작 (HC-06/05의 기본 통신 속도)

  Serial.println("Voice Controlled Robot Ready!");

}


void loop() {

  char command; // 스마트폰에서 수신할 명령어 저장 변수


  // 블루투스 모듈로부터 데이터가 들어오면

  if (btSerial.available()) {

    command = btSerial.read(); // 한 글자(바이트) 읽어오기

    Serial.print("Received command: ");

    Serial.println(command);


    // 수신된 명령어에 따라 로봇 제어

    switch (command) {

      case 'F': // Forward (전진)

        moveForward();

        break;

      case 'B': // Backward (후진)

        moveBackward();

        break;

      case 'L': // Turn Left (좌회전)

        turnLeft();

        break;

      case 'R': // Turn Right (우회전)

        turnRight();

        break;

      case 'S': // Stop (정지)

        stopRobot();

        break;

      default: // 알 수 없는 명령은 무시하거나 정지

        stopRobot();

        break;

    }

  }

}


// 로봇 제어 함수들 (RC카 프로젝트와 동일)


void moveForward() {

  digitalWrite(motor1_in1, HIGH); digitalWrite(motor1_in2, LOW);

  analogWrite(motor1_ena, drive_speed);


  digitalWrite(motor2_in1, HIGH); digitalWrite(motor2_in2, LOW);

  analogWrite(motor2_enb, drive_speed);

}


void moveBackward() {

  digitalWrite(motor1_in1, LOW); digitalWrite(motor1_in2, HIGH);

  analogWrite(motor1_ena, drive_speed);


  digitalWrite(motor2_in1, LOW); digitalWrite(motor2_in2, HIGH);

  analogWrite(motor2_enb, drive_speed);

}


void turnLeft() { // 제자리 좌회전 (왼쪽 바퀴 후진, 오른쪽 바퀴 전진)

  digitalWrite(motor1_in1, LOW); digitalWrite(motor1_in2, HIGH);

  analogWrite(motor1_ena, turn_speed);


  digitalWrite(motor2_in1, HIGH); digitalWrite(motor2_in2, LOW);

  analogWrite(motor2_enb, turn_speed);

}


void turnRight() { // 제자리 우회전 (왼쪽 바퀴 전진, 오른쪽 바퀴 후진)

  digitalWrite(motor1_in1, HIGH); digitalWrite(motor1_in2, LOW);

  analogWrite(motor1_ena, turn_speed);


  digitalWrite(motor2_in1, LOW); digitalWrite(motor2_in2, HIGH);

  analogWrite(motor2_enb, turn_speed);

}


void stopRobot() {

  digitalWrite(motor1_in1, LOW); digitalWrite(motor1_in2, LOW);

  analogWrite(motor1_ena, 0);


  digitalWrite(motor2_in1, LOW); digitalWrite(motor2_in2, LOW);

  analogWrite(motor2_enb, 0);

}

5.3. 코드 업로드 및 스마트폰 음성 인식 앱 준비

코드 업로드: 위 코드를 아두이노 IDE에 복사하여 붙여넣기 합니다. 스케치(Sketch) → 컴파일/업로드(Upload)를 클릭하여 코드를 아두이노 보드에 업로드합니다.

스마트폰 음성 인식 앱 준비:

구글 플레이 스토어(안드로이드)에서 'Arduino Voice Control', 'Voice Control for Arduino Bluetooth' 또는 Voice Bluetooth for Arduino 등과 같은 앱을 검색하여 설치합니다.  

앱을 실행한 후 스마트폰의 블루투스를 켜고 HC-06/HC-05 모듈을 찾아 연결합니다. (모듈 초기 페어링 비밀번호는 보통 1234 또는 0000)

대부분의 음성 인식 앱은 사용자가 말하는 음성 명령(예: "Go Forward", "Turn Left", "Stop")을 미리 지정된 문자(예: 'F', 'L', 'S')로 매핑할 수 있는 기능을 제공합니다. 앱 설정에서 이를 구성합니다.

음성 명령을 말하여 로봇이 움직이는지 테스트합니다.

6단계: 로봇 테스트 및 최적화

초기 테스트: 로봇에 전원을 켜고 스마트폰 앱에 음성 명령을 내려 로봇이 예상대로 움직이는지 확인합니다.

명령어 정확도: 음성 인식 앱에서 명령어를 명확하게 인식하는지, 텍스트 변환이 정확한지 확인합니다. 잘 인식되지 않는다면 앱 설정에서 음성 명령 단어를 재조정하거나, 더 쉬운 단어로 바꿔봅니다.

모터 방향/속도 조절: RC카 프로젝트와 동일하게 drive_speed, turn_speed 값을 조정하거나 모터 제어 로직을 수정합니다.

블루투스 연결 안정성: 연결이 불안정하다면, 스마트폰과 로봇 간의 거리를 확인하고 주변의 다른 무선 장치 간섭 여부를 확인합니다.

커스텀 음성 명령: 다양한 음성 명령을 추가하여 로봇에게 춤을 추게 하거나, 불빛을 켜고 끄는 등 새로운 행동을 시켜볼 수 있습니다.

축하합니다! 이제 당신만의 음성 인식 로봇이 완성되었습니다!


블루투스 모듈과 스마트폰 앱을 활용하여 로봇과 직접 대화하고 명령을 내리는 경험은 로봇 공학의 가장 매력적인 부분 중 하나입니다. 이 프로젝트를 통해 '말하는 대로 움직이는' 로봇을 만들며 미래 기술을 직접 체험해 보세요. 이제 로봇과 함께 즐거운 대화를 나누시길 바랍니다!

[이 게시물은 관리자님에 의해 2025-11-22 10:15:07 초보자를 위한 로봇 프로젝트에서 이동 됨]
[이 게시물은 관리자님에 의해 2025-11-29 13:01:12 18에서 이동 됨]

댓글목록

등록된 댓글이 없습니다.


회사소개 개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

작크와콩나무
대표:이강복 등록번호:129-30-34337 개인정보관리책임자:이경영

Copyright © https://roboman.co.kr/ All rights reserved.