Innehållsförteckning:
- Steg 1: Material som används
- Steg 2: En grundläggande översikt över projektet
- Steg 3: Förbered SD -kortet och anslut SD -kortmodulen
- Steg 4: Anslut ljudutgången och mikrofonen
- Steg 5: Koppla upp knapparna
- Steg 6: Ladda upp koden
Video: Arduino blir talande Tom: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:37
Ett av mina äldsta minnen av att använda en smartphone spelade "Talking Tom" -spelet. Spelet var ganska enkelt. Det finns en katt som heter Tom, som kan prata, liksom. I spelet skulle Tom lyssna efter ingång via telefonens mikrofon och sedan upprepa vad den hörde. Så, vad som än säger till Tom, det skulle bara upprepa samma sak med sin egen skingriga röst.
Även om det låter enkelt kräver hela denna procedur många komplexa steg som att sampla mikrofonens analoga ingång i digital form, manipulera ljudet för att ge Tom sin unika röst och sedan rekonstruera signalen från alla dessa digitala värden för att spela upp den genom högtalaren. Alla dessa komplexa steg, men smarttelefonen hanterade det som en charm även för 9 till 10 år sedan!
Det intressanta vore att se om detsamma kan göras med ett billigt mikrokontrollerbaserat Arduino -kort. Så i denna instruerbara kommer jag att visa hur du kan göra ett enkelt Talking Tom -liknande projekt från en Arduino och annan billig elektronik.
Denna instruerbara skrevs i samarbete med Hatchnhack Makerspace i Delhi
OBS: Denna instruerbara är den första versionen av projektet som avslutar "Talking" -funktionen i Talking Tom där arduino kommer att kunna upprepa vad du än säger till den. Den röstförändrande delen kommer att täckas i den framtida versionen, men på grund av mindre upplösning av Arduinos inbyggda ADC låter det inspelade ljudet redan lite annorlunda: P (Detta märks tydligt i projektvideon).
Så låt oss börja!
Steg 1: Material som används
Hårdvara:
- En Arduino UNO
- MAX4466 mikrofonmodul med justerbar förstärkning
- SPI -baserad SD -kortläsarmodul
- SD-kort
- Ljudförstärkare som PC -högtalare, PAM8403 förstärkarmodul, etc.
- Högtalare för anslutning till förstärkaren
- Ljuduttag för kvinnor
- 1 x 1k ohm motstånd
- 2 x 10k ohm motstånd
- 1 x 10uF kondensator
- 2 x tryckknapp
- Jumper Wires
Programvara:
- Arduino IDE
- Fräckhet (valfritt)
- TMRpcm och SD -bibliotek för Arduino
Steg 2: En grundläggande översikt över projektet
Projektet har huvudsakligen 2 funktioner:
- Det kan spela ett slumpmässigt valt ljud från en uppsättning förinstallerade ljudfiler på SD-kortet för ljudeffekter etc.
- Den kan spela in ljudingång från mikrofonen och sedan spela upp den så snart inspelningen stannar. Detta gör att arduino kan upprepa vad den hörde genom mikrofonen.
Projektets användargränssnitt består huvudsakligen av två tryckknappar som var och en motsvarar en av ovanstående funktioner.
Det huvudsakliga hårda arbetet med att spela in och spela ljudfiler från SD -kortet hanteras av TMRpcm -biblioteket
Ljudinspelningen använder sig av MAX4466 -mikrofonmodulen, arduinos interna ADC och TMRpcm -biblioteket för att prova ljudet och sedan lagra det tillfälligt på SD -kortet som ".wav" -fil för uppspelning. '.wav' ljudfiler använder PCM (Pulse Code Modulation) för att lagra ljuddata i det digitala formatet så att de enkelt kan spelas upp igen. Generellt är det bättre att använda en extern ADC för ljudbaserade projekt eftersom upplösningen på Arduinos ADC inte är så hög men den fungerar för detta projekt.
Uppspelning av ljudfiler (förinstallerade och inspelade) görs också med hjälp av TMRpcm-biblioteket som matar ut ljudet som en PWM-signal från en PWM-aktiverad pin på arduino. Denna signal matas sedan in i ett RC -filter för att få en analog signal som sedan matas in i en förstärkare för att spela upp ljudet via en högtalare. För den här delen kan du också använda en extern DAC eftersom arduino inte har en internt. Att använda en DAC kan vara ett bättre alternativ eftersom det skulle förbättra ljudkvaliteten avsevärt.
Kommunikationen mellan SD -kortmodulen och arduino sker via SPI (Serial Peripheral Interface). Koden använder SD & SPI -biblioteket för att enkelt komma åt innehållet på SD -kortet.
Steg 3: Förbered SD -kortet och anslut SD -kortmodulen
- Först måste du formatera som SD -kort med ett FAT16- eller FAT32 -filsystem (Du kan använda din smartphone för att formatera SD -kortet).
- Förinstallera nu några.wav-ljudfiler på SD-kortet. Du kan generera.wav -filer med Audacity (se instruktionerna nedan). Kom ihåg att namnge filerna som audio_1.wav, audio_2.wav, audio_3.wav och så vidare.
SD -kortmodulen använder SPI för att kommunicera data med arduino. Därför ansluter den bara till de stift som har SPI aktiverat. Dessa anslutningar är följande:
- Vcc - 5v
- GND - GND
- MOSI (Master Out Slave In) - stift 11
- MISO (Master In Slave Out) - stift 12
- CLK (klocka) - stift 13
- SS/CS (Slave Select/Chip Select) - stift 10
Generera '.wav' -fil med Audacity Software:
- Öppna ljudfilen du vill konvertera till.wav i Audacity.
- Klicka på filnamnet och välj sedan 'Split Stereo to Mono'. Detta alternativ delar upp stereoljudet i två monokanaler. Du kan nu stänga en av kanalen.
- Ändra "Project Rate" -värdet i botten till 16000 Hz. Detta värde motsvarar den maximala samplingsfrekvensen för arduinos interna ADC.
- Nu kom till File-> Export/Export som WAV.
- Välj rätt plats och namn på filen. Från kodningsmenyn väljer du "Osignerad 8-bitars PCM" eftersom vi använder PCM-formatet för att lagra ljudet i digitalt format.
Steg 4: Anslut ljudutgången och mikrofonen
Ansluta mikrofonen:
- Vcc - 3.3v
- GND - GND
- UT - A0 -stift
NOTERA:
- Försök att ansluta mikrofonen direkt till arduino istället för att använda en brödbräda eftersom det kan orsaka onödigt brus i insignalen.
- Var noga med att löda rubrikerna på mikrofonmodulen rent eftersom dåliga lödfogar också ger buller.
- Denna mikrofonmodul har justerbar förstärkning som kan styras med hjälp av en kruka på baksidan av brädet. Jag föreslår att du håller vinsten något låg eftersom det då inte förstärker bruset så mycket medan du kan tala medan du håller det nära munnen vilket resulterar i en renare effekt.
Ansluta ljudutgången:
- Placera 10 uF -kondensatorn och 1k ohm -motståndet i serie på brödbrädan med kondensatorns positiva anslutna till motståndet. Dessa bildar tillsammans ett RC -filter som omvandlar PWM -utgången till en analog signal som kan matas in i förstärkaren.
- Anslut stiftet 9 på Arduino till den andra änden av motståndet.
- Kondensatorns negativa anslutning ansluts till vänster och höger kanal på honkontakten.
- GND för ljuduttaget ansluts till GND.
- Ljuduttaget är anslutet till förstärkaren med en Aux -kabel. I mitt fall använde jag datorns högtalarsystem.
NOTERA:
Att använda PWM som ljudutgång är kanske inte det bästa alternativet eftersom en extern DAC skulle ge mycket bättre upplösning och kvalitet. Dessutom kan kondensatorn och motståndet i RC -filtret framkalla oönskat brus. Men resultatet var fortfarande ganska anständigt för detta projekt
Steg 5: Koppla upp knapparna
Projektet använder för att trycka på knappar som användargränssnitt. Båda utför olika funktioner och används olika men har samma ledningar. Deras koppling är följande:
- Placera knapparna på panelen.
- Fäst en terminal på en av knapparna på stift 2 på arduino med ett 10k ohm neddragningsmotstånd. Den andra terminalen på knappen kopplas till 5v. Så när knappen trycks in blir stift 2 HÖG och vi kan upptäcka det i koden.
- Den andra knappen ansluts på samma sätt med arduinos pin 3 istället för 2.
Knappen som är ansluten till stift 2 spelar en slumpmässig ljudfil från uppsättningen förinstallerade ljudfiler på SD-kortet när den trycks ned en gång.
Knappen som är ansluten till stift 3 är för inspelning. Du måste hålla den här knappen intryckt för inspelningen. Arduinoen börjar spela in så snart den här knappen trycks in och stoppar inspelningen när den här knappen släpps. Efter att inspelningen har stoppats spelas den omedelbart upp igen.
Steg 6: Ladda upp koden
Innan du laddar upp koden, se till att du har installerat alla nödvändiga bibliotek som TMRpcm, SD etc.
Du kan också öppna Serial Monitor efter att du har laddat upp koden för att få feedback på vad arduino gör.
För närvarande manipulerar inte koden det inspelade ljudet för att det ska låta annorlunda men jag planerar att inkludera den här funktionen i nästa version där du kanske kan ställa in utsignalens frekvens med hjälp av potten och få olika typer av ljud.
Och du är klar !!
Rekommenderad:
Gör en talande klocka: 10 steg (med bilder)
Gör en talande klocka: Den här klockan meddelar tiden med din egen röst! Jag satte ihop det som en hyllning till den gamla Popcorn -tjänsten i norra Kalifornien. Du kan ringa POPCORN från vilken telefon som helst, och en inspelning berättar vilken tid på dygnet. Original
Talande växter: 5 steg
Talande växter: I den här självstudien kommer vi att visa dig hur du skapar talande växter. När du närmar dig växten med handen kan du höra ett röstmeddelande. Detta kan vara instruktioner om hur man sköter det eller bara information om växten. Till exempel, vi
En talande temperatur- och fuktighetssensor - Si7021 och Little Buddy Talker: 3 steg
En talande temperatur- och fuktighetssensor - Si7021 och Little Buddy Talker: The " Little Buddy Talker " är en liten enhet som låter dig lägga till en enkel röstutmatning till dina Arduino -projekt. Den innehåller en begränsad uppsättning av 254 ord och kan anslutas till Arduino eller andra mikrokontroller via SPI. The Little Buddy T
En talande UV-indexmätare med VEML6075-sensorn och Little Buddy Talker: 5 steg
En talande UV-indexmätare, som använder VEML6075-sensorn och Little Buddy Talker: Summers coming! Solen skiner, vilket är fantastiskt. Men eftersom ultraviolett (UV) strålning blir mer intensiv, får människor som jag fräknar, små bruna öar som simmar i ett hav av röd, solbränd, kliande hud. Att kunna få information i realtid
En talande färgsensor, baserad på AIY Voice Kit: 4 steg
En talande färgsensor, baserad på AIY Voice Kit: Efter att ha lärt mig lite om punktskrift nyligen undrade jag om jag kunde bygga något med AIY-röstsatsen för Raspberry Pi, som kan ha en verklig nytta för synskadade. . Så beskrivet i det följande hittar du en prototy