Tartalomjegyzék:

Arduino beszélő Tom lesz: 6 lépés
Arduino beszélő Tom lesz: 6 lépés

Videó: Arduino beszélő Tom lesz: 6 lépés

Videó: Arduino beszélő Tom lesz: 6 lépés
Videó: Megkérdezték ezt a ROBOTOT, hogy hisz-e ISTENBEN 2024, Július
Anonim
Arduino beszélő Tom lesz
Arduino beszélő Tom lesz
Arduino beszélő Tom lesz
Arduino beszélő Tom lesz

Az egyik legrégebbi emlékem az okostelefon használatáról a „Beszélő Tom” játék. A játék elég egyszerű volt. Van egy macska, akit Tomnak hívnak. A játékban Tom minden bemenetet meghallgatott a telefon mikrofonján keresztül, majd megismételte a hallottakat. Szóval, bármit is mondjunk Tomnak, csak ugyanazt ismételné meg a maga éles hangján.

Bár egyszerűnek hangzik, ez az egész eljárás sok összetett lépést igényel, mint például a mikrofon analóg bemenetének digitális formában történő mintavételezése, a hang manipulálása annak érdekében, hogy Tom egyedi hangja legyen, majd a jel rekonstruálása mindezen digitális értékekből a hangszórón keresztül történő lejátszáshoz. Mindezek az összetett lépések, de az okostelefon varázslatosan kezelte még 9-10 évvel ezelőtt is!

Érdekes lenne látni, hogy ugyanez megtehető -e egy olcsó mikrokontroller alapú Arduino táblával. Tehát ebben az oktathatóban megmutatom, hogyan készíthet egy egyszerű Beszélő Tom -szerű projektet egy Arduino -ból és néhány más olcsó elektronikából.

Ez az oktatható a Delhi -i Hatchnhack Makerspace -szel közösen íródott

MEGJEGYZÉS: Ez az utasítás a projekt első változata, amely kiegészíti a Talking Tom „Talking” funkcióját, ahol az arduino képes lesz megismételni, amit mond. A hangváltó részt a jövőbeli verzió tartalmazza, bár az Arduino beépített ADC -jének kisebb felbontása miatt a rögzített hang már egy kicsit másként hangzik: P (Ez egyértelműen észrevehető a projektvideóban).

Kezdjük hát!

1. lépés: Használt anyagok

Felhasznált anyagok
Felhasznált anyagok
Felhasznált anyagok
Felhasznált anyagok
Felhasznált anyagok
Felhasznált anyagok

Hardver:

  • Egy Arduino UNO
  • MAX4466 mikrofon modul állítható erősítéssel
  • SPI alapú SD kártyaolvasó modul
  • SD kártya
  • Audioerősítő, például PC hangszóró, PAM8403 erősítő modul stb.
  • Hangszórók az erősítőhöz való csatlakoztatáshoz
  • Női audiocsatlakozó
  • 1 x 1 k ohmos ellenállás
  • 2 x 10 k ohmos ellenállás
  • 1 x 10uF kondenzátor
  • 2 x nyomógomb
  • Jumper vezetékek

Szoftver:

  • Arduino IDE
  • Audacity (opcionális)
  • TMRpcm és SD könyvtár az Arduino számára

2. lépés: A projekt alapvető áttekintése

A projektnek alapvetően 2 jellemzője van:

  • Véletlenszerűen kiválasztott hangot tud lejátszani az SD-kártyán előre telepített hangfájlokból, hanghatások stb.
  • Képes felvenni a hangbemenetet a mikrofonról, majd lejátszani, amint a felvétel leáll. Ez lehetővé teszi, hogy az arduino megismételje a mikrofonon keresztül hallottakat.

A projekt felhasználói felülete alapvetően 2 nyomógombból áll, amelyek mindegyike megfelel a fenti funkciók egyikének.

Az SD -kártyáról származó hangfájlok rögzítésének és lejátszásának fő kemény munkáját a TMRpcm könyvtár végzi

A hangfelvétel a MAX4466 mikrofonmodult, az arduino belső ADC -jét és a TMRpcm könyvtárat használja a hang mintavételezéséhez, majd ideiglenes tárolásához az SD -kártyán.wav fájlként lejátszás céljából. A „.wav” hangfájlok PCM (Pulse Code Modulation) módszerrel tárolják az audioadatokat digitális formátumban, így könnyen újra lejátszhatók. Általában jobb, ha külső ADC -t használunk audio alapú projektekhez, mivel az Arduino ADC felbontása nem olyan magas, de működik ebben a projektben.

Az audio fájlok (előre telepített és rögzített) lejátszása szintén a TMRpcm könyvtár segítségével történik, amely a hangot PWM jelként adja ki az arduino PWM-kompatibilis tűjéről. Ezt a jelet ezután egy RC szűrőbe táplálják, hogy analóg jelet kapjanak, amelyet ezután egy erősítőbe táplálnak, hogy a hangot egy hangszórón keresztül játsszák le. Ehhez a részhez külső DAC -ot is használhat, mivel az arduino -nak nincs belsőleg. A DAC használata jobb megoldás lehet, mivel jelentősen javítja a hangminőséget.

Az SD kártya modul és az arduino közötti kommunikáció SPI -n (Serial perheral Interface) keresztül történik. A kód az SD & SPI könyvtárat használja az SD kártya tartalmának könnyű eléréséhez.

3. lépés: Készítse elő az SD -kártyát és csatlakoztassa az SD -kártya modult

Készítse elő az SD -kártyát és csatlakoztassa az SD -kártya modult
Készítse elő az SD -kártyát és csatlakoztassa az SD -kártya modult
Készítse elő az SD -kártyát és csatlakoztassa az SD -kártya modult
Készítse elő az SD -kártyát és csatlakoztassa az SD -kártya modult
Készítse elő az SD -kártyát és csatlakoztassa az SD -kártya modult
Készítse elő az SD -kártyát és csatlakoztassa az SD -kártya modult
Készítse elő az SD -kártyát és csatlakoztassa az SD -kártya modult
Készítse elő az SD -kártyát és csatlakoztassa az SD -kártya modult
  • Először SD -kártyaként kell formázni FAT16 vagy FAT32 fájlrendszerrel (az SD -kártya formázásához használhatja okostelefonját).
  • Most telepítsen elő néhány.wav hangfájlt az SD-kártyára.. Wav fájlokat hozhat létre az Audacity segítségével (lásd az alábbi utasításokat). Ne felejtse el elnevezni a fájlokat audio_1.wav, audio_2.wav, audio_3.wav és így tovább.

Az SD -kártya modul SPI segítségével kommunikálja az adatokat az arduino -val. Ezért csak azokhoz a csapokhoz csatlakozik, amelyekben engedélyezve van az SPI. Ezek a kapcsolatok a következők:

  • Vcc - 5v
  • GND - GND
  • MOSI (Master Out Slave In) - 11. tű
  • MISO (Master In Slave Out) - 12. tű
  • CLK (óra) - 13. tű
  • SS/CS (Slave Select/Chip Select) - 10. tű

". Wav" fájl létrehozása az Audacity szoftverrel:

  • Nyissa meg az.uda formátumba konvertálni kívánt hangfájlt az Audacity alkalmazásban.
  • Kattintson a fájl nevére, majd válassza a „Sztereó felosztása monóvá” lehetőséget. Ez az opció a sztereó hangot két monó csatornára osztja fel. Most bezárhatja az egyik csatornát.
  • Módosítsa a „Project Rate” értéket alul 16000 Hz -re. Ez az érték megfelel az arduino belső ADC maximális mintavételi gyakoriságának.
  • Most a Fájl-> Exportálás/Exportálás WAV-ként.
  • Válassza ki a fájl megfelelő helyét és nevét. A kódolási menüben válassza az „Unsigned 8-bit PCM” lehetőséget, mivel a PCM formátumot használjuk a hang digitális formátumban történő tárolására.

4. lépés: Csatlakoztassa az audio kimenetet és a mikrofont

Csatlakoztassa az audio kimenetet és a mikrofont
Csatlakoztassa az audio kimenetet és a mikrofont
Csatlakoztassa az audio kimenetet és a mikrofont
Csatlakoztassa az audio kimenetet és a mikrofont
Csatlakoztassa az audio kimenetet és a mikrofont
Csatlakoztassa az audio kimenetet és a mikrofont
Csatlakoztassa az audio kimenetet és a mikrofont
Csatlakoztassa az audio kimenetet és a mikrofont

A mikrofon csatlakoztatása:

  • Vcc - 3.3v
  • GND - GND
  • OUT - A0 érintkező

JEGYZET:

  • Próbálja közvetlenül a mikrofont az arduino -hoz csatlakoztatni, ahelyett, hogy kenyérsütőt használna, mert szükségtelen zajt okozhat a bemeneti jelben.
  • Győződjön meg róla, hogy tisztán forrasztja a fejléceket a mikrofonmodulon, mivel a rossz forrasztási kötések zajt is okoznak.
  • Ez a mikrofon modul állítható erősítéssel rendelkezik, amely a tábla hátoldalán lévő edény segítségével vezérelhető. Azt javaslom, hogy tartsa kissé alacsonyan az erősítést, mert akkor nem fogja erősíteni a zajt, miközben beszélhet, miközben a szája közelében tartja, ami tisztább kimenetet eredményez.

Az audio kimenet csatlakoztatása:

  • Helyezze sorba a 10 uF kondenzátort és az 1 k ohmos ellenállást a kenyértáblára úgy, hogy az ellenálláshoz csatlakoztatott kondenzátor pozitív. Ezek együtt alkotnak egy RC szűrőt, amely a PWM kimenetet analóg jellé alakítja, amelyet az erősítőbe lehet táplálni.
  • Csatlakoztassa az Arduino 9 -es csapját az ellenállás másik végéhez.
  • A kondenzátor negatív kivezetése csatlakozik a női audio jack bal és jobb csatornájához.
  • Az Audio jack GND csatlakozik a GND -hez.
  • Az audio csatlakozó Aux kábellel csatlakozik az erősítőhöz. Esetemben a számítógép hangszórórendszerét használtam.

JEGYZET:

A PWM hangkimenetként való használata nem a legjobb megoldás, mivel egy külső DAC sokkal jobb felbontást és minőséget biztosít. Ezenkívül az RC szűrő kondenzátora és ellenállása nem kívánt zajt válthat ki. De ennek a projektnek a kimenete elég tisztességes volt

5. lépés: Csatlakoztassa a gombokat

Vegye fel a gombokat
Vegye fel a gombokat
Vegye fel a gombokat
Vegye fel a gombokat
Vegye fel a gombokat
Vegye fel a gombokat

A projekt nyomógombokat használ felhasználói felületként. Mindkettő különböző funkciókat lát el, és eltérő módon használják, de ugyanaz a huzalozás. Kapcsolatuk a következő:

  • Helyezze a gombokat a kenyértáblára.
  • Csatlakoztassa az egyik gomb egyik csatlakozóját az arduino 2. tűjéhez 10 k ohmos lehúzható ellenállással. A gomb másik terminálja 5V -ra van csatlakoztatva. Tehát, ha megnyomja a gombot, a 2 -es tű HIGH lesz, és ezt a kódban észlelhetjük.
  • A másik gomb ugyanúgy csatlakozik az arduino 3 -as tűjéhez, mint a 2 -eshez.

A 2-es tűhöz csatlakoztatott gomb véletlenszerű audio fájlt játszik le az SD-kártyán lévő előre telepített hangfájlok készletéből, ha egyszer megnyomja.

A 3 -as érintkezőhöz csatlakoztatott gomb a felvételt szolgálja. Ezt a gombot le kell nyomni a felvételhez. Az arduino azonnal elkezdi a felvételt, amint megnyomja ezt a gombot, és leállítja a felvételt, amikor e gombot felengedi. A felvétel leállítása után azonnal lejátssza a felvételt.

6. lépés: Töltse fel a kódot

Töltse fel a kódot
Töltse fel a kódot
Töltse fel a kódot
Töltse fel a kódot
Töltse fel a kódot
Töltse fel a kódot

A kód feltöltése előtt győződjön meg arról, hogy telepítette az összes szükséges könyvtárat, például TMRpcm, SD stb.

A soros monitort a kód feltöltése után is megnyithatja, hogy visszajelzést kapjon az arduino tevékenységéről.

Jelenleg a kód nem manipulálja a rögzített hangot, hogy másképp szóljon, de azt tervezem, hogy ezt a funkciót beépítem a következő verzióba, ahol a pot segítségével beállíthatja az audiojel kimeneti frekvenciáját, és különböző típusú hangokat kaphat.

És kész vagy !!

Ajánlott: