Hallo zusammen,
ich möchte einige RGB-Lampen per DMX über Funk steuern. Hierzu habe ich
ein AVR-NetIO von Pollin. Das AVR-NetIO hängt im LAN und drauf läuft
ethersex mit artnet, das empfängt die DMX-Pakete über das LAN. Am NetIO
hängt ein RFM12. Die "Lampen" haben einen atmega8 mit RFM12 und sollen
die DMX-Befehle empfangen und ausführen. Was gibt es hierfür für
Software-Lösungen. Mit sind bisher folgende eingefallen:
1. Lösung: Alles IP
a. Ethersex konfiguriert mit IP over RFM12 und ArtNet (DMX over IP)
b. atmega8 empfängt IP über RFM12, liest Pakete aus steuert die Lampe
Problem: Ich habe bisher keinen IP-Stack gefunden, der in den atmega8
passt.
2. Lösung: RFM12lib
a. Ethersex konfiguriert mit ArtNet
b. In Ethersex RFM12lib einbinden
c. DMX-Pakete über rfm12lib an atmega8 senden, der dann die Lampe
steuert
Problem: Ethersex anpassen, damit Artnet die empfangenen Pakete per
rfm12lib weitersendet
Hat sowas schon mal jemand implementiert oder hat jemand eine andere
Lösung mit der geschilderten Hardware als Vorschlag?
Gruß
Mario
Hallo
Also reines DMX ist zu schnell für deine RFM12 Module. DMX hat 250kbaud.
Die RFM12 Module können digital nur max. 115kbaud. Und dann wird die
Reichweite nicht mehr all zu hoch sein. Ich schätze mal so 10-20m.
Was hast du denn für ein RFM12-Modul? 433Mhz oder 868Mhz? Ich frage
dewegen, da man bei 868Mhz nur kurz senden darf.
Wenn du mit 433Mhz sendest, dann
könntest du allerdings dein DMX Datenpaket auf wenige Adressen
beschränken. Bei DMX steht ja jedes (naja fast jedes) Datenbyte
gleichzeitig für eine DMX Adresse.
Du reduzierst die Adressen/Datenbytes zum Beispiel auf 50. Also nur die
ersten 50 Datenbytes werden über RFM12 gesendet. Dann allerdings nur mit
38400baud oder so.
Gruß Steffen
Hallo Steffen,
mit der Baudrate hast du natürlich recht. Eingesetzt werden 433er
Module. Entfernung zwischen den Modulen ist max 8 Meter.
Wichtig ist mir eigentlich auch nur, dass ich zur Steuerung nachher DMX
Software einsetzen kann. D.h. das Ethersex wird die DMX-Signale über
Artnet bei voller Geschwindigkeit annehmen können. Die Lampen würden
dann ein wenig "langsam" reagieren und die DMX-Signale dürfen natürlich
nicht mit maximaler Geschwindigkeit ankommen, sonst gehen Pakete
verloren. Kenne mich mich HW und SW ganz gut aus, aber mit DMX habe ich
bisher keine Erfahrung.
Alternativ nutze ich den Webserver des Ethersex und lasse auf dem eine
Webseite fürs iPhone laufen, um mit diesem die Lampen zu steuern. Das
wäre recht simpel, natürlich dann ohne DMX. Allerdings müßte ich dann
per ECMD die Steuerkommandos auch irgendie zu den Lampen bekommen. IP
über RFM12 wäre natürlich am besten. Aber IP-Stack im atmega8 klappt
bisher nicht. Mit rfm12lib würde es gehen, aber da habe ich keine
implementierung für ethersex gefunden.
Nutzt hier denn keiner RFM12 am Ethersex? Wie bindet Ihr die "andere"
Seite an? In jede Lampe ein ethersex-Board zu bauen scheint mir deutlich
übertrieben.
Gruß
Mario
Ergänzung: IP im atmega8 passt doch und das sogar mit Ethersex und
RFM12. Leider paßt dann kein ECMD mehr. Aber es sind noch 1-2 K frei, da
passt eine eigene Kommandoübertragung rein. Da werde ich mich mal
dranmachen.
Hallo
Leider hab ich mich noch nicht mit dem Net IO befasst und daher weiß ich
jetzt auch nicht wie das ganze funktioniert (Ethersex).
Aber die RFM12 Seite würde ich so lösen:
* jeder RGB Scheinwerfer bekommt eine Adresse
* zu jeder Adresse gehören 3Byte Daten (RotGruenBlau)
* RFM12 im Scheinwerfer empfängt ständig Datenpakete und testet diese
auf
seine eigene eingestellte Adresse
* ist die Adresse Identisch zur gesendeten, dann ist dieses Datenpaket
für
diesen Scheinwerfer bestimmt
Datenpaket RFM12:
AA,AA,AA,2D,D4,SOT,Adresse(ASCII),Data(R),Data(G),Data(B),CRC,EOT
SOT - Start of Transmission
EOT - End of Transmission
Dein Net-IO muss jetzt nur die Daten zu den jeweiligen Adressen zuordnen
und das ganze in das RFM12-Datenpaket verpacken und aussenden.
Vielleicht ist es noch hilfreich die Daten auf Änderung zu vorherigen
Daten zu prüfen. Dadurch kann man dann nur die geänderten Daten über
RFM12 versenden.
Steffen
Ich bin gerade dabei sowas zu bauen. Mein Board ist ein eigenes,
"kompatibel" zum Net-IO + DMX und Display/Buttons für die Einstellungen.
Netzwerkverbindung läuft über einen einfachen Access-Point.
Die RFM-Lösung wollte ich zuerst nehmen, hatte aber zu starke Latenzen
drin.
Wenn du eine wirklich 100%ig funktionierende Verbindung willst, wirst du
um LAN Kabel nicht herumkommen, welches alleine für sich ist, also nur
ArtNet drauf, physikalisch/VLAN mässig von allen anderen
Netzwerkgeschichten getrennt.
Wireless-DMX wäre vielleicht noch eine Lösung, haben wir viel im
Einsatz. Allerdings sind gute Geräte schweineteuer.
Bernd schrieb:> Hast du eine Bibliothek um im Atmega8 die DMX Daten auszuwerten um in> PWM Werte umzuwandeln? Nach sowas suche ich schon seit geraumer Zeit.
Hier im Forum schwirren mindestens 3 verschiedene DMX Lösungen rum und
zu PWM gibts mehrere richtig gute Artikel hier im Wiki.
Ein PWM_channel = DMXVal[channel]; dürfte nicht so schwer sein ;)
LED/PWM Dimmer mit DMX gibts auch zu Hauf im Internet mit
Code+Schaltplan.
Hallo Mario oder ethersex + DMX + Artnet Experten
ich habe zwar keine Antwort auf deine (Mario) Frage aber eine Frage von
mir.
Habe mir heute am 6.1.2012 die aktuelleste Version von ethersex
über/mit git heruntergeladen und auch alle avr devel. tools. ich habe
das pollin avr-net-io board und will es mit einem ATmega644p bestücken
und ethersex mit artnet für DMX verwenden. Die Ethersex - Artnet
Konfiguration hast du scheinbar geschafft. Ich bekomme die Option über
make menueconfig nicht angeboten nur DMX wenn DMX storgae ausgewählt
wurde aber kein artnet. Es wir dann beim make auch nicht
verwendet/eingebunden und ausserdem kommt dann beim build im dmx.c
einige compile fehler wie "PORTDMX_RS485EN_PORT" bzw. "DMX_RS485EN_PIN"
undeclared (first use in this function).
Meine Frage ist also, wie man es über menueconfig oder mit manuellen
Einstellungen schafft ein Ethersex mit Artnet + DMX zu erzeugen (ohne
Fehler ;-).
Ach ja, ich habe das ganue unter Ubuntu 11.10 mit den neu geladenen AVR
Tools wie im Ethersex Wiki angegeben probiert.
Vielen Dank
Heinz
Tippe in menuconfig "shift - 7", dann kommt die suche nach den CONFIG_s.
Dort tippste Artnet und siehst was unter "Depends" steht und was da noch
auf "n" gesetzt ist, musst du aktivieren.
Vielen Dank Nils!
Leider tut sich bei mir mit "Shift + 7" in menuconfig nichts, Das sollte
ja "/" ergeben oder? Oder bin ich zu dumm dafür? habe mal die option
"seach configuration option" gewählt aber da finde ich die depends
pakete nicht.
Zu "keine artnet Funktion":
Hast du den UDP-Support unter "Network" an?
Zu "Compile Fehler in DMX":
Hast du die pins in deiner pinning config (pinning/hardware/foobar.m4)
definiert? In etwa so:
danke für die Tipps. Ja ich habe den UDP support eingeschaltet und habe
jetzt auch die pin definitionen in netio.m4 eingetragen. die compile
fehler sind weg, der build läuft durch und ich habe das hex file
probiert.
dmx workshop sieht den artnet node und zeigt alles korrekt an, leider
kommt kein signal beim dmx output an.
die beschaltung der platine ist korrekt, weil es mit einem atmega32 und
den artnode v1 code funtioniert und sich der scheinwerfer dimmen lässt.
die platine scheint auch die artnet packete zu empfangen (die grüne lan
led blink auch sauber wenn regler verstellt werden) aber auf der dmx
buchse kommt nichts raus.
habe alles zig mal kontrolliert, pins für rs485, ip, universum etc.
werds jetzt vorerst mal aufgeben, weil mir die ideen ausgehen.
würd mich interéssieren ob das jemand in der kombination mit pollin
net-io mit dem 644p und ethersex mit artnet + dmx schon zum laufen
gebracht hat und wie seine einstellungen sind.
http://ethersex.de/index.php/Artnet
=> Make sure that NET_MAX_FRAME_LENGTH is >= 572 or artnet will be
unable to process any packages.
Das ist die Network Buffer Size, zu finden unter Network->... nachdem
unter General Setup
[*] Prompt all possible options (expert mode)
angeschalten wurde
danke für den Hinweis. Hatte ich allerdings schon beides gemacht und den
buffer auf 1024 gesetzt gehabt. Eine solche Groessenanpassung ist auch
für DHCP notwendig. Sollte eigentlich schon als Standard gesetzt werden,
oder wenn eines der beiden Pakete gewählt wurde.
Wo jetzt bei mir der Fehler liegt, weiss ich natürlich noch immer nicht,
im Artnet Teil oder im DMX Teil? Bei beiden habe ich ja schon viele
mögliche/sinnvolle Parameterkombinationen probiert und auch die
Konfigurationen der Ports/Pins etc Artnet und DMX Parameter überprüft.
Habe nochmal eine Flash Version mit Artnet V2 (vom "Original-Autor")
alleine mit zwei Universen erzeugt und das funktioniert auch. Also
funktioniert die Platine und die DMX Verdrahtung. Gibt ja auch nicht so
viele Schaltungs Varianten, die mit einem oder zwei Universen.
Nur im Zusammenhang mit ethersex und all den ganzen möglichen
Einstellungen habe ich es nicht zum laufen gebracht.
Okay, kannst du per ecmd dir das Universe ausgeben lassen?
z.B. dmx universe 1 für das erste Universe - sollten dort die Werte
stehen die du sendest, weißt du dass das Problem irgendwo zwischen
dmx-storage und dmx liegt.
Sollte das ganze universe '000' sein, dann stimmt etwas mit Artnet oder
dem Netzwerk nicht. Das bekommst du am einfachsten raus indem du die
"debug" Option von Artnet/IP Stack aktivierst.
Ich nehme mal an, dass du das pinning entsprechend angepasst hast, für
die Anleitung von dmxcontrol sollte das
1
ifdef(`conf_DMX',`dnl
2
/* port config for dmx */
3
pin(DMX_RS485EN,PD3,OUTPUT)
4
pin(DMX_RS485TX,PD1,OUTPUT)
5
')
sein (ungetestet!)
Du kannst auch mal bei #ethersex (freenode.net) vorbeischauen!
habe deinen rat befolgt und werte ins universum 0 geschrieben - mit dmx
workshop - und mit dem telnet ecmd ausgelesen und die werte die ich
gesetzt habe wurden angezeigt.
am scheinwerfer hat sich nichts getan.
ja die pins habe ich gesetztt wobei ich um mit artnet_v2 kompatibel zu
sein auf pd4 gelätet und das beim pinning auch so gesetzt.
ich denke ich werde es wohl aufgeben müssen. ich habe schon so viele
abende/nächte herumprobiert, dass ich zu sonst nichts mehr komme. das
ist den aufwand nicht wert. ich habe ein funktionierendes hexfile mit
avrnet_2, das zwar sonst nichts kann aber das funktioniert. mit ethersex
bekomm ich das nicht in einem vertretbarem zeutraum hin.
danke trotzdem für die hilfe.