Embedded Webserver (AVR - Webserver)

Ja, dies ist das Projekt "AVR-Webserver" aus der Elektor (Dezember 2007).

Das Internet und somit die Vernetzung gewinnt immer mehr an Bedeutung. Geringe Internetkosten und Breitbandanbindung der Haushalte tragen ihren teil dazu bei. Zum Messen, Steuern und Regeln treten immer mehr Emdedded Webserver in den Vordergrund, die die Aufgaben anstelle von PC’s lösen. Da diese weniger Strom verbrauchen und von ihren Abmessungen wesentlich Platz sparender sind.

 

 

 

Zu Übungszwecken und zur Erkenntnisgewinnung begann ich 2004 mit einen eigenen kleinen Projekt eines Embedded Webservers um einen Verbraucher, mir schwebte damals eine Kaffeemaschine vor, über ein Ethernetnetzwerk zu steuern. Es gab schon einige Firmen auf den Markt die fertige Embedded TCP/IP Stacks mit passender Hardware vertrieben, allerdings lagen die Preise jenseits meines Budgets. Somit stecket ich mir in der Anfangsphase des Projektes ein Limit von unter 20€. Zur Auswahl kam eine ISA Ethernetkarte und als Prozessor ein Atmel ATMega128 womit ich schon einige Erfahrungen gesammelt hatte in Frage. Meine Aufmerksamkeit viel auf eine ISA Ethernetkarte mit RTL8019AS Chipsatz, da es hierzu vom Hersteller Realtek (www.realtek.com.tw) eine gute Dokumentation gab und der Chip selber eine 16/8Bit Schnittstelle hatte. Diese ISA Ethernetkarten mit dem RTL8019AS Chipsatz sind auch heute noch für unter 5€ bei den einschlägigen Internet Auktionshäusern zu haben.

 

Schnell konnte ich die Netzwerkkarte über einen 8Bit Datenbus ansprechen. Die Anbindung der Netzwerkkarte und somit des RTL8019AS Chips erfolgt über zwei 8 Bit Ports des Prozessors und einem ISA Slots. Auf externe Komponenten wie Speicher wurde von Anfang an bewusst verzichtet, um den Nachbau einfach und die Kosten so gering wie möglich zu halten. Dieses hatte natürlich Nachteile bei der Implementierung des TCP/IP Stacks. Die TCP Implementierung wurde soweit reduziert, dass man von TCP/IP Stack kaum noch sprechen kann. Die Daten werden nur Packetweise empfangen und beantwortet. Auch sind TCP Sicherungsmechanismen aufgrund des Speichers nicht implementiert. Der Webserver ist somit  zwar in der Lage eingehende Fragen zu beantworten und Webseiten dazustellen, kann aber auf Übertragungsfehler wie im TCP Standart [rfc793]  definiert nicht antworten.

 

Diese Nachteile des Protokolls stehen einer hohen Skalierbarkeit gegenüber. Sofort nach der Veröffentlichung des Projektes mit Source Codes im Web begannen einige User mit der Portierung auf andere Prozessoren wie unter anderen ATmega32 und sogar für den kleinen ATmega 8. Von der Portierung auf einen ATmega32 ließ sich auch Holger Buss inspirieren und entwickelte kurzerhand eine Platine für den AT Mega 32 Webserver zu finden unter (www.mikrocontroller.com), im nachhinein kamen noch einige Protokolle hinzu wie Emailversand, des weiteren eine Webkamera Anbindung mit einer Sony MCA25 Handycam und die Anbindung einer MMC/SD Karte. Auf der MMC/SD Karte werden nun die Webseiteinhalte und wichtige Servereinstellungen wie die IP Adresse abgelegt. Zum betreiben des Webservers wird aber keine MMC/SD Karte zwingend vorrausgesetzt.

Inzwischen wurde es auch Zeit für einen neuen Webserver und Stack. Dieser unterstützt nun auch Positive Acknowledgement with Retransmission also positive Bestätigung mit erneuter Übertragung. Das ganze Projekt findet ihr unter ETH_M32_EX!

 

Anschluß der Netzwerkkarte:

 

Dokumentation (21.09.04)

Dokumentation (21.09.04)

 

Änderung der Versionen ist aus Version.txt zu entnehmen. (Dieser alte Stack von mir wird nicht mehr erweitert. Neue Version eines Stacks findet ihr unter ETH_M32_EX!)

Alle Versionen

 
 

Zum Umwandeln von GIF oder JPEG Bildern zum einbinden in AVRGCC benötigt man einen Konverter! (WINBIN)

WINBIN V1.0 (29.06.04)  

 

 

Für alle die Personen die sich eine Realtek Netzwerkkarte selber bauen wollen, hier die Eagle Files und Libary. Natürlich ist auch diese Platine einseitig und benötigt nur eine kleine Brücke.

Eagle Files (Small-Networkcard)
 

Infos zum Realtek 8019 Chipsatz findet ihr auf der Homepage von Realtek. Also bei mir im Linkbereich mal nachschauen.

 

 

Eagle - Files des Small-Avr-Webserver in Verbindung mit dem Experimentierboard V1.4 und einer PC-Netzwerkkarte. Es ist ohne weiteres möglich das Layout für einen Mega32 oder anderen Atmel AVR Risc µC abzuändern.

Eagle Files (Small-AVR-Webserver V1.0)  

Und hier noch ein Bild des Webservers

 

 

 

Hier der Webserver auf einer einseitigen Platine mit einem Mega128:

 
 
Eagle Files des Einplatinen Single Side Webservers (26.10.04)
 
Dokumentation (02.11.04)