viernes, 7 de junio de 2013

Bienvenidos

Bienvenidos a Arduino+EasyVr, en este blog te enseñaremos cómo hacer un reconocimiento de voz utilizando el ya conocido microcontrolador Arduino, en este caso la versión que utilizaremos será el Arduino Uno.
Aquí verás a manera detallada el proceso para realizar cada uno de los siguientes proyectos desde el más básico de una implementación en una casa tomando como ejemplo el de controlar el encendido y apagado de la iluminación en la habitación en un hogar.

miércoles, 5 de junio de 2013

Proyecto 2

Este proyecto consiste en el encendido del número deseado por medio de el reconocimiento de voz del EasyVr en un display de siete segmentos.

Material:

  • Arduino
  • EasyVR
  • Cable o alambre para protoboard
  • Protoboard
  • Display de siete segmentos ( Cátodo o Ánodo ).
  • Resistencia(s) de 330 ohms
  • Bocina (8 ohms)

Para este proyecto es necesaria la elaboración de cada número tomando como base la datasheet del display correspondiente, una vez declaradas las variables en el código se repite el procedimiento del Proyecto 1 y se asigna el caso de cada número a los comando de voz preestablecidos en el EasyVr.

Proyecto 1

Aquí se utilizaron leds blancos de alto brillo con una resistencia de 330 ohms, se hizo una conexión o circuito en paralelo (puedes hacer las conexiones que desees), una bocina de 8 ohms, esto es básicamente el encendido y apagado de leds mediante el reconocimiento de voz.

Materiales:

  • Arduino
  • EasyVR
  • Leds
  • Cable o alambre para protoboard
  • Protoboard
  • Bocina
  • Resistencia(s) de 330 ohms


Una vez generado los comandos de voz solo hay que generar el código, abrirlo con Arduino y en la parte de donde está la estructura switch, ahí tenemos que escribir nuestro código que queremos realizar, que en este caso será la de encendido y apagado de leds cargarlo y listo. (Hay que recordar que para que pueda cargarse nuestro código a Arduino el jumper tiene que estar en la opción de SW del Shield).

Código:

#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
#include "EasyVR.h"
EasyVR easyvr(port);
//Groups and Commands
enum Groups
{
  GROUP_1  = 1,
};
enum Group1
{
  G1_APAGAR = 0,
  G1_ENCENDER = 1,
};

EasyVRBridge bridge;
int8_t group, idx;
int led = 10;
void setup()
{
  pinMode(led,OUTPUT);
  // bridge mode?
  if (bridge.check())
  {
    cli();
    bridge.loop(0, 1, 12, 13);
  }
  // run normally
  Serial.begin(9600);
  port.begin(9600);
  if (!easyvr.detect())
  {
    Serial.println("EasyVR not detected!");
    for (;;);
  }
  easyvr.setPinOutput(EasyVR::IO1, LOW);
  Serial.println("EasyVR detected!");
  easyvr.setTimeout(5);
  easyvr.setLanguage(0);
  group = EasyVR::TRIGGER; //<-- start group (customize)
}
void action();
void loop()
{
  easyvr.setPinOutput(EasyVR::IO1, HIGH); // LED on (listening)
  Serial.print("Say a command in Group ");
  Serial.println(group);
  easyvr.recognizeCommand(group);
  do
  {
    // can do some processing while waiting for a spoken command
  }
  while (!easyvr.hasFinished());
 
  easyvr.setPinOutput(EasyVR::IO1, LOW); // LED off
  idx = easyvr.getWord();
  if (idx >= 0)
  {
    // built-in trigger (ROBOT)
    // group = GROUP_X; <-- jump to another group X
    return;
  }
  idx = easyvr.getCommand();
  if (idx >= 0)
  {
    // print debug message
    uint8_t train = 0;
    char name[32];
    Serial.print("Command: ");
    Serial.print(idx);
    if (easyvr.dumpCommand(group, idx, name, train))
    {
      Serial.print(" = ");
      Serial.println(name);
    }
    else
      Serial.println();
    easyvr.playSound(0, EasyVR::VOL_FULL);
    // perform some action
    action();
  }
  else // errors or timeout
  {
    if (easyvr.isTimeout())
      Serial.println("Timed out, try again...");
    int16_t err = easyvr.getError();
    if (err >= 0)
    {
      Serial.print("Error ");
      Serial.println(err, HEX);
    }
  group=GROUP_1;
  }
}
void action()
{
    switch (group)
    {
    case GROUP_1:
      switch (idx)
      {
      case G1_APAGAR:
      digitalWrite(led,LOW);
        // write your action code here
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      case G1_ENCENDER:
      digitalWrite(led,HIGH);
        // write your action code here
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      }
      break;
    }
}


martes, 4 de junio de 2013

Proyecto 3

Aquí se conectó el relé a 5v y a tierra(GND) esto para que se este alimentando, y a un pin donde el arduino le mandará los pulsos de los comando que realizará sea uno o cero, y así permitirá el paso de corriente para que pueda ser encendido el foco
Materiales:

  • Arduino
  • EasyVR
  • Cable
  • Clavija
  • Socket
  • Foco (bombilla)
  • Relé o Relevador

Para este proyecto se usará el MISMO CÓDIGO del Proyecto 1 ya que solamente se utiliza un puerto.

Cualquier duda, comentario, sugerencia, y/o critica.
estamos a tu disposición.

Nota: Asegúrese de tener los materiales y herramientas necesarias para llevar acabo este proyecto, esto correrá bajo su propio riesgo ya que se trabaja con corriente alterna.

sábado, 1 de junio de 2013

Relevador

Relevador de Voltaje


Un relé o relevador es:
 Un dispositivo electromecánico. Funciona como un interruptor controlado por un circuito eléctrico en el que, por medio de una bobina y un electroimán, se acciona un juego de uno o varios contactos que permiten abrir o cerrar otros circuitos eléctricos independientes.