Mini-EthernetDieses Elektronikprojekt hat zum Ziel, ohne einen PC E-Mails abrufen, lesen und senden zu können, also ein kleines Kästchen zu bauen, das ans Ethernet angeschlossen wird und dann als E-Mail-Client fungiert. Zusätzlich soll das E-Mail-Konto in regelmäßigen Abständen abgerufen werden und eine Benachrichtigung bei neuen E-Mails erfolgen. Eventuell könnte auch noch ein kleiner Chatclient eingebaut werden. Die wesentlichen Bestandteile dieses Projektes sind:
Die Programmierung des Mikrocontrollers erfolgt über eine ISP10-kompatible Schnittstelle so wie beim Digital-Thermometer beschrieben. Auf den ENC 28J60 bin ich über das Forum von http://www.mikrocontroller.net/ gekommen, wo sich inzwischen mehrere Diskussionen (und Projekte) mit diesem IC befassen. Neuigkeiten14.06.2006: Inzwischen gibt es bei csd-electronics auch den unten erwähnten ATmega644. Damit stehen der Erweiterung der Firmware neue Möglichkeiten offen. Außerdem hat Adam Dunkels vor wenigen Tagen eine neue Version (die 1.0) seines TCP/IP-Stacks uIP veröffentlicht. Elektronik (Hardware)Beginnen wir mit dem Schaltplan: Die benötigten Bauteile habe ich im wesentlichen von Reichelt, bis auf die Teile, die es dort nicht gibt: Den ENC 28J60 und den 25 MHz-Quarz im Grundton sowie den Übertrager (LF...). Alle diese Teile sind aber günstig und mit sehr geringen Versandkosten bei http://www.csd-electronics.de/ erhältlich. Insgesamt belaufen sich die Kosten ohne das LCD auf etwa 25 bis 30 Euro. Es sei darauf hingewiesen, dass im Schaltplan an einigen Stellen zwei Alternativen angegeben sind: Die Datenleitungen und die Adressleitungen können jeweils beliebig vertauscht ans SRAM angeschlossen werden, wodurch man sich das Platinenlayout vereinfacht (aber wem sag ich das...). Statt VCC mit +5V zu verbinden, gibt es sicher ne sinnvollere Lösung, aber es ging. Wer mag, kann dem ENC noch ein paar 100 nF Kondensatoren gönnen, da im Datenblatt empfohlen, alle VDD/VSS-Paare mit jeweils einem Kondensator auszustatten Ich habe diese bei mir eingelötet, aber nicht extra im Schaltplan aufgeführt. Die RS232-Schnittstelle dient zur Ausgabe von Debuginformationen an einen PC und kann im Prinzip weggelassen werden, wenn denn alles funktioniert. Nicht so einfach weggelassen werden kann der MAX232, da ich von diesem die negative Spannung verwende, um damit das LCD zu betreiben. Da müsste also ein entsprechender Ersatz eingebaut werden, wenn kein RS232 auf die Platine soll. Ich bin mir übrigens nicht 100%ig sicher, ob der BS250 richtigrum eingezeichnet ist, also überprüft das lieber nochmal, wenn ihr die Schaltung nachbaut. Sollte aber so stimmen. Die Leuchtdioden, die direkt an den ENC angeschlossen werden, sollten low-current LEDs sein, da die Ausgänge (laut Datenblatt) einen maximalen Strom von 12 mA verkraften, oder aber die Widerstände müssen entsprechend groß genug gewählt werden. Eine Anmerkung noch zum Schluss: Der ENC wird im Betrieb leicht warm, das ist aber normal. Die μC-SoftwareDie Software für den Mikrocontroller ist in C geschrieben und mit avr-gcc aus WinAVR-Suite kompiliert. Als Grundlage für den TCP/IP-Stack habe ich uIP von Adam Dunkels verwendet, und für meine Belange angepasst. Dieser TCP/IP-Stack hat den Vorteil, dass er im Gegensatz zu vielen anderen die volle TCP-Funktionalität bietet. Die größten Anpassungen ergaben sich daraus, dass der ATmega nur 2048 Byte internes SRAM hat, so dass ich nie ein ganzes Paket auf einmal im Speicher halten kann (will). Statt dessen lädt der TCP/IP-Stack nur den Header der Pakete aus dem Speicher des ENC und verarbeitet diesen. Die Applikationen können dann über eine weitere Funktion den Inhalt des Pakets (pay load) aus dem ENC-SRAM in das externe SRAM laden und dort darauf zugreifen. Neben TCP/IP, ARP und ICMP ist UDP implementiert, um DNS-Abfragen zu ermöglichen. Außerdem lässt sich dann SNTP verwenden, um die aktuelle Uhrzeit von Zeitservern aus dem Internet abzufragen. Darauf aufbauend sind dann die für den Mailtransfer wesentlichen Protokollen POP3 und SMTP implementiert. Insgesamt umfasst die Software, die sich noch im Erprobungstadium befindet und deshalb gespickt ist mit Debug-Anweisungen, jetzt etwa 27 kB, womit der Programmspeicher des ATmega32 (32 kB) fast gefüllt ist. Ich überlege deshalb, auf den pinkompatiblen ATmega 644 umzusteigen, der allerdings leider noch nicht erhältlich ist. Dieser bietet von allem das Doppelte: 64 kB Flash, 4 kB SRAM und 2 kB EEPROM. Außerdem wäre es vielleicht sinnvoll, ein externes EEPROM anzuschließen, das über SPI angesteuert werden könnte, und in dem Daten wie eine Liste der IDs der bereits bekannten Mails o.ä. abgelegt werden könnten (= Implementierung des UIDL-Kommandos des POP3-Protokolls). Features der Software![]() Bildschirmfoto des E-Mail-Menüs (Fähigkeiten und Eigenschaften) Das kann die Software bisher (mit eventuell noch ein paar Bugs): Internet
Informationen zu den Protokollen gibt es in der Wikipedia, und aus erster Hand natürlich in den wichtigen RFCs: 791 (IP), 792 (ICMP), 793 (TCP), 821 (SMTP), 826 (ARP), 1035 (DNS), 1769 (SNTP), 1939 (POP3) und 2821 (SMTP neu). Sehr hilfreich sind (abgesehen von den Datenblättern des ATmega und des ENC natürlich :) auch die Application Notes von Atmel bezüglich des Anschlusses von PS/2-Tastaturen an AVR Mikrocontroller (AVR313) und zur Ansteuerung von seriellen Speichern über die SPI-Schnittstelle (AVR107), die von der Atmel-Homepage heruntergeladen werden können. DownloadDen Schaltplan gibt's oben, hier die Software. Wer den Quellcode der Firmware haben möchte, muss mir bitte eine Mail schreiben, da ich den noch nicht im Internet veröffentlichen möchte.
Copyright: Copyright auf die Ideen, den Schaltungsentwurf und die Software behalte ich mir vor. Insbesondere ist die kommerzielle Nutzung der hier vorgestellten und zum Download angebotenen Hard- und Software untersagt. Der uIP-Stack von Adam Dunkels, auf dem mein TCP-Stack basiert, ist unter der Lizenz veröffentlicht, die unter http://www.sics.se/~adam/uip/license.html eingesehen werden kann. Wichtig: Die Verwendung der Inhalte dieser Seite erfolgt absolut auf eigene Gefahr. (siehe unten) ZukunftspläneIch habe leider keine Zeit mehr, die Software noch weiter zu entwickeln, werde das aber irgendwann sicher nachholen. Die grundlegende Funktionalität ist aber gegeben und läuft auch stabil, wenn ich auch zugeben muss, sie bisher nur mit meinem lokalen Mailserver und ein paar wenige Mal auch mit gmx getestet zu haben, was ich noch nicht als Test "auf Herz und Nieren" bezeichnen würde. Was ich aber als weitere Pläne (in ferner Zukunft :) ins Auge gefasst habe ist:
Zum WeiterlesenAuf der Homepage von Circuit Cellar gibt es eine ausführliche Beschreibung meines Projekts (auf englisch), mit dem ich dort unter dem Titel "MiniEmail" am Atmel AVR Design Contest 2006 teilgenommen habe. This is also a recommendation for English speaking visitors of this page who will find a detailed description of MiniEthernet in English on this page. Fragen & Antworten (FAQ)
? Im Errata-Sheet zum ENC 28J60 (Rev. B4) steht, dass man den SPI-Bus mit 8 MHz takten muss. Ist das wirklich so kritisch?
? Nichts tut sich!?! Abschließende WorteDer Aufbau und insbesondere der Anschluss an den PC (zum Programmieren, Debuggen etc.) ist natürlich absolut auf eigene Gefahr durchzuführen. Ich übernehme keine Verantwortung für eventuelle Fehler oder Schwachstellen der Schaltung und der Software. Abschließend möchte ich mich noch ganz besonders bei Marc bedanken, der mir eine sehr schöne Platine geätzt und gebohrt hat, ohne die ich das Projekt sicher nicht so schnell in die Realität hätte umsetzen können.
Für Fragen, Anregungen und Kommentare bin ich immer offen -> Mail schreiben
|