Trådlös Audio Streaming och taligenkänning med Arduino



i detta projekt jag ansluta min Arduino ombord till en WiFly modul (https://www.sparkfun.com/products/10822) från ambulerande nätverk och strömma ljud till datorn, så att BitVoicer (http://www.bitsophia.com/BitVoicer.aspx) kan utföra taligenkänning. Genom att använda en trådlös modul, lyckades jag lägga till funktioner för taligenkänning i min microcontroller utan behov av en fysisk anslutning med datorn.

Lysdioderna göra samma grundläggande saker de gjorde i mitt förra projekt (), men nu jag bort tråd datoranslutning, så jag äntligen kan ha ett tal aktiverade Arduino någonstans mitt trådlösa nätverk når.

Här är YouTube-video av projektet:

Jag använde en WiFly modul från ambulerande nätverk (https://www.sparkfun.com/products/10822) eftersom jag läste någonstans att det skulle fungera med XBee sköld hade jag (https://www.sparkfun.com/products/9976). Tyvärr, jag grunda ute den hårda vägen att en diod mellan Arduino TX och RX WiFly blockerar signalen. Jag var tvungen att slita ut dioden och lägga till en spänningsavdelare TX/RX stift av Arduino och modulen WiFly eftersom den RX pin av WiFly är tolerant 3.3V och Arduino TX arbetar på 5V. Det verkar inte vara den bästa strategin, men det fungerade och jag kunde skicka och ta emot data från modulen. Jag upptäckte att Sparkfun släppt en ny version av XBee sköld (https://www.sparkfun.com/products/10854) och att dioden nivå shifter ersattes med ett mer robust MOSFET nivå shifter. Detta bör lösa problemet diod.

Jag tror någon av följande trådlösa moduler kan användas. Du måste bara hitta ut som en av dem bästa passar dina behov:

- http://arduino.cc/en/Main/ArduinoWiFiShield
- http://www.rovingnetworks.com/products/RN171XV
- https://www.sparkfun.com/pages/xbee_guide (du behöver en XBee Explorer Dongle att ansluta XBee till din dator: https://www.sparkfun.com/products/9819)
-Många andra sköldar Arduino WiFi kan hittas här: http://postscapes.com/arduino-wifi

Installationsprocessen för WiFly modul kan vara svårt, så jag också lägger till en steg för steg handledning om hur man gör. I mitt fall använder jag en vanlig åtkomstpunkt/router från D-Link för att genomföra mitt privata trådlösa nätverk. Denna tutorial ska fungera med någon åtkomstpunkt ute.

1. Koppla bort datorn från alla trådlösa nätverk
2. upprätta GPIO9 PIN-koden för WiFly modul till hög (3.3V) på effekt. Detta gör att ad hoc-läge på modulen. Jag använde den 3.3V källa från Arduino styrelsen och en vanlig bygel tråd. Direkt efter driva upp, ta bort kabeln och följ stegen. Modul Datablad: http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Wireless/WiFi/WiFly-RN-XV-DS.pdf
3. på datorn, söka efter tillgängliga nätverk och ansluta till nätverkets WiFly modul (WiFly-GSX-XX). Det kan ta några sekunder innan datorn får en IP-adress från modulen.
4. Ladda ner och kör en fri mjukvaran alarmerat TeraTerm (http://www.rovingnetworks.com/resources/download/86/Teraterm)
5. Ange följande inställningar och klicka på OK: IP-adress: 169.254.1.1; TCP-port: 2000; Service: Telnet; Protokoll: IPv4
6. du borde se ordet "* Hej *" på skärmen.
7. Skriv $$$ för att ange kommando-läge
8. typ Skanna och slå till gå in att söka efter tillgängliga åtkomstpunkter
9. om nätverket använder WPA-autentisering, använder du kommandot Ange wlan frasen att ställa in lösenordsmening. För WEP, ange nyckeln med hjälp av WLAN-nyckeln kommando. Mitt nätverk är WEP säkrade, så jag var tvungen att använda det andra kommandot. Problemet är att nyckeln måste anges ASCII/HEX kodade och det måste ha exakt 26 tecken. Jag hittade denna sida som konverterar text till ASCII/HEX: http://www.string-functions.com/string-hex.aspx.
10. Skriv in wlan ssid , där XXXX är SSID för du nätverk (titta på resultatet för steg 8)
11. Skriv Spara
12. Skriv join (titta på resultatet för steg 8)
13. WiFly-GSX-XX försvinner från listan över windows
14. Stäng Teraterm
15. återansluta datorn till ditt lokala trådlösa nätverk
16. Stäng din Arduino ombord och tillbaka ON
17. skriva ner IP-numret som tilldelats till WiFly modul av åtkomstpunkten (vanligtvis, kan du hitta denna info på sidan DHCP-punkt)
18. öppen Teratem med hjälp av den nya IP-adressen och andra inställningar från steg 5
19. Skriv $$$ för att ange kommando-läge
20. typ set comm nära 0 och slå till gå in
21. typ set comm öppna 0 och slå till gå in
22. typ ställa comm remote 0 och slå till gå in
23. typ ställa comm storlek 1460 och slå till gå in
24. typ comm tid 1000 och slå till gå in
25. typ ställa comm baud 115200 och slå till gå in (samma bithastighet I används i min skiss)
26. typ Spara och slå till gå in
27. typ Avsluta och slå till gå in
28. Stäng Teraterm

Nu bör din WiFly modul kunna kommunicera med BitVoicer och datorn. WiFly Användarhandbok kan laddas ner här: http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Wireless/WiFi/WiFly-RN-UM.pdf

Detta är den skiss som jag använde för att kontrollera lysdioderna, spela in ljud och interagera med BitVoicer:

#include < BitVoicer11.h >

Instansierar klassen BitVoicerSerial
BitVoicerSerial bvSerial = BitVoicerSerial();

Butiker sant om den Audio Streaming kalibreringsverktyg
kör
booleska sampleTest = false;
Lagrar datatypen Hämtad av getData()
Datatypen byte = 0;
Ställer in stift och standard variabler
int pinR = 3;
int pinY = 5;
int pinG = 6;
int lightLevel = 0;

void setup()
{
Anger den analoga hänvisningen till externa (AREF stift)
VARNING! Om något är ansluten till AREF stift,
den här funktionen måste anropas först. Annars kommer det att
skada i styrelsen.
bvSerial.setAnalogReference(BV_EXTERNAL);
Ställer in mikrokontroller för att utföra snabbare analoga läsningar
på angivna PIN-koden
bvSerial.setAudioInput(0);
Börjar seriell kommunikation på 115200 bps
Serial.BEGIN(115200);
Ställer in pinModes
pinMode (pinR, produktionen);
pinMode (pinY, utgång);
pinMode (pinG, utgång);
}

void loop()
{
Fångar upp ljud och skickar den till BitVoicer om ljud
Streaming kalibreringsverktyg är igång
om (sampleTest == true)
{
Värdet skickas till funktionen är tiden
(i mikrosekunder) som har funktionen att vänta innan
utför behandlingen. Det är för att uppnå om
8000 mätvärden per sekund.
bvSerial.processAudio(46);
}

Fångar upp ljud och skickar den till BitVoicer om tal
Motorn är igång
om (bvSerial.engineRunning)
{
Värdet skickas till funktionen är tiden
(i mikrosekunder) som har funktionen att vänta innan
utför behandlingen. Det är för att uppnå om
8000 mätvärden per sekund.
bvSerial.processAudio(46);
}
}

Den här funktionen körs varje gång seriella data är tillgängliga
i den seriella bufferten efter en slinga
void serialEvent()
{
Läser den seriella buffert och lagrar den mottagna datatyp
Datatypen = bvSerial.getData();

Ändrar värdet för sampleTest om den mottagna datan var
kommandot starta/stoppa provtagning
om (datatyp == BV_COMMAND)
sampleTest = bvSerial.cmdData;

Signalerar Bitvoicers taligenkänningsmotorn att starta
lyssna på ljud strömmar efter engineRunning status
mottogs
om (datatyp == BV_STATUS & & bvSerial.engineRunning == true)
bvSerial.startStopListening();

Kontrollerar om datatypen är samma som den i den
Röst-Schema
om (datatyp == BV_STR)
setLEDs();
}

Utför de LED ändringarna beroende på värdet i
bvSerial.strData
void setLEDs()
{
om (bvSerial.strData == "vakna")
{
digitalWrite (pinR, låg);
digitalWrite (pinY, låg);
digitalWrite (pinG, låg);
digitalWrite (pinR, hög);
digitalWrite (pinY, hög);
digitalWrite (pinG, hög);
Delay(200);
digitalWrite (pinR, låg);
digitalWrite (pinY, låg);
digitalWrite (pinG, låg);
Delay(200);
digitalWrite (pinR, hög);
digitalWrite (pinY, hög);
digitalWrite (pinG, hög);
Delay(200);
digitalWrite (pinR, låg);
digitalWrite (pinY, låg);
digitalWrite (pinG, låg);
Delay(200);
digitalWrite (pinR, hög);
digitalWrite (pinY, hög);
digitalWrite (pinG, hög);
Delay(200);
digitalWrite (pinR, låg);

digitalWrite (pinY, låg);
digitalWrite (pinG, låg);
lightLevel = 0;
}
annat if (bvSerial.strData == "sömn")
{
digitalWrite (pinR, låg);
digitalWrite (pinY, låg);
digitalWrite (pinG, låg);
digitalWrite (pinR, hög);
digitalWrite (pinY, hög);
digitalWrite (pinG, hög);
Delay(200);
digitalWrite (pinR, låg);
digitalWrite (pinY, låg);
digitalWrite (pinG, låg);
Delay(200);
digitalWrite (pinR, hög);
digitalWrite (pinY, hög);
digitalWrite (pinG, hög);
Delay(200);
digitalWrite (pinR, låg);
digitalWrite (pinY, låg);
digitalWrite (pinG, låg);
lightLevel = 0;
}
annat if (bvSerial.strData == "RH")
{
digitalWrite (pinR, hög);
lightLevel = 255;
}
annat if (bvSerial.strData == "RL")
{
digitalWrite (pinR, låg);
lightLevel = 0;
}
annat if (bvSerial.strData == "YH")
{
digitalWrite (pinY, hög);
lightLevel = 255;
}
annat if (bvSerial.strData == "YL")
{
digitalWrite (pinY, låg);
lightLevel = 0;
}
annat if (bvSerial.strData == "GH")
{
digitalWrite (pinG, hög);
lightLevel = 255;
}
annat if (bvSerial.strData == "GL")
{
digitalWrite (pinG, låg);
lightLevel = 0;
}
annat if (bvSerial.strData == "ALLON")
{
digitalWrite (pinR, hög);
digitalWrite (pinY, hög);
digitalWrite (pinG, hög);
lightLevel = 255;
}
annat if (bvSerial.strData == "ALLOFF")
{
digitalWrite (pinR, låg);
digitalWrite (pinY, låg);
digitalWrite (pinG, låg);
lightLevel = 0;
}
annat if (bvSerial.strData == "ljusare")
{
om (lightLevel < 255)
{
lightLevel += 85.
analogWrite (pinR, lightLevel);
analogWrite (pinY, lightLevel);
analogWrite (pinG, lightLevel);
}
}
annat if (bvSerial.strData == "mörkare")
{
om (lightLevel > 0)
{
lightLevel-= 85.
analogWrite (pinR, lightLevel);
analogWrite (pinY, lightLevel);
analogWrite (pinG, lightLevel);
}
}
annat
{
bvSerial.startStopListening();
bvSerial.sendToBV ("fel:" + bvSerial.strData);
bvSerial.startStopListening();
}
}

BitVocier röst schemat jag använt kan laddas ner här: http://www.justbuss.xpg.com.br/BitVoicerTest3.zip

Om du har någon fråga om detta projekt, posta det här, så någon annan kan läsa svaret.

Relaterade Ämnen

Taligenkänning med Arduino och BitVoicer Server

I detta Instructable ska jag visa hur man använder en Arduino ombord och BitVoicer Server för att kontrollera några lysdioder med röstkommandon. Jag kommer att använda Arduino Micro i detta Instructable, men du kan använda en Arduino ombord du har ti...

Taligenkänning med Arduino

i detta projekt jag använder Bitvoicers funktioner för taligenkänning (http://www.bitsophia.com/BitVoicer.aspx), en Arduino ombord och en Elektret mikrofon (https://www.sparkfun.com/products/9964) för att kontrollera några lysdioder.Detta projekt är...

Arduino röst / taligenkänning med Geeetech modul [Tutorial]

Hur till: Arduino röst / taligenkänning med Geeetech modul [Tutorial]. Denna video visar dig hur man talar med din Arduino med (billigt) Geeetech röst kontrollmodulen. Du kan sedan använda koden kontrollerar en motor eller göra röststyrda lampor. Det...

Ansiktsigenkänning och spårning med Arduino och OpenCV

uppdateringar20 feb 2013: Som svar på en fråga från student Hala Abuhasna om du vill använda klassen .NET seriell, använda namnkonventionen "\\\.\\COMn" och ersätt n med en nummer > 9 definiera com-porten för COM-portar över 9 som COM10, COM1...

Styra din Tv, Dvd och ljud system med Arduino och Android

Hej alla, detta är min andra instructable och min första på engelska, så, ledsen för misstag.Jag vill dela detta projekt det handlar om hur du kan styra din Tv, DVD och ljudanläggningen med Arduino och en app för Android med app inventor.Om du gillar...

Att bygga en spänningsregulator och mäta växelspänning med arduino

AC-spänning mätt använder en micro controller är en ganska svår uppgift som vågen blir lätt snedvrids på grund av talrika buller i miljön. Därför för lämplig konstruktion av hårdvara är mycket nödvändigt. En spänningsregulator är utformat för att aut...

Kontrollera allt och spara energi med Arduino

Jag använde detta för min egen mycket specifikt problem men det skulle kunna användas för någonting egentligen.Problemet:De flesta högtalare är inte smart, och så du måste stänga dem off manuellt, särskilt studio typ monitorhögtalare. På grund av det...

Julgran med LED och musik, kontrollerade med Arduino

i den här julen, nästan alla har gjort sin julgran i ditt hem, liten eller stor. I denna post, kommer vi se hur man skapar en julgran med några €, använder Arduino. Genom denna microcontroller kommer att kunna välja mellan flera olika profiler, som d...

Taligenkänning med BitVoicer och Arduino

det huvudsakliga målet med detta projekt var att testa tal erkännande prestanda för BitVoicer (http://www.bitsophia.com/BitVoicer.aspx). För detta ändamål designade jag en enkel led kontroll skiss som jag integrerat med BitVoicer. Naturligtvis kan du...

Vakta hunden och Mailman Scenario med Arduino

Syftet med detta projekt är att programmera två robotar att samverka framgångsrikt med varandra, agerar ut en vakt hund-mailman scenario. Scenariot är att vakthund roboten skyddar dess hus (aka ljuskälla) från allt som kommer inom dess räckvidd. Om d...

Tjurar och kor spel med arduino

Även känd som kor och tjurar eller svin och tjurar eller tjurar och Cleots) är en gammal kod tillkommen sinne eller papper och penna spel för flera spelare, föregick den liknande kommersiellt saluförda brädspel Mastermind.Det är ett spel med siffror...

Bil till Arduino meddelande: CAN-Bus sniffning och sänder med Arduino

Från Wikipedia är Controller Area Network (CAN) bussen en "fordonet buss standard syftar till att mikrokontroller och enheter att kommunicera med varandra inom ett fordon utan värddator." Dessa enheter kan också betecknas som elektroniska styren...

5 enkel knapp och lett projekt med Arduino

Vad du behov dessa 5 projekt.En Arduino uno eller klon.3mm 5mm eller 10mm lysdioder någon kommer att fungera och 1 RGB ledde.Vissa tryck-knappar.En skärbräda.Hane-hane hoppare ledningar.Några 10k och 220 motstånd.10 ledde stapeldiagram eller lysdiode...

LCD, potentiometer och pwm ledde med Arduino

Vad behöver du:Arduino ombordLCD 16 * 2Trimmer 10 kΩPotentiometer 10 kΩLED 5mm220, 330 Ω motståndNågra tröjorSkärbrädaVad skiss gör:I denna skiss, ska skrivas potentiometer analoga värdet på LCD- och nära det pwm värdet till ledde.Anslutningar:Arduin...

Hur du ansluter en Sensor med Audio Input och Output

en sensor är en av en grundläggande komponent för att fånga fysiska miljön. Du kan få förändringen av ljus med en CDS fotocell, kan du mäta utrymmet med en distansera sensor och du kan fånga din rörelse med en accelerometer.Det finns redan flera sätt...

Piano trappor med Arduino och Raspberry Pi

Vem älskar inte musik? Dessa Piano trappor är en interaktiv och relativt smidig musikaliska installation som kan tillämpas på i princip alla trapphus. Jag byggde dem för HackPrinceton tillsammans med mina vänner Erica Portnoy och Vincent Castaneda, o...

Övervakning och vård - med hjälp av Intel Edison

Vintern är här! Följ detta instructable att övervaka och skapa en automatisk kontrollerar växten vattnas system för dina krukväxter med Intel Edison.Övervaka följande miljövariabler med Xively.com för att hålla din anläggning friska genom vinternTemp...

Roligt spel med arduino och bearbetning

Denna tutorial ska show dig hur man gör en första person FPS-shooter i bearbetning med hjälp av en arduino. Detta projekt lämnades till oss som en avslutande tentamen i en teknisk specialkurs, (gymnasieskolan).Video av projektet! :) (Svårt att spela...

Mäta Box (avstånd avkänning) med hjälp av ultraljud Sensor ~ det enklaste

Någonsin velat mäta utan en skala eller måttband?Mäta avstånd utan krångel med denna lilla enhet!Mycket exakt *För mer intressant projekt besök: www.miymakers.comFacebook: www.facebook.com/miymakersSteg 1: Hur det fungerar "HUR FUNGERAR DET?En särski...