Hacer un vehículo controlado de voz! (2 / 3 paso)

Paso 2: Agregar Control de voz

Usé una placa de reconocimiento de voz de DFRobot para esto. El SKU es DFR0177, pero sólo está disponible en China ahora mismo!

Lamentablemente al tratar de agregar la funcionalidad de control de voz, tenido problemas. Después de ponerse en contacto con uno de los ingenieros de DFRobot, me dijeron que la placa V2 Romeo fue basada en un chip ATmega32u4, que no apoyaría mi módulo de reconocimiento de voz. Esto era irritante, pero no dejo que me detenga. He intercambiado mi tabla Romeo V2 para una DFRduino UNO R3 y entonces intentó otra vez.

Aquí es un código que usé:

 #include #define SUM 2 //variable no greater than 50 uint8 nAsrStatus=0; char sRecog[SUM][80] = {"turn on lights", "turn off lights"};//variable not greater than 79, user can modify int state=7; //status indicator int led=8; //control digital port void finally (unsigned char n) { switch(n) //array corresponding keyword serial number, such as arrays recognise the first keyword is “turn on lights” and corresponding sequence number is 0; { case 0: Serial.println( "turn on lights"); Serial.println( " "); digitalWrite(led,LOW); break; case 1: Serial.println( "turn off lights"); digitalWrite(led,HIGH); break; default: Serial.println( "error"); Serial.println( " "); break; } } void ExtInt0Handler () { Voice.ProcessInt0(); //send an interrupt signal } void setup() { Serial.begin(9600); Voice.Initialise(MIC,VoiceRecognitionV1);//Initialise mode MIC or MONO,default is MIC //VoiceRecognitionV1 is VoiceRecognitionV1.0 shield //VoiceRecognitionV2 is VoiceRecognitionV2.1 module attachInterrupt(0,ExtInt0Handler,LOW); pinMode(led,OUTPUT); pinMode(state,OUTPUT); digitalWrite(state,HIGH); digitalWrite(led,HIGH); } void loop() { uint8 nAsrRes; nAsrStatus = LD_ASR_NONE; while(1) { switch(nAsrStatus) { case LD_ASR_RUNING: case LD_ASR_ERROR: break; case LD_ASR_NONE: { nAsrStatus=LD_ASR_RUNING; if (Voice.RunASR(SUM,80,sRecog)==0) //incorrect identification { nAsrStatus= LD_ASR_ERROR; Serial.println( "ASR_ERROR"); } digitalWrite(state,LOW); Serial.println( "ASR_RUNING....."); break; } case LD_ASR_FOUNDOK: { digitalWrite(state,HIGH); nAsrRes =Voice. LD_GetResult();//once asr recognition process ends, pick up asr recognition results finally(nAsrRes); nAsrStatus = LD_ASR_NONE; break; } case LD_ASR_FOUNDZERO: default: { nAsrStatus = LD_ASR_NONE; break; } }// switch delay(500); }// while } 

char sRecog [suma] [80] = {"encender luces", "apagar las luces"} puede usarse para dar el vehículo características de control de voz. Podemos cambiar esta sección para agregar las características que desee, como "seguir adelante", "volver", "gire a la izquierda", "gire a la derecha", "stop", etc.. También deberemos modificar la función "void finally()". En el caso 0, el primer comando es avance, así podemos salida "avanzar" de "Serial.println()" y llamada a la función "avance" al mismo tiempo. Cuando el módulo de reconocimiento de voz detecta la función de "avance", generará ir hacia adelante y el vehículo se moverán hacia adelante. Lo mismo se aplica para las otras direcciones.

Una de las limitaciones de este proyecto es que el módulo de reconocimiento de voz no es siempre exacto, debido a los usuarios diferentes voces, ruidos y otros factores. Esto mejorará en futuros ejemplos.

El código es el siguiente:

 #include //#include //ruan chuankou #define SUM 5 //SUM uint8 nAsrStatus=0; //SoftwareSerial mySerial(10, 11); // RX, TX char sRecog[SUM][80] = {"qian jin", "hou tui","zuo zhuan", "you zhuan","ting zhi"};// int E1 = 5; //M1 Speed Control int E2 = 6; //M2 Speed Control int M1 = 4; //M1 Direction Control int M2 = 7; //M1 Direction Control void stop(void) //Stop { digitalWrite(E1,0); digitalWrite(E2,0); } void advance(char a,char b) //Move forward { analogWrite (E1,a); //PWM Speed Control digitalWrite(M1,HIGH); analogWrite (E2,b); digitalWrite(M2,HIGH); } void back_off (char a,char b) //Move backward { analogWrite (E1,a); digitalWrite(M1,LOW); analogWrite (E2,b); digitalWrite(M2,LOW); } void turn_L (char a,char b) //Turn Left { analogWrite (E1,a); digitalWrite(M1,LOW); analogWrite (E2,b); digitalWrite(M2,HIGH); } void turn_R (char a,char b) //Turn Right { analogWrite (E1,a); digitalWrite(M1,HIGH); analogWrite (E2,b); digitalWrite(M2,LOW); } void finally (unsigned char n) { switch(n) // { case 0: Serial.println( "qian jin"); Serial.println( " "); advance (255,255); break; case 1: Serial.println( "hou tui"); back_off (255,255); break; case 2: Serial.println( "zuo zhuan"); turn_L (100,100); break; case 3: Serial.println( "you zhuan"); turn_R (100,100); break; case 4: Serial.println( "ting zhi"); stop(); break; default: Serial.println( "error"); Serial.println( " "); break; } } void ExtInt0Handler () { Voice.ProcessInt0(); // } void setup(void) { int i; for(i=4;i<=7;i++) pinMode(i, OUTPUT); Serial.begin(19200); //Set Baud Rate Voice.Initialise(MIC,VoiceRecognitionV1);//Initialise mode MIC or MONO,default is MIC //VoiceRecognitionV1 is VoiceRecognitionV1.0 shield //VoiceRecognitionV2 is VoiceRecognitionV2.1 module attachInterrupt(0,ExtInt0Handler,LOW); } void loop() { uint8 nAsrRes; nAsrStatus = LD_ASR_NONE; while(1) { switch(nAsrStatus) { case LD_ASR_RUNING: case LD_ASR_ERROR: break; case LD_ASR_NONE: { nAsrStatus=LD_ASR_RUNING; if (Voice.RunASR(SUM,80,sRecog)==0) // { nAsrStatus= LD_ASR_ERROR; Serial.println( "ASR_ERROR"); } Serial.println( "ASR_RUNING....."); break; } case LD_ASR_FOUNDOK: { nAsrRes =Voice. LD_GetResult();// finally(nAsrRes); nAsrStatus = LD_ASR_NONE; break; } case LD_ASR_FOUNDZERO: default: { nAsrStatus = LD_ASR_NONE; break; } }// switch delay(500); }// while } 

Realizar la functionDownload el programa en el tablero de tarjeta para realizar la prueba. Cuando decimos "avanzar", el vehículo llama "avance" () función, luego avanza. Es lo mismo con otros movimientos. Cuando está funcionando satisfactoriamente, podemos desconectar el cable de USB e instalar una batería de litio para que el vehículo es más móvil.

Artículos Relacionados

Cómo hacer un vehículo de tres ruedas [chasis robot]

Cómo hacer un vehículo de tres ruedas [chasis robot]

Introducción del proyecto:Estoy usando Makeblock cosas para hacer un vehículo de tres ruedas en coche. Creo que este vehículo 3WD puede ser utilizado como el chasis del robot. Es muy sencillo y usted puede fácilmente recogerlo de la insturction en mi
Cómo hacer un vehículo de la todo-dirección con ruedas de Mecanum

Cómo hacer un vehículo de la todo-dirección con ruedas de Mecanum

El vehículo de la todo-dirección está equipado con cuatro ruedas de Mecanum. La parte cool de este vehículo es la flexibilidad de moverse en cualquier dirección manteniendo a sí mismo en una dirección constante. Se logra con la estructura especial de
Primera persona WiFi conducción de Roombas y otros vehículos RC infrarrojo

Primera persona WiFi conducción de Roombas y otros vehículos RC infrarrojo

Pegarse un smartphone un vehículo de control remoto y tener flujo de cámara video sobre WiFi permite tiene un montón de diversión de conducción del vehículo con su control remoto viendo imágenes de él en otro dispositivo y usando el mando a distancia
Arduino Powered vehículo autónomo

Arduino Powered vehículo autónomo

Unos meses atrás empecé jugando con reguladores micro Arduino como un ejercicio de aprendizaje (y diversión); Este proyecto es la culminación de. El objetivo del proyecto era crear un vehículo que puede desplazarse autónomamente a través de una serie
Cuerpo 3D para los pequeños no tripulados vehículo terrestre

Cuerpo 3D para los pequeños no tripulados vehículo terrestre

Este chasis pequeño fue hecho para utilizar con la placa de nRover que he diseñado, pero es posible utilizar con Arduino Uno porque ambas tablas tienen el mismo tamaño y los orificios de fijación.La idea principal era hacer un chasis multipropósito,
Vehículo eléctrico ligero: Uno de pasajeros a 15 millas por hora, peso en vacío # 210

Vehículo eléctrico ligero: Uno de pasajeros a 15 millas por hora, peso en vacío # 210

Había diseñado y construido este divertido y exitoso vehículo eléctrico ligero hace varios años. Yo ahora estoy publicando en "Instructables" y añadir más pasos, detalles de la construcción, en las próximas semanas.Utilice el enlace a mi espacio
El vehículo de 6 ruedas salpicadura

El vehículo de 6 ruedas salpicadura

Vamos a enseñarte cómo hacer un vehículo de salpicaduras de 6 ruedas que salpica personas con tinta (no tiene que ser la gente). : DPaso 1: materiales1. 2 bloques de madera o 1 bloque de madera grande2. 2 portapilas 4 (con interruptor on-off)3. 1 por
Pintura de un vehículo Tractor de pintura

Pintura de un vehículo Tractor de pintura

para algunos chicos pueden haber visto mi tutorial anterior de cómo a spraypaint un jeep con krylon pintura y hacer un vehículo de asalto zombie, bueno estoy detrás y muy contentos de presentar a usted los individuos con un nuevo tutorial sobre cómo
Seguimiento fantasma (vehículo)

Seguimiento fantasma (vehículo)

Este instructable fue creado en cumplimiento de la exigencia de proyecto de Makecourse-arte en la Universidad de Florida del Sur (www.makecourse.com)Este proyecto se centra en la construcción de un vehículo automatizado que puede proyectar en un obje
Trampa para ratones vehículo

Trampa para ratones vehículo

este instructable es no para los débiles de corazón, poseen estómago débil, ni una fobia de calculadoras. Antes de empezar, definir qué se debe hacer un vehículo trampa. Un vehículo trampa, IMPLÍCITA, es un vehículo impulsado exclusivamente por la en
Vehículo eléctrico ligero: Uno-pasajero @ 15 millas por hora, peso en vacío # 210

Vehículo eléctrico ligero: Uno-pasajero @ 15 millas por hora, peso en vacío # 210

Había diseñado y construido este divertido y exitoso vehículo eléctrico ligero hace varios años. Yo ahora estoy publicando en "Instructables" y añadir más pasos, detalles de la construcción, en las próximas semanas.Utilice el enlace a mi espacio
DriveMyPhone - Smartphone controlado vehículo impreso 3D

DriveMyPhone - Smartphone controlado vehículo impreso 3D

DriveMyPhone es un proyecto que tengo ubicación en mi computadora en formato digital el año pasado 6. El concepto llegó cuando estaba trabajando en mis otros proyectos robóticas llamadas MobileEarthRover 1:00 MobileEarthRover dos.Por fin he tenido ti
CARduino - vehículo accionado Arduino, controlado por LabVIEW

CARduino - vehículo accionado Arduino, controlado por LabVIEW

El CARduino es un vehículo operado por control remoto que es controlado por un regulador conectado a un equipo que ejecute LabVIEW. El vehículo es accionado por el Arduino y se puede ampliar a través de la adición de sensores u otros dispositivos. Us
1Sheeld controlado por Arduino vehículo

1Sheeld controlado por Arduino vehículo

Utilizando 1Sheeld, mando un Arduino powered vehículo con el acelerómetro en tu Smartphone/Tablet.Paso 1: lo esencial Se requieren los siguientes elementos, o equivalente.1) cualquier Arduino powered plataforma del vehículo. En la foto es el Thumper