crys_
Software-Overclocker(in)
Letztes Jahr habe ich angefangen nach dem optimalen Mini-Rechner zu suchen den man sich am Abend kurz unter den Arm klemmt und auf die nächste LAN oder zu einem Kollegen geht. Nach dem ersten Versuch mit einem Bitfenix Prodigy bin ich im zweiten Anlauf auf einen Alienware X51 gekommen. Von OEM Rechnern kann man halten was man will, aber bei dem Gerät hat Dell/Alienware viel richtig gemacht. Kleiner geht nicht, wenn auch mit der Prämisse externes Netzteil.
Jetzt bin ich gerade dabei mir einen neuen Rechner zu bauen - am Alienware konnte man nicht genug basteln
Ein Feature hat es mir aber angetan: Die RGB Beleuchtung "Alien FX" mit der man Teile des Rechners in verschiedenen Farben beleuchten kann. Für mein neues Projekt möchte ich das nachbauen, am Markt habe ich leider nichts ordentliches Gefunden
Diesen ersten Post werde ich immer mit aktuellen Infos bestücken, z.B. wenn sich etwas grundlegend ändert oder neue Sachen dazukommen.
Was soll das System können?
- Vom Desktop aus steuerbar sein
- Easy to use und it just works
- Eine LED-Leiste in verschiedenen Farben beleuchten
- Die Beleuchtung über mehrere Frames hinweg animieren (siehe unten)
- In jeden Rechner integrierbar sein
- Günstiger als 50 Euro (alles zusammen)
- Beleuchtung komplett aus/an schalten
- In wenigen Minuten nachbaubar
Dem System soll man über eine UI mehrer Frames hinterlegen können. Ein Frame ist ein Zustand den die Beleuchtung annimmt. Es besteht aus einem Farbverlauf, den die Leiste von links nach rechts annimmt.
Hierfür kann die Farbe an beliebigen Stellen bis zu 10 "Color Stops", also Punkte mit einer besimmten Farbe definiert werden. Die Farben zwischen den Punkten werden berechnet. So kann z.B. die erste LED rot, die 10. grün und die 60. gelb sein, die Farbübergänge dazwischen werden errechnet. Neben einer Farbe hat auch jeder Color Stop eine Helligkeit, so lassen sich einzelne LEDs ausschalten.
Jedes Frame hat eine Zeit, welche die Dauer angiebt, wie lange das Frame unverändert gezeigt wird (Pause Time) und ein, die die Dauer des Übergangs zum nächsten Status angibt (Transition Time). Durch die Verkettung mehrer Frames lässt sich eine Farbanimation hinterlegen.
Wie soll das gehen?
Das hört sich alles wilder an als es ist. Hier seht ihr mal wie ich mir das System vorstelle:
Das Arduino Board kontrolliert die Neopixels (unten mehr) und ist über einen internen Port mit dem PC verbunden. Der Treiber des Arduino Boards simuliert auf dem USB Anschluss eine Serielle Schnittstelle, welche mit einem Programm angesteuert werden soll. Ab hier kommt Routine: Ein kleiner Webserver hostet eine Webseite mit einer REST-Schnittstelle auf der der Nutzer Frames erstellen und verknüpfen kann. Klickt der Nutzer auf "Anwenden" sendet die Webseite die Konfiguration an den Server, welcher sie umwandelt und über die serielle Schnittstelle als Byte Abfolge zum Arduino schickt. Dieser speichert sie in seinen EEPROM, damit sie auch nach einem Neustart des PCs (kein Strom mehr) noch verfügbar ist und steuert die LEDs entsprechend an.
Warum ein Web-Frontend und keine "normale" Windows GUI?
Berechtigte Frage! Durch die Abkopplung der GUI und die Kommunikation über die REST-Schnittstelle ist es später im Endeffekt egal wo die GUI bzw. die Webseite läuft - lokal auf dem Rechner, auf dem Smartphone oder Tablet im Wohnzimmer...
Denkbar wäre auch die Webschnittstellen über eine extra App anzusteuern, aber das ist Zukunftsmusik
Adafruit Neopixles
Die Neopixels sind eine einfache LED-Leiste mit RGB LEDs, die über eine C-lib vom Arduino angesteuert werden kann. Hierbei kann jeder LED eine individuelle Farbe hinterlegt werden. Die Leiste gibt es mit 30 LEDs/Meter (~20€), 60 LEDs/Meter (~30€) und 144 LEDs/Meter (~60€). Dabei ist zu beachten das der Arduino maximal 150 LEDs ansteuern kann. Die LED-Leiste lässt sich mit dem Klebeband an der Rückseite am Gehäuse festkleben. Die Leiste ist flexibel Teilbar, also nach jeder LED trennbar (per Schere, also kein zurück ), lässt sich aber wieder über Kabel verbinden. So lässt sich die Leiste auch gut im Gehäuse verteilen.
Technische Einschränkungen
- Maximal ~400 LEDs (bei 2 KB RAM, es werden pro LED 4 Byte benötigt)
- Maximal 12 Frames
- Maximal 10 Color Stops/Frame
- Kein Lauflicht (also z.B. eine LED an, alles anderen aus und im nächste Schritt nur die nächste an etc.)
Wo gibts die Source?
Auf GitHub.
Über mich
Was qualifiziert mich? Ich bin Informatikstudent im 5. Semester und habe auch schon vor dem Studium mehrere Jahre an der Schule und privat programmieren gelernt, bin also auch schon rund 7 Jahre dabei. Mein Fokus liegt auf Softwareengineering und Softwaredevelopment, durfte aber schon öfters als mir lieb ist auf diversen µConrollern Bits umherschieben und auch die Webentwicklung ist mir alles andere als fremd
Aktueller Stand
- Webseite fertig (bis auf About)
- Server fertig
- Arduino empfängt alle Informationen
- Frames aus Profilen können ohne Animation dargestellt werden
Wenns gut laueft gibt es am Wochenende die erste lauffaehige version
Nächste Schritte
- Animierte Frameübergänge
- Letzer Feinschliff auf der Webseite (große Baustelle ist noch, dass keine zwei ColorStops aufeinander gezogen werden können)
- Letzter Feinschliff am Server (korrekte Verknüpfunge Webseite <-> Arduino)
- HowTo schreiben
Und los gehts...
Am Samstag trudelt das Arduino Board ein, welches ich für die Versuche nutzen will. LEDs habe ich vorerst noch nicht bestellt, da ich erst eine grundlegende Kommunikation zwischen eine PC-Programm und dem Arduino herstellen will. Google sagt das ist einfach, macht mir aber Bauchschmerzen Ich poste hier immer meinen Fortschritt
Jetzt bin ich gerade dabei mir einen neuen Rechner zu bauen - am Alienware konnte man nicht genug basteln
Ein Feature hat es mir aber angetan: Die RGB Beleuchtung "Alien FX" mit der man Teile des Rechners in verschiedenen Farben beleuchten kann. Für mein neues Projekt möchte ich das nachbauen, am Markt habe ich leider nichts ordentliches Gefunden
Diesen ersten Post werde ich immer mit aktuellen Infos bestücken, z.B. wenn sich etwas grundlegend ändert oder neue Sachen dazukommen.
Was soll das System können?
- Vom Desktop aus steuerbar sein
- Easy to use und it just works
- Eine LED-Leiste in verschiedenen Farben beleuchten
- Die Beleuchtung über mehrere Frames hinweg animieren (siehe unten)
- In jeden Rechner integrierbar sein
- Günstiger als 50 Euro (alles zusammen)
- Beleuchtung komplett aus/an schalten
- In wenigen Minuten nachbaubar
Dem System soll man über eine UI mehrer Frames hinterlegen können. Ein Frame ist ein Zustand den die Beleuchtung annimmt. Es besteht aus einem Farbverlauf, den die Leiste von links nach rechts annimmt.
Hierfür kann die Farbe an beliebigen Stellen bis zu 10 "Color Stops", also Punkte mit einer besimmten Farbe definiert werden. Die Farben zwischen den Punkten werden berechnet. So kann z.B. die erste LED rot, die 10. grün und die 60. gelb sein, die Farbübergänge dazwischen werden errechnet. Neben einer Farbe hat auch jeder Color Stop eine Helligkeit, so lassen sich einzelne LEDs ausschalten.
Jedes Frame hat eine Zeit, welche die Dauer angiebt, wie lange das Frame unverändert gezeigt wird (Pause Time) und ein, die die Dauer des Übergangs zum nächsten Status angibt (Transition Time). Durch die Verkettung mehrer Frames lässt sich eine Farbanimation hinterlegen.
Wie soll das gehen?
Das hört sich alles wilder an als es ist. Hier seht ihr mal wie ich mir das System vorstelle:
Das Arduino Board kontrolliert die Neopixels (unten mehr) und ist über einen internen Port mit dem PC verbunden. Der Treiber des Arduino Boards simuliert auf dem USB Anschluss eine Serielle Schnittstelle, welche mit einem Programm angesteuert werden soll. Ab hier kommt Routine: Ein kleiner Webserver hostet eine Webseite mit einer REST-Schnittstelle auf der der Nutzer Frames erstellen und verknüpfen kann. Klickt der Nutzer auf "Anwenden" sendet die Webseite die Konfiguration an den Server, welcher sie umwandelt und über die serielle Schnittstelle als Byte Abfolge zum Arduino schickt. Dieser speichert sie in seinen EEPROM, damit sie auch nach einem Neustart des PCs (kein Strom mehr) noch verfügbar ist und steuert die LEDs entsprechend an.
Warum ein Web-Frontend und keine "normale" Windows GUI?
Berechtigte Frage! Durch die Abkopplung der GUI und die Kommunikation über die REST-Schnittstelle ist es später im Endeffekt egal wo die GUI bzw. die Webseite läuft - lokal auf dem Rechner, auf dem Smartphone oder Tablet im Wohnzimmer...
Denkbar wäre auch die Webschnittstellen über eine extra App anzusteuern, aber das ist Zukunftsmusik
Adafruit Neopixles
Die Neopixels sind eine einfache LED-Leiste mit RGB LEDs, die über eine C-lib vom Arduino angesteuert werden kann. Hierbei kann jeder LED eine individuelle Farbe hinterlegt werden. Die Leiste gibt es mit 30 LEDs/Meter (~20€), 60 LEDs/Meter (~30€) und 144 LEDs/Meter (~60€). Dabei ist zu beachten das der Arduino maximal 150 LEDs ansteuern kann. Die LED-Leiste lässt sich mit dem Klebeband an der Rückseite am Gehäuse festkleben. Die Leiste ist flexibel Teilbar, also nach jeder LED trennbar (per Schere, also kein zurück ), lässt sich aber wieder über Kabel verbinden. So lässt sich die Leiste auch gut im Gehäuse verteilen.
Technische Einschränkungen
- Maximal ~400 LEDs (bei 2 KB RAM, es werden pro LED 4 Byte benötigt)
- Maximal 12 Frames
- Maximal 10 Color Stops/Frame
- Kein Lauflicht (also z.B. eine LED an, alles anderen aus und im nächste Schritt nur die nächste an etc.)
Wo gibts die Source?
Auf GitHub.
Über mich
Was qualifiziert mich? Ich bin Informatikstudent im 5. Semester und habe auch schon vor dem Studium mehrere Jahre an der Schule und privat programmieren gelernt, bin also auch schon rund 7 Jahre dabei. Mein Fokus liegt auf Softwareengineering und Softwaredevelopment, durfte aber schon öfters als mir lieb ist auf diversen µConrollern Bits umherschieben und auch die Webentwicklung ist mir alles andere als fremd
Aktueller Stand
- Webseite fertig (bis auf About)
- Server fertig
- Arduino empfängt alle Informationen
- Frames aus Profilen können ohne Animation dargestellt werden
Wenns gut laueft gibt es am Wochenende die erste lauffaehige version
Nächste Schritte
- Animierte Frameübergänge
- Letzer Feinschliff auf der Webseite (große Baustelle ist noch, dass keine zwei ColorStops aufeinander gezogen werden können)
- Letzter Feinschliff am Server (korrekte Verknüpfunge Webseite <-> Arduino)
- HowTo schreiben
Und los gehts...
Am Samstag trudelt das Arduino Board ein, welches ich für die Versuche nutzen will. LEDs habe ich vorerst noch nicht bestellt, da ich erst eine grundlegende Kommunikation zwischen eine PC-Programm und dem Arduino herstellen will. Google sagt das ist einfach, macht mir aber Bauchschmerzen Ich poste hier immer meinen Fortschritt
Zuletzt bearbeitet: