I/O Schnittstellen Module für Ethernet
Mit I/O Schnittstellen Modulen steuert und überwacht man elektrische Einrichtungen. Da PC's keine herkömmlichen Parallel-Ports mehr haben, stelle ich hier einen Ersatz mit Ethernet vor. Man kommt je nach Mikrocontroller auf 19 bis 71 steuerbare Anschlüsse. Mit Hilfe von ein paar billigen Schieberegistern sind noch mehr machbar. Der Zugriff auf die I/O Ports erfolgt über einfache Textbefehle.
Die Firmware enthält eine optionale Komponente, welche 8 Pins überwacht und konfigurierbare Emails verschickt. Über den eingebauten Webserver wird das Gerät konfiguriert, und man hat lesenden Zugriff auf die optionale SD Speicherkarte.
Für die Netzwerk-Kommunikation habe ich µIP von Adam Dunkels verwendet. Siehe dazu auch mein Aufsatz über seine Protothreads und Protosockets. Die Adaptierung an den Ethernet Controller stammt weitgehend von Stefan Pertzborn.
Downloads:
- Quelltext und Schaltplan
- Kompilierte Firmware (hex Format)
Protokolle
- IEEE 802.3 10Mbit, voll duplex, auto polarity
- Mehrere gleichzeitige TCP/IP v4 sockets
- HTTP server, mit BASIC Authentication
- SMTP client, mit AUTH LOGIN Authentication
- DHCP client
- SD/SDHC/MMC Karten bis 32GB mit FAT16 oder FAT32 Dateisystem
So funktioniert es
Nach dem Start wartet das Modul 1-2 Minuten darauf, eine IP Adresse vom DHCP Server zu erhalten. Falls dies fehlschlägt, verwendet es diese Standardwerte:
- DHCP: enabled
- IP-Addresse: 192.168.0.123
- Netzmaske: 255.255.255.0
- Gateway: 192.168.0.1
- Authentication: keine
- EMail: keine
Öffne eine TCP Socket Verbindung auf der IP-Adresse und Port 23.
Ebenso kann der serielle (USB) Port mit 115200 Baud verwendet werden.
Auf beiden Verbindungen kannst du 100 Befehle pro Sekunde ausführen,
aber kurzzeitige Verzögerungen durch das Netzwerk sollten eingeplant werden.
Man kann Befehle auch per HTTP Request absetzen, zum Beispiel http://ip-address/io?iPB3
.
Das Modul antwortet dann im Plain-Text Format genau wie beim TCP Socket.
Neben dem allgemeinen Befehlssatz unterstützt die Ethernet Version
folgende Ergänzungen:
- ip Fragt die aktuelle IP-Adresse ab, geht nur am seriellen (USB) Port.
- auth name:passwort wird beim TCP Socket zum Einloggen benötigt, wenn Authentication konfiguriert ist.
- quit Abmelden, nur beim TCP Socket.
- exit Abmelden, nur beim TCP Socket.
Rufe die IP-Adresse (ohne weitere Parameter) in einem Web-Browser auf, um das Modul zu konfigurieren. Die Webseite zeigt den Status und eine Hilfe mit dem ganzen Befehlssatz an.
Eine ausführliche Erklärung, wie das Multithreading und der verwendete µIP Stack funktioniert, findest du hier.
Bauteile
Benötigt wird- ein AVR Mikrocontroller vom Typ ATmega 644, 1284, 2560 oder Xmega128D3.
- ein USB-UART Adapter.
- ein Ethernet Controller Silabs CP2201. Dieser Chip wird mit gültiger MAC Adresse geliefert.
Die Schaltpläne findest du im Download-Paket. Du kannst den Ethernet Controller an beliebige Pins des Mikrocontrollers anschließen, da die Zuordnung der Pins konfigurierbar ist. Du brauchst auch einen Programmieradapter für den Mikrocontroller. Im Falle des Xmega128D3 muss es einer mit PDI Schnittstelle sein. Es gibt fertige Mikrocontroller Module mit USB Bootloader, die ohne Programmieradapter nutzbar sind.
Die Anzahl der I/O Ports kann man mit Schieberegistern vom Typ 74HC165 und 74HC595 oder TPIC6B595 erweitern. So kommt man auf bis zu 32 zusätzliche Eingänge und 32 zusätzliche Ausgänge. Außerdem wird ein serieller 12bit ADC vom Typ MCP3204 oder MCP3208 unterstützt, als Alternative zum internen ADC vom Mikrocontroller.
Man kann eine SD Speicherkarte direkt an den SPI Port des AVR anschließen, wenn er mit 3,3 Volt versorgt wird. Über den Webserver hat man von außen lesenden Zugriff auf die SD Karte. Die Firmware enthält auch Code zum Beschreiben der SD Karte, er wird aber nicht verwendet.
Bildschirmfotos
I/O-Befehle über TCP Socket (interaktiv mit Netcat oder Telnet):