Kazalo:

Arduino postane Talking Tom: 6 korakov
Arduino postane Talking Tom: 6 korakov

Video: Arduino postane Talking Tom: 6 korakov

Video: Arduino postane Talking Tom: 6 korakov
Video: How to learn any language in six months | Chris Lonsdale | TEDxLingnanUniversity 2024, November
Anonim
Arduino postane Talking Tom
Arduino postane Talking Tom
Arduino postane Talking Tom
Arduino postane Talking Tom

Eden mojih najstarejših spominov na uporabo pametnega telefona je bil igra "Talking Tom". Igra je bila precej preprosta. Obstaja mačka po imenu Tom, ki lahko govori na nek način. V igri je Tom poslušal kakršen koli vnos prek mikrofona telefona in nato ponavljal vse, kar je slišal. Torej, karkoli bi rekel Tomu, bi isto stvar ponovil v svojem hripavem glasu.

Čeprav se sliši preprosto, ta celoten postopek zahteva veliko zapletenih korakov, kot je vzorčenje analognega vhoda mikrofona v digitalni obliki, manipulacija z zvokom, da bi Tomu dal edinstven glas, nato pa rekonstrukcija signala iz vseh teh digitalnih vrednosti za predvajanje skozi zvočnik. Vsi ti zapleteni koraki, a pametni telefon se je s tem ukvarjal kot čar že 9 do 10 let nazaj!

Zanimivo bi bilo videti, ali je enako mogoče storiti s poceni ploščo Arduino na osnovi mikrokrmilnika. Tako bom v tem navodilu pokazal, kako lahko naredite preprost projekt, podoben Talking Tomu, iz Arduina in druge poceni elektronike.

Ta pouk je bil napisan v sodelovanju s Hatchnhack Makerspace v Delhiju

OPOMBA: Ta navodila so prva različica projekta, ki dopolnjuje funkcijo "Talking" Talking Toma, kjer bo arduino lahko ponavljal vse, kar mu boste povedali. Del, ki spreminja glas, bo zajet v prihodnji različici, čeprav se zaradi manjše ločljivosti Arduinovega vgrajenega ADC -ja posneti zvok že sliši nekoliko drugače: P (To je jasno opaziti v video posnetku projekta).

Pa začnimo!

Korak: Uporabljeni materiali

Uporabljeni materiali
Uporabljeni materiali
Uporabljeni materiali
Uporabljeni materiali
Uporabljeni materiali
Uporabljeni materiali

Strojna oprema:

  • Arduino UNO
  • Mikrofonski modul MAX4466 z nastavljivim ojačanjem
  • Modul za branje kartic SD na osnovi SPI
  • sD kartice
  • Zvočni ojačevalnik, kot je zvočnik za računalnik, ojačevalni modul PAM8403 itd.
  • Zvočniki za priključitev na ojačevalnik
  • Ženski avdio priključek
  • 1 x 1 k ohmski upor
  • 2 x 10k ohmski upor
  • 1 x 10uF kondenzator
  • 2 x gumb
  • Mostične žice

Programska oprema:

  • Arduino IDE
  • Audacity (neobvezno)
  • Knjižnica TMRpcm in SD za Arduino

2. korak: Osnovni pregled projekta

Projekt ima predvsem 2 značilnosti:

  • Predvaja naključno izbran zvok iz nabora vnaprej nameščenih zvočnih datotek na kartici SD za zvočne učinke itd.
  • Lahko snema zvočni vhod iz mikrofona in ga nato predvaja takoj, ko se snemanje ustavi. To omogoča arduinu, da ponovi vse, kar je slišal skozi mikrofon.

Uporabniški vmesnik projekta je v glavnem sestavljen iz 2 gumbov, od katerih vsak ustreza eni od zgornjih funkcij.

Glavno trdo delo pri snemanju in predvajanju zvočnih datotek s kartice SD opravlja knjižnica TMRpcm

Zvočni posnetek uporablja mikrofonski modul MAX4466, notranji ADC arduino in knjižnico TMRpcm za vzorčenje zvoka in ga nato začasno shrani na kartico SD kot datoteko ».wav« za predvajanje. Zvočne datoteke ».wav« uporabljajo PCM (Pulse Code Modulation) za shranjevanje zvočnih podatkov v digitalni obliki, tako da jih je mogoče preprosto predvajati. Na splošno je za zvočne projekte bolje uporabiti zunanji ADC, saj ločljivost Arduinovega ADC ni tako visoka, vendar za ta projekt deluje.

Predvajanje zvočnih datotek (vnaprej nameščenih in posnetih) se izvaja tudi s pomočjo knjižnice TMRpcm, ki oddaja zvok kot signal PWM s pin-ja arduina, ki podpira PWM. Ta signal se nato vnese v RC filter, da dobi analogni signal, ki se nato vnese v ojačevalnik za predvajanje zvoka skozi zvočnik. Za ta del lahko uporabite tudi zunanji DAC, saj ga arduino nima. Uporaba DAC -a je lahko boljša možnost, saj bi bistveno izboljšala kakovost zvoka.

Komunikacija med modulom kartice SD in arduinom poteka prek SPI (serijski periferni vmesnik). Koda uporablja knjižnico SD & SPI za enostaven dostop do vsebine kartice SD.

3. korak: Pripravite kartico SD in priključite modul kartice SD

Pripravite kartico SD in priključite modul kartice SD
Pripravite kartico SD in priključite modul kartice SD
Pripravite kartico SD in priključite modul kartice SD
Pripravite kartico SD in priključite modul kartice SD
Pripravite kartico SD in priključite modul kartice SD
Pripravite kartico SD in priključite modul kartice SD
Pripravite kartico SD in priključite modul kartice SD
Pripravite kartico SD in priključite modul kartice SD
  • Najprej morate formatirati kot kartico SD z datotečnim sistemom FAT16 ali FAT32 (za formatiranje kartice SD lahko uporabite pametni telefon).
  • Zdaj vnaprej namestite nekaj zvočnih datotek.wav na kartico SD. Z Audacityjem lahko ustvarite datoteke.wav (glejte spodnja navodila). Ne pozabite poimenovati datotek kot audio_1.wav, audio_2.wav, audio_3.wav itd.

Modul kartice SD uporablja SPI za komunikacijo podatkov z arduinom. Zato se poveže samo s tistimi zatiči, ki imajo omogočeno SPI. Te povezave so naslednje:

  • Vcc - 5V
  • GND - GND
  • MOSI (glavni izhod pomožni vhod) - pin 11
  • MISO (Master In Slave Out) - pin 12
  • CLK (ura) - pin 13
  • SS/CS (Slave Select/Chip Select) - pin 10

Ustvarjanje datoteke ».wav« s programsko opremo Audacity:

  • Odprite zvočno datoteko, ki jo želite pretvoriti v.wav v programu Audacity.
  • Kliknite na ime datoteke in nato izberite 'Split Stereo to Mono'. Ta možnost razdeli stereo zvok na dva monokanala. Zdaj lahko zaprete enega od kanalov.
  • Spremenite vrednost »Project Rate« na dnu na 16000 Hz. Ta vrednost ustreza največji frekvenci vzorčenja notranjega ADC -ja arduina.
  • Zdaj smo prišli do Datoteka-> Izvozi/izvozi kot WAV.
  • Izberite ustrezno mesto in ime datoteke. V meniju za kodiranje izberite 'Nepodpisani 8-bitni PCM', saj uporabljamo format PCM za shranjevanje zvoka v digitalni obliki.

4. korak: Priključite avdio izhod in mikrofon

Priključite avdio izhod in mikrofon
Priključite avdio izhod in mikrofon
Priključite avdio izhod in mikrofon
Priključite avdio izhod in mikrofon
Priključite avdio izhod in mikrofon
Priključite avdio izhod in mikrofon
Priključite avdio izhod in mikrofon
Priključite avdio izhod in mikrofon

Priključitev mikrofona:

  • Vcc - 3.3V
  • GND - GND
  • OUT - pin A0

OPOMBA:

  • Poskusite priključiti mikrofon neposredno na arduino, namesto da bi uporabili načrt, saj lahko povzroči nepotreben šum v vhodnem signalu.
  • Glave na modulu mikrofona dobro spajkajte, saj slabi spajkalni spoji povzročajo tudi hrup.
  • Ta mikrofonski modul ima nastavljiv ojačevalnik, ki ga je mogoče nadzorovati s pomočjo lonca na zadnji strani plošče. Predlagam, da dobite rahlo nizko vrednost, saj potem ne bo močno povečal hrupa, medtem ko boste lahko govorili ob ustih, kar bo povzročilo čistejši izhod.

Priključitev avdio izhoda:

  • Kondenzator 10 uF in 1 k ohmski upor postavite zaporedoma na ploščo s pozitivom kondenzatorja, priključenega na upor. Ti skupaj tvorijo RC filter, ki pretvori izhod PWM v analogni signal, ki se lahko napaja v ojačevalnik.
  • Priključite nožico 9 Arduina na drugi konec upora.
  • Negativni priključek kondenzatorja je povezan z levim in desnim kanalom ženskega avdio priključka.
  • GND avdio priključka se poveže z GND.
  • Zvočni priključek je priključen na ojačevalnik z Aux kablom. V mojem primeru sem uporabil zvočniški sistem računalnika.

OPOMBA:

Uporaba PWM kot avdio izhoda morda ni najboljša možnost, saj bi zunanji DAC zagotovil veliko boljšo ločljivost in kakovost. Poleg tega lahko kondenzator in upor v RC filtru povzročita neželen šum. Toda vseeno je bil rezultat za ta projekt precej dostojen

5. korak: Povežite gumbe

Povežite gumbe
Povežite gumbe
Povežite gumbe
Povežite gumbe
Povežite gumbe
Povežite gumbe

Projekt uporablja gumbe kot uporabniški vmesnik. Oba opravljata različne funkcije in se uporabljata različno, vendar imata enako ožičenje. Njihova povezava je naslednja:

  • Gumbe postavite na ploščo.
  • Pritrdite en priključek enega od gumbov na pin 2 arduina z 10k ohmskim uporom navzdol. Drugi priključek gumba se priključi na 5v. Torej, ko pritisnete gumb, pin 2 postane VISOK in to lahko zaznamo v kodi.
  • Drugi gumb se isto poveže z arduino pin 3 namesto 2.

Gumb, priključen na pin 2, predvaja naključno zvočno datoteko iz nabora vnaprej nameščenih zvočnih datotek na kartici SD, ko jo enkrat pritisnete.

Gumb, priključen na pin 3, je namenjen snemanju. Za snemanje morate pritisniti in držati ta gumb. Arduino začne snemati takoj, ko pritisnete ta gumb, in zaustavi snemanje, ko ta gumb spustite. Po prekinitvi snemanja se posnetek takoj predvaja.

6. korak: Naložite kodo

Naložite kodo
Naložite kodo
Naložite kodo
Naložite kodo
Naložite kodo
Naložite kodo

Preden naložite kodo, se prepričajte, da ste namestili vse potrebne knjižnice, kot so TMRpcm, SD itd.

Serijski monitor lahko odprete tudi po nalaganju kode, da dobite povratne informacije o tem, kaj arduino počne.

Trenutno koda ne manipulira s posnetim zvokom, da bi bil drugačen, vendar nameravam to funkcijo vključiti v naslednjo različico, kjer boste morda lahko s pomočjo lonca nastavili izhodno frekvenco zvočnega signala in dobili različne vrste zvokov.

In končali ste !!

Priporočena: