Ethernet für den Raspberry Pi Zero (ENC28J60)

Haben Sie in Ihrer Bastelkiste auch noch Raspberry Pis der ersten Generation oder Pi Zeros, die auf eine neue Aufgabe warten? Könnte man diese Modelle nur in das heimische Netzwerk integrieren, um Bilder von der Kamera oder die Daten verteilter Sensoren überall im Netzwerk anzeigen zu können? Oder könnte man diese Raspis „headless“, also ohne Tastatur und Monitor, betreiben?
Könnte man?

Man kann! Man benötigt nur einen Ethernet-Adapter, z.B. den ENC28J60 auf einem Breakout-Board.

Man kann diesen Netzwerk-Adapter an alle Micro-Controller und Micro-Computer anschließen, die über eine SPI-Schnittstelle verfügen (SPI = Serial Peripheral Interface). Bei entsprechender Einstellung in der Konfiguration können die Raspberry Pis diese Schnittstelle an bestimmten GPIOs zur Verfügung stellen und damit den Modellen ohne RJ45-Buchse eine Ethernet-Schnittstelle zur Verfügung stellen.

In unserem heutigen Projekt geht es um die Einbindung eines Raspberry Pi Zero mit der NoIR-Kamera in das heimische Netzwerk, um den Dieb zu fotografieren, der im Winterhalbjahr nachts junge Triebe an unserer Hortensie im Vorgarten abschneidet. NoIR steht für "No Infrared filter". Diese Kamera lässt IR Licht ungefiltert auf den Bildsensor und ermöglicht damit eine gewisse "Nachtsichtfähigkeit". 

Benötigte Hardware

Anzahl Bauteil Anmerkung
1 Raspberry Pi Zero mit µSD-Karte und NoIR-Kamera
1 ENC28J60 Ethernet Modul
1 Jumper Kabel

Bild: Konfiguration Raspberry Pi mit Kamera, Fernzugriff SSH und SPI aktiviert


SPI ist eine serielle Schnittstelle (das bedeutet, die Bits werden hintereinander übertragen) mit je einer Signalleitung pro Richtung. Der Raspberry Pi ist der Master und gibt auch den Takt, also die Geschwindigkeit der Übertragung, vor. Anders als bei der I2C-Schnittstelle, bei der jeder Slave eine Adresse hat, benötigt SPI eine vierte Leitung zum Aktivieren der Verbindung zwischen Master und Slave. Daher auch der Spitzname „4-wire-interface“.

Die einzelnen Pins des SPI haben so einprägsame Namen wie MOSI (Signalleitung Master Out – Slave In), MISO (Signalleitung Master In – Slave Out), SCLK (Serial Clock) und CE, CS oder SS für Chip Enable/Chip Select bzw. Slave Select.

Die Pins für das SPI am Raspberry Pi sind dem nachfolgenden Bild zu entnehmen, wobei alle Raspis seit Ende 2012 die gleiche Belegung der GPIO-Steckerleiste (richtiger Name: J6 header) haben.

Bild: Raspberry Pi Zero WH und Belegung J6 header.


Wie im rechten Teil des Bildes zu sehen ist, liegt die SPI-Schnittstelle ziemlich in der Mitte der Steckerleiste: MOSI ist die Zweitbelegung von GPIO10 am Pin 19, MISO die Zweitbelegung von GPIO9 an Pin 21, die Serial Clock die Zweitbelegung von GPIO11 an Pin 23. Der vierte Anschluss kann wahlweise CE0 (statt GPIO8) an Pin 24 oder CE1 (statt GPIO7) an Pin 26 sein. Für unseren ENC28J60 verwenden wir CE0 sowie GPIO25 für den Interrupt-Anschluss.

Für die Pin-Belegung des ENC28V60 Breakout-Boards verweise ich auf die Beschriftung des jeweiligen Bauteils. Das von mir verwendete Modul von AZ-Delivery hat folgende Anschlussbelegung:

Bild: ENC28J60 Ethernet-Modul mit Pin-Belegung


Wie man erkennt, kann das Modul sowohl mit 5 V als auch mit 3,3 V betrieben werden. Am Raspi werden der 5 V-Anschluss und GND (oben im Bild) nicht verbunden (nc=not connected). Auch CLK (clock), RST (reset) und WOL (wake on LAN) bleiben frei. Die Anschlüsse für Spannungsversorgung und SPI mit Interrupt sind den äußeren Spalten der Tabelle zu entnehmen.

Bild: Versuchsaufbau ENC28J60 am Half Breadboard mit Raspberry Pi T-Cobbler


Eine Einstellung am Raspberry Pi müssen wir noch vornehmen, nämlich eine Ergänzung der Datei config.txt. Diese Datei befindet sind im Unterverzeichnis boot und ist als FAT32-Partition mit gleichem Namen auf der µSD-Karte vorhanden. Deshalb haben wir grundsätzlich zwei Möglichkeiten, die Ergänzung mit einem beliebigen Text-Editor vorzunehmen:

  1. Auf dem Raspberry Pi müssen wir den Texteditor mit Administrator-Rechten im Terminal aufrufen: sudo mousepad /boot/config.txt
    Dann folgende Zeile am Ende ergänzen:
    dtoverlay=enc28j60, int_pin=25, speed=12000000

Gemäß Datenblatt hat der eingebaute Quarz eine Frequenz von 20 oder wie auf dem Bild 25 MHz. Wenn alles stabil funktioniert, kann „speed“ höher gesetzt werden.

  1. Für die Vorgehensweise unter Windows erkennt man die Datei config.txt auf dem folgenden Bildschirmfoto des Dateimanagers: einfach doppelklicken und die Zeile einfügen.


Das war es schon, grundsätzlich. Bei mir hat der Ethernet-Anschluss nicht sofort funktioniert; und ich weiß bis jetzt nicht, warum es anfänglich nicht geklappt hat. Vermutlich daran, dass mein Zero WH ja auch über WLAN Zugang zum Router findet.

Aber für meine Anwendung wollte ich ja die Kabelverbindung zum Router benutzen. Nach dem dritten Anlauf lief alles wie gewünscht und ich konnte die Bilder der Raspberry Pi – NoIR – Kamera im Browser meines Notebook-Computers bzw. von jedem beliebigen Gerät im Netzwerk betrachten.

Bild: Raspberry Pi mit NoIR-Kamera in Halterung (Vorderseite)

Bild: Raspberry Pi mit NoIR-Kamera in Halterung (Rückseite)

Bild: Das übertragene Bild im Browser des Notebooks

Bild: Das Vollbild (Doppelklick auf das Bildfenster)


Das verwendete Programm für den Fernzugriff auf die Kamera im Netzwerk kam übrigens auch beim Wetterballon-Projekt ("Stratosphärenflug") zum Einsatz. Weitere Einzelheiten unter https://elinux.org/RPi-Cam-Web-Interface.

Auf vielfachen Wunsch geht es hier zum Download.

2 Kommentare

UC

UC

Interessant. Der Camerahalter ist von pihut, so wie es aussieht. Habe deren Webseite abgesucht, aber nichts gefunden. Gibt es da einen Link zu?

Anyone

Anyone

Ein sehr gelungenes Tutorial. Vielen Dank fürs teilen.

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert