COMO INICIAR CON LA EASY VR 2.0/3.0 .

Anuncio
COMO INICIAR
CON LA EASY VR
2.0/3.0
.
Materiales utilizados
-EasyVR 3.0 o EasyVr 2.0
-Controlador Arduino UNO, Redboard ó A star Prime
-Bocina 8ohms
EASY VR Robodacta
Iniciando
Cuando se tiene la Easy Vr tenemos que comprender las diferentes herramientas que
ponen a nuestra disposición.
Lo primero es que la Easy VR tiene la capacidad de reconocer comandos de voz (por
medio de un micrófono). Alguien dice una palabra y configurándola con los
programas adecuados podemos hacer que ejecute una orden o una acción por
medio de nuestra voz.
Lo segundo es que también podemos hacer que esta nos responda creando una
interacción entre nosotros y la tarjeta, usando una bocina de 8ohms que se conecta
en dos de sus terminales. O si lo preferimos también tiene un puerto para audífonos
3.5mm, por si en el momento no tienes la bocina o por si tu diseño así lo requiere.
Cuando se hace el reconocimiento de voz se utiliza una tarjeta compatible con
arduino para ejecutar el programa. Apoyado de otros dos software se puede crear el
programa final.
Cuando se usan sonidos de respuesta de la tarjeta (o sea que la tarjeta hable y
responda) no se usara el Arduino IDE directamente ya que usamos dos programas
llamados Easy Commander y QuickSythesis.
Básicamente esas son las funciones principales, y aunque parecen muy simples son
un arma poderosa a la imaginación de proyectos con reconocimiento de voz.
Conexiones
Se monta la Easy Vr a la Arduino, y se conecta el cable de alimentación. Esto le dará
energía a toda la tarjeta, pero para cargar y utilizar las diferentes opciones tenemos
una parte de la tarjeta donde están cuatro terminales, una de estas con un jumper
observamos también que cada una de estas tienes el nombre de UP, PC, HW Y SW.
HW
UP- lo usaremos cuando se necesite cargar tablas de sonido, se desconecta la tarjeta
de cambia el jumper a UP y cuando se encienda quedara una led rojo, esto nos
indicara que ya está conectado. Este modo solo se usa para cargar tablas de sonido.
EASY VR Robodacta
PC- lo usaremos para conectar la tarjeta al Easy Comander y al Arduino IDE, Este
modo se utiliza para poder cargar el programa a la arduino, también para establecer
los comandos de voz, sin este el programa no detecta la tarjeta.
SW y HW- se usará para dejar funcionando la tarjeta, ya se cargo el programa, ya se
cargaron tablas de sonido y ya cuando queremos ver el resultado se usara este
modo. el que usaremos será SW para todos, el HW lo dejaremos aparte.
Software
En la siguiente liga tenemos los software necesarios.
http://www.veear.eu/downloads/
Descargaremos
-Easy Comander
-Librerias Arduino (que moveremos a la carpeta del Arduino IDE que usemos)
-EasyVR_DevKit_Setup.exe
-Easy VR Access Control Demo
Cargar Tabla de sonido
Antes de cargar la tabla de sonidos debemos de tomar en cuenta que los sonidos
que puede soportar la tarjeta son de formato .wav 16 bit a 22050hz Canal: Mono (o
Monoaural)
En la página de Veear donde descargamos los software hay un demo llamado
EasyVR Access Control Demo, de ahí podemos sacar los audios que están en el
formato admisible por la Easy VR, otra de las formas que podemos crear estos
archivos, es usando Audacity que es un editor de sonido muy sencillo que te
permitirá crear sonido en el formato correcto. En este ejemplo tomaremos los del
demo de Veear.
Ya instalado QuickSynthesis, lo abrimos como administrador (muy importante para
que no de errores)
EASY VR Robodacta
-Damos clic en la hoja en blanco para abrir un proyecto nuevo
-Damos ok en RSC4
-Y le asignamos un nombre al proyecto
EASY VR Robodacta
-nos quedara una ventana parecida a esta, damos clic en la cruz verde y
seleccionamos los archivos de audio
-dejamos el valor por default, y damos clic en Ok for All
EASY VR Robodacta
-auto Label All
-
Y nos quedara de esta manera, ahora vamos al botón verde que dice built,
-damos clic en ok
EASY VR Robodacta
-damos clic en si
-esta ventana aparecerá en rojo
EASY VR Robodacta
-y cuando haya terminado quedará en verde
-clic en OK
Luego de esto, guardamos. Presionando la casilla del disquete y volvemos a hacer clic
en build para asegurarnos que todo está en orden.
Con esto último ya tenemos creado un archivo con todos los sonidos, el siguiente
paso es cargarlos a la tarjeta. Para eso abriremos Easy Commander como
administrador también. Y asegurarnos de poner la tarjeta en modo UP. Moviendo el
jumper correspondiente
-Damos clic en Update Custom Data (hoja con una bocina amarilla y una flecha hacia
abajo)
EASY VR Robodacta
-Damos Clic en Import
EASY VR Robodacta
-seleccionamos el Archivo que creamos en QuickSynthesis
-Activamos la casilla de SLOW transfer para archivos pesados y si no solo damos clic
en Download
-Saldrán unas leyendas de porciento como en la siguiente figura.
EASY VR Robodacta
Terminando esto, se desconecta la tarjeta, se cambia a modo PC y se conecta
nuevamente. Asegurándose que en la casilla de COM que aparece en la parte de
arriba este el COM correspondiente a la tarjeta
-damos clic en botón connect, e instantáneamente el icono cambiara al que tenemos
en la figura. Y dentro del apartado de Sounds aparecerán los sonidos que hemos
instalado.
EASY VR Robodacta
Configurar el reconocimiento de Voz
Para configurar los parámetros que van a activar la Easy VR debemos hacerlo
mediante el programa de Easy comander. Conectaremos la arduino y pondremos la
tarjeta en modo PC. El ejemplo siguiente es reconocimiento de voz, acceso por medio
de un password
Abrimos el Easy Commander como administrador
EASY VR Robodacta
Observaremos que en COM tenemos el COM15 correspondiente a nuestra tarjeta,
esto puede variar, asegúrate que estés en el COM correcto. Dale clic en connect. El
icono cambiará
Lo siguiente es configurar los comandos de voz, tenemos varios grupos
seleccionaremos el 1
Damos clic en el icono add command (un globo textual con un símbolo de más
verde) Ponemos el nombre que queremos usar para hacer el reconocimiento.
EASY VR Robodacta
Luego grabaremos nuestra voz, damos clic en el icono Train command (globo textual
con un engrane) y aparecerá algo como esto
Clic en phase 1
EASY VR Robodacta
Aparecerá un cuadro que dice SPEAK NOW, menciona la palabra a una distancia
cerca del micrófono de la Easy VR , luego aparecer Phase 2, da un clic ahí y habla de
nuevo ( trata de sonar lo más parecido posible) Esto es para hacer una evaluación de
ambas partes y tratar de crear un reconocimiento mas exacto.
Si todo sale bien el recuadro se quitará, si no tendrás que volver a repetir los pasos
para grabar tu voz nuevamente ya que encontró una incompatibilidad entre los dos
sonido.
Ahora iremos a password
EASY VR Robodacta
Click en Add comand , y escribiremos PWD_(el nombre que queramos). Por ejemplo
PWD_STARK.
Damos clic en Train command y grabamos nuevamente phase1 y phase2, diremos la
clave con la cual nos dejara tener acceso. Ejemplo Mark V
Ya que tenemos los comandos de voz grabados. Lo siguiente que haremos será
exportar el programa que, con un poco de edición, irá en la arduino.
Damos clic en Generate Code
EASY VR Robodacta
Nos pedirá guardarlo con un nombre, puedes poner cualquiera y damos en guardar.
Ya se tiene el archivo .pde para que lo podamos abrir en arduino. Abrimos el IDE de
Arduino y abrimos el programa que ha generado el Easy VR
Te pedirá que lo transformes a extensión .ino dale aceptar
EASY VR Robodacta
Luego de esto aparecerá el programa, lo que haremos será editarlo para controlar el
encendido de un led.
El código es el siguiente
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#include "SoftwareSerial.h"
SoftwareSerial port(12,13);
#else // Arduino 0022 - use modified NewSoftSerial
#include "WProgram.h"
#include "NewSoftSerial.h"
NewSoftSerial port(12,13);
#endif
int ena=2;
int enb=3;
#include "EasyVR.h"
#include <Servo.h>
#define SND_Access_denied
#define SND_Access_granted
#define SND_Hello
3
EASY VR Robodacta
1
2
#define SND_Please_repeat
4
#define SND_Please_say_your_password 5
#define SND_Please_talk_louder
6
Servo myservo;
EasyVR easyvr(port);
EasyVRBridge bridge;
uint32_t mask = 0;
int8_t group = 0;
uint8_t train = 0;
char name[32];
void setup()
{
pinMode(ena,OUTPUT);
pinMode(enb,OUTPUT);
// bridge mode?
if (bridge.check())
{
cli();
bridge.loop(0, 1, 12, 13);
}
Serial.begin(9600);
port.begin(9600);
myservo.attach(9);
myservo.write(90);
if (!easyvr.detect())
{
Serial.println("EasyVR not detected!");
for (;;);
}
easyvr.setPinOutput(EasyVR::IO1, LOW);
Serial.println("EasyVR detected!");
easyvr.setTimeout(5);
easyvr.setLanguage(EasyVR::ITALIAN);
EASY VR Robodacta
int16_t count = 0;
if (easyvr.getGroupMask(mask)) // get trained user names and passwords
{
uint32_t msk = mask;
for (group = 0; group <= EasyVR::PASSWORD; ++group, msk >>= 1)
{
if (!(msk & 1)) continue;
if (group == EasyVR::TRIGGER)
Serial.print("Trigger: ");
else if (group == EasyVR::PASSWORD)
Serial.print("Password: ");
else
{
Serial.print("Group ");
Serial.print(group);
Serial.print(": ");
}
count = easyvr.getCommandCount(group);
Serial.println(count);
for (int8_t idx = 0; idx < count; ++idx)
{
if (easyvr.dumpCommand(group, idx, name, train))
{
Serial.print(idx);
Serial.print(" = ");
Serial.print(name);
Serial.print(", Trained ");
Serial.print(train, DEC);
if (!easyvr.isConflict())
Serial.println(" times, OK");
else
{
int8_t confl = easyvr.getWord();
if (confl >= 0)
Serial.print(" times, Similar to Word ");
else
{
confl = easyvr.getCommand();
Serial.print(" times, Similar to Command ");
}
EASY VR Robodacta
Serial.println(confl);
} } }} }
easyvr.setLevel(EasyVR::HARDER);
easyvr.playSound(SND_Hello, EasyVR::VOL_FULL);
}
void loop()
{
int idx_cmd;
int idx_pwd;
easyvr.setPinOutput(EasyVR::IO1, HIGH); // LED on (listening)
Serial.println("Say a name in Group 1");
easyvr.recognizeCommand(1); // recognise command in group 1
while (!easyvr.hasFinished()); // wait for user name
easyvr.setPinOutput(EasyVR::IO1, LOW); // LED off
idx_cmd = easyvr.getCommand(); // get recognised user name
if (idx_cmd >= 0)
{
Serial.print("Name: ");
if (easyvr.dumpCommand(1, idx_cmd, name, train))
Serial.println(name);
else
Serial.println();
easyvr.playSound(SND_Please_say_your_password , EasyVR::VOL_FULL); // ask
for password
easyvr.setPinOutput(EasyVR::IO1, HIGH); // LED on (listening)
Serial.println("Say the password");
easyvr.recognizeCommand(EasyVR::PASSWORD); // set group 16
while (!easyvr.hasFinished()); // wait for password
easyvr.setPinOutput(EasyVR::IO1, LOW); // LED off
EASY VR Robodacta
idx_pwd = easyvr.getCommand(); // get recognised password
if (idx_pwd >= 0)
{
Serial.print("Password: ");
if (easyvr.dumpCommand(EasyVR::PASSWORD, idx_pwd, name, train))
{
Serial.print(" = ");
Serial.println(name);
}
else
Serial.println();
if ( idx_pwd == idx_cmd) // index of username and password are the same,
access granted
{
Serial.println("Access granted");
easyvr.playSound(SND_Access_granted , EasyVR::VOL_FULL);
digitalWrite(ena,HIGH);
digitalWrite(enb,LOW);
delay(5000);
digitalWrite(ena,LOW);
digitalWrite(enb,LOW);
}
else // index of username and password differ, access is denied
{
Serial.println("Access denied");
easyvr.playSound(SND_Access_denied , EasyVR::VOL_FULL);
}
}
int16_t err = easyvr.getError();
if (easyvr.isTimeout() || (err >= 0)) // password timeout, access is denied
{
EASY VR Robodacta
Serial.println("Error, try again...");
easyvr.playSound(SND_Access_denied , EasyVR::VOL_FULL);
}
}
else
{
if (easyvr.isTimeout())
Serial.println("Timed out, try again...");
int16_t err = easyvr.getError();
if (err >= 0)
{
Serial.print("Error ");
Serial.println(err, HEX);
}
}
}
Lo que esta subrayado son las partes de código que agregaremos para que funcione
el encendido del led, utilizando los puertos 2 y 3.
Hacemos clic en Compilar y Cargar no olvidando poner nuestra placa y el COM
utilizado, y que hayamos desconectado la tarjeta del Easy VR porque si no, marcará
un error al encontrar el puerto COM utilizado
EASY VR Robodacta
Si te sale un comentario en naranja como el que está en la siguiente imagen, basta
con cargar el archivo a la arduino sin la Easy VR shield puesta encima.
Listo, ya tenemos todo para probarlo, movemos el jumper a modo SW y abrimos el
monitor serial del Arduino IDE. Se activará algo como lo que tenemos en la siguiente
imagen
Cuando el led de la tarjeta este encendido nos indicará que podemos hablar.
Decimos Tony Stark, la tarjeta preguntara el password y le diremos Mark V (en
nuestro caso) y activara el LED (que ya hemos colocado en las terminales 2 y 3 con
una resistencia de 220 o 330 tomando como 2 el positivo y 3 el negativo).
Errores:
EASY VR Robodacta
-las tablas de sonido no cargan con la Arduino uno R2, se necesita Arduino Uno R3
aunque si funciona el reconocimiento, no se cargan las tablas de sonido.
-se tuvo problemas con la versión 3.3.7 y se uso mejor la 3.6.11, se cargaban las
tablas de sonido pero no aparecían en el Easy Comander.
-si no se inician como administrador puede dar problemas.
- SW debe de esta con el jumper si se usa el monitor serial del Arduino IDE si no, no
se conectará la tarjeta y no se visualizarán los datos.
Otras Fuentes de Consulta
http://4imedio.blogspot.mx/2013/03/tabla-de-sonidos-easyvr-desde-cero.html
http://laboratorioderobotica.wordpress.com/easyvr-shield/tutorial-easyvr-shieldparte-2-tablas-de-sonido/
EASY VR Robodacta
Descargar