Turinys:

Arduino tampa kalbančiu Tomu: 6 žingsniai
Arduino tampa kalbančiu Tomu: 6 žingsniai

Video: Arduino tampa kalbančiu Tomu: 6 žingsniai

Video: Arduino tampa kalbančiu Tomu: 6 žingsniai
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Liepa
Anonim
Arduino tampa kalbančiu Tomu
Arduino tampa kalbančiu Tomu
Arduino tampa kalbančiu Tomu
Arduino tampa kalbančiu Tomu

Vienas seniausių prisiminimų apie išmaniojo telefono naudojimą buvo žaidimo „Kalbantis Tomas“žaidimas. Žaidimas buvo gana paprastas. Yra katė, vardu Tomas, kuri gali kalbėti. Žaidime Tomas klausėsi bet kokios informacijos per telefono mikrofoną ir tada pakartojo viską, ką išgirdo. Taigi, kad ir ką pasakytų Tomui, jis tą patį pakartotų savo aštriu balsu.

Nors tai skamba paprasta, visa ši procedūra reikalauja daug sudėtingų veiksmų, pavyzdžiui, imti skaitmeninės formos mikrofono analoginę įvestį, manipuliuoti garsu, kad Tomui būtų suteiktas unikalus balsas, o tada atkurti visų tų skaitmeninių verčių signalą, kad jis būtų atkurtas per garsiakalbį. Visi šie sudėtingi veiksmai, tačiau išmanusis telefonas su juo susitvarkė net 9–10 metų atgal!

Įdomu būtų pamatyti, ar tą patį galima padaryti naudojant pigią „Arduino“plokštę, pagrįstą mikrovaldikliu. Taigi, šioje pamokoje aš parodysiu, kaip iš „Arduino“ir kitos nebrangios elektronikos galite sukurti paprastą „Talking Tom“projektą.

Ši instrukcija buvo parašyta bendradarbiaujant su „Hatchnhack Makerspace“Delyje

PASTABA: Ši pamoka yra pirmoji projekto versija, kuri užbaigia „Talking Tom“funkciją „Talking Tom“, kur arduino galės pakartoti viską, ką jam sakote. Balso keitimo dalis bus įtraukta į būsimą versiją, nors dėl mažesnės „Arduino“integruotos ADC skiriamosios gebos įrašytas garsas jau skamba šiek tiek kitaip: P (tai galima aiškiai pastebėti projekto vaizdo įraše).

Taigi pradėkime!

1 žingsnis: naudojamos medžiagos

Naudotos medžiagos
Naudotos medžiagos
Naudotos medžiagos
Naudotos medžiagos
Naudotos medžiagos
Naudotos medžiagos

Techninė įranga:

  • Arduino UNO
  • MAX4466 mikrofono modulis su reguliuojamu stiprinimu
  • SPI pagrįstas SD kortelių skaitytuvo modulis
  • SD kortelė
  • Garso stiprintuvas, pvz., Kompiuterio garsiakalbis, PAM8403 stiprintuvo modulis ir kt.
  • Garsiakalbiai, skirti prijungti prie stiprintuvo
  • Moteriškas garso lizdas
  • 1 x 1k omo rezistorius
  • 2 x 10k omų rezistorius
  • 1 x 10uF kondensatorius
  • 2 x mygtukas
  • Trumpieji laidai

Programinė įranga:

  • „Arduino IDE“
  • „Audacity“(neprivaloma)
  • „Arduino“TMRpcm ir SD biblioteka

2 žingsnis: pagrindinė projekto apžvalga

Projektas daugiausia turi 2 funkcijas:

  • Jis gali atkurti atsitiktinai pasirinktą garsą iš iš anksto įdiegtų garso failų rinkinio SD kortelėje garso efektų ir pan.
  • Jis gali įrašyti garso įvestį iš mikrofono ir atkurti, kai tik įrašymas nutrūksta. Tai leidžia arduino pakartoti viską, ką girdėjo per mikrofoną.

Projekto vartotojo sąsają daugiausia sudaro 2 mygtukai, kurių kiekvienas atitinka vieną iš aukščiau paminėtų funkcijų.

Pagrindinį sunkų darbą įrašant ir atkuriant garso failus iš SD kortelės atlieka TMRpcm biblioteka

Garso įrašas naudoja garso modulį MAX4466 mikrofono modulį, vidinį „arduino“ADC ir TMRpcm biblioteką, kad būtų galima atrinkti garso įrašą ir laikinai jį išsaugoti SD kortelėje kaip „.wav“failą. „.wav“garso failai naudoja PCM (impulso kodo moduliaciją), kad garso duomenys būtų saugomi skaitmeniniu formatu, kad juos būtų galima lengvai atkurti. Paprastai garso projektams geriau naudoti išorinį ADC, nes „Arduino“ADC skiriamoji geba nėra tokia didelė, tačiau ji tinka šiam projektui.

Garso failų (iš anksto įdiegtų ir įrašytų) leidimas taip pat atliekamas naudojant TMRpcm biblioteką, kuri perduoda garsą kaip PWM signalą iš PWM įjungto arduino kaiščio. Tada šis signalas tiekiamas į RC filtrą, kad būtų gautas analoginis signalas, kuris vėliau tiekiamas į stiprintuvą, kad būtų galima atkurti garsą per garsiakalbį. Šiai daliai taip pat galite naudoti išorinį DAC, nes „arduino“jo viduje neturi. DAC naudojimas gali būti geresnis pasirinkimas, nes tai žymiai pagerintų garso kokybę.

Ryšys tarp SD kortelės modulio ir arduino vyksta per SPI (Serial periferinė sąsaja). Šis kodas naudoja SD ir SPI biblioteką, kad lengvai pasiektų SD kortelės turinį.

3 žingsnis: Paruoškite SD kortelę ir prijunkite SD kortelės modulį

Paruoškite SD kortelę ir prijunkite SD kortelės modulį
Paruoškite SD kortelę ir prijunkite SD kortelės modulį
Paruoškite SD kortelę ir prijunkite SD kortelės modulį
Paruoškite SD kortelę ir prijunkite SD kortelės modulį
Paruoškite SD kortelę ir prijunkite SD kortelės modulį
Paruoškite SD kortelę ir prijunkite SD kortelės modulį
Paruoškite SD kortelę ir prijunkite SD kortelės modulį
Paruoškite SD kortelę ir prijunkite SD kortelės modulį
  • Pirmiausia turite formatuoti SD kortelę su FAT16 arba FAT32 failų sistema (SD kortelę galite formatuoti naudodami savo išmanųjį telefoną).
  • Dabar iš anksto įdiekite kai kuriuos.wav garso failus į SD kortelę. Galite generuoti.wav failus naudodami „Audacity“(žr. Toliau pateiktas instrukcijas). Nepamirškite pavadinti failų kaip audio_1.wav, audio_2.wav, audio_3.wav ir pan.

SD kortelės modulis naudoja SPI, kad perduotų duomenis su arduino. Todėl jis jungiasi tik prie tų kaiščių, kuriuose įgalintas SPI. Šios jungtys yra tokios:

  • Vcc - 5v
  • GND - GND
  • MOSI („Master Out Slave In“) - kaištis 11
  • MISO („Master In Slave Out“) - kaištis 12
  • CLK (laikrodis) - 13 kaištis
  • SS/CS (Slave Select/Chip Select) - kaištis 10

„. Wav“failo generavimas naudojant „Audacity“programinę įrangą:

  • „Audacity“atidarykite garso failą, kurį norite konvertuoti į.wav.
  • Spustelėkite failo pavadinimą ir pasirinkite „Split Stereo to Mono“. Ši parinktis padalina stereofoninį garsą į du monofoninius kanalus. Dabar galite uždaryti vieną iš kanalų.
  • Pakeiskite „Project Rate“reikšmę apačioje į 16000 Hz. Ši vertė atitinka maksimalų arduino vidinio ADC mėginių ėmimo dažnį.
  • Dabar eikite į Failas-> Eksportuoti/eksportuoti kaip WAV.
  • Pasirinkite tinkamą failo vietą ir pavadinimą. Kodavimo meniu pasirinkite „Nepasirašytas 8 bitų PCM“, nes mes naudojame PCM formatą, norėdami išsaugoti garsą skaitmeniniu formatu.

4 veiksmas: prijunkite garso išvestį ir mikrofoną

Prijunkite garso išvestį ir mikrofoną
Prijunkite garso išvestį ir mikrofoną
Prijunkite garso išvestį ir mikrofoną
Prijunkite garso išvestį ir mikrofoną
Prijunkite garso išvestį ir mikrofoną
Prijunkite garso išvestį ir mikrofoną
Prijunkite garso išvestį ir mikrofoną
Prijunkite garso išvestį ir mikrofoną

Mikrofono prijungimas:

  • Vcc - 3.3v
  • GND - GND
  • OUT - A0 kaištis

PASTABA:

  • Pabandykite prijungti mikrofoną tiesiai prie arduino, o ne naudoti duonos lentą, nes tai gali sukelti nereikalingą triukšmą įvesties signale.
  • Būtinai švariai lituokite mikrofono modulio antraštes, nes blogos lydmetalio jungtys taip pat kelia triukšmą.
  • Šis mikrofono modulis turi reguliuojamą stiprinimą, kurį galima valdyti naudojant puodą, esantį plokštės gale. Aš siūlau išlaikyti stiprumą šiek tiek mažesnį, nes tada jis labai nesustiprins triukšmo, o jūs galėsite kalbėti, laikydami jį šalia burnos, todėl išvestis bus švaresnė.

Garso išvesties prijungimas:

  • Įdėkite 10 uF kondensatorių ir 1 k omo rezistorių nuosekliai ant duonos lentos, prie kondensatoriaus teigiamo prijungto prie rezistoriaus. Jie kartu sudaro RC filtrą, kuris PWM išėjimą paverčia analoginiu signalu, kurį galima tiekti į stiprintuvą.
  • Prijunkite „Arduino“kaištį 9 prie kito rezistoriaus galo.
  • Neigiamas kondensatoriaus gnybtas prijungiamas prie kairiojo ir dešiniojo moterų garso lizdo kanalo.
  • Garso lizdo GND prijungiamas prie GND.
  • Garso lizdas prijungtas prie stiprintuvo naudojant „Aux“kabelį. Mano atveju naudojau savo kompiuterio garsiakalbių sistemą.

PASTABA:

PWM naudojimas kaip garso išvestis gali būti ne pats geriausias pasirinkimas, nes išorinis DAC užtikrintų daug geresnę skiriamąją gebą ir kokybę. Be to, RC filtro kondensatorius ir rezistorius gali sukelti nepageidaujamą triukšmą. Tačiau šio projekto rezultatas buvo gana geras

5 žingsnis: prijunkite mygtukus

Sujunkite mygtukus
Sujunkite mygtukus
Sujunkite mygtukus
Sujunkite mygtukus
Sujunkite mygtukus
Sujunkite mygtukus

Projektas naudoja mygtukus kaip vartotojo sąsają. Abu jie atlieka skirtingas funkcijas ir yra naudojami skirtingai, tačiau turi tą patį laidą. Jų ryšys yra toks:

  • Padėkite mygtukus ant duonos lentos.
  • Pritvirtinkite vieną iš vieno mygtuko gnybtų prie arduino 2 kaiščio su 10k omų nuleidžiamu rezistoriumi. Kitas mygtuko gnybtas prijungiamas prie 5V. Taigi, kai paspaudžiamas mygtukas, kaištis 2 tampa AUKŠTAS ir tai galime aptikti kodu.
  • Kitas mygtukas taip pat prijungiamas prie „arduino“kaiščio 3, o ne 2.

Mygtukas, prijungtas prie 2 kaiščio, leidžia vieną kartą paspaudus atsitiktinį garso failą iš iš anksto įdiegtų garso failų rinkinio SD kortelėje.

Mygtukas, prijungtas prie 3 kaiščio, skirtas įrašymui. Norėdami įrašyti, turite paspausti ir palaikyti šį mygtuką. „Arduino“pradeda įrašinėti, kai tik paspaudžiamas šis mygtukas, ir sustabdo įrašymą, kai šis mygtukas atleidžiamas. Sustabdžius įrašymą, jis iškart pakartoja tą įrašą.

6 veiksmas: įkelkite kodą

Įkelkite kodą
Įkelkite kodą
Įkelkite kodą
Įkelkite kodą
Įkelkite kodą
Įkelkite kodą

Prieš įkeliant kodą, įsitikinkite, kad įdiegėte visas reikalingas bibliotekas, pvz., TMRpcm, SD ir kt.

Įkėlę kodą taip pat galite atidaryti serijinį monitorių, kad gautumėte atsiliepimą apie tai, ką daro arduino.

Šiuo metu kodas ne manipuliuoja įrašytu garsu, kad jis skambėtų kitaip, tačiau planuoju šią funkciją įtraukti į kitą versiją, kurioje galbūt galėsite nustatyti garso signalo išvesties dažnį naudodami puodą ir gauti skirtingų tipų garsus.

Ir jūs baigėte !!

Rekomenduojamas: