Draadloos Audio Streaming en spraakherkenning met Arduino


In dit project ik verbinden met mijn Arduino Board een WiFly module (https://www.sparkfun.com/products/10822) van Roving meetnetten en streamen van audio naar de PC, zodat BitVoicer (http://www.bitsophia.com/BitVoicer.aspx) van spraakherkenning uitvoeren kan. Met behulp van een draadloze module, ik geslaagd om spraakherkenningsfuncties toevoegen aan mijn microcontroller zonder naar de nood van een fysieke verbinding met de PC.

De LED's doen de dezelfde fundamentele dingen die zij deden in mijn laatste project (), maar nu ik de PC draadaansluiting geëlimineerd, zodat ik eindelijk een toespraak geactiveerd Arduino overal mijn draadloze netwerk bereikt.

Hier is de YouTube-video van het project:

Ik gebruikte een WiFly module van Roving netwerken (https://www.sparkfun.com/products/10822), want ik heb ergens gelezen dat het met de XBee schild werken zou had ik (https://www.sparkfun.com/products/9976). Helaas vond ik de harde manier dat een diode tussen de Arduino TX en RX van de WiFly was het blokkeren van het signaal. Ik had een scheidingslijn van de spanning tussen de TX/RX pinnen van de Arduino en de WiFly module toevoegen omdat de RX-pin van de WiFly 3,3 v tolerant is en de Arduino TX op 5V werkt te rippen van de diode. Het lijkt niet de beste aanpak, maar het werkte en ik was in staat om te verzenden en ontvangen van gegevens van de module. Ik heb ontdekt dat Sparkfun een nieuwe versie van de XBee Shield (https://www.sparkfun.com/products/10854 vrijgegeven) en dat de diode level shifter werd vervangen door een meer robuuste MOSFET level shifter. Dit moet het oplossen van het probleem van de diode.

Ik geloof dat elk van de volgende draadloze modules kunnen worden gebruikt. Je hoeft alleen te vinden welke een van hen best past bij uw behoeften:

- http://arduino.cc/en/Main/ArduinoWiFiShield
- http://www.rovingnetworks.com/products/RN171XV
- https://www.sparkfun.com/pages/xbee_guide (je moet een XBee Explorer Dongle aan de XBee verbinden met uw computer: https://www.sparkfun.com/products/9819)
-Vele andere Arduino WiFi Shields kan hier worden gevonden: http://postscapes.com/arduino-wifi

Het setup-proces van de WiFly-module kan worden lastig, dus ik ben ook het toevoegen van een stapsgewijze tutorial over hoe om het te doen. In mijn geval gebruik ik een regelmatige toegang toegangspunt of de router van D-Link om mijn draadloos particulier netwerk worden geïmplementeerd. Dit leerprogramma zou moeten werken met een toegangspunt daar.

1. uw computer verbreken door elk draadloos netwerk
2. Zet de GPIO9 pin van de WiFly module op hoog (3,3 v) op kracht omhoog. Hierdoor adhoc-modus op de module. Ik gebruikte de 3,3 v bron van de Arduino board en de draad van een gewone trui. Direct na de macht omhoog, verwijder de draad en volg de volgende stappen. Module gegevensblad: http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Wireless/WiFi/WiFly-RN-XV-DS.pdf
3. op uw computer zoeken naar beschikbare netwerken en verbinding maakt met de netwerk module WiFly (WiFly-GSX-XX). Het duurt enkele seconden voordat uw computer een IP-adres van de module krijgt.
4. downloaden en uitvoeren van een gratis software genaamd TeraTerm (http://www.rovingnetworks.com/resources/download/86/Teraterm)
5. Voer de volgende instellingen en klik op OK: IP-adres: 169.254.1.1; TCP-poort: 2000; Service: Telnet; Protocol: IPv4
6. u moeten zien het woord "* HELLO *" op het scherm.
7. type $$$ Voer opdrachtmodus
8. type scan en treffer steken om te zoeken naar beschikbare toegangspunten
9. als uw netwerk gebruikmaakt van WPA-verificatie, gebruikt u de opdracht instellen van wlan zin om in te stellen van de passphrase. Voor WEP, stel de sleutel met behulp van de wlan-sleutel instellen opdracht. Mijn netwerk is WEP beveiligd, dus ik moest de tweede opdracht. Het probleem is dat de sleutel moet worden ingevoerd ASCII/HEX gecodeerd en moet precies 26 karakters. Ik vond deze pagina die tekst wordt geconverteerd naar ASCII/HEX: http://www.string-functions.com/string-hex.aspx.
10. Typ wlan ssid instellen , waarbij XXXX het SSID van je netwerk (Zie de resultaten van stap 8)
11. type Opslaan
12. type join (kijk naar de resultaten van stap 8)
13. de WiFly-GSX-XX zal verdwijnen uit de lijst met windows-netwerk
14. Sluit Teraterm
15. Sluit uw computer aan uw lokale draadloze netwerk
16. zet je Arduino board en terug ON
17. Noteer het IP-nummer toegewezen aan de WiFly module door uw toegangspunt (meestal vindt u deze info op de pagina toegang punt DHCP)
18. open Teratem met behulp van het nieuwe IP-adres en de andere instellingen vanaf stap 5
19. Typ $$$ Voer opdrachtmodus
20. type set comm sluiten 0 en treffer steken
21. type set comm open 0 en treffer steken
22. type comm externe 0 ingesteld en treffer steken
23. type comm grootte 1460 instellen en treffer steken
24. type comm tijd 1000 instellen en treffer steken
25. type comm baud 115200 instellen en treffer steken (de dezelfde baud-rate heb ik in mijn schets gebruikt)
26. type Opslaan en treffer steken
27. type sluit en treffer steken
28. het sluiten van Teraterm

Nu moet uw WiFly module kunnen communiceren met BitVoicer en uw PC. De gebruikershandleiding van de WiFly kan hier gedownload worden: http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Wireless/WiFi/WiFly-RN-UM.pdf

Dit is de schets die ik gebruikt om te bepalen van de LED's, audio vastleggen en interactie met BitVoicer:

#include < BitVoicer11.h >

De klasse BitVoicerSerial instantieert
BitVoicerSerial bvSerial = BitVoicerSerial();

Winkels true als de Audio Streaming kalibratie tool
wordt uitgevoerd
Boole sampleTest = false;
Het gegevenstype opgehaald door getData() wordt opgeslagen
dataType byte = 0;
Stelt de pinnen en de standaard variabelen
int pinR = 3;
int pinY = 5;
int pinG = 6;
int lightLevel = 0;

VOID Setup
{
Hiermee stelt u de analoge verwijzing naar externe (AREF pin)
WAARSCHUWING! Als er iets is verbonden met de AREF pin,
deze functie moet eerst worden aangeroepen. Anders, zal het
schade aan de Raad van bestuur.
bvSerial.setAnalogReference(BV_EXTERNAL);
De microcontroller ingesteld om uit te voeren sneller analoge leest
op de opgegeven pin
bvSerial.setAudioInput(0);
De seriële communicatie begint 115200 bps
Serial.begin(115200);
Stelt de pinModes
pinMode (pinR, OUTPUT);
pinMode (pinY, OUTPUT);
pinMode (pinG, uitvoer);
}

void loop
{
Vangt audio en stuurt dit naar de BitVoicer als de Audio
Streaming Kalibratie Tool wordt uitgevoerd
Als (sampleTest == true)
{
De waarde die is doorgegeven aan de functie is de tijd
(in microseconden) die de functie heeft moet worden gewacht voordat
het uitvoeren van de lezing. Het wordt gebruikt om te bereiken over
8000 lezingen per seconde.
bvSerial.processAudio(46);
}

Vangt audio en stuurt dit naar de BitVoicer als de toespraak
Erkenning motor loopt
Als (bvSerial.engineRunning)
{
De waarde die is doorgegeven aan de functie is de tijd
(in microseconden) die de functie heeft moet worden gewacht voordat
het uitvoeren van de lezing. Het wordt gebruikt om te bereiken over
8000 lezingen per seconde.
bvSerial.processAudio(46);
}
}

Deze functie loopt elke keer seriële data beschikbaar is
in de seriële buffer na een lus
VOID serialEvent()
{
De seriële buffer leest en slaat het ontvangen gegevenstype
dataType = bvSerial.getData();

Hiermee wijzigt u de waarde van sampleTest als de ontvangen gegevens waren
de opdracht van de bemonstering start/stop
Als (dataType == BV_COMMAND)
sampleTest = bvSerial.cmdData;

Signalen van BitVoicer de Engine voor spraakherkenning te starten
luisteren naar audio streams na de status engineRunning
werd ontvangen
Als (dataType == BV_STATUS & & bvSerial.engineRunning == true)
bvSerial.startStopListening();

Controleert als het gegevenstype is hetzelfde als degene in de
Schema van de stem
Als (dataType == BV_STR)
setLEDs();
}

Voert de LED wijzigingen volgens de waarde in
bvSerial.strData
VOID setLEDs()
{
Als (bvSerial.strData == "wake")
{
digitalWrite (pinR, laag);
digitalWrite (pinY, laag);

digitalWrite (pinG, laag);
digitalWrite (pinR, hoge);
digitalWrite (pinY, hoge);
digitalWrite (pinG, hoge);
delay(200);
digitalWrite (pinR, laag);
digitalWrite (pinY, laag);
digitalWrite (pinG, laag);
delay(200);
digitalWrite (pinR, hoge);
digitalWrite (pinY, hoge);
digitalWrite (pinG, hoge);
delay(200);
digitalWrite (pinR, laag);
digitalWrite (pinY, laag);
digitalWrite (pinG, laag);
delay(200);
digitalWrite (pinR, hoge);
digitalWrite (pinY, hoge);
digitalWrite (pinG, hoge);
delay(200);
digitalWrite (pinR, laag);
digitalWrite (pinY, laag);
digitalWrite (pinG, laag);
lightLevel = 0;
}
else if (bvSerial.strData == "slaap")
{
digitalWrite (pinR, laag);
digitalWrite (pinY, laag);
digitalWrite (pinG, laag);
digitalWrite (pinR, hoge);
digitalWrite (pinY, hoge);
digitalWrite (pinG, hoge);
delay(200);
digitalWrite (pinR, laag);
digitalWrite (pinY, laag);
digitalWrite (pinG, laag);
delay(200);
digitalWrite (pinR, hoge);
digitalWrite (pinY, hoge);
digitalWrite (pinG, hoge);
delay(200);
digitalWrite (pinR, laag);
digitalWrite (pinY, laag);
digitalWrite (pinG, laag);
lightLevel = 0;
}
else if (bvSerial.strData == "RH")
{
digitalWrite (pinR, hoge);
lightLevel = 255;
}
else if (bvSerial.strData == "RL")
{
digitalWrite (pinR, laag);
lightLevel = 0;
}
else if (bvSerial.strData == "YH")
{
digitalWrite (pinY, hoge);
lightLevel = 255;
}
else if (bvSerial.strData == "YL")
{
digitalWrite (pinY, laag);
lightLevel = 0;
}
else if (bvSerial.strData == "GH")
{
digitalWrite (pinG, hoge);
lightLevel = 255;
}
else if (bvSerial.strData == "GL")
{
digitalWrite (pinG, laag);
lightLevel = 0;
}
else if (bvSerial.strData == "ALLON")
{
digitalWrite (pinR, hoge);
digitalWrite (pinY, hoge);
digitalWrite (pinG, hoge);
lightLevel = 255;
}
else if (bvSerial.strData == "ALLOFF")
{
digitalWrite (pinR, laag);
digitalWrite (pinY, laag);
digitalWrite (pinG, laag);
lightLevel = 0;
}
else if (bvSerial.strData == "helderder")
{
Als (lightLevel < 255)
{
lightLevel += 85;
analogWrite (pinR, lightLevel);
analogWrite (pinY, lightLevel);
analogWrite (pinG, lightLevel);
}
}
else if (bvSerial.strData == "donkerder")
{
Als (lightLevel > 0)
{
lightLevel-= 85;
analogWrite (pinR, lightLevel);
analogWrite (pinY, lightLevel);
analogWrite (pinG, lightLevel);
}
}
anders
{
bvSerial.startStopListening();
bvSerial.sendToBV ("fout:" + bvSerial.strData);
bvSerial.startStopListening();
}
}

Het Schema dat ik wordt gebruikt in de stem van de BitVocier kan hier gedownload worden: http://www.justbuss.xpg.com.br/BitVoicerTest3.zip

Hebt u vragen over dit project, post het hier, zodat iemand anders het antwoord kan lezen.

Gerelateerde Artikelen

Spraakherkenning met Arduino

Spraakherkenning met Arduino

In dit project ik gebruik BitVoicer van functies voor spraakherkenning (http://www.bitsophia.com/BitVoicer.aspx), een Arduino board en één electret microfoon (https://www.sparkfun.com/products/9964) om een paar LEDs.Dit project is vergelijkbaar met h
Spraakherkenning met Arduino en BitVoicer Server

Spraakherkenning met Arduino en BitVoicer Server

In dit Instructable ga ik laten zien hoe een Arduino board en BitVoicer Server gebruiken om te controleren enkele LED's met spraakopdrachten. Ik zal met behulp van de Arduino Micro in dit Instructable, maar u kunt elke Arduino board bij de hand hebt.
Afspelen van de audio van SD-kaart met Arduino

Afspelen van de audio van SD-kaart met Arduino

Afspelen van audio bestanden van SD-kaart zal vertellen. Zonder gebruik te maken van een willekeurige module speelt MP3-audiobestanden alleen met SD-kaartlezer.Stap 1: materialen:Materialen:ArduinoSD kaart moduleLuidsprekerSD-kaart en de adapterStap
Voice Activated LED-verlichting met Arduino

Voice Activated LED-verlichting met Arduino

Dit project is een uitbreiding van de mogelijkheden van spraakherkenning met Arduino met leandro4b (). Echter, in plaats van met 3 afzonderlijke gekleurde LED's, gebruikte ik een multicolor 4-kanaals RGBW LED Emitter. Ik had de kans van het werken bi
Spraakherkenning en -synthese met Arduino

Spraakherkenning en -synthese met Arduino

In mijn vorige Instructable toonde ik hoe om te controleren enkele LED's met behulp van een Arduino board en de BitVoicer Server. In dit Instructable ga ik om dingen een beetje ingewikkelder te maken. Ik ben ook gaan te synthetiseren toespraak met be
Streaming video van SD-kaart naar Nokia LCD met Arduino

Streaming video van SD-kaart naar Nokia LCD met Arduino

Voor een lange tijd, ik dacht dat het afspelen van video met kon audio niet op de Arduino. Toen op een dag besloot ik te geven het een schot en het bleek eenvoudiger dan ik dacht.Ik besloot te schrijven van de stappen in een instructable ten behoeve
OSD-Audio ATM-7 Smartphone Speaker controle met Arduino en Blynk

OSD-Audio ATM-7 Smartphone Speaker controle met Arduino en Blynk

Deze dagen zijn er verschillende manieren om te implementeren multi-zone geluid met behulp van smartphone gebaseerd controle, maar de meeste zijn beperkt tot een aantal zones of vereisen duur merkgebonden vakken op elke locatie (Hello! Sonos). Een sp
Ongebonden van spraakherkenning en spraaksynthese met Arduino

Ongebonden van spraakherkenning en spraaksynthese met Arduino

MOVI staat voor 'Mijn eigen Interface van de stem' en is een kickstarter-backed Arduino schild dat maakt het zeer eenvoudig om te bouwen van uw eigen toespraak dialogen aan controle-apparaten binnen de Arduino IDE. Dit instructable snel ziet u hoe aa
Bouw je Robot Internet gecontroleerde Video-Streaming met Arduino en Raspberry Pi

Bouw je Robot Internet gecontroleerde Video-Streaming met Arduino en Raspberry Pi

< the Instructable en de code zijn klaar. Geniet van! Laat een reactie met je feedback! >Ik ben (aka LiquidCrystalDisplay / Itay), een 14 jaar oude student van Israël leren in de Max Shein Junior High School voor geavanceerde wetenschap en wiskunde.
Vertegenwoordigen van audio via trillingen met Arduino

Vertegenwoordigen van audio via trillingen met Arduino

Dit project werkt om weer te geven geluid met behulp van de trillingen.  U sluit uw iPod, computer of TV erin en tactiele feedback vertegenwoordigt van het volume van de audio te krijgen.  Het kan helpen dove mensen ervaren van geluid.Tools:Draad str
Bedien uw Tv, Dvd en Audio systeem met Arduino en Android

Bedien uw Tv, Dvd en Audio systeem met Arduino en Android

Hallo iedereen, dit is mijn tweede instructable en mijn eerste in het Engels, dus, sorry voor de fouten.Ik wil delen dit project die het gaat over hoe u kunt uw Tv, DVD en uw audiosysteem met Arduino en een app voor Android gemaakt met app uitvinder.
Stereo Audio met Arduino

Stereo Audio met Arduino

Onlangs heb ik zijn detachering een heleboel projecten die een 8 bit weerstand ladderdigitaal naar analoog converter (DAC) en een Arduino gebruiken om geluid te maken. (Zie het vocale effecten Arduino, de Arduino drum sampler en mijn audio-uitgang-tu
Arduino stem / spraakherkenning met Geeetech Module [Tutorial]

Arduino stem / spraakherkenning met Geeetech Module [Tutorial]

How to: Arduino stem / spraakherkenning met Geeetech Module [Tutorial]. Deze video zal u tonen hoe om te praten met je Arduino met het (goedkope) Besturingsmodule voor Geeetech stem. Vervolgens kunt u de code te controleren van een motor of stem geco
Draadloos toetsenbord met Arduino

Draadloos toetsenbord met Arduino

Hallo iedereen, in deze tutorial ga ik laten zien hoe het bouwen van een draadloos toetsenbord met arduino en bluetooth die toelaat om op afstand te schrijven op onze Pc met besturingssysteem windows.Zie videoHet programma kan alleen voor het verzend