Forum: Mikrocontroller und Digitale Elektronik ENC28J60 PIC24 Daten an Server übertragen


von Sascha P. (poggie)


Lesenswert?

HI Jungs,

ich habe mal wieder ein neues Projekt.
Ich muss/will Daten die ich mit einem PIC24FJ128 lese (z.B vom ADC / 8 
Kanäle - 50Hz Sample Rate) an einen Server senden.

Dieser Server soll die Daten z.b als csv datei speichern.
(Später kommt noch ein bisschen Datenverarbeitung auf dem Server hinzu)

Für die Netzwerkanbindung wird der ENC28J60 von Microchip verwendet.

Was müsste ich im uP tun und was ist Serverseitig notwendig.


Nehmen wir erst einmal ein einfaches Beispiel: der server hängt lokal 
bei mir im LAN und hat die FESTE IP 192.168.2.xxx
Jetzt stelle ich mir das so vor, das meine Hardware sich beim Server 
"anmeldet" und wenn ich einen Knopf an der Hardware drücke anfängt die 
Eingänge zu lesen und diese dann an den Server zu übertragen.
Serverseitig werden die Daten gelesen und gespeichert.
Das ganze muss so aufgebaut werden das ich von mehreren Units die Daten 
erfassen kann - also muss jede Hardware eine ID mitsenden.
Evtl. soll auf dem Server hinterher ein JAVA programm laufen was die 
Daten auch anzeigen kann.

Sehr ihr irgendwo probleme?

PS: Ich habe schon einige Projekte mit PICs und AVRs gemacht, aber im 
Netzwerk bin ich noch ein bisschen schwach. Please HELP :)


Danke
Sascha

von (prx) A. K. (prx)


Lesenswert?

Einfacheste Variante: Der µC brüllt per UDP Broadcast zyklisch seine 
Messergebnisse raus, ob ihm nun jemand zuhört oder nicht. Routing-fähig 
ist das nicht, aber so lösen sich 95% des TCP/IP-Stacks in Luft auf, 
denn alles was du dazu tun musst ist einen solchen UDP Frame mit 
Sensor-ID und Messdatenpaket zusammenzustoppeln und dem ENC zu 
übergeben.

von Sascha P. (poggie)


Lesenswert?

A. K. schrieb:
> ob ihm nun jemand zuhört oder nicht.



Hi A.K
vielen Dank für deine schnelle antwort

Ok. das stellt insoweit ein problem da, das ich eigentlich sicher 
stellen muss das wenn eine Verbindung zum Server besteht die Daten auch 
dort ankommen

von heinzhorst (Gast)


Lesenswert?

Erstmal lade dir den TCP/IP-Stack von Microchip herunter und sieh dir 
die enthaltenen Beispielprojekte an. Die kannst du gut als Grundlage für 
dein Projekt verwenden. Und dann natürlich TCP verwenden und nicht UDP. 
Das mit dem Broadcast halte ich für keine gute Lösung, weil du dann 
keine Gewissheit hast, ob die Daten ankommen oder nicht. Da der Stack 
bereits fertig ist hält sich der Arbeitsaufwand damit in Grenzen und er 
muss sich garnicht zu 95% in Luft auflösen.

von Sascha P. (poggie)


Lesenswert?

Die MCHP Application Library ist mir bekannt.
Allerdings muss ich mich dort noch weiter einarbeiten,

Sehe ich das richtig das ich mit TCPOpen() eine Verbindung zu meinem 
"Server" aufbauen kann und wenn der Server erreichbar ist mit TCPPut() 
meine Daten senden kann?

Da ich ja dauerhaft Daten übertragen will brauche ich doch nur einmal 
eine Verbindung aufbauen und kann dann immer neue Daten senden(es sei 
denn der Buffer ist voll). Im Falle einer "störung"/TCPDiconnect müsste 
ich dann wieder eine neue Verbindung aufbauen.

Was muss ich denn dann Serverseitig machen?
Ich würde später gerne ein Java programm schreiben/verwenden welches 
eine Verbindung akzeptieren und die Daten in einer Datei speichern kann. 
Kennt ihr Software die sowas zum testen schon kann? (Alternativ erst mal 
anzeigen)

Also ich habe x Geräte die sich alle, sobald sie eine Netzwerk 
verbindung haben beim Server anmelden und dann ihre Daten dauerhaft 
übertragen.

Habt ihr noch nen paar Tips wie ich das am besten realisieren kann?

PS: was macht den das Serial-to-ethernet bridge beispiel? kann man das 
vielleicht verwenden?


Danke für die Hilfe soweit schon einmal
 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
Noch kein Account? Hier anmelden.