Dieses Projekt stammt von unserem Gastautor

martin2250

Ich bin 20 Jahre alt, studiere Physik und beschäftige mich schon seit meiner Kindheit mit Elektronik. Raspberry Pis laufen bei mir schon seit einigen Jahren und übernehmen daheim immer mehr Automatisierungs- und Monitoringaufgaben, der Musikserver war für mich der Einstieg in dieses Thema.

Musikcontroller, kabellos und minimalistisch  

Musikcontroller, kabellos und minimalistisch

Musik-Server wie Volumio und RuneAudio sind beliebte Einsteigerprojekte für Musikliebhaber und Technikbegeisterte. Prinzipiell ist die Steuerung vom Handy oder Computer einfach und bequem, doch für einfache Befehle wie das Pausieren oder das Ändern der Lautstärke dauert der Griff zum Gerät und das Öffnen der Website einfach zu lange.
Der hier vorgestellte Controller ermöglicht die Steuerung mit nur einem Handgriff und ist zudem elegant unauffällig.

Das Projekt

Geeignet für: Fortgeschrittene
Zeitaufwand: ca. 4 Stunden
Materialien: Drehimpulsgeber, Gehäuse, Microcontroller (zB. AtTiny861A), 2x NRF24L01+ Modul, Batteriehalter, passive und mechanische Bauteile

Die Materialliste ist bewusst sehr allgemein gehalten, da viele Teile dieses Projekts an die vorhandenen Werkzeuge und Bauteile angepasst werden können.

Die Elektronik des Senders

Im Drehknopf versteckt ist ein kleiner AtTiny2313V, der die Befehle mittels eines NRF24L01+ Funkmoduls and den Empfänger sendet. Der NRF24L01+ arbeitet im 2.4GHz-Band und hat den großen Vorteil, dass er keine permanente Verbindung zum Empfänger benötigt. Zusammen mit einer interruptbasierten Software auf dem Microcontroller sorgt das für einen verschwindenden Standby-Verbrauch. Die zwei AAA-Zellen in meiner Fernbedienung wurden seit über zwei Jahren nicht getauscht und haben zusammen immer noch über 3 Volt!

Sowohl der Microcontroller als auch das Funkmodul haben einen weiten Spannungsbereich (1.9-3.6V) und können daher problemlos ohne Spannungsregler an zwei Primärzellen angeschlossen werden. Das senkt wieder den Stromverbrauch. Außer der SPI-Verbindung zum Funkmodul muss nur noch der Drehimpulsgeber angeschlossen werden. Dafür werden drei 1MΩ-Widerstände als Pullups und 2.2nF-Kondensatoren zum Entprellen verwendet (die internen Pullups des AtTiny vervielfachen den Standby-Verbrauch).

Die Schaltung kann auf einer Lochrasterplatine aufgebaut werden, um den Drehimpulsgeber im Gehäuse zu befestigen bekommt dieser eine eigene Platine.

Die Software für den Sender ist auf GitHub zu finden, die programmierten Befehle sind:

  • kurzes Drücken: Play/Pause
  • Drehen: Lautstärke
  • Drücken und Drehen: Vorheriges/Nächstes Lied

Die verwendeten Pins sind in `spi.h` definiert.

Das Gehäuse

Hier ist die eigene Kreativität gefragt. Ich habe mein Gehäuse mit meiner CNC-Fräse aus Multiplexplatten gefräst, die beiden Hälften werden aufeinander gesteckt und halten allein durch Reibung. Wer keine Fräse zur Verfügung hat kann das Gehäuse auch 3D-Drucken, einzelne Schichten aus einem Lasercutter stapeln oder per Hand fertigen. Wichtig ist nur, dass wenig Metall verwendet wird, um den Empfang nicht zu stören.

Eine Alternative wäre auch, die Elektronik in einem vorhandenen Gegenstand zu verstecken, zum Beispiel seitlich im Wohnzimmertisch.

Musik-Server wie Volumio und RuneAudio sind beliebte Einsteigerprojekte für Musikliebhaber und Technikbegeisterte. Prinzipiell ist die Steuerung vom Handy oder Computer einfach und bequem, doch für einfache Befehle wie das Pausieren oder das Ändern der Lautstärke dauert der Griff zum Gerät und das Öffnen der Website einfach zu lange. Der hier vorgestellte Controller ermöglicht die Steuerung mit nur einem Handgriff und ist zudem elegant unauffällig.

Der Empfänger

Der Empfänger ist der wohl komplexeste Teil des Projekts. Natürlich könnte man auch einfach ein Funkmodul direkt an die GPIO des Raspberry Pi anschließen und dieses mit einem Python-Skript ansprechen. Das würde allerdings den Wechsel zu einem neuen Board sehr aufwändig machen und funktioniert natürlich nur an einem Board mit GPIO-Anschlüssen.

Stattdessen habe ich mich entschlossen den Empfänger per USB über das standartisierte HID-Protokoll anzuschließen. Der Empfänger meldet sich so einfach als Tastatur an und leitet die Befehle als Tastendrücke auf die Multimedia-Keys an den PC weiter. Dadurch funktioniert der Empfänger auf allen Betriebssystemen ohne Installation von Treibern oder anderer Software. Auch die meisten Programme erkennen die Befehle ohne zusätzliche Konfiguration, daher ist dieses Projekt auch ideal um VLC beim Heimkinoabend oder einfach nur die Lautstärke des eigenen PCs zu steuern.

Die Wahl von USB erzeugt allerdings zwei Probleme:

  • Die Software für USB-Geräte ist ziemlich komplex
  • Es gibt keine Microcontroller von Atmel, die USB unterstützen und in einem DIP-Gehäuse verfügbar sind

Die ‚richtige‘ Lösung wäre wahrscheinlich, einen Microcontroller der PIC-Serie zu verwenden. Microchip bietet auch USB-fähige Controller im DIP Gehäuse an (z.B. PIC18F14K50). Der Einstig in das PIC-System ist aber vergleichsweise schwierig (teure, proprietäre Compiler und Programmiergeräte), daher habe ich mich für die mir vertraute Alternative entschieden: VUSB.

VUSB ist eine reine Softwareimplementierung eines USB-Geräts, die auf fast jedem (selbst dem kleinsten!) Microcontroller von Atmel funktioniert.

Da der Empfänger nicht über den USB-Port herausstehen sollte, habe ich die Schaltung auf eine doppelseitig bestückte Platine gepackt und diese von OSHPark fertigen lassen. Um Platz zu sparen, habe ich keine Programmierschnittstelle eingebaut, stattdessen wird ein kleiner Adapter verwendet, um den AtTiny an eine normale ISP-Schnittstelle anzuschließen. Die Schaltung lässt sich aber genauso auch auf einer Lochrasterplatine aufbauen, es empfiehlt sich dann aber, statt dem USB-A Stecker eine Buchse zu verlöten und den Empfänger per Kabel anzuschließen.

Der Schaltplan und das Boardlayout sind hier zu finden, die Software ist hier.

Musik-Server wie Volumio und RuneAudio sind beliebte Einsteigerprojekte für Musikliebhaber und Technikbegeisterte. Prinzipiell ist die Steuerung vom Handy oder Computer einfach und bequem, doch für einfache Befehle wie das Pausieren oder das Ändern der Lautstärke dauert der Griff zum Gerät und das Öffnen der Website einfach zu lange. Der hier vorgestellte Controller ermöglicht die Steuerung mit nur einem Handgriff und ist zudem elegant unauffällig.

 

Die Einrichtung auf dem Raspberry Pi

Da auf den meisten Musik-Distributionen wie Volumio keine grafische Oberfläche vorhanden ist, reagieren diese von Haus aus nicht auf die Medientasten. Daher müssen die Tastendrücke von `triggerhappy`, einem Hotkey-Dienst für Linux, an den Player weitergeleitet werden. Die Installation erfolgt über den Paket-Manager. Für die Konfiguration wird die Datei `/etc/triggerhappy/triggers.d/musikcontroller.conf` erstellt und mit folgendem Inhalt befüllt:

KEY_VOLUMEUP 1 curl "localhost:3000/api/v1/commands/?cmd=volume&volume=plus"
KEY_VOLUMEDOWN 1 curl "localhost:3000/api/v1/commands/?cmd=volume&volume=minus"
KEY_PLAYPAUSE 1 curl "localhost:3000/api/v1/commands/?cmd=toggle"
KEY_PREVIOUSSONG 1 curl "localhost:3000/api/v1/commands/?cmd=prev"
KEY_NEXTSONG 1 curl "localhost:3000/api/v1/commands/?cmd=next"

Die Befehle müssen noch an die jeweilige Distribution angepasst werden, danach wird der Dienst per `systemctl restart triggerhappy` (neu)gestartet.

 

Ihre Meinung zählt: Was denken Sie zu diesem Thema?

Bisherige Abstimmungsergebnisse werden geladen.
 

Schreiben Sie einen Kommentar:

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.