Inhaltsverzeichnis:

Arduino wird zum Talking Tom - Gunook
Arduino wird zum Talking Tom - Gunook

Video: Arduino wird zum Talking Tom - Gunook

Video: Arduino wird zum Talking Tom - Gunook
Video: How Arduino is open-sourcing imagination | Massimo Banzi 2024, Juli
Anonim
Arduino wird zum Talking Tom
Arduino wird zum Talking Tom
Arduino wird zum Talking Tom
Arduino wird zum Talking Tom

Eine meiner ältesten Erinnerungen an die Verwendung eines Smartphones war das Spielen des Spiels "Talking Tom". Das Spiel war ziemlich einfach. Es gibt eine Katze namens Tom, die irgendwie sprechen kann. Im Spiel hörte Tom über das Mikrofon des Telefons auf jede Eingabe und wiederholte dann, was er hörte. Also, was auch immer Tom sagen würde, es würde dasselbe mit seiner eigenen schrillen Stimme wiederholen.

Obwohl es einfach klingt, erfordert dieses ganze Verfahren viele komplexe Schritte wie das Abtasten des analogen Mikrofoneingangs in digitaler Form, die Manipulation des Audios, um Tom seine einzigartige Stimme zu verleihen und dann das Signal aus all diesen digitalen Werten zu rekonstruieren, um es über den Lautsprecher wiederzugeben. All diese komplexen Schritte, aber das Smartphone hat es auch vor 9 bis 10 Jahren wie ein Zauber gehandhabt!

Das Interessante wäre zu sehen, ob das gleiche mit einem billigen Arduino-Board auf Mikrocontrollerbasis möglich ist. Also, in diesem anweisbaren werde ich zeigen, wie Sie ein einfaches Talking Tom wie Projekt aus einem Arduino und einer anderen preiswerten Elektronik machen können.

Dieses instructable wurde in Zusammenarbeit mit Hatchnhack Makerspace in Delhi geschrieben

HINWEIS: Dieses anweisbare ist die erste Version des Projekts, die die 'Talking'-Funktion von Talking Tom vervollständigt, wo das Arduino alles wiederholen kann, was Sie ihm sagen. Der Teil der Stimmänderung wird in der zukünftigen Version behandelt, obwohl das aufgenommene Audio aufgrund der geringeren Auflösung von Arduinos eingebautem ADC bereits etwas anders klingt:P (Dies ist im Projektvideo deutlich zu erkennen).

So lass uns anfangen!

Schritt 1: Verwendete Materialien

Verwendete Materialien
Verwendete Materialien
Verwendete Materialien
Verwendete Materialien
Verwendete Materialien
Verwendete Materialien

Hardware:

  • Ein Arduino UNO
  • MAX4466 Mikrofonmodul mit einstellbarer Verstärkung
  • SPI-basiertes SD-Kartenlesermodul
  • SD-Karte
  • Audioverstärker wie PC-Lautsprecher, PAM8403-Verstärkermodul usw.
  • Lautsprecher zum Anschluss an den Verstärker
  • Weibliche Audiobuchse
  • 1 x 1k Ohm Widerstand
  • 2 x 10k Ohm Widerstand
  • 1 x 10uF Kondensator
  • 2 x Druckknopf
  • Überbrückungsdrähte

Software:

  • Arduino-IDE
  • Kühnheit (optional)
  • TMRpcm- und SD-Bibliothek für Arduino

Schritt 2: Ein grundlegender Überblick über das Projekt

Das Projekt hat hauptsächlich 2 Funktionen:

  • Es kann ein zufällig ausgewähltes Audio aus einer Reihe vorinstallierter Audiodateien auf der SD-Karte für Soundeffekte usw.
  • Es kann Toneingaben vom Mikrofon aufnehmen und wiedergeben, sobald die Aufnahme stoppt. Auf diese Weise kann das Arduino alles wiederholen, was es über das Mikrofon gehört hat.

Die Benutzeroberfläche des Projekts besteht hauptsächlich aus 2 Drucktasten, die jeweils einer der oben genannten Funktionen entsprechen.

Die Hauptarbeit des Aufnehmens und Abspielens der Audiodateien von der SD-Karte wird von der TMRpcm-Bibliothek übernommen

Die Audioaufnahme verwendet das MAX4466-Mikrofonmodul, den internen ADC von Arduino und die TMRpcm-Bibliothek, um das Audio zu sampeln und dann vorübergehend als '.wav'-Datei zur Wiedergabe auf der SD-Karte zu speichern. '.wav'-Audiodateien verwenden PCM (Pulse Code Modulation), um die Audiodaten im digitalen Format zu speichern, damit sie leicht wieder abgespielt werden können. Im Allgemeinen ist es besser, einen externen ADC für audiobasierte Projekte zu verwenden, da die Auflösung von Arduinos ADC nicht so hoch ist, aber für dieses Projekt funktioniert.

Das Abspielen der Audiodateien (vorinstalliert und aufgezeichnet) erfolgt auch mit Hilfe der TMRpcm-Bibliothek, die das Audio als PWM-Signal von einem PWM-fähigen Pin des Arduino ausgibt. Dieses Signal wird dann in einen RC-Filter eingespeist, um ein analoges Signal zu erhalten, das dann in einen Verstärker eingespeist wird, um das Audio über einen Lautsprecher abzuspielen. Für diesen Teil können Sie auch einen externen DAC verwenden, da Arduino intern keinen hat. Die Verwendung eines DAC könnte eine bessere Option sein, da dies die Audioqualität erheblich verbessern würde.

Die Kommunikation zwischen dem SD-Kartenmodul und Arduino erfolgt über SPI (Serial Peripheral Interface). Der Code nutzt die SD- und SPI-Bibliothek, um einfach auf den Inhalt der SD-Karte zuzugreifen.

Schritt 3: Bereiten Sie die SD-Karte vor und schließen Sie das SD-Kartenmodul an

Bereiten Sie die SD-Karte vor und schließen Sie das SD-Kartenmodul an
Bereiten Sie die SD-Karte vor und schließen Sie das SD-Kartenmodul an
Bereiten Sie die SD-Karte vor und schließen Sie das SD-Kartenmodul an
Bereiten Sie die SD-Karte vor und schließen Sie das SD-Kartenmodul an
Bereiten Sie die SD-Karte vor und schließen Sie das SD-Kartenmodul an
Bereiten Sie die SD-Karte vor und schließen Sie das SD-Kartenmodul an
Bereiten Sie die SD-Karte vor und schließen Sie das SD-Kartenmodul an
Bereiten Sie die SD-Karte vor und schließen Sie das SD-Kartenmodul an
  • Zuerst müssen Sie die SD-Karte mit einem FAT16- oder FAT32-Dateisystem formatieren (Sie können die SD-Karte mit Ihrem Smartphone formatieren).
  • Installieren Sie nun einige.wav-Audiodateien auf der SD-Karte vor. Sie können.wav-Dateien mit Audacity generieren (siehe Anweisungen unten). Denken Sie daran, die Dateien als audio_1.wav, audio_2.wav, audio_3.wav usw. zu benennen.

Das SD-Kartenmodul verwendet SPI, um die Daten mit dem Arduino zu kommunizieren. Daher verbindet es sich nur mit den Pins, die SPI aktiviert haben. Diese Verbindungen sind wie folgt:

  • Vcc - 5V
  • Masse - Masse
  • MOSI (Master Out Slave In) - Pin 11
  • MISO (Master In Slave Out) - Pin 12
  • CLK (Uhr) - Stift 13
  • SS/CS (Slave-Auswahl/Chip-Auswahl) - Pin 10

Generieren einer '.wav'-Datei mit der Audacity-Software:

  • Öffnen Sie die Audiodatei, die Sie in.wav konvertieren möchten, in Audacity.
  • Klicken Sie auf den Dateinamen und wählen Sie dann 'Stereo in Mono aufteilen'. Diese Option teilt das Stereo-Audio in zwei Monokanäle auf. Sie können jetzt einen der Kanäle schließen.
  • Ändern Sie den Wert für "Projektrate" unten auf 16000 Hz. Dieser Wert entspricht der maximalen Abtastfrequenz des internen ADC von Arduino.
  • Gehen Sie nun zu Datei->Exportieren/Exportieren als WAV.
  • Wählen Sie den entsprechenden Speicherort und Namen der Datei. Wählen Sie im Kodierungsmenü 'Unsigned 8-bit PCM', da wir das PCM-Format verwenden, um das Audio im digitalen Format zu speichern.

Schritt 4: Verbinden Sie den Audioausgang und das Mikrofon

Verbinden Sie den Audioausgang und das Mikrofon
Verbinden Sie den Audioausgang und das Mikrofon
Verbinden Sie den Audioausgang und das Mikrofon
Verbinden Sie den Audioausgang und das Mikrofon
Verbinden Sie den Audioausgang und das Mikrofon
Verbinden Sie den Audioausgang und das Mikrofon
Verbinden Sie den Audioausgang und das Mikrofon
Verbinden Sie den Audioausgang und das Mikrofon

Anschließen des Mikrofons:

  • Vcc - 3,3 V
  • Masse - Masse
  • OUT - A0-Pin

HINWEIS:

  • Versuchen Sie, das Mikrofon direkt an das Arduino anzuschließen, anstatt ein Steckbrett zu verwenden, da dies unnötiges Rauschen im Eingangssignal verursachen könnte.
  • Achten Sie darauf, die Header am Mikrofonmodul sauber zu verlöten, da schlechte Lötstellen auch Rauschen erzeugen.
  • Dieses Mikrofonmodul verfügt über eine einstellbare Verstärkung, die mit Hilfe eines Potis auf der Rückseite des Boards gesteuert werden kann. Ich würde vorschlagen, dass Sie die Verstärkung etwas niedrig halten, da dies das Rauschen nicht sehr verstärkt, während Sie sprechen können, während Sie es in der Nähe Ihres Mundes halten, was zu einer saubereren Ausgabe führt.

Anschließen des Audioausgangs:

  • Platzieren Sie den 10 uF Kondensator und den 1k Ohm Widerstand in Reihe auf dem Steckbrett mit dem Plus des Kondensators, der mit dem Widerstand verbunden ist. Diese bilden zusammen einen RC-Filter, der den PWM-Ausgang in ein analoges Signal umwandelt, das in den Verstärker eingespeist werden kann.
  • Verbinden Sie den Pin 9 von Arduino mit dem anderen Ende des Widerstands.
  • Der Minuspol des Kondensators wird mit dem linken und rechten Kanal der Audiobuchse verbunden.
  • GND der Audiobuchse wird mit GND verbunden.
  • Die Audiobuchse ist mit einem Aux-Kabel mit dem Verstärker verbunden. In meinem Fall habe ich das Lautsprechersystem meines PCs verwendet.

HINWEIS:

Die Verwendung von PWM als Audioausgang ist möglicherweise nicht die beste Option, da ein externer DAC eine viel bessere Auflösung und Qualität bieten würde. Außerdem können der Kondensator und der Widerstand im RC-Filter unerwünschtes Rauschen induzieren. Aber immer noch war die Ausgabe für dieses Projekt ziemlich anständig

Schritt 5: Verdrahten Sie die Tasten

Verdrahten Sie die Tasten
Verdrahten Sie die Tasten
Verdrahten Sie die Tasten
Verdrahten Sie die Tasten
Verdrahten Sie die Tasten
Verdrahten Sie die Tasten

Das Projekt verwendet Schaltflächen als Benutzeroberfläche. Beide erfüllen unterschiedliche Funktionen und werden unterschiedlich verwendet, haben aber die gleiche Verdrahtung. Ihre Verbindung ist wie folgt:

  • Legen Sie die Knöpfe auf das Steckbrett.
  • Befestigen Sie einen Anschluss eines der Knöpfe an Pin 2 des Arduino mit einem 10k Ohm Pulldown-Widerstand. Der andere Anschluss der Taste wird an 5V angeschlossen. Wenn also die Taste gedrückt wird, wird Pin 2 HIGH und das können wir im Code erkennen.
  • Der andere Knopf wird gleich mit Arduinos Pin 3 statt 2 verbunden.

Die an Pin 2 angeschlossene Taste spielt bei einmaligem Drücken eine zufällige Audiodatei aus dem Satz vorinstallierter Audiodateien auf der SD-Karte ab.

Der an Pin 3 angeschlossene Taster dient der Aufnahme. Sie müssen diese Taste für die Aufnahme gedrückt halten. Das Arduino startet die Aufnahme, sobald diese Taste gedrückt wird und stoppt die Aufnahme, wenn diese Taste losgelassen wird. Nach dem Stoppen der Aufnahme wird diese Aufnahme sofort wiedergegeben.

Schritt 6: Laden Sie den Code hoch

Laden Sie den Code hoch
Laden Sie den Code hoch
Laden Sie den Code hoch
Laden Sie den Code hoch
Laden Sie den Code hoch
Laden Sie den Code hoch

Stellen Sie vor dem Hochladen des Codes sicher, dass Sie alle erforderlichen Bibliotheken wie TMRpcm, SD usw. installiert haben.

Sie können den Serial Monitor auch öffnen, nachdem Sie den Code hochgeladen haben, um ein Feedback darüber zu erhalten, was das Arduino tut.

Derzeit manipuliert der Code das aufgenommene Audio nicht, um es anders klingen zu lassen, aber ich plane, diese Funktion in die nächste Version aufzunehmen, bei der Sie möglicherweise die Ausgangsfrequenz des Audiosignals mit Hilfe von Pot einstellen und verschiedene Arten von Sounds erhalten können.

Und Sie sind fertig!!

Empfohlen: