Documente Academic
Documente Profesional
Documente Cultură
CON LA EASY VR
2.0/3.0 .
Materiales utilizados
EASY VR Robodacta
Iniciando
Cuando se tiene la Easy Vr tenemos que comprender las diferentes herramientas que
ponen a nuestra disposición.
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.
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
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.
Software
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
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.
EASY VR Robodacta
-Damos clic en la hoja en blanco para abrir un proyecto nuevo
-Damos ok en RSC4
EASY VR Robodacta
-nos quedara una ventana parecida a esta, damos clic en la cruz verde y
seleccionamos los archivos de audio
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
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
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
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
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á
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.
EASY VR Robodacta
Click en Add comand , y escribiremos PWD_(el nombre que queramos). Por ejemplo
PWD_STARK.
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.
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
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
int ena=2;
int enb=3;
#include "EasyVR.h"
#include <Servo.h>
#define SND_Access_denied 1
#define SND_Access_granted 2
#define SND_Hello 3
EASY VR Robodacta
#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;
if (idx_cmd >= 0)
{
Serial.print("Name: ");
if (easyvr.dumpCommand(1, idx_cmd, name, train))
Serial.println(name);
else
Serial.println();
EASY VR Robodacta
idx_pwd = easyvr.getCommand(); // get recognised password
if (idx_pwd >= 0)
{
Serial.print("Password: ");
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);
}
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...");
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.
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.
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.
- 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.
http://4imedio.blogspot.mx/2013/03/tabla-de-sonidos-easyvr-desde-cero.html
http://laboratorioderobotica.wordpress.com/easyvr-shield/tutorial-easyvr-shield-
parte-2-tablas-de-sonido/
EASY VR Robodacta