Forum: Mikrocontroller und Digitale Elektronik Wie Daten bei Software (mit C# am PC) übers Netzwerk an µC übermitteln?


von Matthias (matthiasm)


Lesenswert?

Guten Tag zusammen,

mich interessiert aktuell wie denn der generelle Ablauf einer Verbindung 
zwischen PC Software und µC über Netzwerk stattfindet?

Konkret möchte ich mir ein kleines Tool bastelen (mit C# am Windows PC) 
welches mir Daten aufs Netzwerk schickt, von einem µC angenommen wird 
der diese Daten entpackt und auf den I2C Bus ausgibt.

Selbstverständlich soll auch ein Lesen möglich sein.

Nun ist es so dass ich in C# und C jeweils Grundlagen besitze, sprich 
ich kann auf beiden Welten kleine Programme schreiben und I2C bzw. TWI 
Verbindungen laufen auch stabil.

Was mir allerdings fehlt ist das Verständnis wie die Daten eingelesen 
und ausgegeben werden.

Vielleicht könnt ihr mir ein wenig helfen? Danke :)

Gruß
Matthias

von Bastian W. (jackfrost)


Lesenswert?

Nimm einen Netzwerk-UART Adapter wie nen XPORT. Damit kannst du dann 
über einen VCP Daten vom PC-Programm verschicken.

Gruß JackFrost

von Matthias (matthiasm)


Lesenswert?

Sieht verlockend aus... allerdings ziemlich teuer oO

von Sascha (Gast)


Lesenswert?

Mittlerweile scheint der ESP8266 Preis/Leistungsmäßig auf jeden Fall der 
beste Kandidat für sowas zu sein, noch vor Ethernetboards wie dem AVR 
NET-IO von Pollin.

von Jojo S. (Gast)


Lesenswert?

für 'mit Kabel' gibts auch immer noch den ENC28J60, als fertiges Modul 
für ca. 7-10€ von amazon/ebay oder noch billiger beim Ali.
Dann gibts noch modernere Variant von WizNet, die sind aber auch wieder 
teurer.

von Steven M. (8023)


Lesenswert?

1
String tmp; 
2
3
#define BAUD_RATE 9600
4
5
void setup() {
6
  Serial.begin(BAUD_RATE);
7
  Serial1.begin(BAUD_RATE); 
8
  while (!Serial) {
9
    ; // wait for serial port to connect. Needed for Leonardo only
10
  }
11
  Serial.println("Hello Cactus Micro!");
12
  
13
  // Enable esp8266 
14
  pinMode(13, OUTPUT);
15
  digitalWrite(13, HIGH);  
16
};
17
18
void loop() {
19
20
  while (Serial1.available() > 0)  {
21
    tmp += char(Serial1.read());
22
    delay(2);
23
  }
24
25
  if(tmp.length() > 0) {
26
    Serial.println(tmp);
27
    tmp = "";
28
  }
29
30
  if (Serial.available()) {
31
    Serial1.write(Serial.read());
32
  }
33
}

Quelle 
https://github.com/AprilBrother/cactus-micro-r2/blob/master/libraries/CactusMicro/examples/hardwareSerialMonitor/hardwareSerialMonitor.ino
bildet dir eine brücke zwischen einem ESP8266 und einer seriellen usb 
schnittstelle ab...
das ding verhält sich letztendlich wie eine serielle schnittstelle also 
eher kein hexenwerk ... ^^



http://wiki.aprbrother.com/wiki/Cactus_Micro_R2_Tutorial
http://www.esp8266.com/

: Bearbeitet durch User
von Marc (Gast)


Lesenswert?

Matthias M. schrieb:
> mich interessiert aktuell wie denn der generelle Ablauf einer Verbindung
> zwischen PC Software und µC über Netzwerk stattfindet?

Hallo,
es gibt keinen "generellen Ablauf".
Die Frage lautet:
Wie möchtest du das die Verbindung abläuft.

Frage 1:
Welche Art von Netzwerk
 - Ethernet
 - Seriell: RS232 /RS 485 ...
 - ....
Frage 2:
 - Drathlos
 - Kabelgebunden


Frage 3:
Wir nehmen mal Ethernet basiert:

 - TCP/IP
 - UDP
 - OPC
 -OPC UA

im einfachsten Fall
hier wohl: TCP/IP  oder UDP


Vorschlag TIP:
Es gab im Rahmen von C# Tutorials mal ein Beispiel für ein
TCP/IP oder UDP basiertes Chatprogramm

Als Einstieg gut geeignet.

Es gibt auch µC seitig  genügend Tutorials (Senden <->Empangen).

Gruß

von Matthias (matthiasm)


Lesenswert?

Danke für die vielen Tips erstmal.

Kurze Frage noch zum XPort:

So ganz verstanden hab ich es leider noch nicht. Im Xport steckt ein 
32bit µC um den ich mich im Idealfall nicht sonderlich kümmere, richtig? 
Sprich ich stell meine IP über das Webinterface ein und der Xport 
schiebt mir dann die empfangenen Daten vom Ethernet TCP Stack auf den 
RS485 Bus in meinen µC. Dieser µC wiederum nimmt die Daten und packt Sie 
auf den I2C Bus.

Aber wie bringe ich die Daten von meiner Software am PC auf den Ethernet 
Bus?

von Stefan F. (Gast)


Lesenswert?

Da PC's keine freie externe I2C Schnittstelle haben und diese ohnehin 
nur für sehr kurze Leitungen vorgesehen sind, rate ich zu einer anderen 
Schnittstelle. Zum Beispiel RS232, RS485 oder Ethernet.

Als Anregung, wie man sowas machen kann, schau Dir mal die zahlreichen 
NET-IO Projekte an. Meins findest du hier: 
http://stefanfrings.de/net_io/index.html

Ich bevorzuge Textbasierte Kommunikationsprotokolle, weil man die ohne 
großen Aufwand mitlesen und manuell prüfen kann. Die Fehlersuche 
gestaltet sich auf deise Weise recht einfach. Vor allem dann, wenn man 
die Kommandos auch noch manuell absetzen kann.

von Stefan F. (Gast)


Lesenswert?

> Sprich ich stell meine IP über das Webinterface ein und der Xport
> schiebt mir dann die empfangenen Daten vom Ethernet TCP Stack auf
> den RS485 Bus in meinen µC.

Im Prinzip ja. Über das Webinterface konfigurierst du den Xport. 
Anschließend öffnest du mit deinem PC Programm einen IP-Socket. Die 
Daten werden dann transparent bidirektional zum Seriellen port 
durchgereicht.

Aus Sicht der PC Anwendung ist es so, als hättest du eine serielle 
Verbindung über RS232 aufgebaut. Nur dass das Timing ein bisschen anders 
ist und du natürlich für den Verbindungsaufbau selbst andere Befehle 
brauchst.

Bei Digicom findest du ähnliche Produkte unter dem namen "Digi Connect". 
Sie sind wirklich einfach anzuwenden - nur leider teuer.

Weniger zuverlässig, dafür aber sehr billig und noch einfacher 
anzuwenden sind Bluetooth Module, zum Beispiel BTM-222, HC-05 oder 
HC-06. Da bist du dann schon ab 5 Euro dabei.

> Aber wie bringe ich die Daten von meiner Software am PC auf den
> Ethernet Bus?

Na deine Software muss eine Verbindung über Ethernet aufbauen, nennt man 
auch IP-Socket. Siehe 
http://www.codeplanet.eu/tutorials/csharp/4-tcp-ip-socket-programmierung-in-csharp.html

von Sebastian (Gast)


Lesenswert?

Hallo,

ja der ESP8266 ist preislich schon ein Hammer,... was der kostet dafür 
bekommt man nicht mal das Kabel mit den Steckern.

Nachteil, es ist Funk und wenn man kein 2tes Netz hat dann hängt das 
Ding mit am Internet,... .

Für eine kleine Applikation, nimm einen Arduino oder Raspberry Pi,... 
ist man ratz fatz fertig.

Grüße

Sebastian

von Steven M. (8023)


Lesenswert?

solange man keine portweiterleitung einrichtet, macht das garnix ob ein 
esp8266 es am inet hängt... (ein router wird eh vorhanden sein...)

die gibt es auch von conrad/franzis gleich mit nano dran für 25€ das 
stück

http://iot.fkainka.de/technische-daten

die dinger funktionieren einfach und das netzwerk wird wie jedes andere 
streamobjekt angesprochen (seriel ect...)


blätter mal den advendskalender durch... der zeigt es eigentlich schritt 
für schritt wie die kommunikation mit anderen teilnehmern läuft...

das trau ich einem 13jährigen problemlos zu...


allerdings will ich wohl nochmal auf die Logo!
http://w3.siemens.com/mcms/programmable-logic-controller/de/logikmodul-logo/seiten/produktneuheit.aspx 
hinweisen, die im produktiven umfeld wohl keine schlecht wahl wäre...

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.