Ethernet-Kommunikation mit Mikroprozessor

Einleitung

Die einfachste Art mit einem Mikroprozessor zu kommunizieren ist über  eine serielle Schnittstelle, da diese auf einem Mikrocontroller hardwareseitig meist bereits zur Verfügung steht. Auch ist das Protokoll als eher einfach anzusehen. Die Verbindung mit dem PC erfordert in der Regel einen RS232 Konverter oder eine TTL basierende Schnittstelle. Diese Kommunikationsart ist jedoch stark an den PC oder an lokale Devices gebunden. Will man über ein Netzwerk kommunizieren findet die Anbindung meist über Ethernet statt. Viele Hobby-Programmierer wenden sich von dieser Technologie ab, weil diese zu kompliziert erscheint. Bei näherer Betrachtung ist alles halb so tragisch. Zwischenzeitlich bietet der Markt diverse Boards mit integrierter Ethernet-Schnittstelle und im Web sind diverse Libraries zu finden. Der folgende Beitrag soll illustrieren, dass Ethernet-Kommunikation nicht unbedingt kompliziert sein muss.
Als Beispiel  wurde ein  UDP-Client in VB 2010 realisiert , welcher über das Ethernet mit einem Mikrocontroller-Board kommuniziert. Das genannte Beispiel dient lediglich als Demo und Inspiration. Der Anwendung und dem Ausbau sind keine Grenzen gesetzt. Zum Beispiel kann UDP verwendet werden, um eine kleine Hauszentrale zu steuern (Licht, Heizung etc.) oder um Bilder auf den PC zu streamen. Nicht  zuletzt könnte damit ein Roboter Wireless oder ein RoV (Remotely Operated Vehicle) mittels Ethernet-Kabel gesteuert werden. Die Vorteile liegen auf der Hand: Hoher Datendurchsatz und Netzwerkfähigkeit.

Um das Prinzip besser zu verstehen ist es wichtig das IP- sowie UDP-Protokoll vom Prinzip her zu verstehen. Das Kapitel IP- und UDP sollten deshalb zuerst zu Gemühte geführt werden.

 

IP (Internet-Protocol)

siehe Definition IP Wikipedia

 

UDP (User Datagram Protocol)

siehe Erklärung Wikipedia

 

Schematische Erklärung zum Testaufbau

Im unten stehenden Bild wird über einen Windows-Client ein UDP Paket an den Mikrocontroller gesendet. Der PC sowie der Mikrocontroller sind dabei über ein Ethernetkabel verbunden (idealerweise über einen Switch, ansonsten mit einem gekreuzten CAT-Kabel). Der Mikrocontroller ist als UDP-Server programmiert. Das heisst, er horcht an einem bestimmten Port auf ein für ihn bestimmtes UDP-Paket und sendet das Paket (nur Nettodaten) für Testzwecke über die RS232-Schnittstelle wieder zurück an ein RS232-Terminal auf dem PC.

UDP Client Server

 

Hardware des UDP-Server

Als Hardware wurde ein Arduino-Ehernet-Shield sowie Mikrokontrollerboard Arduino Mega 2560 (AVR Mega 2560) verwendet. Beim Ethernet-Shield handelt es sich um ein Ethernet-Erweiterungsmodul für den Arduino Mega 2560.

MiniWebServert

 

UDP-Server (Source Code Mikrorozessor)

Arduino Ethernet Library

Der Source-Code kann hier  gesichtet und heruntergeladen werden. 

 

UDP-Client (Windows Programm VB.Net 2010)

Der Source kann hier als VB 2010 bzw. ZIP-File  heruntergeladen und gesichtet werden.

  

Testszenario

UDP-Client auf Windows:

Der UDP Client (VB.NET Programm) sendet auf Kommando einen beliebigen Text an den Server (Mikrocontroller-Board). Der Server muss dabei die im Client definierte IP und Portadresse zugeordnet haben.

VB-SendUDP

UDP- Server / Mikrocontroller:

Der Server (Mikrocontroller-Board) horcht in unserem Fall auf der IP Adresse 192.168.1.177 und Port 8888 auf ein solches UDP-Paket. Falls ein solches Paket eintrifft wird dieses sofort über die RS232-Schnittstelle des Mikrocontrollers an den angebundenen PC zurückgeschickt. In unserem Fall meldet der Mikrocontroller über die RS232-Schnittstelle zurück, wie lang die empfangenen Nettodaten waren, von wem diese Daten an den Server versendet wurden (IP- und Port des Clients) sowie der übermittelte Text.

Com port arduion receive udp