MicroWebServer

Aus Wiki

(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
Zeile 1: Zeile 1:
{{Projekt Inhaltsverzeichnis}}
{{Projekt Inhaltsverzeichnis}}
-
asdasdasd
+
==Einleitung==
 +
Mikrowebserver auf Basis eines ENC28J60 von [http://www.microchip.com Microchip] und eines ATMega168 von [http://www.atmel.com/ Atmel].
 +
 
 +
Ziel war es einen möglichst kleinen Webserver zu designen, der zudem als Entwicklungsplattform für den ENC28J60 MAC/PHY/Ethernet-Transceiver dienen sollte. Es wurden 14 I/O des ATMega168, sowie 3,3V, GND, und die Spannungsversorgung des Webservers auf eine Pfostenleiste gelegt, um damit beispielsweise externe Relais und damit 230V~ Lasten schalten zu können.
 +
Unter den 14 I/Os können 6 I/Os als analoger Eingang geschaltet werden (10Bit integrierter ADC). Hierbei ist es möglich die 3,3V oder eine interne Spannung von 1,1V als Referenz für die Analog-Digital-Wandlung zu verwenden. (Der Kondensator an AREF ist vorgesehen und kann, falls der AD-Wandler nicht benutzt wird, unbestückt bleiben). Desweiteren befindet sich unter den 14 I/Os ein I²C Bus (keine Pullups onboard!), eine bidirektionale U(S)ART, sowie diverse Output-Compare-Ausgänge mit denen über die internen Timer beispielsweise ein Taktsignal oder sogar ein PWM Signal erzeugt werden kann. Erwähnenswert ist natürlich auch, dass auf jeden der 14 I/Os jeweils ein Pin-Change Interrupt liegt.
 +
 
 +
Als Spannungsversorgung empfehle ich eine Spannung von etwa Vin=5V bis 7V DC (Altes 5VDC Netzteil beispielsweise). Der Stromverbrauch beläuft sich ohne externe Komponenten am Pfostenstecker auf etwa 150mA. Bei Erweiterungen über den Pfostenstecker ist zu beachten, dass die +3,3V nicht sehr stark belastet werden können. (Bei 5V= Eingangsspannung empfehle ich max. 200mA auf der 3,3V Leitung fließen zu lassen).
 +
 
 +
==Was wird benötigt==
 +
*Lötkolben
 +
*Fortgeschrittene Löterfahrung (0805-SMD, TQFP44)
 +
*Atmel AVR Programmiergerät mit 6poligem Stecker und Kompatibilität für 3,3V Zielspannung
 +
*Spannungsquelle 5V - 7V DC mit mindestens 150mA.
 +
 
 +
==Hardware==
 +
Wie man sieht, ist das Layout also sehr allgemein gehalten, sodass es möglich ist die Platine vielseitig zu verwenden. Trotzdem ist das Layout durch die Verwendung von SMD Bauteilen und geringen Isolate-Werten zur Massefläche kompakt geworden. Die Gesamtfläche der Platine beträgt 38x31mm². Die Platine kann einzeln oder in einem Bausatz von dem [http://www.it-wns.de/themes/kategorie/detail.php?artikelid=114&source=2 IT-WNS Shop] bezogen werden. Alternativ lassen sich die Bauteile aber auch von [http://csd-electronics.de/ CSD-Electronics] beziehen. Die Platine muss dann aber selbst hergestellt werden.
 +
 
 +
 
 +
==Software==
 +
Der [http://www.sics.se/~adam/uip/index.php UIP-Stack] implementiert die Netzwerkfähigkeiten der höherliegenden Schichten. (insgesamt IP, ARP (Echo), ICMP, UDP, TCP). Zur Demonstration des Stacks ist bereits eine kleine Webserver-Applikation aufgesetzt, mit der sich die 14 I/Os an der Pfostenleiste an oder ausschalten lassen.
 +
 
 +
 
 +
==Inbetriebnahme==
 +
Legen sie
 +
Nachdem an die 2 polige Stiftleiste eine Spannung von etwa 5V - 7V DC angelegt wurde und ein Netzwerkkabel eingesteckt wurde, sollte eine grüne Leuchtdiode an der Ethernet-Buchse leuchten. Dies bedeutet, dass ein Ethernet Link hergestellt ist. Auf der grünen Leuchtdiode wird außerdem die Empfangsaktivität des Ethernet-Chips, durch ein kurzes Erlischen der Leuchtdiode dargestellt. Die andersfarbige Leuchtdiode an der Buchse leuchtet bei Sendeaktivität.
 +
 
 +
Als nächstes muss der Mikrocontroller des
 +
Der MicroWebServer kann nur konfiguriert werden, wenn eine AVR-GCC (WinAVR für Windows) Compiler-Umgebung existiert. Diese muss installiert werden, falls Modifikationen an der Konfiguration oder an der Stack-Applikation vorgenommen werden sollen. Ansonsten kann auch die beigelegte (bereits kompilierte) HEX-Datei direkt in den Flash-Speicher gebrannt werden. Der MicroWebServer läuft dann auf der Standardkonfiguration (siehe [[#Konfiguration]]).
 +
 
 +
==Konfiguration==
 +
 
 +
Falls sie ''nicht'' die beigelegte HEX Datei direkt programmiAls nächsten Schritt muss die Konfiguration des MicroWebServers überprüft werden
 +
Falls Sie den Sourcecode verwenden, vergessen Sie nicht Anpassungen an der IP-Adresse, Netzmaske und dem Default-Router vorzunehmen. (Main.c) Die MAC Adresse des Gerätes lässt sich im ENC28J60-Treiber ändern (Hardware/Enc28j60.h). Und der Port des Webserver lässt sich in Net/TcpApps/HttpD.h ändern.
 +
Standardmäßig sind diese Werte wie folgt eingestellt:
 +
MAC-Adresse: 00:03:6F:55:1C:C2
 +
IP-Adresse: 192.168.0.93
 +
Netzmaske: 255.255.255.0
 +
Default-Router: 192.168.0.254
 +
Weberver-Port: 8080
 +
 
 +
Vergessen Sie beim Programmieren des ATMega168 nicht die Fuse-Bits so anzupassen, dass als Takt-Signal ein externer Oszillator dient. (Dieser ist im ENC28J60 integriert und gibt den Takt an den ATMega168 über den Pin7 (XTAL1) aus. Desweiteren empfehle ich, den Brown-Out-Detector auf 2,7V einzustellen. Alle anderen Fuse-Bits werden auf der Default-Einstellung gelassen.
 +
Hexadezimal ausgedrückt (zB für avrdude) entspricht das:
 +
LFuse: E0
 +
HFuse: DD
 +
 
 +
 
 +
Falls noch Fragen auftauchen ist eine Kontaktaufnahme erwünscht :-)
 +
 
 +
Zum Schluss noch eine FAQ und ein Bild des Webinterfaces.

Version vom 14:06, 22. Mai 2008

Vorlage:Projekt Inhaltsverzeichnis

Inhaltsverzeichnis

Einleitung

Mikrowebserver auf Basis eines ENC28J60 von Microchip und eines ATMega168 von Atmel.

Ziel war es einen möglichst kleinen Webserver zu designen, der zudem als Entwicklungsplattform für den ENC28J60 MAC/PHY/Ethernet-Transceiver dienen sollte. Es wurden 14 I/O des ATMega168, sowie 3,3V, GND, und die Spannungsversorgung des Webservers auf eine Pfostenleiste gelegt, um damit beispielsweise externe Relais und damit 230V~ Lasten schalten zu können. Unter den 14 I/Os können 6 I/Os als analoger Eingang geschaltet werden (10Bit integrierter ADC). Hierbei ist es möglich die 3,3V oder eine interne Spannung von 1,1V als Referenz für die Analog-Digital-Wandlung zu verwenden. (Der Kondensator an AREF ist vorgesehen und kann, falls der AD-Wandler nicht benutzt wird, unbestückt bleiben). Desweiteren befindet sich unter den 14 I/Os ein I²C Bus (keine Pullups onboard!), eine bidirektionale U(S)ART, sowie diverse Output-Compare-Ausgänge mit denen über die internen Timer beispielsweise ein Taktsignal oder sogar ein PWM Signal erzeugt werden kann. Erwähnenswert ist natürlich auch, dass auf jeden der 14 I/Os jeweils ein Pin-Change Interrupt liegt.

Als Spannungsversorgung empfehle ich eine Spannung von etwa Vin=5V bis 7V DC (Altes 5VDC Netzteil beispielsweise). Der Stromverbrauch beläuft sich ohne externe Komponenten am Pfostenstecker auf etwa 150mA. Bei Erweiterungen über den Pfostenstecker ist zu beachten, dass die +3,3V nicht sehr stark belastet werden können. (Bei 5V= Eingangsspannung empfehle ich max. 200mA auf der 3,3V Leitung fließen zu lassen).

Was wird benötigt

  • Lötkolben
  • Fortgeschrittene Löterfahrung (0805-SMD, TQFP44)
  • Atmel AVR Programmiergerät mit 6poligem Stecker und Kompatibilität für 3,3V Zielspannung
  • Spannungsquelle 5V - 7V DC mit mindestens 150mA.

Hardware

Wie man sieht, ist das Layout also sehr allgemein gehalten, sodass es möglich ist die Platine vielseitig zu verwenden. Trotzdem ist das Layout durch die Verwendung von SMD Bauteilen und geringen Isolate-Werten zur Massefläche kompakt geworden. Die Gesamtfläche der Platine beträgt 38x31mm². Die Platine kann einzeln oder in einem Bausatz von dem IT-WNS Shop bezogen werden. Alternativ lassen sich die Bauteile aber auch von CSD-Electronics beziehen. Die Platine muss dann aber selbst hergestellt werden.


Software

Der UIP-Stack implementiert die Netzwerkfähigkeiten der höherliegenden Schichten. (insgesamt IP, ARP (Echo), ICMP, UDP, TCP). Zur Demonstration des Stacks ist bereits eine kleine Webserver-Applikation aufgesetzt, mit der sich die 14 I/Os an der Pfostenleiste an oder ausschalten lassen.


Inbetriebnahme

Legen sie Nachdem an die 2 polige Stiftleiste eine Spannung von etwa 5V - 7V DC angelegt wurde und ein Netzwerkkabel eingesteckt wurde, sollte eine grüne Leuchtdiode an der Ethernet-Buchse leuchten. Dies bedeutet, dass ein Ethernet Link hergestellt ist. Auf der grünen Leuchtdiode wird außerdem die Empfangsaktivität des Ethernet-Chips, durch ein kurzes Erlischen der Leuchtdiode dargestellt. Die andersfarbige Leuchtdiode an der Buchse leuchtet bei Sendeaktivität.

Als nächstes muss der Mikrocontroller des Der MicroWebServer kann nur konfiguriert werden, wenn eine AVR-GCC (WinAVR für Windows) Compiler-Umgebung existiert. Diese muss installiert werden, falls Modifikationen an der Konfiguration oder an der Stack-Applikation vorgenommen werden sollen. Ansonsten kann auch die beigelegte (bereits kompilierte) HEX-Datei direkt in den Flash-Speicher gebrannt werden. Der MicroWebServer läuft dann auf der Standardkonfiguration (siehe #Konfiguration).

Konfiguration

Falls sie nicht die beigelegte HEX Datei direkt programmiAls nächsten Schritt muss die Konfiguration des MicroWebServers überprüft werden Falls Sie den Sourcecode verwenden, vergessen Sie nicht Anpassungen an der IP-Adresse, Netzmaske und dem Default-Router vorzunehmen. (Main.c) Die MAC Adresse des Gerätes lässt sich im ENC28J60-Treiber ändern (Hardware/Enc28j60.h). Und der Port des Webserver lässt sich in Net/TcpApps/HttpD.h ändern. Standardmäßig sind diese Werte wie folgt eingestellt: MAC-Adresse: 00:03:6F:55:1C:C2 IP-Adresse: 192.168.0.93 Netzmaske: 255.255.255.0 Default-Router: 192.168.0.254 Weberver-Port: 8080

Vergessen Sie beim Programmieren des ATMega168 nicht die Fuse-Bits so anzupassen, dass als Takt-Signal ein externer Oszillator dient. (Dieser ist im ENC28J60 integriert und gibt den Takt an den ATMega168 über den Pin7 (XTAL1) aus. Desweiteren empfehle ich, den Brown-Out-Detector auf 2,7V einzustellen. Alle anderen Fuse-Bits werden auf der Default-Einstellung gelassen. Hexadezimal ausgedrückt (zB für avrdude) entspricht das: LFuse: E0 HFuse: DD


Falls noch Fragen auftauchen ist eine Kontaktaufnahme erwünscht :-)

Zum Schluss noch eine FAQ und ein Bild des Webinterfaces.

Persönliche Werkzeuge