easyVR

hola hola a todos!!!!
No soy capaz de poner en marcha este nuevo juguete que tengo entre manos. EasyVR http://www.veear.eu/Products/EasyVR.aspx
he copiado el codigo ejemplo de un videodemostracion del producto en su pag

codigo:

#include <NewSoftSerial.h>


int i;
char reader;
NewSoftSerial tx(30,14); //tx on 14
NewSoftSerial rx(12,30); //rx on 12


void setup()
{
  for(i=2; i<=7; i++){
  pinMode(i, OUTPUT);}
  // reset();
  Serial.begin(9600);
  tx.begin(9600);
  rx.begin(9600);
  delay(1000);
 tx.print("b");
 for(i=0; i<100; i++){ 
if (rx.read()=='o'){
  Serial.println("awake");
  break;
}
delay(1);
 }// for
tx.print('x');
for(i=0; i<100; i++){
  if (rx.read()=='x'){
    Serial.println("x received");
    break;
  }
  delay(1);
  } // for
tx.print(' ');
for(i=0; i<100; i ++){
  if (rx.read()=='A'){
    Serial.println("firmware good");
    break;
  }
  delay(1);
} // for
tx.print('1');
tx.print('A');
for(i=0; i<100; i++){
  if (rx.read()=='o'){
    Serial.println("lenguage set");
    break;
  }
delay(1);
} // for
tx.print('o');
tx.print('A');
for(i=0; i<100; i++){
  if(rx.read()=='o'){
    Serial.println("Infinite timeout");
    break;
  }
  delay(1);
} // for
tx.print('i');
tx.print('D');
Serial.println("wordset 3");
} // setup

void reset(){
  for(i=2; i<=7; i++){
    digitalWrite(i, LOW);
    delay(100);
    tx.print('i');
    tx.print('D');
  }
}// reset
void loop(){
  reader=rx.read();
  if(reader=='s'){
    delay(100);
    tx.print(' ');
  } // read
  if (reader=='B'){
    reset();
    digitalWrite(2, HIGH);
  }
  if (reader=='C'){
    reset();
    digitalWrite(3, HIGH);
  }
  if (reader=='D'){
    reset();
    digitalWrite(4, HIGH);
  }
  if (reader=='E'){
    reset();
    digitalWrite(5, HIGH);
  }
  if (reader=='F'){
    reset();
    digitalWrite(6, HIGH);
  }
  if (reader=='G'){
    reset();
    digitalWrite(7, HIGH);
  }
if(reader=='t'){reset;}
if(reader=='e'){reset;}
 }// loop

me he descargado la libreria necesaria NewsoftSerial
http://arduiniana.org/libraries/newsoftserial/
la coloco en la carpeta de librerias, arranco ide, cargo sketch, le doy a depurar y me marcan errores!!!!!
error: NewSoftSerial.h: no such file or directory
no reconoce la libreria...eing!!!

--- es esa la libreria con la que devo de travajar?
--- si utilizo la libreria que viene con arduino ... depura bien pero luego la ide de easyVR no reconoce. puuuufffffff, estoy frito....

Has quitado la libreria original o has dejado las dos en la carpeta de libraries?
cuando hayas copiado la libriria de easyVR, tienes que reiniciar el programa de arduino22 para que la reconozca.

si, si, esta quitada no la reconoce...
son 4 archivos dentro de la carpeta NewSoftSerial:
icrmarcos.h
keywords
SoftwareSerial.cpp
SoftwareSerial.h

ya esta

estas incluyendo la libreria
#include <NewSoftSerial.h>

fijate que empieza por NEW

y tus archivos dicen

SoftwareSerial.h

sin el new

si son esos los archivos que me he descargado que estan dentro de la carpeta NewSoftwareSerial y el error dice: error: NewSoftSerial.h: no such file or directory

no sera ese el problema?
NewSoftSerial.h no esta dentro de la carpeta NewSoftwareSerial, no se.... :fearful:

dentro de la carpeta NewSoftSerial los archivos .h y .cpp tienen que llamarse

NewSoftSerial.h
NewSoftSerial.cpp

vale... elimino, cambio y asi queda:

#include <SoftwareSerial.h>





int i;
char reader;
SoftwareSerial tx(30,14); //tx on 14
SoftwareSerial rx(12,30); //rx on 12


void setup()
{
  for(i=2; i<=7; i++){
  pinMode(i, OUTPUT);}
  // reset();
  Serial.begin(9600);
  tx.begin(9600);
  rx.begin(9600);
  delay(1000);
 tx.print("b");
 for(i=0; i<100; i++){ 
if (rx.read()=='o'){
  Serial.println("awake");
  break;
}
delay(1);
 }// for
tx.print('x');
for(i=0; i<100; i++){
  if (rx.read()=='x'){
    Serial.println("x received");
    break;
  }
  delay(1);
  } // for
tx.print(' ');
for(i=0; i<100; i ++){
  if (rx.read()=='A'){
    Serial.println("firmware good");
    break;
  }
  delay(1);
} // for
tx.print('1');
tx.print('A');
for(i=0; i<100; i++){
  if (rx.read()=='o'){
    Serial.println("lenguage set");
    break;
  }
delay(1);
} // for
tx.print('o');
tx.print('A');
for(i=0; i<100; i++){
  if(rx.read()=='o'){
    Serial.println("Infinite timeout");
    break;
  }
  delay(1);
} // for
tx.print('i');
tx.print('D');
Serial.println("wordset 3");
} // setup

void reset(){
  for(i=2; i<=7; i++){
    digitalWrite(i, LOW);
    delay(100);
    tx.print('i');
    tx.print('D');
  }
}// reset
void loop(){
  reader=rx.read();
  if(reader=='s'){
    delay(100);
    tx.print(' ');
  } // read
  if (reader=='B'){
    reset();
    digitalWrite(2, HIGH);
  }
  if (reader=='C'){
    reset();
    digitalWrite(3, HIGH);
  }
  if (reader=='D'){
    reset();
    digitalWrite(4, HIGH);
  }
  if (reader=='E'){
    reset();
    digitalWrite(5, HIGH);
  }
  if (reader=='F'){
    reset();
    digitalWrite(6, HIGH);
  }
  if (reader=='G'){
    reset();
    digitalWrite(7, HIGH);
  }
if(reader=='t'){reset;}
if(reader=='e'){reset;}
 }// loop

no me ha cambiado el color a naranja, la libreria dentro de la ide, ha depurado, y cargado sin errores solo que.....

me voy a el programa que suministra el aparatito(easyVR GUI 2.1.8) y no me reconoce el aparato... could not detect device conected to port "COM3"
comprovare los cables ha ver...

el setup() lo veo un poco raro raro.
vamos que no tiene sentido tener el serial.begin y el tx begin dentro de un loop ya que eso solo se hace una vez. a no ser que haya algo del ¿?¿ reset?¿?¿ que se me escape.

luego el softwareserial se define asi

NewSoftSerial mySerial(2, 3);

void setup()  
{
  Serial.begin(57600);
  Serial.println("Goodnight moon!");

  // set the data rate for the NewSoftSerial port
  mySerial.begin(4800);
  mySerial.println("Hello, world?");
}

vamos que el tx y el rx se definen juntos y luego se inicializansolo una vez.
no tengo la libreria softwareserial pero me extraña que este bien definido como lo hace en ese ejmplo.

bueno pues....
los cables estan bien creo:
tx al 14 (analogico 0) rx al 12 gnd y 5 voltios, microfoono conectado;

abro el serial monittor y me salen los siguientes mensajes "interesante":

--awake
--x received
--infinite timeout
--wordset

se comunica... bien!!!!

interesante digo pues no salen los otros mensajes que son:
--firmware good
--lenguage set

habra que leerse la documentacion a ver que me dice http://download.tigal.com/veear/EasyVR_User_Manual_2.3.pdf

lo que me mosquea es que esta encendido el primer led( pin 2)... pero no responde al one, two, three, four....jajajaja
Y ademas no conecta con la programa easyVr GUI para ver si puedo cambiar el lenguaje y tal...
could not detect device conected to port "COM3" ummm!!!

muchas gracias !!!! sergegsx
mañana mas.... si se os ocurre algo comentar por favor

_scaled_easyvrwir.jpg

he encontrado el mismo problema, que an tenido otros compañeros

define rx tx como dices sergegsx
mañana lo pruevo

Ya te digo, no entiendo el ejemplo que ponen.

NewSoftSerial
// Pin 2 TX
// Pin 3 RX
NewSoftSerial mySerial = NewSoftSerial(2, 3);

Este cacharro es la h..., lo unico que se sale de mi presupuesto ... por ahora, jejejjeje

funciona muy bien el programa del compañero, lo traduzco aqui lo teneis:

/*
  * NewSoftSerialInput boceto
  * Lectura de datos desde un puerto de serie del software
  * Adaptado para EasyVR
  *
  * Historial de revisiones
  * Sergei Haramundanis bog10222@bogatir.com | dom 12Jun2011 | versión inicial
  * Sergei Haramundanis bog10222@bogatir.com | jue 16Jun2011 | son constantes, el lenguaje establecido y el reconocimiento de tiempo de espera
  * traducido al español con google traductor por pacoooh jajajja
  */
#include <SoftwareSerial.h>
#include <Streaming.h>
const int rxpin = 2; // pin utilizado para recibir a partir de EasyVR 
const int txpin = 3; // pin utilizado para enviar a EasyVR
// constantes argumento
const byte MINUS_ONE = '@'; // 0x40
const byte ZERO = 'A'; // 0x41
const byte ONE = 'B'; // 0x42
const byte TWO = 'C'; // 0x43
const byte THREE = 'D'; // 0x44
const byte FOUR = 'E'; // 0x45
const byte FIVE = 'F'; // 0x46
const byte SIX = 'G'; // 0x47
const byte SEVEN = 'H'; // 0x48
// constantes de comandos
const byte CMD_BREAK = 'b'; // 0x62
const byte CMD_SLEEP = 's'; // 0x73
const byte CMD_KNOB = 'k'; // 0x6B
const byte CMD_LEVEL = 'v'; // 0x76
const byte CMD_LANGUAGE = 'l'; // 0x6C
const byte CMD_TIMEOUT = 'o'; // 0x6F
const byte CMD_RECOG_SI = 'i'; // 0x69
const byte CMD_TRAIN_SD = 't'; // 0x74
const byte CMD_GROUP_SD = 'g'; // 0x67
const byte CMD_UNGROUP_SD = 'u'; // 0x75
const byte CMD_RECOG_SD = 'd'; // 0x64
const byte CMD_ERASE_SD = 'e'; // 0x65
const byte CMD_NAME_SD = 'n'; // 0x6E
const byte CMD_COUNT_SD = 'c'; // 0x63
const byte CMD_DUMP_SD = 'p'; // 0x70
const byte CMD_MASK_SD = 'm'; // 0x6D
const byte CMD_RESETALL = 'r'; // 0x72
const byte CMD_RESETALL_CONFIRM = 'R'; // 0x52
const byte CMD_ID = 'x'; // 0x78
const byte CMD_DELAY = 'y'; // 0x79
const byte CMD_BAUDRATE = 'a'; // 0x61
const byte CMD_QUERY_IO = 'q'; // 0x71
const byte CMD_PLAY_SX = 'w'; // 0x6E
const byte CMD_DUMP_SX = 'h'; // 0x68
// constantes de la condición
const byte STS_MASK = 'k'; // 0x6B
const byte STS_COUNT = 'c'; // 0x63
const byte STS_AWAKEN = 'w'; // 0x77
const byte STS_DATA = 'd'; // 0x64
const byte STS_ERROR = 'e'; // 0x65
const byte STS_INVALID = 'v'; // 0x76
const byte STS_TIMEOUT = 't'; // 0x74
const byte STS_INTERR = 'i'; // 0x69
const byte STS_SUCCESS = 'o'; // 0x6F
const byte STS_RESULT = 'r'; // 0x72
const byte STS_SIMILAR = 's'; // 0x73
const byte STS_OUT_OF_MEM = 'm'; // 0x6D
const byte STS_ID = 'x'; // 0x78
const byte STS_PIN = 'p'; // 0x70
const byte STS_TABLE_SX = 'd'; // 0x64
// constantes de conveniencia
const byte CMD_ACK = ' '; // 0x20
const byte VRBOT = 'A'; // 0x41
const byte EASYVR = 'B'; // 0x42
// desencadenar una wordset constantes
const byte WORDSET_1_ACTION = 'A'; // 0x41
const byte WORDSET_1_MOVE = 'B'; // 0x42
const byte WORDSET_1_TURN = 'C'; // 0x43
const byte WORDSET_1_RUN = 'D'; // 0x44
const byte WORDSET_1_LOOK = 'E'; // 0x45
const byte WORDSET_1_ATTACK = 'F'; // 0x46
const byte WORDSET_1_STOP = 'G'; // 0x47
const byte WORDSET_1_HELLO = 'H'; // 0x48
//
int loop_counter = 0;
SoftwareSerial serial_vr(rxpin, txpin); // nuevo puerto de serie en los pines 2 y 3
char c;

void setup()
{
  Serial.begin(9600); // 9600 baudios para el puerto serial incorporado
  serial_vr.begin(9600); // inicializar el puerto, EasyVR en el poder sobre los usos de 9600 baudios, 8 bits, sin paridad, 1 bit de parada
  Serial << "setup() completo" << endl;
}

void loop()
{
  if (loop_counter == 0)
  {
 // serial_vr.print(0x62, BYTE); / / enviar 'b' para despertar EasyVR
    serial_vr.print(CMD_BREAK); // send 'b' to wake up EasyVR
    while (serial_vr.available() == 0) { } // Espere la respuesta
    c = serial_vr.read(); // leer la respuesta de bytes
    Serial << "respuesta despierto: " << c << " ";
    if (c == STS_SUCCESS) { Serial << "(STS_SUCCESS)"; }
    Serial << endl;
    ///
  //serial_vr.print(0x78, BYTE); / / enviar 'x' para solicitar la identificación del firmware
    serial_vr.print(CMD_ID); // send 'x' to request firmware identification
    while (serial_vr.available() == 0) { } // Espere la respuesta
    c = serial_vr.read(); // leer la respuesta de bytes
    Serial << "firmware respuesta de identificación: " << c << " ";
    if (c == STS_ID) { Serial << "(STS_ID)"; }
    Serial << endl;
    ///
 // serial_vr.print (0x20, BYTE); / / enviar "para reconocer y leer el siguiente byte de estado respuesta
    serial_vr.print(CMD_ACK); // enviar ' ' para reconocer y leer el siguiente byte de estado respuesta
    while (serial_vr.available() == 0) { } // Espere la respuesta
    c = serial_vr.read(); // leer la respuesta de bytes
    Serial << "versión identificador: " << c << " ";
    if (c == VRBOT) { Serial << "(VRBOT)"; }
    else if (c == EASYVR) { Serial << "(EASYVR)"; }
    Serial << endl;
    ///
 // serial_vr.print (0x6C, BYTE); / / enviar 'l' para configurar el idioma SI
 // serial_vr.print (0x41, BYTE); / / enviar 'A' (0) para Inglés
    serial_vr.print(CMD_LANGUAGE); // enviar 'l' para establecer el idioma SI
    serial_vr.print(FOUR); // Enviar "E" (0) para ESPAÑOL
    while (serial_vr.available() == 0) { } // Espere la respuesta
    c = serial_vr.read(); // leer la respuesta de bytes
    Serial << "seleccionar SI idioma: " << c << " ";
    if (c == STS_SUCCESS) { Serial << "(STS_SUCCESS)"; }
    Serial << endl;
    ///
 // serial_vr.print (0x6F, BYTE); / / enviar 'o' para establecer el tiempo de reconocimiento
 // serial_vr.print (0x46, BYTE); / / enviar 'F' (5) por cinco segundos
    serial_vr.print(CMD_TIMEOUT); // Enviar "o" para establecer el tiempo de reconocimiento
    serial_vr.print(FIVE); // enviar 'F' (5) por cinco segundos
    while (serial_vr.available() == 0) { } // Espere la respuesta
    c = serial_vr.read(); // leer la respuesta de bytes
    Serial << "reconocimiento de establecer el tiempo: " << c << " ";
    if (c == STS_SUCCESS) { Serial << "(STS_SUCCESS)"; }
    Serial << endl;
  }
  
  Serial << endl;
  Serial << "hablan una de las siguientes palabras al EasyVR:" << endl;
  Serial << "accion" << endl;
  Serial << "mueve" << endl;
  Serial << "gira" << endl;
  Serial << "corre" << endl;
  Serial << "mira" << endl;
  Serial << "ataca" << endl;
  Serial << "para" << endl;
  Serial << "hola" << endl;
  Serial << endl;
  Serial << "loop " << loop_counter++ << ": " << endl;
  ///
  serial_vr.print(CMD_RECOG_SI); // Enviar 'I' para iniciar el reconocimiento de un wordset
  serial_vr.print(ONE); // Enviar "B" (1) para desencadenar una wordset
  while (serial_vr.available() == 0) { } // esperar a que el tiempo de respuesta o salida de esperar si es mayor de tiempo de espera de reconocimiento
  c = serial_vr.read(); // leer la respuesta de bytes
// 'Hola' es la orden de índice de 7 en wordset desencadenar una
  if (c == STS_SIMILAR)
  {
    Serial << "reconocimiento de éxito (STS_SIMILAR)" << endl;
    serial_vr.print(CMD_ACK); // enviar ' ' para reconocer y leer el siguiente byte de estado respuesta
    while (serial_vr.available() == 0) { } // Espere la respuesta
    c = serial_vr.read(); // leer la respuesta de bytes
    if (c == STS_TIMEOUT) { Serial << "(STS_TIMEOUT)" << endl; }
    else if (c == STS_ERROR)
         {
           Serial << "(STS_ERROR) ";
           serial_vr.print(CMD_ACK); // enviar ' ' para reconocer y leer el siguiente byte de estado respuesta
           while (serial_vr.available() == 0) { } // Espere la respuesta
           c = serial_vr.read(); // read reply byte
           Serial << c;
           serial_vr.print(CMD_ACK); // enviar ' ' para reconocer y leer el siguiente byte de estado respuesta
           while (serial_vr.available() == 0) { } // Espere la respuesta
           c = serial_vr.read(); // leer la respuesta de bytes
           Serial << c << endl;
         }
    else
    {
      if (c == WORDSET_1_ACTION) { Serial << c << " (WORDSET_1_ACION)" << endl; }
      if (c == WORDSET_1_MOVE) { Serial << c << " (WORDSET_1_MUEVE)" << endl; }
      if (c == WORDSET_1_TURN) { Serial << c << " (WORDSET_1_GIRA)" << endl; }
      if (c == WORDSET_1_RUN) { Serial << c << " (WORDSET_1_CORRE)" << endl; }
      if (c == WORDSET_1_LOOK) { Serial << c << " (WORDSET_1_MIRA)" << endl; }
      if (c == WORDSET_1_ATTACK) { Serial << c << " (WORDSET_1_ATACA)" << endl; }
      if (c == WORDSET_1_STOP) { Serial << c << " (WORDSET_1_PARA)" << endl; }
      if (c == WORDSET_1_HELLO) { Serial << c << " (WORDSET_1_HOLA)" << endl; }
    }
  }
  ///
  delay(1000); // espere un segundo
  Serial << endl;
}

y el programa que viene con easyVR(http://download.tigal.com/veear/EasyVR-GUI-2.1.8-QS-5.0.3.zip) para acerlo funcionar :

utilizar arduino como puente pero con setup y loop vacios sin codigo alguno, alimentarlo y conectando tx rx y a funcionar....

gracias a todos!!!!

HOla buenas! alguien sabe como podria usar el easyvr sin el pc ni el easyvr commander? Osea introducir la voz por el micro y poderla almecenar en algun sitio y a partir de aqui hacer e reconocimiento.

Agradeceria ayuda.

Saludos

Ultima respuesta Sep 20, 2011, 01:04 am
Crea un nuevo post y busca para ello toda la información que sirva.
que es el easyvr commander, algun enlace, fotos, etc.

Lee las reglas del foro y usa tags.

tengo un problema con el easyvr shield 3, ya genere el codigo en easyvr commander pero cuando quiero cargarlo me sale un error de tipo : SERIAL_PORT_MONITOR was not declared in the scope... cual podria ser el problema

Creen un nuevo post!! Este debería estar cerrado.

Alguien sabe si funciona easyvr y arduino yun, o como madar voz por un cable ethernet.

Alguien sabe si puedo mandar datos de voz con EasyVr por ethernet??????
O como lo puedo hacer?