Wetterstation mit MP3-Spieler

Hauptseite
Beruf
Spiele
Freiheit für Links
Geschichten
Zitate
HP48
ct-Bot
(ct-)Hardware
MP3-Wetterstation
LED-Tafel
LED-Licht
Nixie-Uhr
Diverses
Rechenmaschine AE13
Grundgesetz
Jargon Lexikon
Holgi on Tour
Bilder
Rückmeldung?
Impressum

Einleitung

[MP3-Station] Eine Wetterstation, welche MP3s abspielen kann .... ok, braucht man so etwas? Wohl nicht so unbedingt, aber ein derartiges doch leicht "nerdiges" Gerät hat hier bei mir das Licht der Welt erblickt.

Das Konstrukt basiert auf einer Art Starterset der Firma Tinkerforge . Diese recht neue Firma bietet ein elektronisches Baukastensystem an. Dieses besteht aus "Bricks", "Bricklets" und noch einigen anderen Sachen. Bricks sind stapelbare kleine Platinen mit Mikroprozessoren, welche das Herz einer daraus zusammengesteckten Einheit bilden. Es gibt "Master Bricks", welche als Koordinator (und Anschlussmöglichkeit für Bricklets) dienen. An einen Servobrick können Servomotoren angeschlossen werden, an einen Stepper Brick Schrittmotoren (und auch Bricklets, aber weniger als bei den Master Bricks). Bricklets können an Bricks angestöpselt werden und beinhalten Sensoren oder Elemente zur Ein- und Ausgabe, z.B. digitale IO-Ports oder Stromsensoren. Bricks werden über USB an einen PC angeschlossen, man kann sie aber auch über "Extensions" z.B. über WLAN ansprechen.

Auf dieses Baukastensystem, welches im Laufe der Zeit auch noch erweitert wird, bin ich durch einen Artikel in der Zeitschrift ct gestossen und war aus nicht näher bekannten Gründen irgendwie davon fasziniert. Ich habe mir dann ein Starterset zugelegt und etwas damit herumgespielt.

Gut, da hatte ich dann so einen Master Brick, an dem ein Temperatur-Sensor-Bricklet, ein Bricklet zur Feuchtigkeitsmessung, ein Druckmesser und ein LCD-Display hingen. Angeschlossen an einen PC, kann man mit dem mitgelieferten "Brick Viewer" die Sensoren betrachten. Mit einem Java-Programm (eine API für etliche Programmiersprachen wird zur Verfügung gestellt) habe ich das dann "zusammengefasst" und die Werte auf dem LCD-Display ausgegeben.

Das ist bislang reine Spielerei, und Tinkerforge bietet so etwas auch als "Wetterstation" in einem Bausatz mit schickem Plexiglassgehäuse an. Aber irgendwie bin ich dann auf die Idee gekommen, dieses Konstrukt könnte doch dann eigentlich auch Musik spielen. Eine Wetterstation ist zwar jetzt nicht typischer Weise etwas, was man mit einem MP3-Spieler kreuzen würde, aber ... man kann ja nicht immer nur sinnvolle Sachen machen ;-). Zumal würde sich das LCD-Displayx durchaus anbieten, dann dort neben Temperatur, Druck und Feuchtigkeit auch z.B. das Musikstück anzuzeigen. Und die vier Druckknöpfe des Displays könnten zur Steuerung dienen.

Aber einen PC an diesem Konstrukt dranhängen haben zu müssen ist natürlich unschön. Und so dachte ich, man könnte doch als Steuergerät einen Raspberry Pi , einen recht preisgünstigen Minicomputer auf ARM-Basis als Steuercomputer nehmen und mit in das schicke Gehäuse der Wetterstation stopfen, zumal Tinkerforge den für die Kommunikation per USB nötigen "brickd" auch für den Raspberry Pi anbietet. Und eine hardwareoptimierte Java-Version für den natürlich mit nicht überragend viel Rechenpower ausgestatteten Raspberry gibt es von Oracle (wer das nicht mag: Es gibt auch freie Implementationen).

Aufbau der MP3-Station

[MP3-Station] Somit habe ich mich also hingesetzt, die Wetterstation mit leichten Ergänzungen zusammengebastelt, einen Raspberry Pi hineingestopft und dem Ganzen noch über einen WLAN-USB-Stick einen drahtlosen Netzwerkzugriff spendiert. Das ganze Konstrukt besteht also nun aus folgenden Komponenten:
  • Raspberry Pi: Auf diesem (vormals Modell B, jetzt Modell 2, s.u.) läuft das Java-Programm, welches die Tinkerforge-Komponenten steuert, die MP3s verwaltet und spielt und zudem über einen Mikro-Webserver auch neben dem LCD eine Web-Steueroberfläche für das Gerät bietet.
  • Auf dem Raspberry gibt es aus Kostengründen keine RTC, also keine Echtzeituhr, welche die Zeit auch bei abgeschaltetem Raspberry behält. Das ist für eine MP3-Station auch nicht unbedingt nötig, aber dennoch hatte ich zwischenzeitlich dem Raspberry eine aufsteckbare RTC von ABelectronics spendiert. Die Anbindung geschieht über den I2C-Bus. Inzwischen verwende ich diese allerdings nicht mehr, die MP3-Station holt sich über das Netz die aktuelle Zeit.
  • Step Down Power Supply: Eine Grundplatine für Bricks, um diese mit Strom zu versorgen. Das geht zwar auch über den USB-Anschluss, aber ich verwende dies, um das ganze System mit Strom zu versorgen: Ein Netzteil speist das Power Supply und dieses automatisch die aufgesteckten Bricks (und damit auch die Bricklets). Ausserdem hat das Power Supply einen 5V-Ausgang, welcher sowohl den Raspberry Pi mit Strom versorgt als auch einen kleinen Lautsprecher (schliesslich will man die Musik ja auch hören).
  • Master Bricks (2 Stück): Über diese sind die ganzen Bricklets angeschlossen, und der untere der beiden ist an den Raspberry angeschlossen. Über diese Verbindung kann das Java-Programm die Tinkerforge-Elemente steuern.
  • Temperatur-Bricklet: Misst die Temperatur
  • Helligkeits-Bricklet: Misst die Helligkeit (irgendwie nur bedingt aussagekräftig, aber egal ;-))
  • Feuchtigkeits-Bricklet: Misst die Luftfeuchtigkeit
  • Druck-Bricklet: Misst den Luftdruck
  • LCD-Bricklet: das beleuchtete 4x20-stellige Display dient zur Ausgabe von Messwerten und Angabe von Lied und Künstler. Je nachdem, ob das Gerät spielt oder nicht, werden verschiedene Daten angezeigt. Da die untere Zeile immer als "Beschriftung" für die 4 Knöpfe des Displays dienen, bleiben nur drei Zeilen übrig, und die Informationen werden teilweise wechselnd dargestellt.
  • IR-Entfernungs-Bricklet: Öhm .... klar, misst die Entfernung, aber wozu? Nun ja, im Laufe der Entwicklung habe ich dem Gerät beigebracht, optional die LCD-Beleuchtung z.B. dann abzuschalten, wenn die Musik spielt, aber niemand vor dem Gerät steht. Erst, wenn man sich davor stellt, geht das Licht wieder an - oder wenn die Musik wechselt.
  • Quad-Relay-Bricklet: Ein Bricklet mit 4 elektronischen Relais. Und wozu das bei einem MP3-Spieler? Nun, es hat sich gezeigt, das der angeschlossene Aktivlautsprecher, der über einen USB-Stecker mit Strom versorgt wird und natürlich auch einen Akku besitzt, im abgeschalteten Zustand Strom zurück in das System schickt. Das hatte zwar wohl (erstmal) keine schlimmen Auswirkungen, aber z.B. leuchtete die Power-LED des Raspberry immer matt. Kam mir also irgendwie nicht richtig vor, also habe ich die Stromversorgungsleitungen für den "Brüllwürfel" über diese Relais gesteuert: Nur wenn wirklich Musik gespielt wird, wird der Lautsprecher mit Strom versorgt. Und da es sich um Solid State Relays handelt, ist deren Stromverbrauch beim Schalten deutlich geringer als bei normalen elektromechanischen Relais.
  • 2-Knopf-Bricklet: Die mit blauen LEDs beleuchtbaren kleinen Knöpfe erweitern die Möglichkeit zur Bedienung der MP3-Station. Dieses Bricklet stammt aus einem Schwung neuer Bricklets . Ich habe durch diese Tastenerweiterung die ansonsten in einem Untermenü versteckte Lautstärkesteuerung schnell zugreifbar gemacht. Ausserdem kann man mit dem LEDs auch noch ein wenig Schabernack treiben ;-)
    Inzwischen ist diese Funktion deaktiviert, weil .... siehe nächster Punkt:
  • 12-Tasten-Feld: Durch das "Multi-Touch-Bricklet" kann man Tastendrücke über kapazitive Sensoren registrieren. Durch ein 12-Tasten-Feld (3x4) kann ich nun diverse Funktionen bequem aktivieren und brauche nicht mehr die doch etwas versteckt liegenden Taster des LCD-Displays drücken. Um die Tasten vernünftig zuordnen zu können, habe ich auf das Tastenfeld einen Zettel mit entsprechenden Beschriftungen befestigt.
    Da ich durch die zwei Master-Bricks "nur" 8 Bricklets ansprechen kann, musste ich für das Sensorfeld das 2-Knopf-Bricklet deaktivieren, aber durch die grosse Menge von Feldern spielt das keine Rolle. Nur um das blaue Licht ist es schade ;-)
  • Edimax EW-7811Un WLAN USB Stick: Zusammen mit dem "HostAP"-Programm sorgt dieser kleine Stick dafür, das man sich mit dem Gerät verbinden kann. Der Raspberry stellt dabei einen Access Point dar, d.h. das System ist autark und man kann sich einfach daran anmelden. Über diese Verbindung kann man dann auch den Webserver des Java-Kontrollprogrammes erreichen und den MP3-Spieler steuern. Und natürlich hat man auch normalen Netzwerkzugang zum Raspberry und kann beispielsweise weitere MP3-Dateien auf die SD-Karte kopieren oder das Java-Steuerprogramm updaten.
    Inzwischen ist das HostAP-Programm aber deaktiviert und das Gerät registriert sich ganz normal beim lokalen WLAN-Router. Es ist dann zwar nicht mehr so "mobil", aber so richtig für den Transport ist das Gerät eh nicht gedacht.
  • Aktivlautsprecher: Damit man die Musik auch hören kann ;-). Der Lautsprecher wird per USB mit Strom versorgt (da damit dann alle Geräte 5V verwenden, ist die Stromversorgung einfacher). Die Tonsignale kommen über einen einfachen Klinkenstecker vom Raspberry.

Funktionen

Nach dem Booten wird, so die Bricks wirklich angeschlossen sind, automatisch das Java-Steuerprogramm gestartet. Dieses initialisiert die Tinkerforge-Hardware, liest die auf der SD-Karte befindlichen MP3-Dateien ein, startet den Webserver und beginnt dann mit seiner Arbeit:
  • Speichern der Meldungen der Sensor-Bricklets (die API bietet dazu "Listener" an, d.h. man kann sich über Änderungen der Daten informieren lassen. Die Umsetzung, d.h. die Benachrichtigungsfunktion selbst, wird durch die Bricks abgehandelt)
  • Steuern des LCD-Displays: Abhängig vom Modus (Musik spielen ja oder nein) werden abwechselnde Sensordaten und ggf. Musikdaten angezeigt.
  • Abspielen des MP3-Stückes (für das eigentliche Abspielen wird JLayer verwendet, beim Ermitteln der MP3-Tags hilft die Java ID3 Tag Library ). Ist das laufende Stück zu Ende, wird automatisch ein beliebiges anderes gestartet, bis das Abspielen angehalten wird.
  • Reagieren auf Betätigung der Knöpfe des LCD-Displays, um z.B. das Musikstück zu wechseln, die Lautstärke zu ändern, das Abspielen zu stoppen oder das Gerät auszuschalten (dann wird der Raspberry automatisch heruntergefahren)
  • Ein- und Auschalten der LCD-Beleuchtung in Abhängigkeit, ob Musik gespielt wird oder nicht, und ob jemand vor dem Gerät steht.
  • Betreiben des Webservers (das Grundkonstrukt ist hier der NanoHttpd , ein sehr kleiner HTTP-Server, natürlich auf Java-Basis). Ruft man über einen Browser (z.B. den eines Smartphones oder Tablets) diese Seite auf, kann man darüber die MP3-Wetterstation steuern:
    • Allgemeine Anzeige der aktuellen Sensordaten und des laufenden Liedes
    • Informationen über die Tinkerforge-Komponenten, Programmversion und Java-Daten
    • Lautstärkeregelung
    • LCD-Lichtsteuerung
    • Anzeige der MP3-Liste, so das man auch ein bestimmtes Lied starten kann und nicht nur ein zufälliges.
    • Messverlauf der Sensoren über eine gewisse Zeit (die MP3-Station ist als Basis ja immer noch eine Wetterstation ;-))
    • Rudimentäre Playlistenverwaltung (anlegen, ändern, löschen). Playlisten können dann sowohl über die Weboberfläche als auch über das LCD-Display gestartet werden.
  • Steuern der Solid State Relays, um den angeschlossenen Lautsprecher mit Strom zu versorgen, wenn notwendig.
  • Die MP3-Station kann auch Livestreams (also "Internet Radio") abspielen. Die Liste muss zwar von Hand gepflegt werden, aber so viele verschiedene Radiosender hört man ja nun auch nicht. Ist noch frisch und sicher mit Fehlern behaftet, funktioniert aber schon ganz gut.
    Wenn in dem Stream Metainformationen (meist der Titel des gerade gespielten Stücks) enthalten sind, werden diese aus dem Stream extrahiert und auf der Weboberfläche oder dem LCD-Display angezeigt. Mit einem Plugin der LED-Tafel kann diese Metainformation auch von dort abgerufen und "in gross" dargestellt werden.
Über die Menge der für die Station notwendig gewesenen Euros will ich lieber den Mantel des Schweigens breiten. Natürlich wäre es preiswerter gewesen, sich im Laden ein MP3-Spiel-Dings zu kaufen, aber .... na ja, die Station hat doch schon was. Bischen "nerdig" vielleicht, aber individuell und weitgehend mit der eigenen kleinen Hände Arbeit erstellt.
Und Spielen tut sie halt auch ;-)

Umbau

[MP3-Station] Irgendwann hatte sich bei der MP3-Station allerdings der ärgerliche Effekt eingestellt, das zwar selten, aber dennoch ab und an beim Start eines Liedes das gesamte System eingefroren ist. Das war natürlich wirklich nervend, daher habe ich mich entschlossen, das System etwas umzubauen. Das fing damit an, das ich die Komponenten aufgrund der kompakten Verbauung erstmal auseinander genommen habe und auf eine Experimentierplatte geschraubt habe, damit ich diese zur Fehlersuche austauschen konnte. Da ich davon ausgegangen bin, das es ein Problem mit der Hardware ist (beim Einfrieren konnte ich mich nicht einmal mehr am Raspberry anmelden), habe ich dann den Raspberry Modell B gegen das neuere Modell 2 ausgetauscht. Das hat dann auch den Vorteil, das das ganze System wegen des schnelleren Prozessors auch etwas geschmeidiger läuft (auch wenn das eigentlich nicht wirklich ein Problem war, aber beim Start, insbesondere beim Laden der MP3-Infos, ist das inzwischen deutlich schneller). Weil die Komponenten eh schon gelöst waren, habe ich dann die Firmware der Tinkerforge-Bausteine auf den neuesten Stand gebracht.

Nach der Installation des Raspbian-OS, Konfiguration und dem Einspielen der Daten der MP3-Station lief dann tatsächlich wieder alles wie vorher .... zumindest im Prinzip: Es kam zwar Musik aus dem Lautsprecher, aber die Qualität war schlechter als beim alten Modell. Jetzt ist die Klinkensteckerbuchse bzw. das auf dem Raspberry verbaute "Soundsystem" qualitativ eher minderwertig, aber in dieser Konstellation war das Rauschen deutlich hörbarer als beim Vorgänger, auch wenn der Sound angeblich etwas besser hätte sein sollen.
Da dies aber nun nicht so war, habe ich eine relativ preisgüstige USB-Soundkarte (natürlich nach vorheriger Suche in Kompatibilitätslisten) an den Raspberry gesteckt. Es gab dann noch etwas Ärger, weil das Java-Programm irgendwie nicht den USB-Sound nehmen wollte, obwohl das entsprechend der ALSA-Konfiguration eigentlich hätte gehen sollen (oder ich habs nicht richtig gemacht ;-)), aber nach dem Entfernen des Treibers für den internen Sound ging es dann problemlos. Und der Sound ist nun deutlich besser als vorher.

[MP3-Station] Da ich nun allerdings keine Lust mehr hatte, die Komponenten wieder in das alte Gehäuse zu bauen (was wegen der USB-Soundkarte auch gar nicht mehr geklappt hätte), habe ich dann die meisten Komponenten auf der Experimentierplatte gelassen und diese in dem Siteboard versteckt, auf welchem die Station eh schon stand. Die Bedienelemente habe ich in Gehäusen auf das Board gestellt und die Kabel durch ein schnell gebohrtes Loch in der Rückwand geführt. Jetzt sieht das Ganze auch ein wenig geschmeidiger aus und nicht mehr ganz so nerdig ;-)


©2017 Holger Thiele
generiert aus "mp3station.template" vom 05 05 2016
Valid HTML 4.01!