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 |
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.
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:
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.
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:
- 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.
- 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.
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.
4 commentaires
Bernd Albrecht
@ Jens:
Bei der Zeile dtoverlay=enc28j60, int_pin=25, speed=12000000
handelt es sich in der Tat um die Konfiguration des ENC28J60 an der SPI-Schnittstelle.
Hier vermute ich die Fehlerquelle. Richtig ist, dass GPIO25 (phys. Pin22) der Interrupt-Pin sein soll. Da die Anordnung ja am RasPi 3 funktioniert, kann man vielleicht durch Veränderung der Speed des SPI ports etwas erreichen. Details zu SPI siehe:
https://www.raspberrypi.org/documentation/hardware/raspberrypi/spi/README.md
Im Forum wurde empfohlen, mit einer neuen µSD-Karte mit Raspberry Pi OS auf dem Raspi Zero zu starten, da bei der Ersteinrichtung bestimmte Parameter eingestellt werden. Das RasPi OS (ehemals Raspbian) ist zwar bis heute auf allen Modellen zu benutzen, aber der Wechsel einer µSD-Karte von einem Modell (3B mit 4-Kern-Prozessor) zu einem grundsätzlichen anderen (Zero mit 1 Kern) hat gelegentlich „Nebenwirkungen“.
Zu guter Letzt: Ich habe am Ende des Blogs beschrieben, dass die Ethernet-Schnittstelle an meinem RasPi Zero WH erst erkannt wurde, nachdem ich die WLAN-Schnittstelle vorübergehend deaktiviert hatte. Auch das ist einen Versuch wert.
Jens
Hallo,
ich hatte gehofft mit deiner Anleitung meinen Raspi Zero per Lan ins Netz zu bringen. Leider bin trotz mehrerer Versuche gescheitert. Wenn ich die SD Karte in einen Raspi 3 stecke funktioniert die Lan Verbindung. Beim der Zeile " GP25 – INT" auf dem Ethernet Modul ist der Anschluß GPIO25 gemeint? Oder habe ich das falsch verstanden? Wie kann ich meinen Fehler finden?
Danke für die Hilfe.
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
Ein sehr gelungenes Tutorial. Vielen Dank fürs teilen.