Innehållsförteckning:

Arduino blir talande Tom: 6 steg
Arduino blir talande Tom: 6 steg

Video: Arduino blir talande Tom: 6 steg

Video: Arduino blir talande Tom: 6 steg
Video: #6 Как запрограммировать таймер задержки ПЛК Outseal Arduino 2024, November
Anonim
Arduino blir talande Tom
Arduino blir talande Tom
Arduino blir talande Tom
Arduino blir talande Tom

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

Material som används
Material som används
Material som används
Material som används
Material som används
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örbered SD -kortet och anslut SD -kortmodulen
Förbered SD -kortet och anslut SD -kortmodulen
Förbered SD -kortet och anslut SD -kortmodulen
Förbered SD -kortet och anslut SD -kortmodulen
Förbered SD -kortet och anslut SD -kortmodulen
Förbered SD -kortet och anslut SD -kortmodulen
Förbered SD -kortet och anslut SD -kortmodulen
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

Anslut ljudutgången och mikrofonen
Anslut ljudutgången och mikrofonen
Anslut ljudutgången och mikrofonen
Anslut ljudutgången och mikrofonen
Anslut ljudutgången och mikrofonen
Anslut ljudutgången och mikrofonen
Anslut ljudutgången och mikrofonen
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

Trä upp knapparna
Trä upp knapparna
Trä upp knapparna
Trä upp knapparna
Trä upp knapparna
Trä 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

Ladda upp koden
Ladda upp koden
Ladda upp koden
Ladda upp koden
Ladda upp koden
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: