Daten von mega zu mega übertragen

Hallo zusammen,

Ich möchte gerne Daten von einem arduino Mega zu einem anderen übertragen.

Zur Erklärung:
Ich habe eine Led Matrix diese Steuer ich mit einem keypad. Dies ist eine Einheit und ich möchte die "Hardware" bzw das Gehäuse usw. ungern wieder verändern da es mich schon so sehr viel Zeit und Geduld gekostet hat :see_no_evil::joy:

Aber jetzt möchte ich gerne ein Display haben wo ich die "Zustände der Matrix " also was auf der Matrix angezeigt wird auf einem Display anzeigen lassen. Dafür möchte ich gerne ein anderes bereits bestehendes "Gerät " mit Display verwenden.

Der Abstand der beiden beiträgt ungefähr 4 Meter im selben Raum.

Ich hab zwar mal was gelesen von serieler Kommunikation aber irgendwie verstehe ich das nicht so ganz.

Da ich die verschiedenen anzeigen auf der Matrix mit einem keypad steuere habe ich es mit Case fällen geschrieben.
Ich möchte es also am besten so haben dass der case Fall übertragen wird und ich es dann mit if case '..' auf dem "Display-arduino-mega" auswerten bzw. Verwenden kann.

Was ist dafür die beste Lösung?
Könnt ihr mir bitte erklären wie ich das umsetzen kann?

Grüße

Hallo dope-walker

Schaue hier rein.

Wozu?
Der Mega hat genügend Hardwareserial.

stimmt
das war zu früh
und
wer lesen kann, der ist klar im Vorteil :nerd_face:

Die beste Lösung würd es vermutlich nicht geben.
Allerdings einige Ansätze.
Der Mega hat neben dem normalen Serial an 0/1 (und USB) noch weitere Hardwareserials.
Die würde ich immer vorziehen.

Da geht auch mal eine längere Strecke - 4 Meter sollten mit einem verdrilltem Kabel eigentlich keine Hürde sein.
Ansonsten geht auch J-YSt(Y) (Telefonkabel für innen) sehr gut.

Dann brauchst Du ein Protokoll, welches Dir die Daten von einem zum anderen überträgt.
Da es an Infos fehlt, was da an Informationen übertragen werden soll, gehts hier nur rudimentär.

Du könntest Dir eine Zeichenkette zusammenbauen, die all Deine Informationen hat und diese entweder regelmässig/fortlaufend odder aber nur bei einer Änderung übertragen.

Nächste Sufe wäre ein struct() zu bauen und dieses zu übertragen.
In einer weiteren Stufe könnte eine Prüfsumme dazu gefügt wreden um die Integrität der Daten auf der Empfängerseite zu prüfen.

Und um es noch auf die Spitze zu treiben, kann man den Empfänger antworten lassen, wenn er die Daten als richtig (ACK) oder fehlerhaft (nACK) erkannt hat.

Der Teil auf dem Sender ist recht einfach; da braucht es nur Daten zusammensammeln und dann einfach senden. Die Hardware übernimmt da schon recht viel.
Beim Empfänger ist es dann schon schwieriger, da Du hier rausfinden musst, wann die Übertragung vollständig ist, Dabei gilt zu beachten, das der Empfangsbuffer nur eine begrenzte Zahl Zeichen aufnehmen, die Message aber viel länger sein kann.

Dann muss auf der Empfängerseite der Inhalt geparst werden um die Elemente und deren Werte richtig zuzuordnen.
Aber alles keine Raketentechnik.

Wenn Du Deinen fertigen Sketch zeigst, kann man sich drüber machen und für den Sender was zusammenstellen.
Der Empfänger kommt dann automatisch :wink:

um welches Display handelt es sich, und wie komplex ist das was du darstellen möchtest?

Wenns beispielsweise nur "Eine Zeile" ist z.B. auf einem 1602 LCD dann ist das aus meiner Sicht mit wenigen Zeilen Code möglich. Siehe das Beispiel "SerialDisplay" aus der LCD Library. Da wird einfach jedes Zeichen das empfangen wird am Display dargestellt, nach einem kurzen Timeout geht man von einer neuen Zeile aus. Finde ich eine sehr einfache/übersichtliche Variante.

Wenn es etwas umfangreicher werden soll, kann man sich natürlich auch sehr austoben.
Entweder ein eigenes Protokoll erfinden,
ein bestehendes nachbauen und einen Sender - Empfänger Sketch schreiben
oder beispielsweise Modbus RTU mit RS485 nutzen.

Die Frage ist halt, wie umfangreich das ganze werden soll und dann kann man entscheiden wo die eigentliche Intelligenz stecken soll: ein dummer Sender (der z.B. nur eine Variable mit seinem Status schickt) oder ein dummes Display (das fix und fertig das darstellt was der Sender schickt).

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.