Forum: Mikrocontroller und Digitale Elektronik atmega, DMX und RFM12


von Mario S. (Gast)


Lesenswert?

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

von Steffen H. (avrsteffen)


Lesenswert?

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

von Mario S. (Gast)


Lesenswert?

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

von Mario S. (Gast)


Lesenswert?

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.

von Steffen H. (avrsteffen)


Lesenswert?

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

von Bernd (Gast)


Lesenswert?

Hallo!
Hast du eine Bibliothek um im Atmega8 die DMX Daten auszuwerten um in 
PWM Werte umzuwandeln? Nach sowas suche ich schon seit geraumer Zeit.

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

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.

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

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.

von henne (Gast)


Lesenswert?

jau. (stimme Nils in allen Punkten zu.)

von frosch f. (frosch_f)


Lesenswert?

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

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

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.

von frosch f. (frosch_f)


Lesenswert?

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.

von e6 (Gast)


Lesenswert?

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:
1
ifdef(`conf_DMX', `dnl
2
  /* port config for dmx */
3
  pin(DMX_RS485EN, PD3, OUTPUT)
4
  pin(DMX_RS485TX, PD1, OUTPUT)
5
')

von frosch f. (frosch_f)


Lesenswert?

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.

von e6 (Gast)


Lesenswert?

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

von frosch f. (frosch_f)


Lesenswert?

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.

von e6 (Gast)


Lesenswert?

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!

von frosch f. (frosch_f)


Lesenswert?

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.

von frosch f. (frosch_f)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

Stichwort RFM70, machen bis 2MBaud mit und bei 8M reichen die +5dbm 
locker....

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.