|
|
Zeile 76: |
Zeile 76: |
| Bild:Stellacontrol-channels.png|Channels plugin | | Bild:Stellacontrol-channels.png|Channels plugin |
| </gallery> | | </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 ===
| |
− | 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)
| |
− | * Anzahl an nun folgenden Cronjobs (1 Byte, uint8_t)
| |
− | * 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)
| |
| | | |
| [[Category:Ethersex]] | | [[Category:Ethersex]] |
| [[Category:PWM]] | | [[Category:PWM]] |
Was ist das Stella Modul
Das Stella Modul erzeugt PWM
Signale und gibt diese an einem wahlfreiem Port des Mikrocontrollers aus. Es
können somit bis zu 8 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 auch eigene Timer benötigen, kompiliert werden.
- Gammakorrektur ist noch experimentell und kann optional dazugeschaltet werden.
- Stella kann sehr schnell neue Farbwerte erhalten um beispielsweise auch bei härtesten Klängen noch "beatgenau" Farbwechsel durchzuführen.
- Kanäle können nicht nur einfach gesetzt werden, sondern auch zum Zielwert faden. Es sind mehrere Fade Algorithmen implementiert.
- Angesteuert wird entweder per UDP (Protokoll Details stehen weiter unten), mit Hilfe des ethersex ecmd Systems oder durch Crontabs (Zeitgesteuerte Farb/Lichwechsel).
- 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)
Um Stella in ethersex zu aktivieren, wählt man im Menü
│ │ Load a Default Configuration --->
│ │ ...
│ │ Applications --->
│ │ ...
│ │ [*] Stella Light --->
Stella arbeitet mit den Modulen Ecmd speed protocol, eeprom und Cron zusammen und bietet selber eine Moodlight Funktionalität. Eines dieser Möglichkeiten sollte genutzt werden, sonst tut Stella schlicht gar nichts.
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 für Stella zu nutzen:
ifdef(`conf_STELLA', `dnl
STELLA_PORT_RANGE(PD2,PD7)
')
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.
Ansteuerung
Per ECMD
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
Liefert die Anzahl an einkompilierten Kanälen zurück. Kann nicht zur Laufzeit geändert werden.
stella version
Liefert die Stella Protokoll Version zurück.
stella fadestep get/set
Setzt bzw. liefert die Geschwindigkeit fürs Faden. Fordert einen Paramter fürs setzen.
channel get/set
Setzt bzw. liefert den Wert eines Kanals. Der Kanal und evtl. die Zielhelligkeit müssen angegeben werden.
Per Netzwerk (UDP)
Für diesen Modus muss dein Ethersex mit Ecmd speed protocol Unterstützung compiliert sein.
Programme
Du findest im ethersex Quellcode unter contrib/stella ein kleines c Programm,
welches du mit "make" übersetzten kannst.
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: