Foto vom Mikrocontroller Modul Crumb168-USB
Crumb168-USB von Chip45

Foto vom Ethernet Interface ioMate-NET
ioMate-NET von Chip45

Bezugsquellen

Ethernet Controller: Digikey

Ethernet Übertrager: bei mir

Schnittstellen-Module: Chip45

Module mit AVR: Chip45

Terminal-Programm: Tobias Hammer

Bluetooth Modul BTM-222: SR-Tronik Versand

Historie USB Version

1.1.4 13.05.2010
Korrektur: Falsche Initialisierung Serial Port bei ATmega16.

1.1.3 08.05.2010
Korrektur: Ungewollte "FF" prefixe beim "i" Befehl entfernt.

1.1.2 17.12.2009
Neu: Unterstützung für Crumb128 und Crumb2560.
Neu: Support für Port J, K und L in I/O Befehlen.

1.1.1 13.12.2009
Verbesserung: Überprüfung der Befehls-Parameter.
Neu: Vordefinierte Hardware-Layouts hinzugefügt.
Neu: Konfigurierbarer Schreibschutz für I/O Pins hinzugefügt.

1.1.0 10.12.2009
Neu: Firmware kann nun durch Konfiguration an beliebige Harware-Layouts angepasst werden.
Neu: Unterstützung für Port E,F,G und H hinzugefügt.
Verbesserung: Die grüne LED blinkt nun 2x beim Einschalten und ist danach frei verfügbar.
Verbesserung: Die Backspace Taste kann nun zur Korrektur der Eingabe benutzt werden.

1.0.2 29.9.2009
Neu: Vorkompilierte Firmware in HEX Format.

1.0.2 26.9.2009
Korrektur: Falsche Einstellung der externen ADC Referenzspannung.
Neu: r1.1V und r2.56V Befehle für die größeren AVR chips.

1.0.1 17.4.2009
Verbesserung: Ok Antwort nach allen Befehlen, die bisher nur im Fehlerfall geantwortet haben.

Historie NET Version

2.8.4 08.05.2010
Korrektur: Ungewollte "FF" prefixe beim "i" Befehl entfernt.

2.8.3 28.04.2010
Korrektur: Unnötiges Füllbyte am Ende jedes IP Paketes entfernt.

2.8.2 17.12.2009
Neu: Support für Port J, K und L in I/O Befehlen.

2.8.1 13.12.2009
Verbesserung: Überprüfung der Befehls-Parameter.
Neu: Konfigurierbarer Schreibschutz für I/O Pins hinzugefügt.

2.8.0 10.12.2009
Korrektur: Falsche Betreff-Zeile in eMails wenn mehrere Auslöser zugleich aktiv werden.
Korrektur: Zufällige falsche Zeichen in econfig.shtml, wenn man auf einen Ok Button klickt.
Neu: Firmware kann nun durch Konfiguration an beliebige Harware-Layouts angepasst werden.
Neu: Unterstützung für Port E,F,G und H hinzugefügt.
Verbesserung: Die grüne LED blinkt nun 2x beim Einschalten und ist danach frei verfügbar.
Verbesserung: Die Konfigurationsseite zeigt nun sowohl die aktuellen IP-Einstellungen, als auch diese gespeicherten Einstellungen.
Neu: Unterstützung für AVR Controller mit mehr als 20Mhz.
Änderung: LED-Toggle Links auf der I/O Status Seite entfernt.

2.7.2 13.11.2009
Verbesserung: Config-Reset-Jumper wird nun schon vor erfolgreicher Ethernet Intialisierung erkannt.

2.7.1 7.10.2009
Neu: Angabe von Absender und Empfänger im Vorspann der eMail.
Neu: STMP Statistik-Zähler.

2.7.0 30.10.2009
Neu: Authentisierung bie HTTP und TCP Socket.
Neu: SMTP client.
Neu: Port D Überwachung mit eMail Benachrichtigung.
Neu: Vorkompilierte Firmware in HEX Format.

2.6.0 10.9.2009
Verbesserung: Anzeige der analogen Eingänge in Volt.
Neu: Web Formular mit Javascript (AJAX) für I/O-Befehle.

2.5.3 5.9.2009
Neu: Konfiguration der IP-Adresse via arp/ping.

2.5.2 3.9.2009
Korrektur: Backspace Taste in TCP Socket.
Korrektur: Kopie der Ausgabe in falscher TCP Socket Verbindung.

...

English version of this page

AVR I/O Firmware

Weil aktuelle Computer keinen parallel-Port mehr haben, besteht zunehmend Bedarf für externe generische I/O Module, die man seriell, per USB Kabel oder Ethernet Verbindung (RJ45 Stecker) mit dem Computer verbinden kann. Eine solche Erweiterung der vorhandenen digitalen und analogen Anschlüsse vom PC, kann man nutzen, um elektronische oder elektrische Geräte zu steuern oder fernzusteuern.

Meine Firmware ermöglicht Zugriff auf alle I/O Pins durch einfache Befehle. Der Zugang erfolgt mittels Terminal-Programm, Telnet, Web-Browser oder selbst geschriebener Software. Die Firmware ist Modular aufgebaut, so daß Sie eigene Erweiterungen leicht unterbringen können.

Die Firmware funktioniert auf fast jedem AVR ATmega Mikrocontroller und unterstützt beliebige Hardware Layouts, weil die Belegung jedes einzelnen Pins frei konfigurierbar ist.

Es gibt keine weiteren Voraussetzungen!

Die Ethernet Version enthält einen eigenständigen Webserver, der folgende Protokolle unterstützt:

Beide Varianten der Firmware harmonieren mit USB Schnittstellen (z.B. CP2102, PL2303), sowie mit Bluetooth Modulen (z.B. BTM-222).

Bei seriellem Zugang und beim TCP Socket senden Sie Befehle einfach im Klartext.

Beim HTTP Protokoll setzen Sie die Befehle als URL-Parameter ab, z.B können sie so den dritten analogen Eingang abfragen:

http://192.168.0.123/io?a3

Darauf aufbauend können Sie eigene Webseiten erstellen, mit denen angeschlosene Hardware direkt gesteuert wird. Das Modul kann also auch selbstständig genutzt werden.

Es gibt Befehle für einzelne Bits, ganze Ports (8 Bit) und für alle Ports auf einmal (32 oder 64 bit). Intern genutzte I/O Leitungen sind geschützt, sie werden durch solche Befehle nicht angesteuert.

Sie können ungefähr 500 Befehle pro Sekunde ausführen, das gilt für die USB Version und auch für die Ethernet Version.

Das folgende Download-Paket enthält den Source Code der Firmware, vorcompilierte Firmware im HEX Format für die Module von Chip45, Schaltpläne, sowie eine detaillierte technische Beschreibung auf Englisch.

Download

Bildschirmfotos:

I/O-Befehle über TCP Socket (Telnet):
Bildschrimfoto von I/O Befehle über TCP Socket

I/O-Befehle über seriellen Port (USB):
Bildschrimfoto von I/O-Befehle über seriellen Port (USB)

I/O-Befehle über HTTP:
Bildschrimfoto von I/O-Befehle über HTTP

Web Server:
Bildschrimfoto vom Web Server

Bildschrimfoto vom Web Server

Bildschrimfoto vom Web Server

Bildschrimfoto vom Web Server

Commands that affect all port pins:
d,DDCCBBAA  Set direction of all port pins,
            high=output, low=input
p,DDCCBBAA  Configure pull-up resistors,
            high=on, low=off
o,DDCCBBAA  Output data on all port pins
i           Read from all port pins

Commands that affect one port:
dPB,xx      Set direction of port B
pPB,xx      Configure pull-up resistors of port B
oPB,xx      Output data on port B
iPB         Read from port B

Commands that affect a single port pin:
dPB0,i      Set direction of port B pin 0 to input
            (0 or i=input, 1 or o=output)
pPB0,e      Enable pull-up resistors of port B pin 0
            (0 or d=disabled, 1 or e=enabled)
oPB0,h      Output high on port B pin 0
            (0 or l=low, 1 or h=high)
iPB0        Read from port B pin 0

Analog inputs:
rVCC        Use VCC as reference (5V)
r1.1V       Use internal 1.1V reference
r2.56V      Use internal 2.56V reference
rEXT        Use external reference
a3          Read from analog pin 3

Beispiel I/O Erweiterung

Wer mehr Pins für Ein-/Ausgabe braucht, kann diese leicht mit Hilfe von Schieberegistern hinzufügen. Das folgende Schaltbild zeigt eine mögliche Schaltung für eine Platine. Im Grunde genommen kann man diese Schaltung beliebig erweitern, falls noch mehr I/O Leitungen benötigt werden.

Schaltplan der I/O Erweiterung

Analoge Erweiterungen kann man recht einfach mit dem Chip MCP3208 realisieren. Der wird im Prinzip genau so angeschlossen.

Bitte nehmen Sie zur Kenntnis, daß die obige Firmware (noch) keinen Code für diese Erweiterung enthält. Bei Bedarf nehme ich gerne einen entsprechenden Entwicklungsauftrag an.