Raspberry Pi PC Lautsprecher
Seit einiger Zeit überlege ich schon mein Raspberry Pi PC Lautsprecher Projekt zu starten. Ich habe meinen alten Pentium 4 PC zu Hause ausgeschlachtet, nachdem ich dessen Netzteil gegrillt hatte. Dabei bin ich auf einen PC Lautsprecher gestoßen, der unten am Gehäuse angeklebt und am Motherboard angeschlossen war. Ob man diesen PC Speaker mit dem Raspberry Pi wohl wiederbeleben kann?
Raspberry Pi PC Lautsprecher
Mit dem Raspberry Pi lassen sich unglaubliche Projekte realisieren. Warum sollte man ihn nicht benutzen um alte PC Hardware vor dem Müll zu bewahren. Für meine Sensoren habe ich schon zum Teil Kabel vom Motherboard verwendet. Warum nun auch nicht mit anderer Hardware des alten PCs etwas basteln? Der PC Lautsprecher kommt mir da gelegen.
Piezoelektrischer Lautsprecher
In alten PC Gehäusen wurde Lautsprecher verbaut, die über Piezoelektrizität Geräusche erzeugen. Dabei ist der Aufbau sehr einfach, man könnte sich auch selber einen solchen PC Lautsprecher basteln. Das Prinzip dahinter ist folgendes:
- eine Membran wird über einen Festkörper gespannt
- der Festkörper wird durch 2 Kabel an eine Spannung angeschlossen
- je nachdem ob Spannung anliegt oder nicht verformt sich dieser
- wird Spannung in einem bestimmten Frequenzbereich (zB 440 Hertz) angelegt, dann entsteht eine Schwingung
- diese Schwingung wird als Ton wahrgenommen
Das ist wohl die einfachste Form eines Lautsprechers. Die Qualität ist dabei recht mäßig, für das „piepsen“ eines PCs gerade passend.
Hardware
Wir bauen also aus einem alten Gehäuse den PC Lautsprecher aus. Die beiden Kabel werden am Raspberry Pi an den GPIO Pin 22 (achter Pin von oben auf der linken Seite) und das andere Kabel an einen der GND Pins angesteckt (siehe Bild).
Software
Um dem PC Lautsprecher ein paar Töne zu entlocken bedarf es keiner großen Software. Tatsächlich gibt es bereits alles was wir benötigen in einem GitHub Projekt mit dem Namen WiringPi. Wir holen uns den Source Code über git. Falls dieses bei euch am Raspberry Pi noch nicht installiert ist, dann könnt ihr das mit dem folgenden Kommando nachholen:
sudo apt-get install git
Das Repository wird mit dem folgenden Befehl heruntergeladen (ins aktuelle Verzeichnis):
git clone https://github.com/WiringPi/WiringPi.git
Wir müssen noch ins Verzeichnis wechseln und den Source Code kompilieren. Das machen wir mit folgenden Kommando:
cd WiringPi ./build
Für die Wiring Pi Bibliothek gibt es auch einige Code Beispiele. Eines davon ist ein kurzes C Programm, bei dem die Tonleiter auf dem Speaker ausgegeben wird. Dieses muss jedoch erst kompiliert werden. Wir machen das mit folgenden Kommandos:
cd examples make tone
Das Programm tone wird auf der Kommandozeile folgendermaßen aufgerufen:
sudo ./tone
Die root Rechte mit sudo benötigen wir, weil wir Zugriff auf die GPIO Schnittstelle im Programm benötigen und dies nur dadurch möglich ist.
Der Source Code zeigt folgendes Bild:
#include <stdio.h> #include <errno.h> #include <string.h> #include <wiringPi.h> #include <softTone.h> #define PIN 3 int scale [8] = { 262, 294, 330, 349, 392, 440, 494, 525 } ; int main () { int i ; if (wiringPiSetup () == -1) { fprintf (stdout, "oops: %s\n", strerror (errno)) ; return 1 ; } softToneCreate (PIN) ; for (;;) { for (i = 0 ; i < 8 ; ++i) { printf ("%3d\n", i) ; softToneWrite (PIN, scale [i]) ; delay (500) ; } } }
Wichtig sind in dem Programm folgende Dinge:
- einbinden der Header Dateien wiringPi.h und softTone.h
- Setup der wiringPi Bibliothek
- Ausgabe für den GPIO Pin definieren
- in der Schleife die Töne ausgeben. Jeweils eine halbe Sekunde lang
Die Töne sind in einem Array definiert. 8 Stück für eine Tonleiter. Die Zahlenangaben entsprechen dabei den Hertz, 440 Hz entspricht dabei dem Ton A.
Wer Lust hat kann dieses Array aus Tönen erweitern und eine kleine Melodie abspielen. Man muss sich nur zuerst die Töne in Hz umrechnen oder in einer Tabelle dazu nachsehen. Man könnte noch ein zweites Array definieren mit unterschiedlichen Abständen.
PC Lautsprecher Soundausgabe
In einem Text kann man leider die Tonausgabe schlecht beschreiben, dank modernster Technologie ist es aber möglich, dass ich euch diese Ausgabe aber nach Hause liefern kann. In meinem Youtube Video könnt ihr euch anhören wie so eine einfache Ausgabe von Tönen klingt:
Fazit
Der PC Lautsprecher macht nun bereits Töne und spielt eine Tonleiter. Für den ersten Schritt ist das eine akzeptable Lösung. Die Frage ist nun, ob wir auch Musik abspielen können und zwar ohne ein C Programm zu schreiben und jeden einzelnen Ton im Code zu hinterlegen. Ideal wäre ein kleines Programm, dass Musikdateien abspielen kann.
Habt ihr auch alte PC Gehäuse zu Hause? Der PC Speaker ist nicht das einzige Gerät das für den Raspberry Pi interessant sein könnte!
Teil 1 | Teil 2
Ich teste gerade den pHAT DAC auf einem Pi Zero und ich muss sagen, dass das was aus dem pHAT DAC kommt schon ein echt knorke Sound ist. Dann noch ein kleiner Class D Verstärker (2x ca. 3W @ 4Ω) und zwei Lautsprecher – fertig ist die Kiste. Die Boxen / das Housing dafür habe ich mir gedruckt, Stromversorgung für Pi Zero und Verstärker läuft wahlweise über USB oder 5x Eneloop Akkus…