Download Ethernet Version
Download serielle Version
Java Beispielprogramm für PC
Multitasking mit Protothreads und Protosockets
Bezugsquellen:
Ethernet Controller: Digikey
Ethernet Übertrager: bei mir
Komplette Module: Chip45

CrumbX1-NET von Chip45

Crumb168-USB von Chip45
2.11.6 16.05.2012
Performance der I/O Status Seite verbessert.
2.11.5 07.05.2012
Das Script makefsdata wurde so geändert, dass es beim Konvertieren von Textdateien
in Byte-Arrays die Zeilenumbrüche im originalen Format (DOS/Unix) beibehält.
Umgehung wegen falscher ADC Funktionsregister-Strukturen in WinAVR für Xmega128D3
eingebaut.
Korrigiert, dass der ADC eines Xmega immer die Werte der vorherigen Messung zurück liefert, anstatt
den aktuellen Wert.
2.11.4 01.05.2012
Einstellungen werden nun vor dem Einschalten des Ethernet Interfaces aus dem EEPROM ausgelesen,
was gegen sporadischen Verlust beim Hochfahren hilft.
Korrektur von PT_YIELD, der in untergeordneten Treads nicht funktionierte (harmlos, weil
PT_YIELD nicht verwendet wird).
Der durch die Email Applikation überwachte Port ist nun in hw-layout.h einstellbar.
2.11.3 28.04.2012
Korrektur: Unvollständige Dateiübertragung von SD Karte im Fall von TCP re-transmissions.
Speicherbedarf ein bisschen reduziert.
2.11.2 24.04.2012
Korrektur: Der Thread der das Inhaltsverzeichnis der SD/MMC Karte anzeigt hatte nicht korrekt gewartet,
wenn gleichzeitig ein anderer Thread auf die Karte zugegriffen hatte.
2.11.1 24.04.2012
Kein Größen-Limit mehr auf der Seite "Files on SD/MMC card".
Datei-Downloads von SD/MMC Karte haben nun einen Content-Length Header, so dass ein ordentlicher Fortschritts-Balken angezeigt wird.
Neuer Befehl "ip" am seriellen Port zeigt die aktuelle IP-Adresse an.
2.11.0 20.04.2012
Neu: Unterstützung für SD/MMC Karten.
Geändert: Auf CrumbX1-NET wird nun the hardware-Reset Leitung des Eth. COntrollers verwendet.
2.10.4 15.04.2012
Keine funktionale Änderung, nur Source Code Bereinigung.
2.10.3 11.04.2012
Korrektur: Serieller Port funktionierte nicht bei Xmega.
Korrektur: Zwei Timing Probleme bei Ethernet Initialisierung.
2.10.2 17.03.2012
Korrektur: Kompilierfehler bei ATmega2560.
Geändert: Befehle vom seriellen Port werden nun in der Hauptschleife ausgeführt (war bisher in der Interrupt Routine)
2.10.1 11.03.2012
Korrektur: Bessere Performance und keine Zufalls-Zeichen mehr in Webseiten.
2.10.0 09.03.2012
Neu: Unterstützung für CrumbX1-NET Module und andere Xmega Geräte.
Geändert: Die email Applikation schaltet nicht mehr pull-up's auf Port D ein.
2.9.0 23.02.2012
Neu: Unterstützung für mehr I/O Pins durch Schieberegister.
...
Mit einem einzigen AVR Mikrocontroller und meiner Firmware bauen Sie sich ein solches Modul sehr kostengünstig und kompakt. Sie bekommen pro Modul über 100 (!) freie digitale und analoge I/O Pins, die Sie mit einfachen Text-Befehlen vom PC aus ansteuern. Dabei erfolgt die Verbindung zum PC wahlweise seriell (USB, Bluetooth) oder über Ethernet.
Mit dem enthaltenen Web-Server stellen Sie den Zustand der Eingänge innerhalb von Webseiten dar und natürlich können Sie auch HTML Formulare zur Steuerung der angeschlossenen Geräte entwerfen. Außerdem kann der Web Server Dateien von einer SD/MMC Karte ausliefern. Funktionen zum Beschreiben der Karte sind in der Firmware enthalten, jedoch von den Beispiel-Webseiten ungenutzt.
Das Modul kann einen Port mit bis zu 8 Leitungen selbstständig überwachen und Emails versenden, wenn einer der Pins auf auf High-Pegel geht.
Für die Ethernet Schnittstelle brauchen Sie zusätzlich zum AVR Mikrocontroller noch einen Ethernet Controller vom Typ CP2201. Bei der Firmwa Chip45 können sie solche Kombinationen fertig als Modul kaufen, die Firmware ist aber auch offen für eigene Schaltungen mit anderem Schaltplan.
Für Bluetooth schließen Sie einen Bluetooth Transmitter an den seriellen port an (z.B. ein BTM-222). Und für USB benutzen Sie einen USB-UART Chip, wie den FT232 oder den CP2102.
Die I/O Ports des AVR können mit Schieberegistern vom Typ 74HC165 und 74HC595 erweitert werden. So kommen sie 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, wie er auf dem Crumb644-NET Modul v1 vorhanden war.
Die Firmware ist modular aufgebaut und umfangreich kommentiert, damit Sie eigene Funktionen und Erweiterungen einbauen können. Programmiert wird dabei in C und ein bisschen Javascript. Lesen Sie dazu auch meinen Aufsatz Multitasking mit Protothreads und Protosockets.
Die NET Version enthält alle hier genannten Funktionen. Außerdem gibt es noch eine abgespeckte Variante, die nur den seriellen Port unterstützt, also ohne Ethernet und ohne Webserver. Sie
Zum Beispiel setzen Sie so den Pin PC3 auf High:
Sende: oPC3,1
Antwort: Ok
So fragen Sie den ganzen Port D ab:
Sende: iPD
Antwort: PD=60
So fragen Sie den dritten analogen Eingang ab:
Sende: a3
Antwort: ADC3=014C
Per HTTP fragen Sie den Pin PB5 so ab:
Request: http://192.168.0.123/io?iPB5
Response: PB5=0
Sie können bis zu 200 Befehle pro Sekunde ausführen.
Die Ethernet Version erfordert einen AVR mit mindestens 64KB Programmspeicher und 4KB Ram (z.B. ATmega644) und den Ethernet Controller Silabs CP2201. Bei Verwendung einer SD/MMC Karte empfehle ich einen Mikrocontroller mit doppelt so viel Speicher (z.B. Xmega128).
Sie können den Ethernet Controller an beliebige Pins anschließen. Die Firmware ist für einige Module von der Firma Chip45 vorkonfiguriert, und generell auch für andere Hardware-Konfigurationen geeignet.
* DHCP funktioniert mit wenigen Internet/WLAN Routern nicht (z.B. Vodafone EasyBox 803).









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
(auch als 64 bit Version auf großen AVR's)
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 Set analog reference
On Xmega: INT1V (default), INTVCC (=VCC/1.6), AREFA, AREFB
On Atmega: VCC (default), EXT, 1.1V, 2.56V
a3 Read from analog pin 3
Extented inputs:
iPX Read all extended inputs
iPX0 Read from extended input 0
Extented outputs:
oPY,xxxxxxxx Write all extended outputs (8,16,24 or 32 bit hex value)
oPY0,h Write to extended output pin 0 (0 or l=low, 1 or h=high)
iPY Read status of all extended outputs
iPY0 Read status of extended output 0
Stichwörter: AVR Ethernet Webserver Web Server embedded Ethernet Internet Mikrocontroller Netzwerk schalten steuern fernwirken ferne wirken fernsteuern Fernsteuerung remote USB Bluetooth seriell abfragen Sensoren Schalter Kontakte Relaises.