Inalámbrica de Streaming de Audio y reconocimiento de voz con Arduino

en este proyecto conecto mi placa de Arduino a un módulo WiFly (https://www.sparkfun.com/products/10822) de las redes de la vagueación y stream de audio a la PC, para que BitVoicer (http://www.bitsophia.com/BitVoicer.aspx) puede realizar reconocimiento de voz. Mediante el uso de un módulo inalámbrico, me las arreglé para añadir características de reconocimiento de voz a mi microcontrolador sin necesidad de una conexión física con el PC.

Los LEDs hacen básica lo mismo que hicieron en mi última (de proyecto), pero ahora eliminado la conexión de cable de PC, así que por fin puedo tener un discurso activado Arduino en cualquier lugar llega a mi red inalámbrica.

Aquí está el video de YouTube del proyecto:

He utilizado un módulo WiFly de Roving Networks (https://www.sparkfun.com/products/10822) porque he leido por ahí que trabajaría con el XBee Shield tenía (https://www.sparkfun.com/products/9976). Por desgracia, descubrí la manera más dura que un diodo entre el TX del Arduino y la RX de WiFly estaba bloqueando la señal. Tuve que rasgar el diodo y añadir un divisor del voltaje entre los pines de TX/RX del Arduino y el módulo WiFly porque el pin RX de la WiFly es tolerante de 3.3V y el TX del Arduino trabaja a 5V. No parece ser el mejor enfoque, pero funcionó y pude enviar y recibir datos desde el módulo. Me enteré que Sparkfun lanzó una nueva versión de los XBee Shield (https://www.sparkfun.com/products/10854) y que la palanca de cambios nivel diodo fue sustituido con un desplazador de nivel MOSFET más robusto. Esto debería solucionar el problema del diodo.

Creo que podría utilizarse cualquiera de los siguientes módulos. Sólo tienes que encontrar que uno de ellos mejor adapta a sus necesidades:

- http://arduino.cc/en/Main/ArduinoWiFiShield
- http://www.rovingnetworks.com/products/RN171XV
- https://www.sparkfun.com/pages/xbee_guide (necesita un XBee Explorer Dongle para conectar el XBee a su computadora: https://www.sparkfun.com/products/9819)
-Muchos otros escudos de Arduino WiFi puede encontrarse aquí: http://postscapes.com/arduino-wifi

El proceso de configuración del módulo WiFly puede ser complicado, así que también estoy añadiendo un tutorial paso a paso sobre cómo hacerlo. En mi caso, utilizo un punto de acceso regular o router de D-Link para implementar mi red inalámbrica privada. Este tutorial debería funcionar con cualquier punto de acceso ahi.

1. Desconecte el equipo de cualquier red inalámbrica
2. Configure el GPIO9 pin del módulo WiFly a alta (3,3 v) en el poder. Esto permite modo adhoc en el módulo. He usado los 3, 3V fuente de la placa Arduino y un cable de puente normal. Después de la de encendido, retire el cable y seguir los siguientes pasos. Hoja de datos de módulo: http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Wireless/WiFi/WiFly-RN-XV-DS.pdf
3. en tu computadora, buscar redes disponibles y conectarse a la red de módulo WiFly (WiFly-GSX-XX). Puede tomar unos segundos antes de que su equipo obtiene una dirección IP del módulo.
4. descargar y ejecutar un software libre llamado TeraTerm (http://www.rovingnetworks.com/resources/download/86/Teraterm)
5. Introduzca los ajustes siguientes y haga clic en Aceptar: dirección IP: 169.254.1.1; Puerto TCP: 2000; Servicio: Telnet; Protocolo: IPv4
6. usted debe ver la palabra "* Hola *" en la pantalla.
7. tipo de $$$ para entrar en modo de comandos
8. tipo de exploración y pulse Entrar para buscar puntos de acceso disponibles
9. Si su red utiliza la autenticación de WPA, utilice el comando ajustar el frase de wlan para ajustar el frase. Para WEP, establezca la clave usando el conjunto clave de wlan comando. Mi red es WEP asegurado, por lo que tuve que usar el segundo mando. El problema es que se debe ingresar la clave ASCII/hexadecimal codificado y debe tener exactamente 26 caracteres. Encontré esta página que convierte texto a ASCII/HEX: http://www.string-functions.com/string-hex.aspx.
10. Escriba set ssid de la wlan , donde XXXX es el SSID de red (mirar los resultados del paso 8)
11. Guardar el tipo
12. tipo join (mirar los resultados del paso 8)
13. el WiFly GSX-XX desaparecerá de la lista de red de windows
14. cierre Teraterm
15. Vuelva a conectar su ordenador a su red inalámbrica local
16. Apague la placa Arduino y back ON
17. Anote el número IP asignado al módulo WiFly por su punto de acceso (por lo general, usted puede encontrar esta información en la página DHCP del punto de acceso)
18. abrir Teratem con la nueva dirección IP y las otros ajustes del paso 5
19. tipo de $$$ para entrar en modo de comandos
20. tipo set comm cerca de 0 y pulse Entrar
21. tipo set comm abrir 0 y pulse Entrar
22. tipo set comm remoto 0 y pulse Entrar
23. tipo establecer comm tamaño 1460 y pulse Entrar
24. tipo set comm tiempo 1000 y pulse Entrar
25. tipo set comm baudios 115200 y pulse Entrar (el misma velocidad utilicé en mi sketch)
26. tipo de Guardar y pulse Entrar
27. tipo de salida y pulse Entrar
28. cierre Teraterm

Ahora el módulo WiFly debe ser capaces de comunicarse con BitVoicer y tu PC. Manual del usuario de WiFly puede descargarse aquí: http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Wireless/WiFi/WiFly-RN-UM.pdf

Este es el bosquejo que utiliza para controlar los LED, capturar audio e interactuar con BitVoicer:

#include < BitVoicer11.h >

Crea una instancia de la clase BitVoicerSerial
BitVoicerSerial bvSerial = BitVoicerSerial();

True si tiendas la herramienta de calibración de Audio Streaming
se está ejecutando
sampleTest boolean = false;
Almacena el tipo de datos obtenido por getData()
tipo de datos byte = 0;
Configura los pines y variables por defecto
pinR int = 3;
int pinY = 5;
pinG de int = 6;
int lightLevel = 0;

void setup()
{
Establece la referencia analógica externa (pin AREF)
¡ ADVERTENCIA! Si nada es conectado al pin AREF,
Esta función debe ser llamada primero. De lo contrario, será
dañar la Junta.
bvSerial.setAnalogReference(BV_EXTERNAL);
Configura el microcontrolador para realizar más rápidos analógicos lecturas
en el pin especificado
bvSerial.setAudioInput(0);
Comienza comunicación serie a 115200 bps
Serial.Begin(115200);
Configura la pinModes
pinMode (pinR, salida);
pinMode (pinY, salida);
pinMode (pinG, salida);
}

void loop()
{
Captura audio y lo envía a BitVoicer si el Audio
Herramienta de calibración de streaming se está ejecutando
Si (sampleTest == true)
{
El valor pasado a la función es el tiempo
(en microsegundos) que la función tiene que esperar antes de
realizar la lectura. Se utiliza para alcanzar sobre
8000 lecturas por segundo.
bvSerial.processAudio(46);
}

Captura audio y lo envía a BitVoicer si el discurso
Reconocimiento está en marcha
Si (bvSerial.engineRunning)
{
El valor pasado a la función es el tiempo
(en microsegundos) que la función tiene que esperar antes de
realizar la lectura. Se utiliza para alcanzar sobre
8000 lecturas por segundo.
bvSerial.processAudio(46);
}
}

Esta función se ejecuta cada vez que los datos en serie están disponibles
en el buffer serial después de un bucle
void serialEvent()
{
Lee el buffer serial y almacena el tipo de datos recibidos
tipo de datos = bvSerial.getData();

Cambia el valor de sampleTest si los datos recibidos fue
el comando de muestreo de arranque/parada
Si (dataType == BV_COMMAND)
sampleTest = bvSerial.cmdData;

Señales motor de BitVoicer de reconocimiento de voz para iniciar
escuchar streams de audio después del estado de engineRunning
fue recibido
Si (dataType == BV_STATUS & & bvSerial.engineRunning == true)
bvSerial.startStopListening();

Comprueba si el tipo de datos es el mismo que el de la
Esquema de la voz
Si (dataType == BV_STR)
setLEDs();
}

Realiza los cambios de LED según el valor de
bvSerial.strData
void setLEDs()
{
Si (bvSerial.strData == "wake")
{
digitalWrite (pinR, LOW);
digitalWrite (pinY, baja);

digitalWrite (pinG, LOW);
digitalWrite (pinR, HIGH);
digitalWrite (pinY, alto);
digitalWrite (pinG, HIGH);
Delay(200);
digitalWrite (pinR, LOW);
digitalWrite (pinY, baja);
digitalWrite (pinG, LOW);
Delay(200);
digitalWrite (pinR, HIGH);
digitalWrite (pinY, alto);
digitalWrite (pinG, HIGH);
Delay(200);
digitalWrite (pinR, LOW);
digitalWrite (pinY, baja);
digitalWrite (pinG, LOW);
Delay(200);
digitalWrite (pinR, HIGH);
digitalWrite (pinY, alto);
digitalWrite (pinG, HIGH);
Delay(200);
digitalWrite (pinR, LOW);
digitalWrite (pinY, baja);
digitalWrite (pinG, LOW);
lightLevel = 0;
}
else if (bvSerial.strData == "sueño")
{
digitalWrite (pinR, LOW);
digitalWrite (pinY, baja);
digitalWrite (pinG, LOW);
digitalWrite (pinR, HIGH);
digitalWrite (pinY, alto);
digitalWrite (pinG, HIGH);
Delay(200);
digitalWrite (pinR, LOW);
digitalWrite (pinY, baja);
digitalWrite (pinG, LOW);
Delay(200);
digitalWrite (pinR, HIGH);
digitalWrite (pinY, alto);
digitalWrite (pinG, HIGH);
Delay(200);
digitalWrite (pinR, LOW);
digitalWrite (pinY, baja);
digitalWrite (pinG, LOW);
lightLevel = 0;
}
else if (bvSerial.strData == "RH")
{
digitalWrite (pinR, HIGH);
lightLevel = 255;
}
else if (bvSerial.strData == "RL")
{
digitalWrite (pinR, LOW);
lightLevel = 0;
}
else if (bvSerial.strData == "YH")
{
digitalWrite (pinY, alto);
lightLevel = 255;
}
else if (bvSerial.strData == "YL")
{
digitalWrite (pinY, baja);
lightLevel = 0;
}
else if (bvSerial.strData == "GH")
{
digitalWrite (pinG, HIGH);
lightLevel = 255;
}
else if (bvSerial.strData == "GL")
{
digitalWrite (pinG, LOW);
lightLevel = 0;
}
else if (bvSerial.strData == "ALLON")
{
digitalWrite (pinR, HIGH);
digitalWrite (pinY, alto);
digitalWrite (pinG, HIGH);
lightLevel = 255;
}
else if (bvSerial.strData == "ALLOFF")
{
digitalWrite (pinR, LOW);
digitalWrite (pinY, baja);
digitalWrite (pinG, LOW);
lightLevel = 0;
}
else if (bvSerial.strData == "más brillante")
{
Si (lightLevel < 255)
{
lightLevel += 85;
analogWrite (pinR, lightLevel);
analogWrite (pinY, lightLevel);
analogWrite (pinG, lightLevel);
}
}
else if (bvSerial.strData == "más oscuro")
{
Si (lightLevel > 0)
{
lightLevel-= 85;
analogWrite (pinR, lightLevel);
analogWrite (pinY, lightLevel);
analogWrite (pinG, lightLevel);
}
}
otra cosa
{
bvSerial.startStopListening();
bvSerial.sendToBV ("ERROR:" + bvSerial.strData);
bvSerial.startStopListening();
}
}

El esquema de la voz de BitVocier usé puede descargarse aquí: http://www.justbuss.xpg.com.br/BitVoicerTest3.zip

Si usted tiene cualquier pregunta acerca de este proyecto, por favor lo publique aquí, así que nadie puede leer la respuesta.

Artículos Relacionados

Reconocimiento de voz con Arduino

Reconocimiento de voz con Arduino

en este proyecto utilizo de BitVoicer características de reconocimiento de discurso (http://www.bitsophia.com/BitVoicer.aspx), una placa Arduino y un micrófono electret (https://www.sparkfun.com/products/9964) para controlar unos LEDs.Este proyecto e
Reconocimiento de voz con Arduino y el servidor de BitVoicer

Reconocimiento de voz con Arduino y el servidor de BitVoicer

En este Instructable voy a mostrar cómo usar una placa Arduino y el Servidor de BitVoicer para controlar unos LEDs con comandos de voz. Que usando el Arduino Micro en este Instructable, pero puede utilizar cualquier placa de Arduino que tiene a mano.
Cómo utilizar un módulo de reconocimiento de voz serie - Arduino Tutorial

Cómo utilizar un módulo de reconocimiento de voz serie - Arduino Tutorial

En este tutorial usted aprenderá cómo utilizar un módulo - serial - de reconocimiento de voz con la placa de Arduino uno. Este módulo puede almacenar hasta 15 comandos de voz. Ésos se dividen en 3 grupos, con 5 comandos en cada grupo.Primero debemos
Reconocimiento de voz de Arduino. (Básico)

Reconocimiento de voz de Arduino. (Básico)

Hola chicos, hoy tenemos un gran proyecto para usted. Reconocimiento de voz de Arduino! Utilizamos el VR fácil y un Arduino. Este proyecto le enseñará cómo usar el easyVR para reconocimiento de voz: Nota: reconocimiento de voz es diferente de reconoc
Arduino voz / reconocimiento de voz con el módulo de Geeetech [Tutorial]

Arduino voz / reconocimiento de voz con el módulo de Geeetech [Tutorial]

Cómo: Arduino voz / reconocimiento de voz con el módulo de Geeetech [Tutorial]. Este video le mostrará cómo hablar con tu Arduino con el módulo de control de voz Geeetech (barato). Entonces puede utilizar el código para controlar un motor o hacer luc
NRF2L401 inalámbrico sistema de transmisión de datos de PC con Arduino

NRF2L401 inalámbrico sistema de transmisión de datos de PC con Arduino

ICStation equipo presentarles cómo hacer este NRF2L401 Wireless PC datos de sistema de transmisión basado en el UNO ICStation y el ICStation mega2560 Compatible con Arduino.El sistema de transmisión de datos de NRF2L401 Wireless PC funciona bajo volt
Reproducción de audio desde la tarjeta SD con Arduino

Reproducción de audio desde la tarjeta SD con Arduino

Reproducción de archivos de audio desde la tarjeta SD le dirá. Sin utilizar ningún módulo jugará la archivos de audio de MP3 sólo con lector de tarjetas SD.Paso 1: materiales:Materiales:ArduinoMódulo de tarjeta SDAltavozadaptador y tarjeta sdPaso 2:
Reconocimiento de voz de Arduino Via Bluetooth HC-05

Reconocimiento de voz de Arduino Via Bluetooth HC-05

Es realmente fácil y rápido de agregar control de voz para su proyecto de arduino. Si se trata de inicio de automatización o cerradura de la puerta o robots, control de voz podría ser un ojo captura característica en un proyecto de arduino. En este t
Sin ataduras, reconocimiento de voz y síntesis de voz con Arduino

Sin ataduras, reconocimiento de voz y síntesis de voz con Arduino

MOVI 'Mi propia voz interfaz' y es un escudo de Arduino con respaldo de kickstarter que hace muy fácil construir tus propios diálogos discurso a dispositivos de control en el IDE de Arduino. Este instructable rápida le muestra cómo empezar a configur
Reconocimiento de voz con BitVoicer y Arduino

Reconocimiento de voz con BitVoicer y Arduino

el objetivo principal de este proyecto era probar el funcionamiento del reconocimiento de discurso de BitVoicer (http://www.bitsophia.com/BitVoicer.aspx). Para ello, diseñé un bosquejo simple control led que integrado con BitVoicer. Por supuesto pued
Reconocimiento de voz de Arduino con Android

Reconocimiento de voz de Arduino con Android

Hola amigos!! Desde mi primer tutorial para controlar motores con Android me preguntaba ¿y si puedo controlar un robot con mi discurso, ¿no sería interesante? Así que con la ayuda del inventor de la aplicación MIT pude controlar Arduino usando Androi
Batería herramienta inalámbrica USB cargador de

Batería herramienta inalámbrica USB cargador de

Hay un montón de cargadores de baterías de alta capacidad disponibles para comprar y sin duda son una buena idea. No desean ser capturados con un teléfono muerto durante un apagón. Sin embargo en lugar de comprar uno de estos dispositivos ¿por qué no
Energía inalámbrica alta gama

Energía inalámbrica alta gama

Construir un sistema de transmisión de energía inalámbrica que puede una bombilla de potencia o carga de un teléfono de hasta 2 pies de distancia! Este utiliza un sistema de bobina resonante enviar campos magnéticos de una bobina que transmite a una
Frambuesa Pi inalámbrico transmisor de Bluetooth Audio Radio FM

Frambuesa Pi inalámbrico transmisor de Bluetooth Audio Radio FM

Utilice su frambuesa pi para escuchar música de forma inalámbrica directamente desde tu teléfono a la radio! Fantástico para conseguir música a la radio del coche.Este instructivo se basa en información de dos otros instructables y llena los huecos p