Forum: Mikrocontroller und Digitale Elektronik Schnelle Datenübertragung vom PC -> Ethernet -> Atmega


von Enrico P. (ep-lights)


Lesenswert?

Hallo

Ich bin momentan auf der suche einer Möglichkeit, zur schnellen 
Datenübertragung vom PC (Software in C-sharp) über Ethernet zu einem 
Atmega.

Das ganze benötige ich für eine große LED-Matrix (max 64x64 pixel).
Als Hardware wollte ich das Board von Ulrich Radig verwenden.

Das Problem momentan ist, welches Protoll ist für die Datenübertragung 
sinnvoll und benötigt den geringsten Rechenaufwand im Atmega32?


Das Prinzip soll folgendermaßen sein:

Ich hab eine Software(Windows XP -> C-Sharp) in dieser erzeuge ich die 
Bilder für die Matrix. Diese Daten müssen jetzt über Ethernet(Anschluss 
am Notebook) zu einem Microcontroller, dieser verteilt die Daten dann an 
die Einzelnen LED-Matrix-Module (je 16x16 Pix).

1. Meine Fragen wären welches Protokoll wäre da am 
sinvollsten/einfachsten ?
Welche weiteren Protokolle müsste der Atmega auf dem U.Radig board 
beherschen damit überhaupt eine kommunikation zwischen meinem PC prog 
und dem Atmega zustande kommt ?

2. Gibt es vielleicht ein Projekt in dieser Richtung.

vielen dank für an alle die mir helfen können !!

Die Matrix-Module funktionieren bereits wunderbar. Werden jedoch noch 
mit DMX angesteuert. Jedoch benötigt jedes modul(16x16) 512 Kanäle, was 
bei mehreren Modulen sehr unpraktisch ist.

www.ep-lights.de  <- hier gibts schon einige Bilder/Videos

von Juergen G. (jup)


Lesenswert?

Sieh Dir mal den WIZnet W5100 oder W5300 an, da ist der ganze TCP/IP 
Kram schon drin. Damit hast Du mehr Luft im uC und kannst einen 
einfachen ftp-server im uC unterbringen.

Ju

von Purzel H. (hacky)


Lesenswert?

ftp? Das ist eher overkill. For sowas Einfaches sollte UDP genuegen.

von Christian (Gast)


Lesenswert?

Also ich würde einfach auf Artnet gehen. Dann bist du kompatibel zu 
jedermodernen Lichtsteuersoftware und du musst nicht wiklich viel 
umsetzen. Klar brauchst du dann entprechend viele Artnet Universen. Aber 
dafür ist man felxibel.
Such einfach mal nach Artnet Dongle für 25 Euro bei Google.

von Glaskugel (Gast)


Lesenswert?

Enrico Paul schrieb:
> Ich bin momentan auf der suche einer Möglichkeit, zur schnellen
> Datenübertragung vom PC (Software in C-sharp) über Ethernet zu einem
> Atmega.

Was verstehst du unter "schnell"?  Mit der Morsetaste wären 60 WpM schon 
schnell. Welche Datenrate mußt du erreichen?

von Falk B. (falk)


Lesenswert?

@  Enrico Paul (ep-lights)

>Die Matrix-Module funktionieren bereits wunderbar. Werden jedoch noch
>mit DMX angesteuert. Jedoch benötigt jedes modul(16x16) 512 Kanäle,

16x16 ist bei mir 256. Also kann man zwei Module an ein DMX-Universum 
klemmen. bei 64x64 Pixeln brauchst du somit 16 Module bzw. 8 
DMX-Universen. Sowas gibt es AFAIK zu kaufen, auch passende 
DMX-Software.

Ansonsten halt UDP über Ethernet.

MFG
Falk

von Enrico P. (ep-lights)


Lesenswert?

Falk Brunner schrieb:
> 16x16 ist bei mir 256.

das stimmt, da ich aber 4 farben pro/pixel verwende benutze ich zwei 
kanäle pro Pixel. Deshalb 512 Kanäle pro Modul.

Das ganze mittels DMX bei 16 Modulen zu realisieren ist mit zu 
aufwendig. PC-Steuersoftware hab ich selbst programmiert. Da bin ich 
unabhängig und muss mich nicht auf Standards beschränken.

Ich wollte halt den Verkabelaufwand so gering wie möglich halten. 
Deshalb die Idee direkt von der LAN-Buchse am Notebook zu den 
LED-Modulen mit Netzwerkkabel und dann mit ner Schaltung das ganze 
aufsplitten auf die Matri-Module.

bezüglich SChnell:

Wenn das ganze unkompriemiert übertragen wird sind das 64x64 = 4096 
Pixel * 2Byte/Pixel = 8192 Byte mit 20 Bildern/Sek = 163840 Byte/sek 
Nutzdaten.

Das wäre aber die Obergrenze. Wenns nur die hälfte wird ist auch ok.


An UDP hab ich auch schon gedacht. Wie groß sind den bei einem UDP Paket 
die max Nutzdaten ?

von Alexander S. (esko) Benutzerseite


Lesenswert?

Enrico Paul schrieb:
> Wenn das ganze unkompriemiert übertragen wird sind das 64x64 = 4096
> Pixel * 2Byte/Pixel = 8192 Byte mit 20 Bildern/Sek = 163840 Byte/sek
> Nutzdaten.
Also 4 Bit pro Farbe?

Was spricht denn gegen natives RS485?

von ich (Gast)


Lesenswert?

Naja, 2Byte/Pixel sind bei mit 16k Farben.

Ich komme auf 1kByte pro Bild, macht 20kByte/s

von Purzel H. (hacky)


Lesenswert?

Ja. Ich wuerd mir auvh kein ethernet antun, wenn es denn nicht unbedingt 
sein muss. 160kByte sollte noch mit RS485 machbar sein. Da gibt's 
Treiber bis 25MBit und drueber. zB die SN65HVD23D machen noch 160m bei 
25MBit.

von sven (Gast)


Lesenswert?

Hab sowas ähnliches mal gebastelt
(http://www.twitvid.com/H3UDG)

Das sind soweit ich weiß 128x16 Pixel mit 3 Farben (also insgesamt 2Bit)
Macht 512 Byte pro Bild
Angenommen 20 Bilder pro Sekunde sind das 10Kbyte = 80Kbit

Das ganze schicke ich direkt als Binär/Bitmap Daten per UDP an das 
LEDPanel
Da hängt ein ENC28J60 an nem Mega32.

Der Mega macht fast nix weil 1 UDP Paket = 1 Bild
und fast keine Prüfung der Daten (Ich check nur obs aufm richtigen Port 
ankommt und ob die Paketgröße stimmt)

Damit ist der Flaschenhals eigentlich nur die Schnittstelle zwischen 
Mega32 und Netzwerkchip - in meinem Fall ne SPI die auf irgendwas bei 
1MBit läuft.

Ich vermute mit deiner Datenrate von 1Mbit kommst du ziemlich an die 
Leistungsgrenze des AtMega, aber es könnte klappen

Gruß,
Sven

von sven (Gast)


Lesenswert?

@Hex Oschi:

Was magst du an Ethernet nicht?
Ich benutz Ethernet mittlerweile sogar bei Datenverbindungen zwischen 2 
8Bit Controllern. Finds recht angenehm wenn ich die bestehende 
Netzinfrastruktur nutzen kann.

Nochmal
Gruß,
Sven

von Falk B. (falk)


Lesenswert?

@  Enrico Paul (ep-lights)

>das stimmt, da ich aber 4 farben pro/pixel verwende benutze ich zwei
>kanäle pro Pixel. Deshalb 512 Kanäle pro Modul.

Wenn du 4 Farben/Pixel nutzt, passen in 1 Byte 4 Pixel, d.h. du brauchst 
sogar nur 64 Kanäle pro 16x16 Modul.

>aufwendig. PC-Steuersoftware hab ich selbst programmiert. Da bin ich
>unabhängig und muss mich nicht auf Standards beschränken.

Stimmt, Standards sind ja auch das Letzte. Am besten jeder feilt seine 
Transistoren selber. Hmm . . .

>Wenn das ganze unkompriemiert übertragen wird sind das 64x64 = 4096
>Pixel * 2Byte/Pixel = 8192 Byte mit 20 Bildern/Sek = 163840 Byte/sek
>Nutzdaten.

Wieso 2 Byte/Pixel? Also doch 15/16 Bit Farbtiefe, sprich 5 
Bit/Farbkanal R, G, B.

>Das wäre aber die Obergrenze. Wenns nur die hälfte wird ist auch ok.

Macht 1,6 Mbit/s.

>An UDP hab ich auch schon gedacht. Wie groß sind den bei einem UDP Paket
>die max Nutzdaten ?

Groß genug. ;-) Etwas weniger als 1,5kB.

MFG
Falk

von Enrico P. (ep-lights)


Lesenswert?

ich benutze 2 byte pro pixel da ich 5 bit pro farbe verwende. 4. farbe 
(weiß) errechne ich dann aus den 3 anderen.

von Enrico P. (ep-lights)


Lesenswert?

Ich werd mich wohl fürs UDP-protokoll entscheiden. Das ganze auf dem 
Board vom U.Radig eventuell bissle abspecken.

Welche weiteren Protokolle benötige ich dann noch ? ARP .... ?

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.