Ethernet ATmega32/644 Experimentierboard

Im Onlineshop sind die Platinen für dieses Projekt zu haben! 

Das ein Schaltmodul fürs Web nicht teuer sein muss, zeigt dieses kleine Projekt. Ein kompletter mini Webserver für etwa 30€. Dabei kommt der Mikrochip ENC28J60 Ethernetcontroller in Verbindung mit einem ATmega32 oder ATmega644 zum Einsatz. Mir ist bewusst das es schon einige solcher Schaltungen auf der Basis dieses Netzwerkchips und dieser Controller im Internet gibt. Allerdings kommt meine Schaltung ohne SMD Bauteile aus und die Platine ist zudem lediglich einseitig. Dies garantiert, dass dieser mini Webserver von einem Bastler ohne weiteres nachgebaut werden kann. Das Bild zeigt euch dabei den Webserver mit optionalem Display. Auch wenn die Software in der Programmiersprache C geschrieben wurde, kann eigentlich jeder seine eigene Webseite erstellen und in dem Webserver einbinden. Ein blick in die Datei webpage.h zeigt euch wie eine Webseite eingebunden wird, und somit Schaltaktionen durchgeführt werden. Die restliche und allgemeine Konfiguration erfolgt in der config.h. Auch hier wird von keinem irgendwelche C Kenntnisse abverlangt. 

 Bestückte ETH_M32_EX Leiterplatte

Zur Stromversorgung empfehle ich ein kleines stabilisiertes Netzteil mit einer Spannung um die 7,5V bis 9V - 500mA. Soll natürlich darüber hinaus noch eine Kamera und ein LCD Display mit Hintergrundbeleuchtung an dem Webserver betrieben werde kommt man um ein stärkeres Netzteil nicht herum. In der Grundbeschaltung hat der Webserver eine Stromaufnahme von ca. 190mA. Die Kamera Philips DC-3840 benötigt noch mal weitere 60mA.

Dieser kleine Webserver wurde zum Messen, Steuern und Regeln gedacht. Als Ersatz für einen laufenden PC für die eigene Homepage oder Network Attached Storage (NAS) ist dieser Server nicht gedacht. Das Datenvolumen und die Größe der Dateien sind natürlich beschränkt. Aber um eine Steckdose zu schalten, Webbilder zu übertragen oder als kleine Wetterstation reicht dieses Modul aber allemal aus. In der Folgenden Datei findet ihr alle benötigten Dokumente und Dateien um euch einen eignenden Webserver zu bauen. Wer nicht in der Lage ist die Platine selber herzustellen, kann diese auch im Shop beziehen. Das verleiht natürlich dem Webserver auch gleich ein Professionelleres aussehen. Über ein Webformular, können mit einen klick, die Bauteile in den Reicheltwarenkorb gelegt werden. Die benötigte Software für den Webserver befindet sich noch etwas weiter unten.

Layoutdateien für das Board

 Layout und Schaltplan Ver.: 1.2 (12.10.2009)

 

ETH_M32_EX Leiterplatte mit LC Display

 

Des Weiteren gibt es hier auch meinen kleinen neuen miniStack, der bisher ARP, ICMP, WOL, UDP, TCP, DNS, DHCP, NTP(Client) und HTTP unterstützt. Ab der Version 1.0.79 steht das versenden von EMails nun auch zur Verfügung. Über die serielle Schnittstelle hat man Zugriff auf den Prozessor. Dieser nimmt Kommandos entgegennehmen z.B. ARP, TCP und RESET stehen hier zur Verfügung. ARP gibt z.B. die aktuelle ARP Tabelle aus. Hier kann der aktuelle Verbindungszustand beobachtet werden. Einen genaueren Überblick über die vorhandenen Befehle gibt das Kommando Help.

Die Einstellungen der seriellen Schnittstelle ist: 9600Baud, 8Datenbits, no Parity und 1 Stoppbit des weiteren kein Handshake. Dabei ist die Software im Makefile auf einen ATmega644 oder ATmega32 voreingestellt. Der Stack unterstützt nun auch Positive Acknowledgement with Retransmission also positive Bestätigung mit erneuter Übertragung. Ich werde in der nächsten Zeit immer mal wieder den Stack erweitern. Ich benutze zur Zeit die WinAVR Version 20071221 also vom 21 Dezember 2007, hiermit sollte der SourceCode ohne weitere Probleme zu kompilieren sein. Wie dieses geht erfahrt ihr hier.


Für Personen die erstmal nur sehen wollen, dass alles funktioniert, habe ich auch schon fertige Hexfiles dabei. Die IP-Adresse kann dabei über die serielle Schnittstelle mit einem Terminalprogramm eingestellt werden. Diese wird dann im EEPROM gespeichert. Die Einstellung erfolgt mit dem Kommando: IP 192.168.0.99.

Der Webserver ist in der Lage via Telnet eine Verbindung zur RS232 Schnittstelle des AVRs aufbauen. Eingehende Zeichen an der seriellen Schnittstelle des Webservers werden zur gestarteten Telnetapplikation gesendet. Dieses kann auch umgekehrt erfolgen, also von der Tellnetapplikation zur RS232 Schnittstelle des Webservers. Mithilfenahme der Tools „com0com“ und „com2tcp“ kann nun ein virtueller COM Port eingerichtet werden. Eventuell muss der RX Buffer der seriellen Schnittstelle vergrößert werden. Dieses erfolgt in der „usart.h“ bei dem Eintrag BUFFER_SIZE.

Durch den NTP Client (NTP = Network Time Protocol) ist es möglich von einem NTP Server die aktuelle Uhrzeit zu beziehen. Somit kann man auch eine kleine Ethernet Uhr bauen, die über das Internet die aktuelle Uhrzeit empfängt.

Natürlich läuft der Stack auch auf dem AVR Webserver von Holger Buss (www.mikrocontroller.com) hierzu bedarf es nur einer kleinen Änderung in der Config.h, in der Config.h muss nur der Netzwerkeintrag auf RTL8019 umgestellt werden.

Die Software für das ETH_M32_EX und AVR Webmodule

Software für WinAVR / AVRStudio6 V1.2.9 (27.10.2013)

 

 

Die Jumper für die RS232 Schnittstelle müssen wie folgt gesetzt werden, wenn ein 1:1 Kabel benutzt wird:

RS232 Jumper

 

 Wenn alles funktioniert sollte der Exporer folgendes anzeigen. Hier können nun die Ausgänge von Port A 0 - 2 gesetzt werden.

  Webseite vom ETH M32 EX

 

Funktionsdiagramm des Com Port Redirector: