Sprechende Tastatur

Sat 09 January 2021

Analogtechnik, Arduino, Elektronik, Spielzeug

Übersetzungen: EN

Diese Seite beschäftigt sich mit dem Umbau einer alten Tastatur, damit sie als Lernspielzeug für Kleinkinder eingesetzt werden kann.

HINWEIS: Bei diesem Hobbyprojekt handelt es sich um einen Prototypen einer Idee und nicht um ein fertiges Produkt. Nachbau und Verwendung erfolgen auf eigenes Risiko!!!

Allgemeines

Unser kleiner Sohn ist sehr interessiert an Technik, insbesondere auch jene, welche auch von Erwachsenen verwendet wird. Es findet alles elektronische interessant, und was Töne von sich gibt ist unschlagbar.

Bei einem Gespräch mit anderen technikaffinen Eltern kam das Gespräch auf alte Tastaturen als Spielsache. Einige hatten gute Erfahrungen dabei gemacht, die Buchstaben der Tastatur als Mittel zu benutzen, die Buchstaben des Alphabets zu vermitteln. Hieraus entstand die spontane Idee, dass man die Tastatur selbst die Ansage übernehmen könnte.

Funktionsbeschreibung

Das Ganze ist mal wieder eine Kombination von vielen bereits vorhandenen Bausteinen, die zusammen etwas Tolles ergeben. Alle Bauteile lagen halt herum und daher wurden sie verwendet, bestimmt gibt es auch andere Möglichkeiten.

Eine (sehr) alte Tastatur (Baujahr ca. 1988), bringt das Gehäuse und "User-Interface" mit. Ein Arduino Nano ist mit dem original-Tastaturcontroller verbunden und nimmt die Eingaben entgegen.

Der Arduino gibt nun über eine PWM Samples aus, die Samples werden von einer FAT formatierten SD-Karte geladen. Die meisten druckenden Tasten, also die normalerweise auch Zeichen erzeugen, werden nach ein paar Regeln auf Dateinamen abgebildet. Die Samples sind im .WAV-Format abgelegt, müssen aber mono, 8bit und mit einer Samplerate aus der Menge von (32, 22.05, 16, 11.25 oder 8 kHz) sein. Damit ist es relativ einfach, die auszugebenden Samples zu tauschen, ohne spezielle Software zu benötigen. Fehlt eine Datei, so bleibt die Tastatur dann einfach stumm.

Taste(n) Beispiel Dateiname
Shift+Buchstabe Shift+A, Shift+W FEMALE_A.WAV, FEMALE_W.WAV
Funktionsstaste F1, F12 PIANO_1.WAV, PIANO_12.WAV
Umlaut ü, ö MALE_UE.WAV, MALE_UE.WAV
Alles andere 1, 2 MALE_1.WAV, MALE_2.WAV

Die PWM-Ausgabe wird durch eine kleine OPV-Schaltung vom groben PWM-Lärm befreit und wird dann mit einem PAM8406-Modul verstärkt. Als OPV wurde ein TLC277 verwendet, lag' halt herum.

Glücklicherweise war in der Tastatur aus irgendwelchen Gründen ein Lautsprecher vorgesehen (einige obskure IBM Rechner hatten so was). Ein mechanisch wenigstens halbwegs (2mm zu viel Durchmesser) passender Ersatz (Ekulit LSF-28M/NT-B)

Blockschaltbild

Blockschaltbild

Da die meisten Dinge fertige Module sind, gibt es hier nur einen Verdrahtungsplan. Das Filter ist ja im Abschnitt Funktionale Beschreibung hinreichend beschrieben.

Mechanischer Aufbau

Da die Tastatur freundlicherweise an vielen Ecken Platz bietet, Module unterzubringen brauchte es kein weiteres Gehäuse. Insbesondere wenn die Tastatur aber auch noch für anderes genutzt werden soll, wäre es wahrscheinlich eine Option, doch eine kleine Box zu bauen. Aber so ist es wenigstes kompakt und das hat, bis jetzt, wohl kaum einer.

Der Lautsprecher wurde mit einer kleinen Adapterplatte und viel Heißkleber im Gehäuse fixiert. Jetzt hat die Tastatur angeblich 2W Musikleistung.

Die restlichen Komponenten wurden ebenso zumeist mit Heißkleber an Ort und Stelle fixiert. Somit ist das Ganze erst einmal (hoffentlich) kindersicher. Das Gehäuse wurde zugeclipt und mit einem Kabelbinder sehr fest verschlossen. Nur ein USB-Kabel zum Arduino, auch paranoid zugentlastet, führt nach Außen.

Verwendete Teile

  • 1x Arduino Nano
  • 1x SD Karte
  • 1x Alte Tastatur (AT oder PS/2)
  • 1x Adafruit SD breakout board
  • 1x PAM8406 Verstärkermodul
  • 1x Lautsprecher, z.B. Ekulit LSF-28M/NT-B
  • 1x Lochrasterplatine
  • 1x Operationsverstärker z.B. TLC277
  • 2x 100nF Kreamikkondensator
  • 1x 1μF/16V Kreamikkondensator
  • 3x 10kΩ Widerstand
  • 1x 1kΩ Widerstand

Code für den Mikrorechner

Der Kern dieses Projektes ist die Software, hierbei sind die Autoren der genutzten Bibliotheken noch einmal hervorzuheben, denn einen WAV-Player mit SD-Karten-Interface und FAT-Format einlesen auf solch einem primitiven Rechner mit, nach heutigen Maßstäben nahezu nicht vorhandenem Arbeitsspeicher, unterzubringen ist schon ein kleines Wunder!

  • SD: SD-Library von William Greiman, Spark fun, et. al
  • TMRpcm: Bibliothek zum Abspielen von WAV-Dateien, die mit der SD-Bibliothek zusammen arbeitet. TMRh20
  • PS2Keyboard: Schnittstelle zu PS/2 und AT-Tastaturen von Christian Weichel, Paul Stoffregen, et.al

Zur Erstellung der Samples wurden zwei Quellen genutzt:

  • Sprachsamples wurden mittels https://ttsmp3.com erstellt.
  • Die Klaviersamples stammen von freepats aus der Upright Piano KW sound bank.

Die Sprachsamples wurden mittels

 $ sox ../ttsMP3....mp3 outfile.wav silence 1 0.01 .1% 1 0.1 .1% : newfile : restart

in getrennte WAV-Files geschrieben und anschließend manuell nach obigem Schema umbenannt. Die Klaviersamples wurden dann auch entsprechend in PIANO_1.WAV usw. umbenannt, da diese schon im WAV-Format vorlagen. Um die Samples nun für die SD-Karte vorzubereiten wurden diese mittels der folgenden Befehle, hier am Beispiel der männlichen Stimme, umgewandelt. Hierbei wird jedes Sample zuerst auf -3dB normiert, d.H. die maximale Amplitude beträgt 70% der Gesamtdynamik. Dann wird die Abtastrate auf 16kHz reduziert und auf acht bit Auflösung umgerechnet.

  $ mkdir -p ../sd
  $ cd male
  $ find . -name '*wav' -exec sox --norm=-3 {} -r 16000 -b 8 ../../sd/{} \;

Der Quellcode des Projekts ist unter https://github.com/ptwz/SpeakKeyboard zu finden.