Stella Light: Unterschied zwischen den Versionen

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
(Programme)
 
(26 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
== Was ist das Stella Modul ==
 
== Was ist das Stella Modul ==
 
Das Stella Modul erzeugt [http://de.wikipedia.org/wiki/Pulsweitenmodulation PWM]
 
Das Stella Modul erzeugt [http://de.wikipedia.org/wiki/Pulsweitenmodulation PWM]
Signale und gibt diese an einem wahlfreiem Port des Mikrocontrollers aus. Es
+
Signale und gibt diese an bis zu zwei wahlfreien Ports des Mikrocontrollers aus. Es
können somit bis zu 8 unabhängige Signale für z.B. Servo Motoren oder LEDs
+
können somit bis zu 16 unabhängige Signale für z.B. Servo Motoren oder LEDs
 
generiert werden. Für das Faden von LEDs ist dies insbesondere nützlich, da PWM
 
generiert werden. Für das Faden von LEDs ist dies insbesondere nützlich, da PWM
 
in der Regel die einzige, einfach zu realisierende Möglichkeit für diesen Zweck
 
in der Regel die einzige, einfach zu realisierende Möglichkeit für diesen Zweck
Zeile 9: Zeile 9:
 
Nützlich zu wissen:
 
Nützlich zu wissen:
 
* PWM wird hier per Software nachgebildet, es werden nicht die (meist nur in kleiner Zahl vorhandenen) Hardware PWM Kanäle benutzt.
 
* PWM wird hier per Software nachgebildet, es werden nicht die (meist nur in kleiner Zahl vorhandenen) Hardware PWM Kanäle benutzt.
* Das Stella Modul benötigt einen komplett eigenen 8-Bit Timer und kann daher nicht zusammen mit anderen Modulen, die auch eigene Timer benötigen, kompiliert werden.
+
* Das Stella Modul benötigt einen komplett eigenen 8-Bit Timer und kann daher nicht zusammen mit anderen Modulen, die den selben Timer benötigen, kompiliert werden.
* [http://de.wikipedia.org/wiki/Gammakorrektur Gammakorrektur] ist noch experimentell und kann optional dazugeschaltet werden.
+
* Dieses Modul ist nicht kompatibel zu Modulen, welche Interrupts abschalten (z.B. das Funk Modul). Es tritt bei Nichtbeachtung sichtbares Flimmern auf.
* Stella kann sehr schnell neue Farbwerte erhalten um beispielsweise auch bei härtesten Klängen noch "beatgenau" Farbwechsel durchzuführen.
+
* Keine [http://de.wikipedia.org/wiki/Gammakorrektur Gammakorrektur]
* Kanäle können nicht nur einfach gesetzt werden, sondern auch zum Zielwert faden. Es sind mehrere Fade Algorithmen implementiert.
+
* StellaLight hat eine hohe PWM Frequenz um sichtbares flimmern zu vermeiden (Bei 18 MHz Takt wird eine >200Hz PWM erzeugt) und kann sehr schnell neue Farbwerte annehmen.
* Angesteuert wird entweder per UDP (Protokoll Details stehen weiter unten), mit Hilfe des ethersex ecmd Systems oder durch [[CRON-Dienst|Crontabs]] (Zeitgesteuerte Farb/Lichwechsel).
+
* Um Prozessorzeit zu sparen kann die Frequenz ca halbiert werden, wenn die Option "Fast Frequency" nicht aktiviert wurde.
* [http://de.wikipedia.org/wiki/User_Datagram_Protocol UDP] unterstützt selber keine Bestätigung, dass ein neuer Befehl eingegangen ist. Das Stella Protokoll kann diese Funktion aber optional liefern. (Bei schnellen Wechseln nicht empfehlenswert)
+
* Kanäle können nicht nur einfach gesetzt werden, sondern auch zum Zielwert faden. Es sind zwei Fade Algorithmen implementiert.
 +
* Angesteuert wird per [[ECMD]], mit Hilfe der inline-vfs Webseite oder über das separate UDP Stella Modul.
  
==Stella Modul aktivieren: Menuconfig==
+
==StellaLight Modul aktivieren: Menuconfig==
 
Um Stella in ethersex zu aktivieren, wählt man im Menü
 
Um Stella in ethersex zu aktivieren, wählt man im Menü
  
Zeile 24: Zeile 25:
 
   │ │                  ...
 
   │ │                  ...
 
   │ │                  [*] Stella Light  --->
 
   │ │                  [*] Stella Light  --->
  │ │                        (2342) Stella UDP Port
 
  │ │                        [ ] Gamma correction
 
  │ │                        [*] Stella Polling
 
  │ │                        ...
 
  │ │                        [*] EEProm saving and loading channel values
 
  
Stella arbeitet bisher mit den Modulen UDP, EEProm, ECMD und CRON zusammen. Eines davon sollte benutzt werden, sonst können die Stella Pins nicht angesteuert werden!
+
StellaLight kann über ecmd, inline-vfs webseite und artnet angesteuert werden. Wenn artnet benutzt wird, verhält sich das StellaLight Modul wie ein DMX Client.
  
Es gibt noch ein paar Dinge, die nicht per menuconfig konfiguriert werden können. Du musst z.B. folgendes in pinning/hardware/{deineHardware}.m4 hinzufügen, falls es nicht schon eingetragen ist, um Pins 2-7 von PortD für Stella zu nutzen:
+
Es gibt noch ein paar Dinge, die nicht per menuconfig konfiguriert werden können. Du musst z.B. folgendes in ''pinning/hardware/{deineHardware}.m4'' hinzufügen, falls es nicht schon eingetragen ist, um beispielsweise Pins 2-7 von PortD und Timer 1 für Stella zu nutzen :
 
<source lang="text">
 
<source lang="text">
 
ifdef(`conf_STELLA', `dnl
 
ifdef(`conf_STELLA', `dnl
   STELLA_PORT_RANGE(PD2,PD7)
+
   STELLA_PORT1_RANGE(PD2,PD7)
 +
  STELLA_USE_TIMER(1)
 
')
 
')
 
</source>
 
</source>
 +
 +
 +
beim mega644 (etherrape) muss es wie folgt lauten:
 +
<source lang="text">
 +
ifdef(`conf_STELLA', `dnl
 +
  STELLA_PORT1_RANGE(PD0,PD7)
 +
  STELLA_USE_TIMER(2)
 +
')
 +
</source>
 +
 +
Möchtest du bis zu 16 Kanäle nutzen, musst du zusätzlich STELLA_PORT2_RANGE angeben.
  
 
== Hardware Beispiel Aufbauten ==
 
== Hardware Beispiel Aufbauten ==
Die gibt es. Aber ganz offensichtlich hat noch niemand hier was eingetragen. Genau DU könntest jetzt anfangen und hier deinen Aufbau präsentieren.
+
 
 +
{| align="right"
 +
|| [[Bild:1_stella_all_off.jpg|200px|thumb|Testaufbau von Stella mit Beschreibung]]
 +
|| [[Bild:2_stella_all_on.jpg|200px|thumb|Stella leuchtet durch PWM der Stella Channels]]
 +
|| [[Bild:3_mosfets.jpg|200px|thumb|Mosfet mit Lastwiderständen]]
 +
|| [[Bild:4_schaltung_fet.png|200px|thumb|Schaltung der Mosfet Platine]]
 +
|}
 +
 
 +
Luxeon Leds: http://www.leds.de/High-Power-LEDs/Lumileds-LUXEON-LEDs/<br>
 +
IRFR1205.pdf: http://ethersex.de/index.php/Bild:Irfr1205.pdf<br>
 +
control6.src: http://paste2.org/p/1184512<br>
 +
Pinning für etherrape: http://paste2.org/p/1184514
 +
 
 +
Als Leds verwende ich hier "Luxeon Leds" welche ich mit den Lastwiderständen auf zirka 700-800mA begrenzt habe. Die Lastwiderstände haben zirka 1,5Ohm..2,2 Ohm, kommt darauf an welche Farbe die Leds haben, und mit welcher Spannung die Leds versorgt werden. Spätestens jetzt sollte man sich das Datenblatt der gekauften Led zur Hand nehmen. Ich verwende hier ein IR([[IRMP]]) Signal um die Leds zu dimmen. Es soll einmal als Hintergrundbeleuchtung dienen. Durch das Control6 Script ist es möglich via Tastendruck den PWM der Stella Lights zu steuern. Ich verwende in diesen Beispiel eine Denon Fernbedienung.
  
 
== Ansteuerung ==
 
== Ansteuerung ==
  
=== Per ECMD ===
+
=== Per [[ECMD]] ===
 
Stella unterstützt ecmd Befehle. Folgende Befehle können benutzt werden:
 
Stella unterstützt ecmd Befehle. Folgende Befehle können benutzt werden:
 
==== stella cron ====
 
Fügt dem [[CRON-Dienst]] einen job für Stella hinzu. Es müssen mindestens als Argumente der Kanal und
 
die Zielhelligkeit übergeben werden. Optional sind dann noch Minute, Stunde, Tag, Monat, Wochentag und Wiederholungen.
 
Wenn Optionale Parameter nicht angegeben werden, wird -1 angenommen.
 
  
 
==== channels ====
 
==== channels ====
 
Liefert die Anzahl an einkompilierten Kanälen zurück. Kann nicht zur Laufzeit geändert werden.
 
Liefert die Anzahl an einkompilierten Kanälen zurück. Kann nicht zur Laufzeit geändert werden.
  
==== stella version ====
+
==== stella fadestep VALUE ====
Liefert die Stella Protokoll Version zurück.
+
Setzt bzw. liefert die Geschwindigkeit fürs Faden. Fordert einen Parameter fürs setzen.
  
==== stella fadestep get/set ====
+
==== channel CHANNEL VALUE FADE_FUNCTION ====
Setzt bzw. liefert die Geschwindigkeit fürs Faden. Fordert einen Paramter fürs setzen.
+
Setzt bzw. liefert den Wert eines Kanals. Fürs abfragen muss nur CHANNEL angegeben werden. Fürs setzen muss der Kanal per CHANNEL und die Zielhelligkeit per VALUE angegeben werden. Optional kann noch die Fade Funktion ausgewählt werden. Entweder "s" für setzen, "f" für faden oder "y" für flashy.
 
 
==== channel get/set ====
 
Setzt bzw. liefert den Wert eines Kanals. Der Kanal und evtl. die Zielhelligkeit müssen angegeben werden.
 
 
 
=== Per UDP ===
 
Für diesen Modus muss dein Ethersex mit UDP Unterstützung compiliert sein.
 
Der Stella UDP Port kann in der menuconfig ausgewählt werden. Standard ist hier 2342.
 
  
 
=== Programme ===
 
=== Programme ===
Du findest im ethersex Quellcode unter contrib/stella ein kleines c Programm,
+
Du findest im ethersex Quellcode unter contrib/artnet ein c Programm,
welches du mit "make" übersetzten kannst.
+
welches du mit "make" übersetzten kannst. Damit kann ethersex wie ein dmx Client angesprochen werden, sofern artnet mit einkompiliert worden ist.
 
 
Ein Programm mit Oberfläche für Windows, MacOS und Linux gibt es ebenfalls:
 
Stella Control. Quellcode und Binaries für Linux und Windows gibt es unter
 
http://github.com/davidgraeff/stellacontrol/downloads.
 
Zum Zeitpunkt des Schreibens war Version 1.3 aktuell.
 
Hier einige Screenshots von Version 1.3:
 
<gallery>
 
  Bild:Stellacontrol-choose.png|Hardware auswählen
 
  Bild:Stellacontrol-main.png|Cronjobs plugin
 
  Bild:Stellacontrol-channels.png|Channels plugin
 
</gallery>
 
 
 
== UDP Ansteuerungs Protokoll ==
 
Das Stella Protokoll ist recht einfach. Es wird einfach das Kommando Byte und evtl. die dazugehörigen weiteren Datenbytes an einem Stück gesendet. Es können dabei mehrere Kommandos in einem Datagramm (ohne spezielle Trennung) versendet werden.
 
Es werden hier '''nicht!''' die eigentlichen Bits o.ä. für das Kommandobyte erwähnt, sondern die symbolischen Bezeichner aus der stella.h Datei.
 
 
 
=== Helligkeitssteuerung ===
 
Es gibt ein Datenbyte, dass die Zielhelligkeit angibt. (0 bis 255)
 
==== Helligkeit sofort setzen ====
 
Kommandobyte: STELLA_SET_COLOR_0, STELLA_SET_COLOR_1,
 
STELLA_SET_COLOR_2, STELLA_SET_COLOR_3, STELLA_SET_COLOR_4,
 
STELLA_SET_COLOR_5, STELLA_SET_COLOR_6, STELLA_SET_COLOR_7
 
==== Faden ====
 
STELLA_FADE_COLOR_0, STELLA_FADE_COLOR_1,
 
STELLA_FADE_COLOR_2, STELLA_FADE_COLOR_3, STELLA_FADE_COLOR_4,
 
STELLA_FADE_COLOR_5, STELLA_FADE_COLOR_6, STELLA_FADE_COLOR_7,
 
==== Flashen, dann ausfaden====
 
STELLA_FLASH_COLOR_0, STELLA_FLASH_COLOR_1,
 
STELLA_FLASH_COLOR_2, STELLA_FLASH_COLOR_3, STELLA_FLASH_COLOR_4,
 
STELLA_FLASH_COLOR_5, STELLA_FLASH_COLOR_6, STELLA_FLASH_COLOR_7,
 
 
 
=== Fade Algorithmus ===
 
Das Datenbyte gibt den Algorithmus/die Funktion an, welche für das Faden verwendet werden soll und kann folgende Werte annehmen: 0: Normales Auf/Abfaden; 1: Flashdimmen
 
 
 
Kommandobyte: STELLA_SELECT_FADE_FUNC
 
 
 
=== Fade Geschwindigkeit ===
 
Das Datenbyte nimmt die Geschwindigkeit, die für das Faden angewendet werden soll, auf. Es sind zwar Werte von 0 bis 255 möglich, Sinn machen aber nur welche zwischen 1 (maximal schnell) und 50 (gähnend langsam).
 
 
 
Kommandobyte: STELLA_FADE_STEP
 
 
 
=== Stella nach Werten fragen ===
 
Es muss kein weiteres Datenbyte angegeben werden.
 
Die Rückgabe erfolgt auf den UDP Port deines Rechners, von welchem du
 
die Anfrage abgesendet hast oder bei Broadcast auf den UDP Port, welcher in der ethersex Software angegeben wurde. (Kann per menuconfig konfiguriert werden.)
 
Die Struktur der Antwort ist weiter unten erläutert.
 
 
 
Kommandobyte: STELLA_UNICAST_RESPONSE, STELLA_BROADCAST_RESPONSE
 
 
 
=== EEProm nutzen ===
 
Der EEProm Speicher ist ein nicht flüchtiger Speicher der unsere Stella Kanäle auch über einen Neustart des Geräts hinweg erhalten kann.
 
 
 
==== Werte in den eeprom speichern ====
 
Kommandobyte: STELLA_SAVE_TO_EEPROM
 
 
 
==== Werte aus dem eeprom laden ====
 
Kommandobyte: STELLA_LOAD_FROM_EEPROM
 
 
 
=== Cronjob Anzahl abfragen ===
 
Fragt das Stella Modul, ob es nicht vielleicht verraten möchte, wieviele Cron Jobs das Modul Cronjobs gerade speichert.
 
 
 
Kommandobyte: STELLA_COUNT_CRONJOBS
 
 
 
=== Cronjobs abfragen ===
 
Fordert Stella auf, alle (alle!) Cronjobs des Cronjob Moduls zurückzuliefern. Da diese im Ram der AVR Prozessoren gehalten werden, dürften das nicht allzu viele sein. (Vielleicht maximal 20?!)
 
 
 
Kommandobyte: STELLA_GET_CRONJOBS
 
 
 
=== Cronjob hinzufügen ===
 
''Diese Funktion ist noch experimentell und kann sich noch ändern.'' Fügt einen Cronjob dem Cronjob Modul hinzu. Der Aufbau der Datenbytes sieht folgendermaßen aus.
 
* Minute (1 Byte, int8_t)
 
* Hour (1 Byte, int8_t)
 
* Day (1 Byte, int8_t)
 
* Month (1 Byte, int8_t)
 
* Day of week (1 Byte, int8_t)
 
* repeat (1 Byte, uint8_t)
 
* appid (1 Byte, char)
 
* x:= additional byte count (1 Byte, uint8_t)
 
* additional bytes (x Bytes)
 
 
 
Kommandobyte: STELLA_ADD_CRONJOB
 
 
 
== UDP Antwort Protokoll ==
 
Auf bestimmte Befehle wie etwa STELLA_UNICAST_RESPONSE antwortet das Stella Modul ebenfalls mit UDP Packeten. Dies wird z.B von dem Programm Stella Control zur Verbindung mit Stella verwendet.
 
 
 
Jede Antwort hat immer den selben 2 Byte Header: Identifikationsbyte 'S' und das Kommandobyte des Befehls, der diese Antwort hervorgerufen hat, also z.B. STELLA_UNICAST_RESPONSE.
 
 
 
=== STELLA_UNICAST_RESPONSE, STELLA_BROADCAST_RESPONSE ===
 
Die Antwort ist 12 Bytes lang.
 
* Header (2 Bytes)
 
* Verwendete Protokoll Version (1 Byte, uint8_t)
 
* Anzahl der verwendeten Kanäle (1 Byte, uint8_t)
 
* Aktuelle Helligkeitswerte aller 8 Kanäle (8 Bytes, uint8_t)
 
 
 
=== STELLA_COUNT_CRONJOBS ===
 
Die Antwort ist 3 Bytes lang.
 
* Header (2 Bytes)
 
* Anzahl an Cronjobs (1 Byte, uint8_t)
 
  
=== STELLA_GET_CRONJOBS ===
+
<s>Stelladroid, eine Android App um die Kanäle bequem vom Sofa aus zu steuern. http://sourceforge.net/projects/stelladroid/. </s>
Die Antwort ist mindestens 3 Bytes lang und enthält wirklich alle Cronjobs, sofern der UDP Rahmen nicht vorher erschöpft war (dieses Szenario sollte nicht auftreten).
 
  
* Header (2 Bytes)
+
[[Category:Ethersex]]
* Anzahl an nun folgenden Cronjobs (1 Byte, uint8_t)
+
[[Category:PWM]]
* Cronjobs (mehrere dieser Strukturen können folgen)
 
** Minute (1 Byte, int8_t)
 
** Hour (1 Byte, int8_t)
 
** Day (1 Byte, int8_t)
 
** Month (1 Byte, int8_t)
 
** Day of week (1 Byte, int8_t)
 
** repeat (1 Byte, uint8_t)
 
** appid (1 Byte, char)
 
** x:= additional byte count (1 Byte, uint8_t)
 
** additional bytes (x Bytes)
 

Aktuelle Version vom 19. August 2011, 09:30 Uhr

Was ist das Stella Modul

Das Stella Modul erzeugt PWM Signale und gibt diese an bis zu zwei wahlfreien Ports des Mikrocontrollers aus. Es können somit bis zu 16 unabhängige Signale für z.B. Servo Motoren oder LEDs generiert werden. Für das Faden von LEDs ist dies insbesondere nützlich, da PWM in der Regel die einzige, einfach zu realisierende Möglichkeit für diesen Zweck ist.

Nützlich zu wissen:

  • PWM wird hier per Software nachgebildet, es werden nicht die (meist nur in kleiner Zahl vorhandenen) Hardware PWM Kanäle benutzt.
  • Das Stella Modul benötigt einen komplett eigenen 8-Bit Timer und kann daher nicht zusammen mit anderen Modulen, die den selben Timer benötigen, kompiliert werden.
  • Dieses Modul ist nicht kompatibel zu Modulen, welche Interrupts abschalten (z.B. das Funk Modul). Es tritt bei Nichtbeachtung sichtbares Flimmern auf.
  • Keine Gammakorrektur
  • StellaLight hat eine hohe PWM Frequenz um sichtbares flimmern zu vermeiden (Bei 18 MHz Takt wird eine >200Hz PWM erzeugt) und kann sehr schnell neue Farbwerte annehmen.
  • Um Prozessorzeit zu sparen kann die Frequenz ca halbiert werden, wenn die Option "Fast Frequency" nicht aktiviert wurde.
  • Kanäle können nicht nur einfach gesetzt werden, sondern auch zum Zielwert faden. Es sind zwei Fade Algorithmen implementiert.
  • Angesteuert wird per ECMD, mit Hilfe der inline-vfs Webseite oder über das separate UDP Stella Modul.

StellaLight Modul aktivieren: Menuconfig

Um Stella in ethersex zu aktivieren, wählt man im Menü

 │ │                Load a Default Configuration  --->
 │ │                ...
 │ │                Applications  --->
 │ │                  ...
 │ │                  [*] Stella Light  --->

StellaLight kann über ecmd, inline-vfs webseite und artnet angesteuert werden. Wenn artnet benutzt wird, verhält sich das StellaLight Modul wie ein DMX Client.

Es gibt noch ein paar Dinge, die nicht per menuconfig konfiguriert werden können. Du musst z.B. folgendes in pinning/hardware/{deineHardware}.m4 hinzufügen, falls es nicht schon eingetragen ist, um beispielsweise Pins 2-7 von PortD und Timer 1 für Stella zu nutzen  :

ifdef(`conf_STELLA', `dnl
  STELLA_PORT1_RANGE(PD2,PD7)
  STELLA_USE_TIMER(1)
')


beim mega644 (etherrape) muss es wie folgt lauten:

ifdef(`conf_STELLA', `dnl
  STELLA_PORT1_RANGE(PD0,PD7)
  STELLA_USE_TIMER(2)
')

Möchtest du bis zu 16 Kanäle nutzen, musst du zusätzlich STELLA_PORT2_RANGE angeben.

Hardware Beispiel Aufbauten

Testaufbau von Stella mit Beschreibung
Stella leuchtet durch PWM der Stella Channels
Mosfet mit Lastwiderständen
Schaltung der Mosfet Platine

Luxeon Leds: http://www.leds.de/High-Power-LEDs/Lumileds-LUXEON-LEDs/
IRFR1205.pdf: http://ethersex.de/index.php/Bild:Irfr1205.pdf
control6.src: http://paste2.org/p/1184512
Pinning für etherrape: http://paste2.org/p/1184514

Als Leds verwende ich hier "Luxeon Leds" welche ich mit den Lastwiderständen auf zirka 700-800mA begrenzt habe. Die Lastwiderstände haben zirka 1,5Ohm..2,2 Ohm, kommt darauf an welche Farbe die Leds haben, und mit welcher Spannung die Leds versorgt werden. Spätestens jetzt sollte man sich das Datenblatt der gekauften Led zur Hand nehmen. Ich verwende hier ein IR(IRMP) Signal um die Leds zu dimmen. Es soll einmal als Hintergrundbeleuchtung dienen. Durch das Control6 Script ist es möglich via Tastendruck den PWM der Stella Lights zu steuern. Ich verwende in diesen Beispiel eine Denon Fernbedienung.

Ansteuerung

Per ECMD

Stella unterstützt ecmd Befehle. Folgende Befehle können benutzt werden:

channels

Liefert die Anzahl an einkompilierten Kanälen zurück. Kann nicht zur Laufzeit geändert werden.

stella fadestep VALUE

Setzt bzw. liefert die Geschwindigkeit fürs Faden. Fordert einen Parameter fürs setzen.

channel CHANNEL VALUE FADE_FUNCTION

Setzt bzw. liefert den Wert eines Kanals. Fürs abfragen muss nur CHANNEL angegeben werden. Fürs setzen muss der Kanal per CHANNEL und die Zielhelligkeit per VALUE angegeben werden. Optional kann noch die Fade Funktion ausgewählt werden. Entweder "s" für setzen, "f" für faden oder "y" für flashy.

Programme

Du findest im ethersex Quellcode unter contrib/artnet ein c Programm, welches du mit "make" übersetzten kannst. Damit kann ethersex wie ein dmx Client angesprochen werden, sofern artnet mit einkompiliert worden ist.

Stelladroid, eine Android App um die Kanäle bequem vom Sofa aus zu steuern. http://sourceforge.net/projects/stelladroid/.