Innholdsfortegnelse:

Arduino blir Talking Tom: 6 trinn
Arduino blir Talking Tom: 6 trinn

Video: Arduino blir Talking Tom: 6 trinn

Video: Arduino blir Talking Tom: 6 trinn
Video: Красивая история о настоящей любви! Мелодрама НЕЛЮБОВЬ (Домашний). 2024, Juli
Anonim
Arduino blir snakkende Tom
Arduino blir snakkende Tom
Arduino blir snakkende Tom
Arduino blir snakkende Tom

Et av mine eldste minner om bruk av en smarttelefon var å spille "Talking Tom" -spillet. Spillet var ganske enkelt. Det er en katt som heter Tom, som kan snakke, liksom. I spillet ville Tom lytte etter input via telefonens mikrofon og deretter gjenta det den hørte. Så uansett hva du sier til Tom, vil det bare gjenta det samme med sin egen skingre stemme.

Selv om det høres enkelt ut, krever hele denne prosedyren mange komplekse trinn som å sampler mikrofonens analoge inngang i digital form, manipulere lyden for å gi Tom sin unike stemme og deretter rekonstruere signalet fra alle de digitale verdiene for å spille det av gjennom høyttaleren. Alle disse komplekse trinnene, men smarttelefonen håndterte det som en sjarm selv 9 til 10 år tilbake!

Det interessante ville være å se om det samme kan gjøres med et billig mikrokontrollerbasert Arduino -kort. Så i denne instruksen vil jeg vise hvordan du kan lage et enkelt Talking Tom -lignende prosjekt fra en Arduino og annen billig elektronikk.

Denne instruksen ble skrevet i samarbeid med Hatchnhack Makerspace i Delhi

MERK: Denne instruksjonsboken er den første versjonen av prosjektet som fullfører "Talking" -funksjonen i Talking Tom hvor arduinoen vil kunne gjenta hva du sier til den. Den stemmeskiftende delen vil bli dekket i den fremtidige versjonen, men på grunn av mindre oppløsning av Arduino i innebygd ADC høres den innspilte lyden allerede litt annerledes ut: P (Dette kan tydelig sees i prosjektvideoen).

Så La oss starte!

Trinn 1: Materialer som brukes

Materialer som brukes
Materialer som brukes
Materialer som brukes
Materialer som brukes
Materialer som brukes
Materialer som brukes

Maskinvare:

  • En Arduino UNO
  • MAX4466 mikrofonmodul med justerbar forsterkning
  • SPI -basert SD -kortlesermodul
  • SD kort
  • Lydforsterker som PC -høyttaler, PAM8403 forsterkermodul, etc.
  • Høyttalere for tilkobling til forsterkeren
  • Lydkontakt for kvinner
  • 1 x 1k ohm motstand
  • 2 x 10k ohm motstand
  • 1 x 10uF kondensator
  • 2 x trykknapp
  • Jumper Wires

Programvare:

  • Arduino IDE
  • Frimodighet (valgfritt)
  • TMRpcm og SD -bibliotek for Arduino

Trinn 2: En grunnleggende oversikt over prosjektet

Prosjektet har hovedsakelig to funksjoner:

  • Den kan spille av en tilfeldig valgt lyd fra et sett med forhåndsinstallerte lydfiler på SD-kortet for lydeffekter etc.
  • Den kan ta opp lydinngang fra mikrofonen og deretter spille den av så snart opptaket stopper. Dette gjør at arduinoen kan gjenta det den hørte gjennom mikrofonen.

Brukergrensesnittet til prosjektet består hovedsakelig av to trykknapper som hver tilsvarer en av funksjonene ovenfor.

Det viktigste harde arbeidet med å ta opp og spille av lydfilene fra SD -kortet håndteres av TMRpcm -biblioteket

Lydopptaket bruker MAX4466 -mikrofonmodulen, arduinos interne ADC og TMRpcm -biblioteket for å prøve lyden og deretter lagre den midlertidig på SD -kortet som en.wav -fil for avspilling. '.wav' lydfiler bruker PCM (Pulse Code Modulation) for å lagre lyddataene i det digitale formatet slik at de enkelt kan spilles av igjen. Vanligvis er det bedre å bruke en ekstern ADC for lydbaserte prosjekter, da oppløsningen til Arduinos ADC ikke er så høy, men den fungerer for dette prosjektet.

Avspilling av lydfilene (forhåndsinstallert og innspilt) gjøres også ved hjelp av TMRpcm-biblioteket som sender ut lyden som et PWM-signal fra en PWM-aktivert pin på arduinoen. Dette signalet mates deretter inn i et RC -filter for å få et analogt signal som deretter mates inn i en forsterker for å spille lyden gjennom en høyttaler. For denne delen kan du også bruke en ekstern DAC da arduino ikke har en internt. Å bruke en DAC kan være et bedre alternativ, da det ville forbedre lydkvaliteten betydelig.

Kommunikasjonen mellom SD -kortmodulen og arduino skjer via SPI (Serial Peripheral Interface). Koden bruker SD & SPI -biblioteket for enkelt å få tilgang til innholdet på SD -kortet.

Trinn 3: Forbered SD -kortet og koble til SD -kortmodulen

Klargjør SD -kortet og koble til SD -kortmodulen
Klargjør SD -kortet og koble til SD -kortmodulen
Klargjør SD -kortet og koble til SD -kortmodulen
Klargjør SD -kortet og koble til SD -kortmodulen
Klargjør SD -kortet og koble til SD -kortmodulen
Klargjør SD -kortet og koble til SD -kortmodulen
Klargjør SD -kortet og koble til SD -kortmodulen
Klargjør SD -kortet og koble til SD -kortmodulen
  • Først må du formatere som SD -kortet med et FAT16- eller FAT32 -filsystem (Du kan bruke smarttelefonen til å formatere SD -kortet).
  • Installer nå noen.wav-lydfiler på SD-kortet. Du kan generere.wav -filer med Audacity (se instruksjonene nedenfor). Husk å navngi filene som audio_1.wav, audio_2.wav, audio_3.wav og så videre.

SD -kortmodulen bruker SPI for å kommunisere dataene med arduinoen. Derfor kobles den bare til de pinnene som har SPI aktivert. Disse forbindelsene er som følger:

  • Vcc - 5v
  • GND - GND
  • MOSI (Master Out Slave In) - pin 11
  • MISO (Master In Slave Out) - pinne 12
  • CLK (Klokke) - pinne 13
  • SS/CS (Slave Select/Chip Select) - pin 10

Genererer en.wav -fil med Audacity -programvare:

  • Åpne lydfilen du vil konvertere til.wav i Audacity.
  • Klikk på filnavnet og velg deretter 'Split Stereo to Mono'. Dette alternativet deler stereolyd i to monokanaler. Du kan nå lukke en av kanalen.
  • Endre verdien 'Prosjektfrekvens' i bunnen til 16000 Hz. Denne verdien tilsvarer den maksimale samplingsfrekvensen for arduinos interne ADC.
  • Nå kom jeg til File-> Export/Export as WAV.
  • Velg riktig sted og navn på filen. Velg 'Usignert 8-biters PCM' fra kodingsmenyen, ettersom vi bruker PCM-formatet til å lagre lyden i digitalt format.

Trinn 4: Koble til lydutgang og mikrofon

Koble til lydutgang og mikrofon
Koble til lydutgang og mikrofon
Koble til lydutgang og mikrofon
Koble til lydutgang og mikrofon
Koble til lydutgang og mikrofon
Koble til lydutgang og mikrofon
Koble til lydutgang og mikrofon
Koble til lydutgang og mikrofon

Koble til mikrofonen:

  • Vcc - 3.3v
  • GND - GND
  • UT - A0 -pinne

MERK:

  • Prøv å koble mikrofonen direkte til arduinoen i stedet for å bruke et brødbrett, da det kan forårsake unødvendig støy i inngangssignalet.
  • Sørg for å lodde toppene på mikrofonmodulen rent ettersom dårlige loddeskjøter også gir støy.
  • Denne mikrofonmodulen har justerbar forsterkning som kan kontrolleres ved hjelp av en gryte på baksiden av brettet. Jeg vil foreslå at du holder gevinsten noe lav, da det ikke vil forsterke støyen veldig mye mens du kan snakke og holde den nær munnen din, noe som resulterer i en renere utgang.

Koble til lydutgangen:

  • Plasser 10 uF kondensatoren og 1 k ohm motstanden i serie på brødbrettet med kondensatorens positive koblet til motstanden. Disse danner sammen et RC -filter som konverterer PWM -utgangen til et analogt signal som kan mates til forsterkeren.
  • Koble pinnen 9 på Arduino til den andre enden av motstanden.
  • Den negative terminalen på kondensatoren blir koblet til venstre og høyre kanal på den kvinnelige lydkontakten.
  • GND for lydkontakten blir koblet til GND.
  • Lydkontakten er koblet til forsterkeren med en AUX -kabel. I mitt tilfelle brukte jeg PC -ens høyttalersystem.

MERK:

Å bruke PWM som lydutgang er kanskje ikke det beste alternativet, da en ekstern DAC ville gi mye bedre oppløsning og kvalitet. I tillegg kan kondensatoren og motstanden i RC -filteret forårsake uønsket støy. Men resultatet var fortsatt ganske anstendig for dette prosjektet

Trinn 5: Tråd opp knappene

Tråd opp knappene
Tråd opp knappene
Tråd opp knappene
Tråd opp knappene
Tråd opp knappene
Tråd opp knappene

Prosjektet bruker til å trykke på knapper som brukergrensesnitt. Begge utfører forskjellige funksjoner og brukes annerledes, men har samme ledninger. Forbindelsen deres er som følger:

  • Plasser knappene på brødbrettet.
  • Fest den ene kontakten på en av knappene til pinne 2 på arduinoen med en 10k ohm nedtrekksmotstand. Den andre terminalen på knappen blir koblet til 5v. Så når du trykker på knappen, blir pinne 2 HØY, og vi kan oppdage det i koden.
  • Den andre knappen blir koblet det samme med arduinos pin 3 i stedet for 2.

Knappen som er koblet til pin 2 spiller en tilfeldig lydfil fra settet med forhåndsinstallerte lydfiler på SD-kortet når den trykkes en gang.

Knappen som er koblet til pin 3 er for opptak. Du må trykke og holde inne denne knappen for innspillingen. Arduino starter opptaket så snart denne knappen trykkes og stopper opptaket når denne knappen slippes. Etter at opptaket er stoppet, spiller det umiddelbart opp igjen.

Trinn 6: Last opp koden

Last opp koden
Last opp koden
Last opp koden
Last opp koden
Last opp koden
Last opp koden

Før du laster opp koden, må du kontrollere at du har installert alle nødvendige biblioteker som TMRpcm, SD etc.

Du kan også åpne Serial Monitor etter at du har lastet opp koden for å få en tilbakemelding på hva arduinoen gjør.

For øyeblikket manipulerer ikke koden den innspilte lyden for å få den til å høres annerledes ut, men jeg planlegger å inkludere denne funksjonen i den neste versjonen der du kanskje kan angi utgangsfrekvensen til lydsignalet ved hjelp av potten og få forskjellige typer lyder.

Og du er ferdig !!

Anbefalt: