Ich möchte mit einem Arduino und einem kleinen Display eine Art Monitor parallel zu einer draußen stehenden LED-Matrixanzeige bauen. Die LED-Matrix erhält ihre Daten als RAW-RGB-Block per UDP-Multicast, da könnte ich am Arduino bequem die Daten parallel mitempfangen. Die Auflösung der LED-Matrix beträgt 192x96, was bei RGB über 55kByte pro Bild sind. Wenn ich von der Sender-Applikation alternativ für den Monitor ein Bild mit halber Auflösung erstellen lasse, bin ich bei 96x46. In RGB sind das ca. 13KByte - für Arduino immer noch ziemlich "sportlich". Wndle ich die 3 Byte RGB für die Übertragung auf insgesamt 1 Byte (z.B. 3-3-2 Bit), bleiben noch 4,4k ... Das Problem ist der vermutlich viel zu kleine Speicher des Arduino mit ca. 2kByte. Dabei stellt sich mir die Frage, wo kommen die Daten denn bei udp.read() eigentlich her? Werden die zwangsweise im RAM des Arduino gepuffert oder werden die aus dem Empfangspuffer des Netzwerkchip gelesen? Wenn letzteres, dann könnte es gehen, denn der WIZ5000x hat 16 oder 32 KByte Buffer ... ein ENC28J60 immerhin 8kByte ...
:
Bearbeitet durch User
Viel TCP Stack wird da nicht vorhanden sein. Warum schaust du nicht im Code nach?
Frank E. schrieb: > Das Problem ist der vermutlich viel zu kleine Speicher des Arduino mit > ca. 2kByte. Dann nimm einen Arduino mit z.B. 96kByte RAM. Das nimmt dir viele Sorgen ab.
Hallo, da UDP ohne Quittung arbeitet, wird es eher das Problem sein, daß Du die Daten ausreichend schnell abholst, verarbeitest und dabei möglichst wenig Ram brauchst. Zumindest beim ENC28J60 ist soviel TCP Stack da, wie man in die eigene Software einbaut, der hat ja selbst nichts. Ich habe aus anderen gründen gerade mit den ENC28J60 rumgespielt. Mit der UIPEthernet-Lib vom Arduino (da steckt fast der komplette LWIP-Stack drin) und dem MQTT-Client den ich benutze sind 23k Flash belegt, das stört für die Anwendung nciht weiter, allerdings sind auch 1,5k Ram belegt und da wird die Luft nach oben schnell dünn. Die UPD-Daten abholen und direkt zum Display weiterreichen könnte aber vielleicht klappen. Ausprobieren, ein China ENC28J60-Modul bekommt man ab 2,75€, den Arduino ProMini ab 1,80€, soviel riskiert man bei einem Fehlversuch alos auch nicht. Wenn man nicht solange auf die Lieferung warten will, landet man ca. bei je 5,00€ aus Deutschland. Gruß aus Berlin Michael
Michael U. schrieb: > Hallo, > > da UDP ohne Quittung arbeitet, wird es eher das Problem sein, daß Du die > Daten ausreichend schnell abholst, verarbeitest und dabei möglichst > wenig Ram brauchst. > Zumindest beim ENC28J60 ist soviel TCP Stack da, wie man in die eigene > Software einbaut, der hat ja selbst nichts. Ja ... das ist mir alles weitgehend klar, Hardware habe ich hier. Die entscheidende Frage ist aber nicht beantwortet: Wo holt die Funktion udp.read() die Daten her? Wird dabei auf den Puffer des Netzwerkchips zugegriffen (dann liegen die empfangenen Daten nicht im Arduino-RAM) oder "Nur" auf einen Bereich im RAM des Arduino? Die Daten in einem Loop dort rauszuholen und direkt auf ein Display zu scheiben wäre dann mein Ziel. Ich könnte das nat. auch einfach ausprobieren, aber wozu gibts ein Forum, wo evtl. jemand bescheid weiss. Nochwas: Da ein Ethernet-Frame max. 1500 Bytes transportiert, müsste der ENC28J60 (oder der WIZ5000x) sowas wie (de-)Fragmentierung beherrschen, was ich eher nicht glaube. Bin deprimiert ...
:
Bearbeitet durch User
Frank E. schrieb: > Die > entscheidende Frage ist aber nicht beantwortet: > > Wo holt die Funktion udp.read() die Daten her? Öhmmm.... Karl schrieb: > Warum schaust du nicht im > Code nach? Oder soll ich das für dich tun?
Arduino F. schrieb: > Frank E. schrieb: >> Die >> entscheidende Frage ist aber nicht beantwortet: >> >> Wo holt die Funktion udp.read() die Daten her? > > Öhmmm.... > > Karl schrieb: >> Warum schaust du nicht im >> Code nach? > > Oder soll ich das für dich tun? Fremden Programmcode nachzuvollziehgen ist nicht gerade einfach. NEIN, du sollst nicht für mich nachsehen, vlt. findet sich ja noch jemand, der dies auch so schon weiss ... Forum heisst, Wissen zu teilen (wenn es denn vorhanden ist), nicht für andere Arbeit zu machen.
Frank E. schrieb: > Fremden Programmcode nachzuvollziehgen ist nicht gerade einfach. Habe das mal gerade getestet.... Ich finde, so schwer ist das nicht.... Zumindest nicht in diesem Fall.
Frank E. schrieb: > Nochwas: Da ein Ethernet-Frame max. 1500 Bytes transportiert, müsste der > ENC28J60 (oder der WIZ5000x) sowas wie (de-)Fragmentierung beherrschen, > was ich eher nicht glaube. Bin deprimiert ... Da musst du dir selbst was einfallen lassen, mit UPD sendest du ein Paket und gut ist es, ein 2.,3.,... Paket hat keine Beziehung zu vorherigen Paketen. Wenn du für deine Übertragung mehr als ein Paket brauchst, musst du selbst noch mit reinschreiben was Inhalt des Pakets ist damit dein Empfänger das zuordnen kann. Sascha
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.