Arduino - Ethernet - XML

nach dem ich mit der Glasgoogle nicht sehr erfolgreich war vieleicht hat jemand von euch eine idee.

ich bastel gerade an einem neue Projekt herum.
Es besteht aus 3 Arduino Mega 2560
diese sind mit I²C verbunden.

ein Eingangsslave
ein Ausgangsslave
ein Master auf dem das Ethernetshield aufgesetzt ist.

das Programm soll wie folgt ablaufen

der Master holt sich über I2C die Eingänge ob sie High oder Low sind.

dann soll er diese Werte über Ethernet an einen pc senden (bzw der pc holt die daten ab)

der pc macht nun die Rechenarbeit und schickt das Ergebniss über Ethernet wieder an den Master
der liest diese daten aus und sendet sie per I²C an den Ausgangsslave.

meine gedankenansätze wären nun wie folgt der master erzeugt ein XML file wo die werte der Eingänge 0/1 und legt dieses auf der SD Karte ab.
der PC holt sich über Ethernet von der SD karte die daten.
verarbeitet diese sendet dann ein 2tes file an die SD Karte zurück
der Master holt sich den informationsinhalt und gibt die befehle an den Ausgangsslave weiter.

die Komunikation zwischen PC und Ethernetshield funktioniert und die Beispielprogramme funktionieren auch.
aber zu dem oben genannten projekt gibt es irgenwie keine beispiele.

kennt jemand von euch welche.
oder gibts andere möglichkeiten diesen Datenaustausch einfach zu gestalten.
meine bücher zu arduino geben da leider auch nicht wirklich etwas her.

für Tips wäre ich dankbar.

Hallo,

sollen die Slaves auch noch eine eigene Signalverarbeitung machen oder 'nur' als Eingangs- bzw. Ausgangserweiterung dienen?

Falls die nur wegen der notwendigen Ein- bzw. Ausgänge benötigt werden, finde ich die Verwendung zweier ARDUINO-Mega für diesen Zweck etwas übertrieben.

Für digitale Ein- bzw. Ausgänge könntest Du die I²C-Portexpander PCF8574 nehmen:

Bis zu 8 Stck. PCF8574 für bis zu 88 digitale Eingänge
Bis zu 8 Stck. PCF8574A für bis zu 8
8 digitale Ausgänge

Dann gibts aus dieser Serie noch den PCF8591, der hat 4 analoge Eingänge (8 bit) und einen analogen Ausgang (8 bit), von diesem Baustein können auch bis zu 8 Stck. am I²C hängen.

Gruß

Martin

meine gedankenansätze wären nun wie folgt der master erzeugt ein XML file wo die werte der Eingänge 0/1 und legt dieses auf der SD Karte ab.
der PC holt sich über Ethernet von der SD karte die daten.
verarbeitet diese sendet dann ein 2tes file an die SD Karte zurück
der Master holt sich den informationsinhalt und gibt die befehle an den Ausgangsslave weiter.

...

oder gibts andere möglichkeiten diesen Datenaustausch einfach zu gestalten.

Erleichtern dir die xml Dateien irgendwas auf dem PC ?
Oder hast du ein Beispiel, bei dem eine Datei zwischen SD Karte und dem PC als Ethernet client augetauscht wird, das du nachbauen möchtest ?
Soll der Arduino ein ftp server sein ?

Sonst würde ich die Daten einfach per tcp socket-Kommunikation direkt austauschen und auch direkt weitersenden
(wobei ich auch nicht sehe (wie marau), wofür die Slave Mega2560 gebraucht werden).
Bei kurzen Entfernungen zwischen PC und Arduino würde ich gar serielle Kommunikation nehmen.

Habe mich hiermit wohl voll sebst disqualifizert :wink:

Aber neugierig bin ich trotzdem: Was ist denn übrigens die gewaltige Rechenarbeit ?

Hallo zusammen
nett das ihr eure meinung dazu abgebt.

warum XML naja mein ehemaliger elektronik prof hat gemeint das das mit jedem µC einfach zu erzeugen ist.
von meiner sicht aus gesehen ist es eigendlich egal mit welchem format die datenübertragung stattfindet.
der wunsch wäre die eingangszustände an den pc zu schicken der bestimmt die ausgänge und sendet diese zurück.

der testaufbau besteht nur aus einem Eingangsslave einem Master und einem Ausgangslave
später mal sollen es doch etliche mehr werden.
das ziel ist meine modelleisenbahnanlage komplett über pc zu steuern und da reden wir von ein paar 1000 ein und ausgängen.
daher scheidet der portexpander aus.
warum das nicht gleich der mega verarbeitet naja einerseits kann ich mit ihm keine grafische oberfläche programmiern
und 256kB Flash reichen da auch nicht aus.
ich hab schon Stellwerkssoftware programmiert und ein kleiner Modellbahnhof mit 6 Gleisen braucht 138kB Speicher.

warum nicht serial ..
das ist einfach der pc wird an die 20 meter von dem µC weg sein und da ist mir seriell von der datenübertragung zu unsicher kippt ein bit kommt ein topfen raus.

die slaves machen keine signalverarbeitung
der eingangslave tut nur die eingänge entprellen
und der ausgangsslave ist noch "dummer" der schaltet nur die pins

lg
Thomas

hi,

ich verstehe Deine absicht, und fertige arduinos zu nehmen ist am einfachsten. aber sieh Dir man das an:
http://erik-bartmann.de/programmierung/downloads2.html
dort auf:
"Wir bauen uns einen eigenen Arduino auf einem Breadboard"
die teile samt processor mit bootloader drauf kriegst Du um 4€. da baust Du dann einfach einen UNO an jede stelle, wo Du ihn brauchst.
wenn Du mehr beinchen wie den MEGA brauchst, dann nimm einen ATmega1284P, nur mußt Du dann noch den bootloader selbst draufkriegen, dazu gibt's jede hilfe hier im forum und beim link oben unter
"Wir brennen uns einen neuen Bootloader".
eingänge und ausgänge vervielfachen ist auch einfach, wieso lehnst Du das so kategorisch ab?

gruß stefan