음성인식 컨트롤러(rc카조종)

by 이풍길 |
2017-07-09 16:38
AI스피커 지능형 개인비서 와 같은 인공지능과 음성으로만 무언가를 조작하는 것이4차 산업의 핵심 사회로 보이고 있습니다. 그렇지만 자신의 정보가 노출되고 해킹의 문제가 있습니다. 그렇기에 독립적으로 명령이 가능한 나만의 개인 비서를 생각했습니다.(인터넷등의 연결을 필요로하지 않아 해킹의 위험이 없습니다.)
  • HC-06 모듈
    x 2개
  • LCD
    x 1개
  • 음성인식모듈(Voice Recognition Module) V3
    x 1개
  • i2c
    x 1개
  • 아두이노nano
    x 1개
  • 아두이노 rc카 패키지
    x 1개
7명이 추천합니다. 이 부품 패키지를 구매하고 싶다면 추천해주세요.

음성모듈+아두이노나노+lcd

음성인식모듈

255개의 저장 음성중 7개의 명령어만 사용이 가능한 모듈을 사용했다.(가장 저렴)

하드웨어 배선도

명령어가 제대로 인식이 되었는지 확인하기 위해서 i2c lcd를 연결합니다.


1.첨부된 라이브러리를 다운받아서 추가.

2.업로드후 시리얼 모니터 실행.

3.주석에 따라서 자신이 원하는 음성을 녹음(저장).


주의※ 아두이노를 통해서 음성인식 모듈에 저장되는 코드이다. Step 3 에서 아두이노 보드에 따로 소스를 저장합니다.


ex) 필자가 저장한 명령어 번호 음성

zero    (0) //멈춰줘

one   (1)  //전진해

two    (2) //후진해

three   (3) //좌회전

onRecord    (14)  //불켜줘

offRecord   (15)  //불꺼줘

goldRecord   (16) //우회전


VoiceRecognitionV3.zip

라이브러리에 추가하기

vr_sample_train.ino

예제에서 찾아서 실행

컨트롤부분1

컨트롤부분2

컨트롤부분(lcd)표시

 

첨부된 코드를 다시 업로드함.(음성녹음 코드는 음성인식 모듈에 저장되어 있음.)

음성녹음한 코드는 아두이노nano에 저장되어 있습니다.


필자는 명령어를 0,1,2,3,16 은 블루투스를 이용하여 rc카를 제어하기로 해보았습니다.

간단한 매뉴얼을 위하여 14,15는 제외합니다.(컨트롤러에서 릴레이 모듈을 온오프하는 것)


컨트롤러가 제대로 작동이 되는지 lcd를 통해서 확인이 가능합니다.


녹음했을때의 음성으로 명령 해야 인식을 합니다. 억양을 다르게하면 인식이 안됩니다.

녹음된 음성과 비교되어서 출력이 되는 형태이기 때문에 좋은 모듈과 많은 음성을 대조하면 해결이 가능합니다.


dahabchin.ino

컨트롤러 코드


음성컨트롤러를 블루투스를 이용하여 rc카를 조종해 보겠습니다.

아두이노를 이용하여 HC-06을 하나는 MASTER, 하나는 SLAVE로 통신을 하기 위한

기본 HC-06 세팅입니다.


HC-06세팅을 위하여 아래와 같이 브레드보드로 세팅함.


 




그리고 다음과 같이 아두이노 소스를 업로드함.


<소스 업로드>



  

1

     #include <SoftwareSerial.h>

2

      

3

     SoftwareSerial BTSerial(3, 2);

4

      

5

     void setup()

6

     {

7

       Serial.begin(9600);

8

       BTSerial.begin(9600);

9

     }

10

     void loop()

11

     {

12

       if (BTSerial.available())

13

         Serial.write(BTSerial.read());

14

       if (Serial.available())

15

         BTSerial.write(Serial.read());

16

     }

17

      


이제 부터 세팅함. 아두이노 소스를 업로드 한 상태에서 시리얼 모니터를 켠 후 아래와 같이 입력합니다.


여기서 시리얼 모니터의 맨아래에 No line ending이 선택되어 있어야합니다.


################# SLAVE 세팅법


1. 블루투스의 현재상태를 물어봄.


   -> AT (전송)


   -> OK (응답)




2. 블루투스의 이름을  'CSKIM'으로 변경.


  -> AT_NAMECSKIM (전송)


  -> OKsetname (응답)



3. 블루투스의 핀번호를 '1234'로 변경. (비밀번호)


  -> AT+PIN1234 (전송)


  -> OKsetPIN (응답)



4. 블루투스의 통신속도록 '9600BPS'로 변경. (기본값 변경 안해도됨)

   1 -> 1200   2 -> 2400    3 -> 4800    4 -> 9600    5 ->19200    6 -> 38400    7 -> 57600    8 -> 115200



  -> AT+BAUD4 (전송)

  -> OK9600 (응답)



















5. 블루투스 모듈 설정을 슬레이브 로 변경. (기본값 SLAVE 변경 안해도됨)

    M: Master     S: Slave



  -> AT+ROLE=S (전송)

  -> OK+ROLE:S (응답)




################# MASTER 세팅


 또다른 블루투스를 연결하여 4번까지 같은 문자를 전송후


AT+ROLE=M 를 전송하면 블루투스 마스터모드 완성


아두이노 전원 및 시리얼 모니터를 껏다 켠후


위에처럼 하면 HC-06 2개를 각각 MASTER과 SLAVE로 세팅된 상태이며, 블루투스 이름은 CSKIM , PIN 번호는 1234으로 세팅이 되었습니다.


이제 두개의 HC-06에 전원을 켜면 HC-06의 LED가 깜빡거리다 서로 연결이 되면 깜빡거리지 않고 계속 켜져 있는 것을 확인 하실 수 있습니다.




 MASTER모드의 블루투스를 컨트롤러에 연결.

 

Slave모드의 블루투스는 아래의 RC카에 연결.




rc카는 활용 방안으로 제시하는 예시이기 때문에 간단히 하겠습니다.

4륜 rc카와 2륜 rc카의 구조와 코드는 같습니다. (필자는 4륜으로 하였지만 2륜 rc카가 저렴하므로 2륜으로 조립)