Ethernet am PIC: Webserver-Projekte mit dem ENC28J60 Modul ist ein bewährter Einstieg in die Welt vernetzter Mikrocontroller, weil sich damit auch auf kleinen 8-Bit-PICs einfache Weboberflächen, Messwertseiten oder Steuerfunktionen realisieren lassen. Das ENC28J60-Modul ist dabei besonders beliebt: Es stellt einen vollständigen 10BASE-T-Ethernet-Controller bereit und wird typischerweise über SPI an den Mikrocontroller angebunden. So kann ein PIC – trotz begrenztem RAM und Flash – als kleiner Webserver auftreten, Statusinformationen im Browser anzeigen oder Schaltbefehle entgegennehmen. In der Praxis besteht die Herausforderung weniger im „Ethernetkabel steckt“, sondern in Details: korrekte SPI-Initialisierung, saubere Interrupt-/Polling-Strategien, zuverlässige Paketpufferung, die Auswahl eines passenden TCP/IP-Stacks und ein schlankes HTTP-Design, das zur knappen Speichergröße passt. Wer diese Punkte im Griff hat, erhält jedoch eine robuste, latenzarme und lokal funktionierende Lösung, die ohne Cloud und ohne WLAN auskommt. Dieser Artikel zeigt, wie Sie mit PIC und ENC28J60 strukturiert Webserver-Projekte aufbauen, typische Fehler vermeiden und eine Firmware entwickeln, die im Heimnetz oder im Labor dauerhaft stabil läuft.
Was ist der ENC28J60 und warum eignet er sich für PIC-Projekte?
Der ENC28J60 ist ein Ethernet-Controller von Microchip, der die MAC- und PHY-Funktionen für 10 Mbit/s Ethernet (10BASE-T) integriert. Er entlastet den Mikrocontroller von den „harten“ elektrischen Ethernet-Aufgaben und stellt Register, RX/TX-Puffer und Statusinformationen bereit. Die Kommunikation mit dem PIC erfolgt über SPI, typischerweise mit zusätzlichem Interrupt-Pin für Empfangsereignisse. Damit eignet sich der ENC28J60 besonders für Projekte, bei denen ein PIC keine eigene Ethernet-Peripherie besitzt, aber trotzdem ins LAN eingebunden werden soll.
- 10BASE-T Ethernet: ausreichend für Sensorwerte, Steuerbefehle und einfache Weboberflächen.
- SPI-Interface: einfache Anbindung an viele PICs mit MSSP/SPI-Modul.
- Interner Paketpuffer: reduziert Timingstress bei RX/TX, solange die Firmware konsequent abholt.
- Große Community-Basis: viele Beispielprojekte und Bibliotheken, insbesondere für schlanke TCP/IP-Stacks.
Für technische Details sind das Datenblatt und die Produktseite von Microchip hilfreich, etwa über die Microchip Dokumentensuche oder direkt über die ENC28J60 Produktseite.
Architektur im Überblick: PIC + ENC28J60 + TCP/IP-Stack
Ein Ethernet-Webserver auf einem PIC besteht aus mehreren Schichten, die sauber zusammenspielen müssen. Der ENC28J60 liefert die Ethernet-Frames. Darüber liegt eine IP-Schicht (IPv4), darauf typischerweise UDP oder TCP, und als Anwendung dann HTTP für den Webserver. In der Praxis nutzen viele Projekte eine kompakte Bibliothek, die ARP, IP, ICMP (Ping) und TCP/UDP rudimentär abdeckt.
- Ethernet (Layer 2): MAC-Adressen, Frames, CRC, Link-Status.
- ARP: Zuordnung IP-Adresse ↔ MAC-Adresse im lokalen Netz.
- IP (Layer 3): Adressierung, Routing (meist nur lokal), Fragmentierung vermeiden.
- TCP (Layer 4): zuverlässige Verbindung für HTTP.
- HTTP (Layer 7): einfache Requests/Responses für Weboberfläche.
Je knapper die Ressourcen, desto wichtiger ist eine bewusste Auswahl: Brauchen Sie wirklich TCP, oder genügt UDP plus eigenes Mini-Protokoll? Für Browser-Interaktion ist TCP/HTTP jedoch meist die einfachste Benutzererfahrung.
Hardware-Anschluss: SPI, Chip-Select, Interrupt und Stromversorgung
Das ENC28J60-Modul wird typischerweise über SPI angebunden. Die grundlegenden Leitungen sind SCK, MOSI, MISO und CS (Chip-Select). Zusätzlich ist häufig ein INT-Pin verfügbar, der an einen PIC-Interrupt-Eingang gelegt werden kann, damit eingehende Pakete nicht per Polling „verpasst“ werden. Achten Sie außerdem auf Spannungspegel: Viele ENC28J60-Module arbeiten mit 3,3 V. Ein 5-V-PIC benötigt dann Pegelanpassung oder eine Variante/Schaltung, die 5-V-tolerant ist (hier entscheidet das konkrete Moduldesign).
- SPI-Leitungen: SCK/MOSI/MISO/CS kurz halten, saubere Masseführung.
- INT-Pin: empfehlenswert für zuverlässigen RX-Betrieb bei höherer Netzlast.
- RESET: wenn verfügbar, per GPIO steuerbar für saubere Reinitialisierung.
- 3,3 V Versorgung: stabile Regler, Abblockkondensatoren nahe am Modul.
Praktischer Hinweis zu Breadboards
Ethernet ist tolerant, aber SPI bei höheren Takten und längeren Jumperkabeln nicht. Wenn Pakete sporadisch verloren gehen oder der Controller „hängt“, sind zu lange Leitungen und eine instabile 3,3-V-Schiene häufige Ursachen. Ein kleines, sauberes Layout oder zumindest kurze Verbindungen verbessern die Stabilität deutlich.
Netzwerkgrundlagen für den Webserver: IP-Adresse, Subnetz und Gateway
Damit Ihr PIC im LAN erreichbar ist, benötigen Sie mindestens eine IP-Adresse und eine Subnetzmaske. Optional kommt ein Gateway hinzu, wenn Sie über das lokale Netz hinaus kommunizieren möchten. Für typische Heimnetz-Projekte reicht es, im lokalen Segment zu bleiben und den Webserver per Browser aufzurufen.
- Statische IP: einfach, zuverlässig, ideal für Laboraufbauten (z. B. 192.168.1.50).
- DHCP: komfortabel, aber komplexer in der Implementierung.
- Subnetzmaske: bestimmt, welche IPs „lokal“ sind (häufig 255.255.255.0).
- Gateway: Router-IP, nur nötig bei Kommunikation außerhalb des Subnetzes.
Für einen minimalen Webserver ist eine statische IP oft die beste Wahl, weil Sie die Fehlerquellen reduzieren: keine DHCP-Timeouts, keine Lease-Verwaltung, weniger Protokollzustände.
TCP/IP-Stack: Schlank bleiben, aber vollständig genug sein
Ein häufig unterschätzter Punkt ist die Wahl des Stacks. Ein „großer“ Stack bietet Komfort, kostet aber RAM/Flash. Ein „kleiner“ Stack ist schnell integriert, verlangt aber disziplinierte Begrenzungen: keine Fragmentierung, kleine MTU-Strategie, klare Puffergrößen, möglichst wenige parallele Verbindungen. Für PIC-Projekte mit ENC28J60 sind minimalistische Stacks üblich, die genau das Nötigste bereitstellen: ARP, IP, ICMP (Ping) und TCP mit einer oder wenigen Sessions.
- ARP: Pflicht für Kommunikation im LAN.
- ICMP: Ping erleichtert Debugging enorm.
- TCP minimal: eine Verbindung zur Zeit ist für kleine Webserver oft ausreichend.
- HTTP 1.0/1.1 bewusst begrenzen: Keep-Alive kann Ressourcen binden; kurze Verbindungen sind oft einfacher.
Wer einen umfangreicheren Ansatz sucht, kann sich an generischen Netzwerkkonzepten orientieren und für kleine Systeme stark reduzieren. Als Hintergrund zum Protokollaufbau eignet sich beispielsweise die IPv4-Spezifikation (RFC 791) sowie für TCP die TCP-Spezifikation.
HTTP auf dem PIC: Seitenaufbau ohne Speicherstress
Ein PIC-Webserver muss HTML ausgeben, ohne große Strings im RAM zu halten. Der wichtigste Trick ist Streaming: Sie senden die Antwort in kleinen Stücken (Chunks im Sinne der Implementierung, nicht zwingend HTTP-Chunked-Encoding), die direkt aus Flash/ROM oder aus kurzen Buffern kommen. Viele erfolgreiche Projekte setzen auf sehr einfache Seiten: wenige Zeilen HTML, minimaler CSS-Anteil, und dynamische Werte werden als kleine Textbausteine eingefügt.
- Antwortkopf kurz halten: Statuszeile, Content-Type, ggf. Connection: close.
- HTML minimalistisch: keine großen Frameworks, keine externen Bibliotheken.
- Dynamik sparsam: Werte wie Temperatur, Statusbits, Zähler als Klartext.
- Formulare statt JavaScript: GET/POST mit wenigen Parametern spart Ressourcen.
GET-Parameter als Steuerbefehle
Für Schaltfunktionen ist ein einfaches Muster üblich: Der Browser ruft URLs wie /gpio?pin=1&val=1 auf. Der PIC parst die Parameter, setzt einen Ausgang und liefert eine kurze Bestätigungsseite. Das ist nicht „modern“, aber extrem robust und leicht zu debuggen.
Leistung realistisch einordnen: 10 Mbit/s sind nicht gleich 10 Mbit/s Anwendung
Auf dem Papier liefert 10BASE-T 10 Mbit/s. In der Praxis begrenzen SPI-Durchsatz, CPU-Zeit, Paketpufferung und TCP-Overhead die nutzbare Datenrate erheblich. Für Webserver-Projekte ist das meist unkritisch, solange Sie keine großen Dateien ausliefern.
Eine grobe Näherung für den maximalen SPI-basierten Datentransfer (ohne Protokolloverhead) ist:
Dabei ist
Typische Webserver-Projekte mit ENC28J60
Der praktische Nutzen entsteht durch klare, kleine Anwendungen. Diese Projektideen sind realistisch und passen gut zu PIC-Ressourcen:
- Status-Dashboard: Anzeige von digitalen Eingängen, Relaiszuständen, Versorgungsspannung, Temperatur.
- Schaltzentrale im LAN: Relais per Webbutton schalten, Zeitstempel und Logging im EEPROM.
- Messwertlogger: Sensorwerte zyklisch speichern und auf einer Seite als Tabelle ausgeben.
- Gateway-Prototyp: Serielle Daten (UART) per HTTP abrufbar machen.
- Konfigurationsseite: Parameter wie Grenzwerte, Namen, IP-Einstellungen per Formular setzen.
Wichtig ist bei allen Varianten: definieren Sie, wie viele gleichzeitige Nutzer/Browserzugriffe Sie zulassen. Für kleine PICs ist „eine Verbindung zur Zeit“ oft die stabilste Entscheidung.
Paketpuffer und Speicher: Das Hauptthema auf 8-Bit-PICs
Ethernet und TCP/IP benötigen Puffer. Der ENC28J60 besitzt zwar internen Speicher für Frames, aber Ihre Firmware braucht mindestens einen Arbeitsbuffer für das Parsen und Erstellen von Paketen. Hier entscheidet gutes Design über Stabilität.
- Ein zentraler Packet-Buffer: reduziert RAM-Verbrauch, erfordert aber sequenzielles Arbeiten.
- Keine IP-Fragmentierung: vermeiden Sie große Pakete; nutzen Sie kleine Antworten.
- Konsequentes Freigeben: RX-Pakete sofort verarbeiten und aus dem ENC-Puffer entfernen.
- Watchdog nutzen: falls ein seltenes Netzwerkszenario die Firmware in einen ungünstigen Zustand bringt.
Praktischer Grenzwert: MTU und Nutzdaten
Im LAN ist eine Ethernet-MTU von 1500 Bytes üblich. Ein kleiner PIC-Webserver muss diese Größe nicht ausreizen. Im Gegenteil: Wenn Sie Ihre HTTP-Antworten bewusst klein halten, reduzieren Sie RAM-Druck und vermeiden Fragmentierungsfragen. Für Konfigurationsseiten reichen oft wenige hundert Bytes HTML.
Stabilität und Fehlerfälle: Link Down, DHCP-Aussetzer, „hängende“ Verbindungen
Ein zuverlässiger Ethernet-Knoten muss mit Fehlern umgehen: Netzwerkkabel wird gezogen, Switch-Port wechselt, der PC öffnet mehrere Verbindungen, oder ein Browser wiederholt Requests. Legen Sie deshalb eine klare Fehlerstrategie fest.
- Link-Status prüfen: Wenn der Link down ist, keine endlosen Sendeschleifen.
- TCP-Timeouts: Verbindungen, die nicht weiterlaufen, sauber schließen.
- Connection: close bevorzugen: reduziert Ressourcenbindung durch Keep-Alive.
- Reinitialisierung erlauben: ENC28J60 per Reset oder Software-Init neu starten, wenn nötig.
Sicherheit im LAN: Realistische Grenzen kleiner Webserver
Ein PIC-Webserver mit ENC28J60 ist typischerweise ein unverschlüsselter HTTP-Server ohne TLS. Das ist im lokalen, vertrauenswürdigen Netz oft akzeptabel, aber Sie sollten bewusst damit umgehen. Vermeiden Sie, das Gerät direkt ins Internet zu hängen oder Portweiterleitungen im Router zu setzen. Wenn Zugriffsschutz nötig ist, nutzen Sie zumindest einfache Token-Mechanismen, IP-Whitelist oder segmentieren Sie das Netzwerk.
- Kein TLS: Daten sind im LAN mitlesbar, wenn ein Angreifer im Netz ist.
- Netzsegmentierung: eigenes VLAN oder separates IoT-Netz erhöht Sicherheit.
- Minimaler Funktionsumfang: je weniger Features, desto kleiner die Angriffsfläche.
- Firmware-Updates planen: definierter Update-Prozess reduziert Langzeitrisiken.
Für allgemeine Web- und Protokollgrundlagen ist das HTTP-Referenzmaterial bei MDN eine gut verständliche Quelle, auch wenn Sie im Mikrocontroller nur einen kleinen Teil davon implementieren.
Debugging: So finden Sie Fehler schneller als „Trial and Error“
Ethernet-Debugging gelingt am besten, wenn Sie in Schichten testen. Zuerst Link, dann ARP, dann Ping, dann TCP, dann HTTP. In jeder Stufe gibt es klare Indikatoren.
- Link-LEDs am Switch: zeigt, ob physikalischer Link steht.
- Ping-Test: bestätigt IP/ICMP-Funktion und grundlegenden RX/TX-Pfad.
- ARP-Cache prüfen: zeigt, ob MAC↔IP-Auflösung funktioniert.
- Packet Capture: Mitschnitt mit Wireshark hilft, Frames und Antworten zu analysieren.
Wireshark ist in der Praxis das wichtigste Werkzeug, um zu sehen, ob Ihr Gerät korrekt antwortet und ob Checksummen, Sequenzen und Ports plausibel sind. Die offizielle Einstiegsseite Wireshark Dokumentation hilft, die richtigen Filter und Analysen zu nutzen.
Toolchain und Dokumentation: MPLAB X, XC8 und ENC28J60-Register
Für PIC-Projekte sind MPLAB X IDE und der Compiler MPLAB XC8 eine solide Basis. Der ENC28J60 wird über SPI-Register konfiguriert, weshalb Sie konsequent mit dem Datenblatt arbeiten sollten: RX/TX-Puffergrenzen, PHY-Register, Interruptquellen, Paketstatus-Vector und Errata. Für robuste Systeme ist es empfehlenswert, die initiale Registerkonfiguration zu dokumentieren (welches Register, welcher Wert, warum), damit spätere Änderungen nachvollziehbar bleiben.
Best Practices für saubere Webserver-Firmware auf dem PIC
- Ein Request, eine Response: einfache HTTP-Logik ohne langes Offenhalten von Sessions.
- Kurze HTML-Seiten: klar strukturierte Ausgabe, keine großen Assets.
- Konservative SPI-Frequenz: erst Stabilität testen, dann optimieren.
- Interrupt-getriebener RX: wenn möglich, um Paketverlust bei Last zu vermeiden.
- Timeouts überall: SPI, TCP-Zustände, ARP-Anfragen, damit nichts „hängen bleibt“.
- Reset-Strategie: definierte Reinit-Routine für ENC28J60 und Netzwerkstack.
Weiterführende Informationsquellen
- ENC28J60 Produktseite und Dokumente: Microchip ENC28J60
- Microchip Dokumentensuche (Datenblätter/Errata): Microchip Dokumentensuche
- MPLAB X IDE: MPLAB X IDE
- XC8 Compiler: MPLAB XC8
- IPv4-Grundlagen (RFC 791): RFC 791
- HTTP-Referenz (praktisch erklärt): MDN HTTP
- Packet Capture und Analyse: Wireshark Dokumentation
IoT-PCB-Design, Mikrocontroller-Programmierung & Firmware-Entwicklung
PCB Design • Arduino • Embedded Systems • Firmware
Ich biete professionelle Entwicklung von IoT-Hardware, einschließlich PCB-Design, Arduino- und Mikrocontroller-Programmierung sowie Firmware-Entwicklung. Die Lösungen werden zuverlässig, effizient und anwendungsorientiert umgesetzt – von der Konzeptphase bis zum funktionsfähigen Prototyp.
Diese Dienstleistung richtet sich an Unternehmen, Start-ups, Entwickler und Produktteams, die maßgeschneiderte Embedded- und IoT-Lösungen benötigen. Finden Sie mich auf Fiverr.
Leistungsumfang:
-
IoT-PCB-Design & Schaltplanerstellung
-
Leiterplattenlayout (mehrlagig, produktionstauglich)
-
Arduino- & Mikrocontroller-Programmierung (z. B. ESP32, STM32, ATmega)
-
Firmware-Entwicklung für Embedded Systems
-
Sensor- & Aktor-Integration
-
Kommunikation: Wi-Fi, Bluetooth, MQTT, I²C, SPI, UART
-
Optimierung für Leistung, Stabilität & Energieeffizienz
Lieferumfang:
-
Schaltpläne & PCB-Layouts
-
Gerber- & Produktionsdaten
-
Quellcode & Firmware
-
Dokumentation & Support zur Integration
Arbeitsweise:Strukturiert • Zuverlässig • Hardware-nah • Produktorientiert
CTA:
Planen Sie ein IoT- oder Embedded-System-Projekt?
Kontaktieren Sie mich gerne für eine technische Abstimmung oder ein unverbindliches Angebot. Finden Sie mich auf Fiverr.

