Ajouter Ethernet à un Pi Zero

Ajouter Ethernet à un Pi Zero

Le Pi Zero n’a pas de port Ethernet. Si votre projet nécessite Ethernet, vous pouvez l’ajouter à l’aide d’un module Ethernet ou d’un adaptateur USB vers Ethernet.

À ce stade, quelqu’un va se demander pourquoi vous voudriez ajouter Ethernet à un Pi Zero. Pourquoi ne pas simplement utiliser un Pi standard qui inclut déjà le port ? Je suppose que la réponse est qu’il existe certains projets où l’utilisation d’un Pi Zero est souhaitable en raison de la consommation d’énergie ou de considérations de taille, mais vous avez également besoin de la fonctionnalité des périphériques Ethernet. J’ai un projet en tête sur lequel je bloguerai à l’avenir (s’il s’avère être un succès).

Module SPI Ethernet ENC28J60

Microchip fabrique l’ENC28J60 qui est un contrôleur Ethernet autonome avec interface SPI. Il est disponible sous forme de module bon marché qui peut être connecté à l’interface SPI du Pi.

Module Ethernet ENC28J60

Le brochage peut varier mais la plupart des modules contiendront un bloc de 10 broches transportant les signaux suivants :

Connecteur à broche du module ENC28J60
  • VCC & Gnd
  • CLK
  • INT
  • WOL
  • MISO & MOSI
  • SCK
  • CS
  • TVD

Certains modules nécessitent 5V tandis que d’autres fonctionneront avec 3,3V. Faites attention aux détails lors de l’achat afin de pouvoir le connecter à la bonne tension. Mon module fonctionne à partir de 3,3V.

Connexion de l’ENC28J60 à l’en-tête Pi

Le module peut être connecté à l’en-tête GPIO du Pi à l’aide de câbles de démarrage de style Dupont femelle-femelle.

En-tête Pi Module Module En-tête Pi
CLK INT Broche 22 (GPIO25)
WOL MISO Broche 21 (GPIO9)
Broche 19 (GPIO10) MOSI SCK Broche 23 (GPIO11)
Broche 24 (GPIO8) CS TVD
Broche 17 (3.3V)
Broche 2 (5V)
VCC GND Broche 25 (terre)

Comme seulement 7 broches doivent être connectées, vous pouvez connecter le module au Pi Zero à l’aide de 7 câbles.

Connectez l’ENC28J60 à votre réseau

Évidemment, vous devez connecter le module ENC28J60 à votre réseau à l’aide d’un câble de raccordement Ethernet. Je connecte le mien à un commutateur réseau mais vous pouvez vous connecter directement à un port libre de votre routeur.

Étant donné la légèreté du Pi Zero et du module, vous voudrez peut-être coller vos câbles sur une surface pour les empêcher de faire glisser votre configuration sur le sol.

Pi Zero connecté au module Ethernet ENC28J60

Vous remarquerez peut-être sur cette photo qu’au lieu d’utiliser la broche 25 pour la masse, j’ai utilisé la broche 39. Cela était dû à un défaut de soudure sur mon en-tête Pi Zero.

Configuration du logiciel Ethernet Pi Zero

La configuration du logiciel est vraiment simple. Il vous suffit de modifier le fichier config.txt et d’apporter deux modifications potentielles. Je recommande de commencer avec une carte SD fraîchement imagée en utilisant la dernière version de Raspbian.

Le fichier config.txt peut être modifié sur n’importe quel ordinateur pouvant lire la partition de démarrage sur la carte SD. Ou il peut être édité directement sur le Pi si vous avez un clavier et un moniteur connectés.

sudo nano /boot/config.txt

Trouvez la ligne :

#dtparam=spi=on

et supprimez le caractère # pour laisser :

dtparam=spi=on

Ajoutez ensuite la ligne suivante :

dtoverlay=enc28j60

Vous devriez vous retrouver avec une section dans votre config.txt ressemblant à ceci :

Activer la superposition ENC28J60 dans config.txt

Enregistrez et quittez en utilisant CTRL-X, Y et ENTER.

Mise sous tension ou redémarrage

Si vous travaillez directement sur le Pi vous pouvez maintenant rebooter :

sudo reboot

Si vous avez configuré la carte SD sur un PC, vous pouvez maintenant l’insérer dans le Pi et la mettre sous tension.

Votre Pi devrait se connecter automatiquement à votre réseau.

Définir l’adresse MAC

Contrairement à la plupart des autres périphériques réseau que vous avez peut-être utilisés dans le passé, l’ENC28J60 n’a pas d’adresse MAC prédéfinie. Cela signifie qu’il est généré de manière aléatoire à chaque démarrage de l’appareil. Cela peut ne pas vous déranger, mais pourrait amener votre routeur à continuer à attribuer une adresse IP différente. Si vous avez besoin d’une adresse MAC cohérente, vous devez la définir dans le logiciel.

Dans l’exemple suivant, j’utilise « b8:27:eb:00:00:01 ». Si vous avez plusieurs appareils utilisant cette technique, vous devez vous assurer qu’ils sont tous uniques et qu’ils n’entrent jamais en conflit avec d’autres appareils sur votre réseau.

Commencez par créer le fichier suivant :

sudo nano /lib/systemd/system/setmac.service

Ajoutez le contenu suivant :

[Unit]
Description=Set MAC address for ENC28J60 module
Wants=network-pre.target
Before=network-pre.target
BindsTo=sys-subsystem-net-devices-eth0.device
After=sys-subsystem-net-devices-eth0.device
[Service]
Type=oneshot
ExecStart=/sbin/ip link set dev eth0 address b8:27:eb:00:00:01
ExecStart=/sbin/ip link set dev eth0 up
[Install]
WantedBy=multi-user.target

Enregistrez et quittez en utilisant CTRL-X, Y et ENTER.

sudo chmod 644 /lib/systemd/system/setmac.service
sudo systemctl daemon-reload
sudo systemctl enable setmac.service

Redémarrer

Avec tout configuré, vous pouvez maintenant redémarrer votre Pi en utilisant :

sudo reboot

Une fois de retour sur la ligne de commande, vous pouvez vérifier avec quelles adresses IP et MAC votre Pi utilise :

ifconfig

Ce qui devrait vous donner une sortie ressemblant à quelque chose comme :

Exemple de sortie de Pi Zero ifconfig

Ici, nous pouvons voir que le Pi utilise l’adresse MAC que nous avons définie et a reçu une adresse IP de 192.168.001.131 par mon routeur.

Performance

À l’aide de l’utilitaire speedtest-cli, j’ai mesuré la vitesse de la liaison réseau entre 3,15 et 3,7 Mbits/s. Que cela soit adéquat dépendra entièrement du projet que vous construisez.

Résultats du test de vitesse Pi Zero ENC28J60.

Puissance et courant requis

Beaucoup de gens sont heureux d’utiliser ces appareils alimentés directement à partir de la broche 3,3 V du Pi. Cependant, la fiche technique de l’ENC28J60 indique qu’il peut nécessiter 180 mA de courant lors de la transmission, ce qui dépasse la limite de 50 mA du régulateur 3,3 V embarqué du Pi.

Pour cette raison, j’ai décidé de m’assurer que mon ENC28J60 n’était jamais privé de courant et j’ai ajouté un petit régulateur 5V à 3,3V (HK1117). Ce petit module à 3 broches est facile à connecter et fournit au périphérique Ethernet tout le courant dont il pourrait avoir besoin.

En-tête Pi HK1117 ENC28J60
Broche 2 (5V) Vin
Broche 6 (terre) Terre
Vout Vcc (3.3V)

Dépannage Ethernet Pi Zero

Lors de la configuration de mon module et de la rédaction de cet article, je suis tombé sur quelques problèmes. Ceux-ci ont été résolus en prenant note des points suivants :

  • Vérifiez toutes vos connexions
  • Vérifiez les connexions lâches
  • Attention à ne pas confondre CLK et SCK
  • Attention à ne pas confondre MISO (SO) et MOSI (SI)
  • Envisagez d’utiliser un régulateur 3,3 V séparé pour fournir un courant adéquat

Acheter un module Ethernet

L’ENC28J60 est disponible chez de nombreux revendeurs dont :

Mon appareil était décrit comme un « Mini ENC28J60 » et coûtait 4 £.

  • IBest Ethernet/USB HUB Hat for Raspberry Pi 3 B+/3 B/2 B/Zero/Zero W/Zero WH/Zero 2 W Expansion Board, 1x RJ45 Ethernet Port,3X USB Ports Compatible with USB2.0/1.1
    This is a Ethernet / USB HUB HAT for various versions of the Raspberry Pi, including Raspberry Pi 3 Model B+/ B, 2 Model B,and the size of the board is designed to perfectly fit the Zero / Zero W / Zero WH. The Raspberry Pi hub HAT provides more USB capability to your Pi, plus a RJ45 Ethernet port, which is great when you need a stable wired Ethernet connection. 3x USB ports, compatible with USB2.0/1.1 1x RJ45 10/100M port, based on the RTL8152B Ethernet chip Onboard multi indicators, for monitoring the status of power, Ethernet, and each USB port
  • Waveshare Ethernet/USB HUB Hat forRaspberry Pi Zero/Zero W/4B/3B/3B+, Stable Wired Ethernet Connection with 1x RJ45 Ethernet Port and 3X USB Ports Compatible with USB2.0/1.1
    This Raspberry Pi hub HAT provides more USB capability to your Pi, plus a RJ45 Ethernet port, which is great when you need a stable wired Ethernet connection. It can work with various versions of the Pi, and the size of the board is designed to perfectly fit the Zero / Zero W / Zero WH. 3x USB ports, compatible with USB2.0/1.1. 1x RJ45 10/100M port, based on the RTL8152B Ethernet chip Onboard multi indicators, for monitoring the status of power, Ethernet, and each USB port
  • Waveshare Pi Zero vers Raspberry Pi 3 Model B/B+ Adaptateur, Intégré 4-CH USB Port, 100M Ethernet Port et HDMI Port, Alternative pour Raspberry Pi 3B/B+, Support Pi Zero et Zero 2W
    【Based on Raspberry Pi Zero】Use Pi Zero to reproduce the original appearance of the Pi 3B series as much as possible, more cost-effective choice 【Support Pi Zero and Pi Zero 2 W 】 Pi Zero / Zero 2 W to 3B / 3B+ Adapter, alternative Solution for Raspberry Pi 3 Model B/B+ boards 【Easy to Install】Pi Zero can be easily attached via specially designed connectors, easily compatible with the interfaces of Raspberry Pi 3B / 3B+ boards 【Interface Introduction】Onboard 4-ch USB interface, 100M Ethernet port and HDMI port, Note: The Ethernet port does not support PoE function 【Compatible with Pi 3B Series HATs】The same GPIO header height as 3B, easily connecting with 3B series HATs or development projects