Wechseln zu: Navigation, Suche

Hauptseite

Microwebserver (OpenMCP)

Allgemeines

Manchmal will man auf einfache weise mit einem Mikrocontroller Verbindung zur Außenwelt aufnehmen und Daten austauschen, und da die Technik in den letzten Jahren ja schon sehr fortgeschritten ist, reicht heute die alte RS232(EIA-232) oder kleine Lämpchen, Taster und LC-Display nicht mehr aus. Meist will man die Daten dann auch noch überall verfügbar machen. Also, was neues und schickes und modernes muss her. Und da bietet sich das Internet gerade zu an. Und an das Internet kommt man meist über das heimische Netzwerk samt vorhandenem DSL-Anschluß. Es liegt also nahe ein Mikrocontrollerboard mit Ethernetinterface zu entwickeln. Das folgende Projekt (im folgenden einfach OpenMCP genannt, Warum_OpenMCP ?) beschäftigt sich genau damit. Als Ethernetinterface wurde beim OpenMCP der ENC28j60 gewählt. Dieser ist leicht zu beschaffen und einfach an den Mikrocontroller per SPI anzubinden. Das Projekt hat zum Ziel eine Entwicklungumgebung zu schaffen für den angehenden Programmierer, der sich mit C beschäftigt und ein Ziel vor Augen hat. Dabei findet sich beim OpenMCP schon alles was gebraucht wird, um relativ schnell erste Erfolge zu haben. So steht als Hauptbestandteil des OpenMCP ein benutzbarer TCP/IP-Stack zur Verfügung der komplett im Hintergrund arbeitet. Nebenbei sind noch viele nützliche Funktionen entstanden, welche die Arbeit enorm erleichtern. Mit der Zeit ist daraus schon fast ein eigener mini-Kernel entstanden, der die wichtigsten Funktionen die man so braucht enthält. Als Plattform steht hier ein selbst entwickeltes Board mit allen wichtigen Komponenten zur Verfügung.

ATmega2561 OpenMCP V2.JPGATmega644p myAVR.JPGATmega1284p AVRNETIO.JPGATXmega128A1 XPLAIN.JPGATxM2.pngUPP.JPGU-StreamBox.jpg

Hardware

original OpenMCP

Technische Randdaten wären:

  • ATmega2561 mit 16MHz
  • Ethernetinterface mit dem ENC28j60
  • EIR-232 (RS232)
  • 128kByte RAM (56kByte direkt mit dem GCC für Variablen nutzbar)

Zudem sind die meisten nicht verwendeten Pins vom ATmega2561 herausgeführt.

Das Board lässt sich relativ einfach aufbauen, es besteht bis auf den AVR-Controller nur aus DIL-/DIP-Bauelementen. Folgende .zip-Datei enthält alle nötigen Dateien, um sich ein eigenes Board zu fertigen. Das Board gibt es inzwischen in zwei verschiedenen Versionen. Dabei blieb die Funktionalität gleich, es haben sich im Wesentlichen nur die Pinheader geändert und die Art der Spannungsversorgung. Bei der neuen Version werden die 5V mit einen Schaltregler erzeugt und die 3.3 V werden wie gewohnt mit einem Low-Drop-Regler realisiert.

Eagle-Dateien Version 1 Eagle-Dateien Version 2

ENC28j60-Bestueck.png ENC28j60-Layout.png


Die Kosten für das Board in der Grundversion betragen in etwa 40-45 €, je nachdem, wo man einkauft. Ich denke mal das ist ein guter Preis, dafür erhält man ein sehr gutes System, welches genug Flash und RAM bietet, so dass man sich ordentlich austoben kann.

AVR-NetIO / myAVR / UPP / Xplain / ATXM2

OpenMCP ist auch auf anderen Hardwareplattformen lauffähig. Da wäre das beliebte AVR-NetIO von Pollin, das myEthernet von MyAVR, UPP mit dem AT90CAN128 und das Xplain von Atmel mit einem Ethernet Addon. Für das myEthernet von myAVR gibt es eine fertige Firmware.

Was geht für welches Board ?

Funktion / Plattform
UPP (AT90CAN128)
OpenMCP (ATmega2561 / AT90CAN128 (4))
Pollin AVR-NET-IO (ATmega644 / 644P / 1284P)
myEthernet (ATmega644P / ATmega1284P) Xplain (ATXmega128A1) ATXM2 (ATXmega128A1)
UART
X
X
X
X
X
X
TWI
X
X
X
X

DCF77
X
X
w.i.p.
w.i.p.
LCD HD44780
X 2
X
X 6
LCD DOGL128W6
X
MMC
X 1,2
X
X
GPIO
X
X
X
X
X
X
ADC
X
X
X
X
X
X
1-Wire
X
X
X
X
ext.Int
X
X
X
X
X
X
pc.Int
X
X
-
-
VS10xx
X 3
w.i.p.
ImpulseCounter
X
X
w.i.p.
Templogger
X 5
X 5
X 5
DynDNS
X
X
X
X
X
X
NTP
X
X
X
X
X
X
DHCP
X
X
X
X
X
X
Cron
X
X
X
X
X
X
tftp
X
X (2)
X
Wlan ZG2100 / MRF24WG0MA
X
fertige Firmware SVN-Revision 460 ATmega2561 mit ADD-On: ATmega644 ATmega644p ATmega1284p ATmega644p ATxmega128a1
SD-Card Image AVR-NET-IO myEthernet ATXM2

1) Mit dem MMC-ADD-On möglich.
2) Mit dem ADD-On von Pollin.
3) Mit dem VS-10xx Add-On für das Orginal OpenMCP-Board.
4) ENC28j60 per Software-SPI angebunden.
5) Benötig das SD-Karten Image, MMC-Support und Java im Browser.
6) Nicht getestet oder nicht stabil.

Software

OpenMCP beherrscht derzeit schon recht viele Protokolle und Funktionen die man so täglich braucht. Dazu zählen:

  • Netzwerkprotokolle: IP/ARP/UDP/TCP
  • Netzwerk Clients für DNS-, DHCP-, NTP-, DynDNS-Client
  • Netzwerk Server für tftp, HTTP und Telnet
  • flexible Standard In/Out für printf etc.
  • ein Clocksystem mit Timern und Countern
  • Crondienst
  • MP3-Streamingclient (nur ATmega2561 mit VS10xx)
  • Modul für den Config-Speicher im EEprom
  • 1-Wire Unterstützung (zum Beispiel für Temperaturmessung mit Dallas 1-Wire Sensoren)
  • TWI/I2C Unterstützung
  • Treiber für digitale Ein- und Ausgänge sowie den analog/digital Wandler
  • RS232 / Uart
  • SPI
  • LCD-Display
  • FAT16/32 support für MMC/SD-Karten

Die Software ist in einem SVN zu ergattern. Das SVN liegt hier. Username und Passwort sind: "anonymous" . Für installationsfaule Windowsbenutzer liegt hier zusätzlich eine .zip zum Herunterladen, die nicht immer aktuell ist. Die Dokumentation der Funktionen befindet sich hier, kann aber auch mit Doxygen aus dem Sourcecode heraus erstellt werden. Beide zusammen gibt es hier. Für Leute die sich aus dem Sourcecode selber eine OpenMCP-Firmware bauen wollen empfehle ich folgendes kleines Tutorial.

Eigenen Code oder Webseiten/CGIs hinzufügen

Dies gestaltet sich recht einfach. Wichtig beim Hinzufügen von eigenem Code ist eigentlich nur die Einhaltung der Strukturen, damit sich sich der Code später auch einfacher auf andere Systeme portieren lässt. Die wichtigste Frage für den angehenden Programmierer ist wohl: Wie kann ich eigene CGIs oder Webseiten hinzufügen? Dazu befindet sich eine eigene Seite im Aufbau, welche die Struktur des Systems und deren Benutzung erklärt. Software_Hier_geht_es_dort_hin. <- nicht komplett, befindet sich noch im Aufbau.

Wissen

Sehr zu empfehlen ist auch der ausführliche Microwebserver Artikel zu diesem Board. Ein Studium der Lektüre ist sehr empfehlenswert und wünschenswert, da dieser zum Verständnis außerordentlich gut beiträgt :-) und schon viele Fragen mit Sicherheit erschlägt.

Spielen

Für Spielkinder, die mal mit einen funktionsfähigen OpenMCP Board kommunizieren wollen, einfach mal http://www.neo-guerillaz.de:82 in die Browse hacken und schaun. Anbei noch ein Bildchen wie es dann aussehen sollte.

300px 300px 300px

So ähnlich ergeht es einem MyAVR mit OpenMCP als Firmeware. Zu erreichen unter http://www.neo-guerillaz.de:83. Dort sollte in etwa das gleiche zu sehen sein. Als Leckerbissen für Leute, die sich das Pollin AVR-NETIO gekauft haben, hier noch ein paar Bilder wie es dort auszusehen hat. Zu testen unter http://www.neo-guerillaz.de:81.

300px 300px 300px

Hier kann man in Ruhe die Relais steuern und die ADC-Eingänge auslesen. Die Hardware, die dahinter steckt ist auf dem folgendem Bild zu sehen.

AVR-NETIO.jpg

Zu sehen ist dort das AVR-NET IO von Pollin bestückt mit einem ATmega644 mit 16MHz. Zusätzlich ist eine 8-fach Relaiskarte angeschlossen die auch bei Pollin erhältlich ist. Pollin sagt zwar das die Relais nur 24V abkönnen, aber verbaut sind welche die auch 230V bei 3A können. Das Layout ist auch so ausgeführt das die Leiterbahnabstände groß genug dafür wären. Und schalten lassen sich auch 230V damit, habe ich getestet. Jedoch sollte beachtet werden, dass hier nur eine galvanische Trennung an den Ausgängen der Relais stattfindet, aber nicht an den Eingängen. Also ist zu beachten, daß das Schalten von 230V auf eigene Gefahr hin erfolgt. Also Finger weg, es sei denn man weiß was man tut.

Warum OpenMCP

Wie ich oben schon angedeutet habe wollte ich ja noch erklären warum das Projekt OpenMCP heißt. Das ist relativ einfach erklärt. Open sollte ja klar sein, denn das Projekt steht unter der GPL und ist quelloffen. MCP steht für MikroController Projekt. Angelehnt ist dieser Begriff an den MCP aus dem Film Tron, dort heißt es allerdings Master Controll Program. Sowas soll es auch werden, nur nicht ganz so böse :-).

Andere verwandte Projekte

Ein sehr interessantes Projekt, welches auf Grundlage meiner Platine und Software läuft ist dieses hier. Dort kann man grob gesagt das alte gute BTX over IP probieren.

Das ATXM2-Board auf dem OpenMCP auch läuft.

MyEthernet von MyAVR.

Weiterführende Links

Kontakt

Bei Fragen oder interesse bitte bei sharandac@snafu.de melden. Ich bin die meiste Zeit auch per Jabber erreichbar unter sharandac@jabber.berlin.ccc.de oder per ICQ (234490589).