Tagebuch [Tagebuch] USB-Mediasteuerung im Eigenbau

max00

Freizeitschrauber(in)
Hallo PCGH Community!

Da ich schon lange vor habe ein Tagebuch hier im Forum zu machen und nun endlich ein Projekt gefunden habe, dass ich 1. als sinnvoll erachte (für mich selbst) und das ich 2. auch mal gründlich durchziehen will (hoffentlich wird aus dem "will" noch ein "werde" ;) - dürfte aber wegen 1. so sein) wird hier mein mehr oder weniger langes Tagebuch entstehen.

Kurz zu meiner Person:
Ich heiße Marco, komme aus dem schönen Land Tirol und bin 22 Jahre alt.
Seit noch nicht ganz 2 Jahren arbeite ich als Elektroniker (+Programmierer) und Aushilfsbastler/konstrukteur (jaja, wenn die anderen das einfach nicht immer im Griff haben :P), zuvor habe ich die HTL (Höhere Technische Lehranstalt - ein Schulzweig den man in Österreich nach der Hauptschule einschlagen kann) in Fachrichtung Mechatronik absolviert.
Ansonsten bin ich natürlich (wie hätte es mich sonst schon seit einigen Jahren in dieses Forum/auf diese Website verschlagen ;)) ein von klein auf begeisterter Zocker (jaja, mittlerweile schon wirklich eine ganze Zeit lang...) und ebenfalls (zwar nur hobbymäßiger, aber dennoch grenzgängerischer) Sportler. --> und das "Kurz" bei "zu meiner Person" hätte ich mir wirklich sparen können.

Zur Entstehung des Projekts (diesmal nicht "Kurz):
Das Projetk ist dadurch entstanden, dass ich mir vor kurzem eine Cherry G80-3000LPCDE-2 ("Standardtastatur" mit Cherry MX-Black Tasten) zugelegt habe.
Es ist "nur" die Cherry Tastatur geworden, da ich nicht wusste, ob mir mechanische Taster wirklich liegen (und dann sind mir mehr wie 80€ doch zu riskant - obwohl, man hätte die ja auch zurückschicken können...)
Vorher hatte ich eine Logitech G110, mit der ich vollends zufrieden war, bei der ich aber (fast) alle Zusatztasten/Funktionen eigentlich nie benutzt habe.
Aber eben nur fast alle:
Die Tasten zur Multimediasteuerung am rechten, oberen Ende der Tastatur waren für mich einfach nur genial und praktisch mittlerweile unverzichtbar.

Und genau diese gibt es jetzt nicht mehr... und was macht der Elektroniker dann - genau, er sucht eine Lösung dafür.
Da ich aber keine simple, günstige und auch im Design schlichte Lösung hierfür gefunden habe (ich gebe zu, meine Suche war extrem kurz und ungenau; belehrt mich gerne eines besseren) bin ich zum Entschluss gekommen, mir selbst so eine Steuerung zu bauen.


Grundsätze bzw. Ziele meines Projekts:

  • FORM FOLLOWS FUNCTION - und nicht umgekehrt!
  • Kein zusätzlich zu installierender Treiber
  • Anschluss: USB
  • Funktionen:
    • Leiser/Lauter --> über einen Drehregler
    • Mute
    • Play/Pause
    • Stop
    • Nächster Titel
    • Vorheriger Titel
  • Eine deaktivierbare LED-Beleuchtung (Farbe noch offen, wie geschrieben - form follows function)

Ansätze:
Ich werde mit Sicherheit verschiedene Versionen der Tastatur bauen. Hierbei werde ich mal Anfangs mit einer Version basierend auf einer "fertigen" Platine beginnen, bei der das Design gar keine Rolle spielt - hauptsache ich weiß mal, dass es funktionieren würde.
Die erste Variante wird auch wie beschrieben über einen richtigen Drehregler und Tasten verfügen (evtl. sogar Cherry MX - hab noch ein paar rumliegen).


Dann kommt erst der große Knall mit Variante 2:
Hierbei möchte ich die Tasten über kapazitive Eingabefelder realisieren (sprich - einfach eine Kupferfläche auf einer Leiterplatte) - sowei kein Problem.
Allerdings möchte ich hierbei auch auf einen kapazitiven Drehregler setzten - die richtige Herausforderung!
Auch von dieser Variante werde ich erstmals einen grauenhaft aussehenden Prototypen aufbauen - allerdings wird dort dann die Finale Variante äußerst genial aussehen!


Und Variante 3 wird dann die ganze Steuerung über Funk werden.
Hierfür habe ich bereits vor längerem mit ein paar Funkmodulen probiert - sollte demnach auch nicht das große Problem werden.
Basis wird hierfür ein USB-Stick, welcher die Daten dann von einem Funksender empfängt und dem PC übergibt.
Ob hierbei dann die Variante 1 oder 2 als Basis für die Steuerung verwendet wird ist mir aber noch unklar - Variante 1 würde sich vom Stromverbrauch her anbieten, da hier über einen Interrupt der Mikrocontroller aus dem Sleep-Modus aufgeweckt werden kann - ist aber noch Zukunftsmusik.


Zur Elektronik (dem Herzstück des ganzen):
Zum Einsatz werden Mikrocontroller von Microchip kommen (wahrscheinlich PIC18F14K50 - dürften für diese Zwecke ausreichend sein, evtl. was größeres (PIC18F2455 und PIC18F26J50 hätte ich auch noch zur Verfügung).
Für die Prototypen werde ich diese im PDIP Gehäuse verwenden (bei Variante 1 wahrscheinlich auch im fertigen Aufbau, bei Variante 2 würde mich was im SSOP Gehäuse ansprechen, zwecks Bauhöhe und Größe).
Ansonsten wird nicht viel benötigt - ein paar Standardbauteile wie Kondensatoren und Widerstände, USB-Stecker, beim 18F14K50 und 2455 ein Quarz als Taktgeber (auch nur zwecks USB), Kabel , Platine und Lötzinn.
Die Mikrocontroller werde ich in der fertigen Schaltung mittels PICKIT3 (ein In-Circuit-Programmer der Firma Microchip) programmiern und das Programm in MPLAB (IDE von Microchip) in C (Compiler C18, wieder von Microchip) programieren.
Als Ausgangsplatine für die Prototypen werde ich das Low-Pincount-USB-Developement-Kit von Microchip verwenden (da es ein einfaches, für diese Zwecke ausreichendes Board mit einfachn Erweiterungsmöglichkeiten ist).


Zur Mechanik/Gehäuse:
Hab mir hierfür ehrlich gesagt noch keine Gedanken gemacht - bin für Ideen eurerseits offen (wobei mir gebürstetes, schwarz eloxiertes Aluminium äußerst gut gefallen würde).


Übrigens habe ich vor, die von mir gezeichneten Schaltpläne, Layouts, Programme, Baupläne, etc. hier reinzustellen, damit sich eventuelle Nachahmer oder in diesem Bereich Unerfahrene/Unsichere nicht die ganze Mühe (bei mir überwiegt ja mehr der Spaß) machen müssen!


Soooo, nachdem dieser Post ja doch ein richtiger Aufsatz geworden ist, werde ich mir erst mal ein Bier aufmachen und dann mit dem Folgepost beginnen.


Viel Spaß beim Lesen und ich freue mich auf eure Anregungen/Beschwerden!

max00
 
Zuletzt bearbeitet:
Hallo Leute,
hab soeben den ersten Prototypen aufgebaut - er hat 6 Cherry MX-Black als Taster und keinen Drehregler (hab noch keinen bei mir...).
Außerdem habe ich es irgendwie geschafft, den Taster zum Stummschalten zu vergessen :ugly: - was solls.

Erstmals ein Bild meiner heutigen Arbeitshilfe:
2012_01_05 (1).jpg

Somit Prost :bier:

Nun zum Wichtigen:
Die Platine:
2012_01_05 (2).jpg

2012_01_05 (3).jpg


Und somit kommt schon mal auf, dass ich kein Pionier in Sachen Fotografie bin - hab diese Bilder sogar mit meinem Handy machen müssen, da zurzeit keine Digitalkamer im Haus ist...

Naja, wie zu sehen habe ich das "low pincount usb developement kit" verwendet (bzw. das ist das "lpudk") und da am untern Rand die 6 Mx-Black angebracht (und dabei wunderschön gleichmäßig ausgerichtet :ugly:).

Und das wichtigste am ganzen Murks:
Es lebt!

Damit kann ich jetzt schon die ganzen gewollten Funktionen am PC steuern (ok, mute funktionier mangels Taster nicht...).
Probleme bei diesem Schritt:
Der USB-Descriptor (ein Teil des Programms).
Hab das Programm basierend auf dem Microchip USB-Stack geschrieben (eigentlich sogar basierend auf einem Beispielprogram für eine USB-HID Device) und musste hierfür den Endpoint Descriptor dementsprechend anpassen, was mir eine zeitlang einfach nur ein Rätsel war - hab dann aber irgendwo einen ähnlichen Descriptor gefunden und den erweitert (der Descriptor ist beim Anmelden dafür zuständig, dem Host mitzuteilen um welches Gerät es sich beim Device handelt - zumindest soweit ich weiß - durch die USB-Spezifikation hab ich mich immer noch nicht geschlagen).

Zum Ende noch ein kleines Bild von meinem nächsten Arbeitsschritt:
2012_01_05 (4).jpg


greetings,
max00

Zurück zum Inhaltsverzeichnis
 
Zuletzt bearbeitet:
Ich hab zwar keinen plan von dieser Art von modding/creating aber das Weizenbier macht dich schon um einiges sympathischer xD

Klasse Idee die du an den Tag legst.

Werd's mal weiter verfolgen, Abo
 
Soo, kurzes update zum Projekt:

Ich hab mal versucht, einen kapazitiven Taster zu machen - und er funktioniert eigentlich.
Aber die Werteänderung zwischen gedrückt und ungedrückt ist mir noch zu gering und außerdem schwankt der Werte ziemlich stark - irgendwas passt da absolut noch nicht, denn das hab ich schonmal deutlich besser geschafft!

Demnach werd ich morgen (falls ich es bei dem ganzen Schnee überhaupt in die Arbeit schaffe) in der Arbeit mal ein altes Programm von mir ausgraben, wo das mit der verwendeten Methode (kommt gleich) besser hinbekommen habe.

Zur derzeit verwendeten Methode:
CVD - Capacitive Voltage Divider
Hier baut man einen kapazitiven Spannungsteiler mit einem im Analog-Digital-Wandler vorhandenen Kondensator und der externen Kupferfläche (die auch in einem gewissen Bereich als Kondensator anzusehen ist) auf. Wird nun ein Finger auf die Sensorfläche gelegt (bzw. kommt man in die unmittelbare Nähe der Sensorfläche) so ändert sich deren Kapazität.

Man lädt dann den internen Kondensator auf (in meinem Fall auf 5V) und legt die Sensorfläche auf Masse (0V). Dann Schaltet man den AD-Wandler auf die Sensorfläche und die Ladung des internen Kondensators verteilt sich Kapazitätsabhängig auf die beiden Kondensatoren auf - und es stellt sich abhängig von der Kapazität der Sensorfläche eine Spannung ein, die man Messen und in weiterer Folge auswerten kann.

Hoffe das ist halbwegs verständlich.

mfg
max00

Zurück zum Inhaltsverzeichnis
 
Zuletzt bearbeitet:
Hallo Leute,

heute gibts mal ein sinnvolles Update!

Heute habe ich nämlich endlich meinen (ersten) Rotationsencoder bekommen, den ich in dieser Art verwenden werde.
Natürlich hab ich ihn gleich mal aufs Demoboard gelötet und mein derzeitiges Programm angepasst --> und siehe da - es funktioniert!

Allerdings bekomme ich in naher Zukunft aber noch andere Rotationsencoder - und zwar mit RGB-LEDs!

Außerdem habe ich schonmal eine Platine für den RGB-Encoder gezeichnet, welche mir ein Freund heute ätzt :D (Danke Andi!)

Bilder werde ich vom jetztigen Aufbau morgen hochladen - ebenso vom Layout der Platine (hab das Layout heute in der Firma dank einem Hinweis von einem Kollegen noch leicht angepasst/vereinfacht und somit keine aktuellen Bilder...).
Mit ein wenig Glück habe ich dann morgen Bilder von der neuen Platine, aber ganz sicher welche von der Schaltung und vom Layout.

Die Variante mit dem Kapazitiven Rad habe ich derzeit zurückgestellt - es hat aber schon zwischenzeitlich funktioniert, wobei ich mit dem Ergebnis bei weitem nicht zufrieden war (hier muss ich mir vom Layout her noch was überlegen).
Außerdem bin ich mit der Bedienbarkeit des Kapazitiven Rotationssensors nicht wirklich zufrieden - wahrscheinlich wird es eher eine Kombination aus kapazitiven Tasten und einem normale Rotationsencoder werden - oder auch nur eine rein kapazitive Designstudie ^^

mfg
max00

Zurück zum Inhaltsverzeichnis
 
Zuletzt bearbeitet:
Heyho da steig ich direkt mal mit ein :P
Find solche Projekte immer recht genial und liebe solche Detailarbeiten,
aber eines will ich noch und das sind Bilder bis der Bildschirm heiss läuft :daumen:

Ansonsten gutes gelingen.

MfG
 
Soooo, heute kommt endlich mal ein Update mit vielen Bildern ;-)

Erstmal kurz zum Status meiner Kapazitiven Lösung:
P1040497.JPG
P1040498.JPG
P1040499.JPG


Wie hier zu erkennen ist (oder auch nicht :ugly:) brauche ich nur 3 Pins vom Microcontroller zum Messen.
Am "Rad" sind dann jeweils 4 Flächen abwechselnd miteinander verbunden (also kommt folgende Anordnung raus: 123123123123 ). Jetzt kann ich einfach über die Änderung der Kapazität erkennen, ob ich im oder gegen den Uhrzeigersinn das Rad nachfahren.
Allerdings ist diese Variante (wie im vorherigen Post erwähnt) derzeit auf Eis gelegt.

Und jetzt zum Wichtigen:
Meiner aktuellen Variante:

Die Platine die mir geätzt wurde (nochmals Danke!):
Top Layer:
P1040494.JPG

Bottom Layer:
P1040496.JPG


Die Platine wurde zu Versuchszwecken nochmal belichtet, um den Fotopositivlack von den Pads zu entfernen und ihn auf der restlichen Platine als Lötstoplack zu verwenden - und wäre es hier nicht deutlich versetzt hätte es äußerst gut funktioniert! :D
Außerdem sind mir beim Erstellen des Layouts zwei Fehler unterlaufen... ich habe einfach bei zwei Verbindungen vergessen diese fertig zu ziehen - und das ausgerechnet bei der Spannungsversorgung und beim MCLR (Master Clear Reset) Pin zum Programmieren des Controllers... aber für was gibt es Kabel :ugly:

Die Bestückungshilfe von heute Morgen:
P1040500.JPG


Und somit komm ich zur fertig Bestückten Platine:
P1040503.JPG
P1040504.JPG
P1040505.JPG
P1040506.JPG


Hat soweit ganz gut hingehauen - bei den Durchkontaktierungen hab ich die Bohrungen erstaunlich mittig gesetzt :daumen: und die Lötarbeiten sind sowieso kein Problem.
Der Rotationsencoder und die Taster sind leider noch keine finalen Bauteile, da ich diese erst heute mitbestellt habe - somit gibts leider auch keine Beleuchtungsbilder (ist aber imo eh nur mit RGB LEDs richtig interessant :P).
Bei den Tastern werd ich auch noch doppelt so große Verbauen (12x12mm anstatt diesen 6x6ern).


Und somit fehlt mir dann noch hauptsächlich das Gehäuse (und der Drehkopf, an dem ich die LED durchscheinen lassen will).
Auch hier hab ich mal einen kurz gemacht und ein kleines Stück Aluminium von Hand gebürstet:
P1040502.JPG
P1040501.JPG


Und (wenn man weiß, wie das Stückchen davor ausgeschaut hat) mit dieser Oberfläche bin ich auch ganz schön zufrieden :)
Somit werd ich mir jetzt um ein ausreichend großes Stück Aluminium schaun (die Platine hat übrigens 70x60mm), mir ein passendes Gehäuse daraus fräsen und dieses anschließend nachbürsten (und wenn ich einen günstigen Anbieter finde lasse ich das Gehäuse evtl. noch schwarz Eloxieren).

Das war dann das heutige Update, mit ein wenig Glück komm ich Morgen und/oder Übermorgen noch zum Fräsen - ansonsten verschiebt sich das auf die übernächste Woche - endlich mal wieder Urlaub :)

mfg
max00

Zurück zum Inhaltsverzeichnis
 
Zuletzt bearbeitet:
Geniale Idee :daumen:
Jedoch hört sich das Ganze relativ kompliziert an. Aber was solls - viel Spaß beim Basteln :)
 
So, nachdem ich heute wieder aus dem Urlaub zurück bin wird es diese Woche wieder weitergehen - ich hoffe die richtigen Drehencoder sind angekommen und dann wirds wohl ans Gehäuse gehen.

@Dommas:
Danke,
wenn man mal was in die Richtung gemacht hat (USB mein ich), dann ists ein weniger großes Problem - außerdem basiert das bis jetzt mal auf einem Microchip Beispiel, welches von mir für andere Daten (=Befehle) abgewandelt wurde.
Das mit dem Kapazitiven gleicht allerdings wirklich einer Baustelle...
 
Hallo Leute,

heute hab ich endlich den RGB Rotationsencoder und die "richtigen" Taster bekommen - und natürlich ist das schon alles verbaut ;-)

Die Platine sieht nun wie folgt aus (sind nur die Taster anders):
IMG133.jpg

Außerdem hab ich mir noch erlaubt einen kleinen Farbverlauf der RGB LED zu programmieren und ein Video davon gemacht:
https://www.youtube.com/watch?v=PjeMcchL4aQ

Die Qualität des Videos überzeugt mich allerdings selbst nicht - vielleicht kanns die Kamera in der Firma besser als mein Handy... - wird demnach evtl. nochmal gemacht ,-)

Hoffe euch gefällts soweit - nächstes (eigentlich sinnloses) Ziel ist ein kleines "Menü" über den Rotationsencoder, mit dem ich die Farbe der LED einstellen kann.
Dazu werd ich irgendwie den Farb-Einstell-Modus aktivieren und dann mit Drehungen nach rechts bzw. links die einzelnen Farbkanäle einstellen.

Aber jetzt wird auf den heutigen Erfolg noch eine Runde gezockt.

mfg
max00

Zurück zum Inhaltsverzeichnis
 
Zuletzt bearbeitet:
Danke Cartman.

Heute werd ich mich weiterhin dem Farbverlauf widmen - ich bin mit der derzeitigen Variante einfach nicht zufrieden...

Deshalb habe ich mir überlegt mir einen gewissen Ablauf an Zielfarben festzulegen, zwischen welchen ich dann ständig fade - hat mit meiner abschließenden Variante zwar gar nichts zu tun, aber ich wills mal versuchen.

Außerdem hatte ich heute noch die Idee, neben dem "Menü" mittels Rotationsencoder die Farbe auch noch mit einem zweiten USB-Endpoint einstellbar zu machen - möglich ist es, allerdings weiß ich noch nicht genau wie ich ein Device mit mehreren Endpunkten mache! - aber was wäre das Leben ohne Herausforderungen ;-)

mfg
max00


Edit:
Das neue Fading hab ich schneller zum Laufen gebracht als erhofft:
https://www.youtube.com/watch?v=DtcShL8HuIQ

Diesmal verlaufen die 3 Kanäle gleichmäßig von einer Farbe zur anderen!

mfg

Zurück zum Inhaltsverzeichnis
 
Zuletzt bearbeitet:
Das glaube ich jetzt einfach nicht :D du packst in dein Projekt genau die Ideen, die ich schon seit beinahe 2 Jahren versuche zu realisieren ( eine drahtlose Multimediasteuerung auf basis kapazitiver Sensoren) leider hat es bei mir immer oder immernoch an Fachkenntnissen ( noch Schüler), Zeit und auch Geld gefehlt. Ich bin wirklich sehr gespannt, was du noch alles an Updates bringst und freue mich grad iwie rießig, dass ich evtl doch noch eine Chance habe mein Projekt zu realisieren (mit deinen neuen Elektronik und Programmmethoden), wenn du das erlaubst ;) Weil du scheinst wirklich zu wissen, was du tust. Ich musste alles immer erst ewig ausprobieren/ rumprobieren, was natürlich enorm viel Zeit gekostet hat :D Werde das hier auf jeden Fall mitverfolgen!
 
@Cartman: Ja, die zweite Variante ist wirklich um einiges besser geworden - und vor allem kann ich da jetzt auch schön zwischen ein paar RGB Farben wechseln :D
So RGB LEDs sind aber wirklich fast nur in SMD Bauweise zu finden - hier mal eines im 4-Pin Gehäuse Digi-Key - 754-1492-ND (Manufacturer - WP154A4SUREQBFZGW)
SMD ist aber imho sowieso um einiges netter als konventionell zu arbeiten (außer bei Prototypen auf nem Lochraster - ich werd mal schaun ob ich noch meine alten Meisterwerke irgendwo finde).

@Hendi: Freut mich zu hören, dass sich endlich wer gefunden hat, der dann mit meinen Plänen/Programmen noch was anfangen kann!
Ich hatte das Glück, dass ich in der Arbeit ewig probieren konnte/kann und so bei privaten Projekten immer recht zügig vorankomme.

Was jetzt natürlich interessant wird, ist die Implementierung des zweiten USB-Endpunktes - da möchte ich nämlich ein Protokoll aufbauen, mit dem ich mir relativ einfach die Farbverläufe einstellen kann... aber erstmal muss ich den zweiten Endpunkt überhaupt mal zum Laufen bringen :ugly:
 
Hallo Leute,

heute gibts mal wieder ein Bild- und Video loses update.

Folgendes hat sich in den letzten Stunden ergeben:
Als erstes hab ich mein Composite-USB-Device zum Laufen gebracht - d.h. jetzt hab ich neben der "Tastatur" auch noch meine emulierte serielle Schnittstelle an der Steuerung - somit stand dem Einstellen der Farben nichts mehr im Wege.

Ich hab mir kurz ein Protokoll überlegt, mit dem ich die Farben setzen kann - und siehe da, es funktioniert!
Derzeit hab ich mich darauf beschränkt, dass ich bis zu 8 Farben (reicht für mich und (schätzungsweise) die meisten anderen ganz leicht) einstellen kann und die Zeit zwischen den Farbwechseln ist ebenfalls variabel (von 0 bis grob geschätzt 500 Sekunden zwischen zwei Farben).

Nun ist der nächste Schritt ein kleines Programm zu schreiben, mit dem man die verschiedenen Farben komfortabel vom PC aus einstellen kann.
Anfangs wollte ich das wie meistens in C++ oder C# angehen, allerdings hab ich seit einiger Zeit Linux auf einem Zweitsystem laufen, mit dem ich dann Kompatiblitätsprobleme kriege.
Deshalb werd ich das Programm mal in Java angehen - kurze Beispiele zur Ansteuerung der seriellen Schnittstelle und für den Colorpicker hab ich schon gefunden :D

Zwischendurch hab ich schonmal angefangen das Gehäuse in SketchUp zu zeichnen, es aber gleich wieder gelassen - ich bin einfach Ausbildungsseitig bessere CAD-Programm gewöhnt und werde das dann mal in der Firma erledigen!

mfg
max00

Zurück zum Inhaltsverzeichnis
 
Zuletzt bearbeitet:
Na da bin ich ja schonmal gespannt, wie das ganze in Bildern oder einem Video ausschaut :P
Was verwendest du auf der Arbeit für CAD Programme?
 
Ich verwende auf der Arbeit gar kein CAD-Programm ;-)
Normalerweise wird aber bei uns NX verwendet, aber es gibt auch noch einen Rechner mit SolidWorks (für die älteren Teile und Zeichnungen) und auf den werd ich mich nach der Arbeit mal stürzen.
 
Zurück