Netzwerk
Was ist ein Netzwerk?
Wenn mehrere Geräte miteinander Daten austauschen, spricht man oft von Netzwerkkommunikation. Das wohl bekannteste Netzwerk ist das sogenannte Internet. :-)
Damit die Kommunikation zwischen unterschiedlichen Geräten gelingen kann, nutzt jedes Netzwerk eine Reihe von Netzwerkprotokollen und Standards, über die der Austausch von Daten geregelt ist, so dass alle an der Kommunikation beteiligten Geräte die verschickten und empfangenen Daten interpretieren können.
In einem Netzwerk werden Daten über Protokolle Codiert und Decodiert und über Standards übertragen, beispielsweise über Twisted Pair Kabel (oft auch LAN Kabel genannt) oder über WiFi (mit unterschiedlichen Namen für die Übertragungsstandards, wie 802.11b, Bluetooth, etc.).
Netzwerke kann man selber machen, oder sich an bereits bestehende Netzwerke anschliessen.
Ist jede Kommunikation immer Netzwerkkommunikation?
![]()
Tatsächlich gab es Computerkommunikation bereits bevor der Netzwerkgedanke sich in jegliche Form der Kommunikation eingeschlichen hat. Eine Maus oder ein Keyboard ist ebenso ein Gerät, dass mit dem Computer kommuniziert. Ein Drucker beispielsweise auch. Der Unterschied besteht in diesem Fall darin, dass diese Geräte immer nur direkt mit dem Computer Daten austauschen, mit dem Sie auch verbunden sind. Es besteht also eine direkte Verbindung zwischen Gerät und Computer. An dieser Kommunikation nimmt niemand Drittes Teil. Deswegen spricht man in diesem Fall nicht von Netzwerkkommunikation.
Die Idee eines Netzwerks ist, dass eine unbestimmte Anzahl von Geräten miteinander in Kommunikation treten können. Auch wenn ein Netzwerk so aufgebaut sein kann, dass es über Regulierung bestimmte Teilnehmende ausschliesst.
Trotzdem benutzen auch diese Geräte, ebenso wie geräte im Netzwerk, bestimmte Protokolle um Daten mit dem Computer auszutauschen. Im Bild oben sind einige der Protokolle und Standards etwas vereinfacht abgebildet.
Was ist mit Arduino?
Einige Geräte haben die Möglichkeit, über verschiedene Arten mit dem Computer in Kommunikation zu treten. Ein Arduino oder auch ein Drucker können beispielsweise über ein USB-Kabel an den Computer angeschlossen werden, manchmal aber auch über ein WiFi Modul mit dem Computer kommunizieren oder auch von Arduino zu Arduino mit Kabeln verbunden sein. Für gewöhnlich macht es Sinn, hier über das Protokoll der Kommunikation zu sprechen, also die Vereinbarung, in welcher Art und Weise Daten geschickt und empfangen werden.
Protokolle
Ein Protokoll ist die Vereinbarung, die sowohl Sender als auch Empfänger benutzen, um Daten in der gegenseitigen Kommunikation zu Codieren bzw. zu Decodieren. Oft bauen verschiedene Protokolle aufeinander auf, so das selten nur ein einziges Protokoll genutzt wird. Deswegen spricht man bei Protokollen oft von einem Schichtenmodell. Das bekannteste Schichtenmodell ist das [Schichtenmodell].
Vereinfachtes Schema
Für unseren Bereich müssen wir nicht alle Schichten des OSI Modells immer im Kopf haben. Deswegen können wir von ungefähr drei verschiedenen Schichten ausgehen, um die Dinge ein bisschen zu vereinfachen. Im Kontext von Spiel und Objekt gibt es für gewöhnlich drei verschiedene Schichten, über die wir uns unterhalten, die ich hier jetzt vereinfacht mal als:
- Hardware (z.B.: Kabel mit 2 Drähten, Kabel mit 24 Drähten, Funk, Infrarot, Ultraschall, usw.)
- Netzwerk (z.B.: IP, Serial, Mesh Network, usw.)
- Daten (z.B.: OSC, MQTT, ASCII, Byte-Encoding, etc.)
aufgemalt habe.
Wichtig ist in diesem Zusammenhang, dass die drei Schichten aufeinander aufbauen. Je nachdem, für welche Hardware-Schicht ich mich eintscheide, stehen mir unterschiedliche Netzwerkprotokolle zur Verfügung. Je nach Netzwerkprotokoll stehen mir dann unterschiedliche Protokolle zur Datenübertragung zur Verfügung. Protokolle kann man selber machen, oder sich ein bereits vorgefertigtes aussuchen.
In der Praxis stellen sich folgende Fragen an diese drei Ebenen:
![]()
Protokolle die wir viel und gerne nutzen
Beispiel Arduino zu Processing
Um mit einem Arduino zu einem Processing Sketch zu kommunizieren, nutzen wir für gewöhnlich das USB Kabel des Arduino (Hardware Layer). Aufbauend auf diesem Kabel, haben Arduino und Processing bereits eine Vereinbarung getroffen, wie sie am Besten miteinander kommunizieren können: Serial Communication!
![]()
Bei serieller Kommunikation werden die Datenpäckchen als Bytes nacheinander über das USB Kabel verschickt. Der Computer holt die Pakete nacheinander an einer Seriellen Schnittstelle ab. Diese Schnittstelle (oder Interface) wird in Windows auch als COM Schnittstelle oder COM Port bezeichnet. Deswegen könnt ihr beim Arduino Programm auch den COM-Port einstellen.
Jetzt kommen Daten an, aber was tun wir damit?
Das Arduino programm auf eurem Computer benutzt genau dieselbe Schnittstelle um für euch euren Arduino zu programmieren. Jedes Mal wenn ihr im Arduino programm auf Upload drückt, findet eine serielle Kommunikation mit dem Arduino statt. Diese Kommunikation ist so Codiert (im Data-Layer), dass das Arduino Gerät weiss, dass die nachfolgenden Daten dann Programmcode sind, die es demnächst dann ausführen soll.
Mit Hilfe der Serial Library könnt ihr diese Schnittstelle auch in eurem eigenen Code zum Datenaustausch zwischen dem Computer, auf dem bspw. Processing läuft, und eurem programmierten Arduino benutzen. Dazu müssen sowohl Arduino als auch Processing einige Verabredungen treffen:
- beide müssen sich darauf einigen, in welcher Geschwindigkeit die Daten hintereinander geschickt und abgerufen werden (die sogenannte baud rate).
- Processing muss zudem den Serial Port öffnen, damit der Computer weiss, dass die dort abgelegten Daten von Processing weiterverarbeitet werden.
- schliesslich müsst ihr euch in eurem Code entscheiden, wie ein übertragenes Byte interpretiert werden soll. Ist es ein ASCII Zeichen? Ist es eine Zahl zwischen 0 und 255? Das müsst ihr in eurem Code in Arduino und Processing jeweils selbst festlegen, damit die beiden Programme jeweils verstehen, was sie mit den übertragenen Daten anfangen sollen.
Im Beispiel Arduino -> Processing würdet ihr als ein USB Kabel als Hardware Layer nutzen, als Netzwerk-Layer würdet ihr Serial Communication verwenden und dort die Baud-Rate einstellen, damit bei beiden die Geschwindigkeit der Datenübertragung klar ist, und auf der Datenebene würdet ihr euch ein eigenes Protokoll schreiben, dass die Interpretation der einzelnen kommunizierten Bytes zulässt.
Kommentierter Beispielcode
Hier dazu ein kommentiertes Beispiel: Arduino_Processing_Serial
Beispiel Processing zu Processing
Ein Netzwerk kann mit, oder ohne Internet existieren. Wenn ein Netzwerk ohne Internet vorhanden ist, dann spricht man von einem Lokalen Netzwerk. Dieses lokale Netzwerk kommuniziert über einen Router, der sich im idealfall im Raum befindet. Dieser Router ist mit der Aufgabe betraut, Päckchen von Informationen, sogenannte Protokolle zwischen den Computern bzw. Devices die mit dem lokalen Netzwerk verbunden sind, hin und her zu schicken. Dazu verteilt der Router automatisch und in eigenregie, an alle Devices die mit ihm Verbunden sind/eingeloggt sind, eine IP Adresse. Die Vergabe der IP Adresse kann aber auch manuell festgelegt werden, sodass ein Device immer dieselbe IP Adresse verwendet.
Wichtig: Firewall muss ausgeschalten sein um in einem Netzwerk kommunizieren zu können.