Ein bisschen Experimentieren
  UDP Server - Atmega8
 
"

UDP Server - Atmega8

Die Motivation für den UDP Server war, einen µ-Controller über Internet ansteuern zu können. So können z. B. Messwerte erfasst werden, oder über die Ausgänge etwas geschaltet werden. Da ich mich in meinen ganzen Projekten nur mit dem Atmega8 auseinander gesetzt habe, stellt sich der Atmel wieder zur Verfügung um mich mit diesem Projekt zum Erfolg zu führen

Für meine Anwendungszwecke reicht UDP als Protokoll vollkommen aus. Und es ist auch noch vom Speicherplatz gut auf so einem kleinen µC unterzubringen. Als Beispiel würde sich z. B. eine steuerbare Steckdosenleiste eignen, über die man dann Lampen oder ähnliches steuern kann.
Da ich schon früher etwas mit µC und Netzwerk machen wollte, war der Netzwerkcontroller ENC28J60 von Microchip schon vorhanden.



Die fertig geätzte Platine wartet nun nur noch auf seinen Einsatz. Leider fehlt nun noch ein Spannungsregler 7805, der Grundtonquarz mit 25MHz und zwei 100nF Kondensatoren.
Leider brauchen die Quarze noch ihre Zeit, weil ja um Weihnachten so viele Feiertage sind Dabei ist die MagJack Buchse richtig zügig bei mir gewesen.



Die Rückseite der selbstgeätzten Platine. Trotz des sehr einfachen Herstellungsverfahrens, ist sie sehr gut gelungen. Das interessante an der Platine ist, dass das Trägermaterial ganz leicht durchsichtig ist, dadurch erkennt man beim Daraufschauen die darunter liegenden Leiterbahnen.






Layout


Für den kleinen Server ist der Schaltplan gar nicht mal so umfangreich. Das Platinenlayout passt gut auf eine einseitige Platine, wobei ich zwei Drahtbrücken einsetzen musste. Aber ich glaube, dass man sich auch die sparen könnte, wenn man etwas mehr Platz dafür verwendet. Wer Die Eagle-Dateien haben möchte, kann mir gerne eine Mail schreiben. Leider kann ich auf dieser Plattform keine Dateien zum Download anbieten.



Ein kleiner Hinweis für das Layout. Der Spannungsregler 7805 hat im "normalen" Package eine Freifläche (restricted area) um die Bohrung der Kühlseite herum. Um den Spannungsregler stehend zu montieren und nicht extra ein neues Bauteil machen zu müssen, habe ich kurzerhand in der Lib die Bereiche herausgenommen. Das geht im Controllfenster von Eagle unter Bibliotheken, die Lib auswählen und dann das Package bearbeiten. Ist wirklich einfach zu machen.



Softwareseite



Um den UDP Server angenehm administrieren zu können, habe ich eine VisualBasic Software dazu geschrieben. Den Anstoß, dass man UDP mit so ner netten grafischen Oberfläche machen kann, hat mir Nik Bamert gegeben. Aus seiner Sammlung stammt übrigens auch der Grundstein dieser Schaltung. Da ich später ein Relais damit steuern möchte, gibt es drei Befehle, Ein, Aus und Status. Der jeweilige Schaltzustand wird dabei farbig dargestellt, der Rückgabewert des Servers wird aber trotzdem zusätzlich textuell angezeigt.

Da ich ja noch auf einige Bauteile warten musste, habe ich einen UDP Server in C Programmiert, der die Aufgabe des AT Mega8 übernimmt.

Um später eventuell mehrere Ethernet-Schalter ansprechen zu können, werden auf Client-Seite mehrere IP's in einer Liste angezeigt. Dabei kann die Liste über eine conf-Datei editiert werden. Der Port bleibt aber fest eincompiliert.



Erste Tests

Heute sind die restlichen Bauteile angekommen. Nachdem die Lieferung angekommen ist, habe ich die Bauteile gleich aufgelötet und habe mit den ersten Tests begonnen. Nachdem mein Spannungsregler mit der 9V Batterie nach wenigen Sekunden schon ziemlich heiß geworden ist, habe ich mich erstmal auf "Brückensuche" begeben müssen. Und tatsächlich hatte sogar die VCC-Leitung eine minimini-Verbindung zur Massefläche. Aber das war zum Glück die einzige Stelle. Nachdem ich ja am Vortag schon die Firmware draufcompiliert habe, konnte ich das kleine Ding gleich ans Netzwerk anschließen. Als ich dann aber mit meinem kleinen VB Tool eine Anfrage starten wollte, fiel mir ein, dass ich ja keine Ahnung hatte auf welchem Port er lauscht... Da der ENC aber alle Pakete bekommt und weiterreicht, kann man erst im Nachhinein sagen, "mach was".
Ganz großes Danke nochmal Nik, für deine Ideen und die Unterstützung!



Hier nochmal ein Bild in vollem Betrieb. Diese kleine Platine bzw. die Schaltung kann man für so viele Sachen einsetzten...

...das Schalten von Lasten wäre ein Einsatzgebiet. Dabei kann ein Relais über einen Transistor an den Port angeschlossen werden. Um die Funktion des Ganzen zuerst einmal zu testen, habe ich eine LED mit einem Vorwiderstand angeschlossen und die dann -über den PC *grins*- an- und ausgeschaltet. Als kleinen Beweis, dass es funktioniert, habe ich diese kleine Animation zusammengebastelt






Upgrade zur Schaltung von 230V
 

Um nicht nur LED's an und aus schalten zu können, sondern auch endlich 230V Verbraucher...
Dazu habe ich ein 3V Wechsel-Relais bei www.csd-electronics.de bestellt. Es wird über einen BC337 NPN-Transistor angesteuert. Eine Freilaufdiode über die beiden Relaisanschlüsse, schützt den Transistor vor Überspannungen beim Abschalten bzw. Öffnen des Relais.



Schaltplan zur Ansteuerung des Relais. Der 8 Pin Stecker SV1 stellt dabei die Schnittstelle zum eigentlichen UDP Server dar. An den Pins 3-8 sind die Ports PC5-PC0 angeschlossen und können zusätzlich verwendet werden.


Für einen kleinen Anwendungsfall habe ich ein Kabel einer Klemmleuchte durchgetrennt und an die Anschlüsse der 230V Erweiterungsplatine angeschlossen. Es ist wirklich lustig zu beobachten, wenn man mit seinem Laptop und WLAN am Sofa sitzt und im Schlafzimmer das Licht an und aus macht

Dazu möchte ich einen kleinen Tipp geben. Der UDP-Server besitzt ja noch kein DHCP (automatische IP Zuweisung). Daher dachte ich, dass ich ihn auch nicht ins Netzwerk einbinden kann. Hat er allerdings eine IP, die auch im Netz vorkommen kann, dann antwortet er trotzdem auf seine Pakete. Anscheinend leitet der Router die Pakete weiter, auch wenn er per DHCP diese IP gar nicht vergeben hat. Ein nettes Schmankerl den UDP-Server in seinem Heimnetz einzusetzen, ohne auf den Komfort von DHCP verzichten zu müssen.

Auch eine Ansprache über dynamisches DNS, also direkt über das Internet ist damit vorstellbar. Es muss lediglich der Router Portforwarding unterstützen. Und ein gesendetes UDP Paket an www.dyndns.adresse.org wird übersetzt und direkt an den UDP-Server weitergeleitet.

Ich habe gerade für einen Test alles eingerichtet und es funktioniert tatsächlich über das Web...



Gehäuse für die Erweiterungsplatine



Da ich bei einem Test kurzfristig Bekanntschaft mit 230 satten Volt gemacht habe, kam in mir doch der Wunsch auf, die Teile, die mit Netzspannung zu tun haben, in ein ordentliches Gehäuse zu packen. Die Idee war wirklich gut, denn dadurch musste ich nicht von jedem Verbraucher, den ich schalten wollte das Kabel durchschneiden. Die Lösung in der Steckdose bietet den Vorteil, dass man zum Einen nicht mehr an die Unterseite der Platine langen kann, zum Anderen wird das Modul nun ans Netz angesteckt und über die Steckdose kann jeder beliebige Verbraucher angeschlossen werden. Ein Kaltgerätekabel inklusive PE Leiter garantiert dabei, dass die Sicherheit wie bei einer normalen Schuko-Steckdose gegeben ist. Das Finder-Relais schaltet Lasten bis zu 10A bei 230V. Der nächste Schritt besteht nun darin, einen Prototypen zu erstellen, der völlig unabhängig von einer separaten, externen Spannungsversorgung ist, also seinen Saft aus den 230V-Anschluss gewinnt. Mehr dazu, weiter unten.



Prototyp - Weiterentwicklung


Für den endlichen Prototypen, der alle Module miteinander vereint musste ich zuerst die Spannungsversorgung für die Platine testen. Angedacht ist es, dass sich die Schaltung über die zu schaltenden 230V selbst versorgt. Dazu setze ich einen 9V Trafo ein. Er übernimmt gleichzeitig die Netztrennung. Die Ausgangsspannung wird über einen Graetz-Gleichrichter gleichgerichtet, mit einem 470µF Elko und einem 100nF Kondensator geglättet und dem Spannungsregler zugeführt.

Die folgenden beiden Bilder zeigen den Spannungsverlauf nach der Gleichrichtung am unbelasteten Ausgang. Das obere Bild zeigt den Spannungsverlauf ohne Glätt-Kondensator, das Untere mit.



 

 
Der fertige Prototyp



Der Prototyp ist so aufgebaut, dass sich die Schaltung über das 230V Netz selbst versorgt. Der Trafo liefert unter Nennbelastung 9V, welche über vier Dioden gleichgerichtet, und vom Spannungsregler auf 5V gebracht werden. Da er relativ schnell warm wird, habe ich ein Kühlblech aus Alu angebracht.
Der Stromverbrauch liegt bei ausgeschaltetem Relais bei 170mA, mit angezogenem Relais um die 240mA. Bei dieser Belastung liefert der Trafo 12,6V, das heißt, dass der Spannungsregler 7,6V verbraten muss, das sind bei 240mA ca. 1,8W. Bei einer Erwärmung von 65K/W um die 118,5°C über Umgebungstemperatur. 125°C wären erlaubt, von dem her, ist der Kühlkörper sinnvoll.


 
  Copyright by Bastian  
 
=> Willst du auch eine kostenlose Homepage? Dann klicke hier! <=