Agregar Ethernet a un Pi Zero

El Pi Zero no tiene puerto Ethernet. Si su proyecto requiere Ethernet, puede agregarlo utilizando un módulo Ethernet o un adaptador USB a Ethernet.

En este punto, alguien se preguntará por qué querría agregar Ethernet a un Pi Zero. ¿Por qué no usar simplemente un Pi estándar que ya incluye el puerto? Supongo que la respuesta es que hay algunos proyectos en los que es deseable usar una Pi Zero debido al consumo de energía o al tamaño, pero también se necesita la funcionalidad de los dispositivos Ethernet. Tengo un proyecto en mente sobre el que publicaré un blog en el futuro (si resulta ser exitoso).

Módulo Ethernet ENC28J60 SPI

Microchip fabrica el ENC28J60, que es un controlador Ethernet independiente con interfaz SPI. Está disponible como un módulo económico que se puede conectar a la interfaz SPI de Pi.

El pin-out puede variar, pero la mayoría de los módulos contendrán un bloque de 10 pines con las siguientes señales:

  • VCC y tierra
  • CLK
  • EN T
  • WOL
  • MISO Y MOSI
  • SCK
  • CS
  • PRIMERA

Algunos módulos requieren 5V mientras que otros funcionarán con 3.3V. Preste atención a los detalles al comprar uno para que pueda conectarlo al voltaje correcto. Mi módulo funciona con 3.3V.

Conexión de ENC28J60 al cabezal Pi

El módulo se puede conectar al cabezal GPIO de la RasPi mediante cables puente estilo Dupont hembra-hembra.

Pi HeaderModuleModulePi Encabezado
CLK EN T Clavija 22 (GPIO25)
WOL MISO Clavija 21 (GPIO9)
Clavija 19 (GPIO10) MOSI SCK Clavija 23 (GPIO11)
Clavija 24 (GPIO8) CS PRIMERA
Patilla 17 (3,3 V)
Clavija 2 (5V)
CCV TIERRA Pin 25 (Tierra)

Como solo se necesitan conectar 7 pines, puede conectar el módulo al Pi Zero usando 7 cables.

Conecte el ENC28J60 a su red

Obviamente, debe conectar el módulo ENC28J60 a su red mediante un cable de conexión Ethernet. Conecto el mío a un conmutador de red, pero podría conectarse directamente a un puerto de repuesto en su enrutador.

Dado lo livianos que son el Pi Zero y el módulo, es posible que desee pegar con cinta adhesiva los cables a una superficie para evitar que arrastren su configuración al piso.

Puede notar en esta foto que en lugar de usar el pin 25 para tierra, usé el pin 39. Esto se debió a una soldadura defectuosa en mi encabezado Pi Zero.

Configuración del software Pi Zero Ethernet

La configuración del software es realmente fácil. Solo necesita editar el archivo config.txt y realizar dos posibles cambios. Recomiendo comenzar con una tarjeta SD recién creada con la última versión de Raspbian.

El archivo config.txt se puede editar en cualquier computadora que pueda leer la partición de arranque en la tarjeta SD. O se puede editar directamente en el Pi si tiene un teclado y un monitor conectados.

sudo nano /boot/config.txt

Encuentra la línea:

#dtparam=spi=on

y elimine el carácter # para salir:

dtparam=spi=on

Luego agregue la siguiente línea:

dtoverlay=enc28j60

Deberías terminar con una sección en tu config.txt con este aspecto:

Guarde y salga usando CTRL-X, Y y ENTER.

Encendido o reinicio

Si está trabajando directamente en el Pi, ahora puede reiniciar:

sudo reboot

Si configuró la tarjeta SD en una PC, ahora puede insertarla en el Pi y encenderla.

Su Pi debería conectarse a su red automáticamente.

Establecer dirección MAC

A diferencia de la mayoría de los otros dispositivos de red que podría haber usado en el pasado, el ENC28J60 no tiene una dirección MAC predeterminada. Esto significa que se genera aleatoriamente cada vez que se inicia el dispositivo. Es posible que esto no le moleste, pero podría hacer que su enrutador siga asignando una dirección IP diferente. Si necesita una dirección MAC consistente, debe configurarla en el software.

En el siguiente ejemplo uso “b8:27:eb:00:00:01”. Si tiene varios dispositivos que usan esta técnica, debe asegurarse de que todos sean únicos y que nunca entren en conflicto con otros dispositivos en su red.

Comience creando el siguiente archivo:

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

Agrega los siguientes contenidos:

[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

Guarde y salga usando CTRL-X, Y y ENTER.

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

Reiniciar

Con todo configurado, ahora puede reiniciar su Pi usando:

sudo reboot

Una vez que regrese a la línea de comando, puede verificar con qué direcciones IP y MAC está usando su Pi:

ifconfig

Lo que debería darte una salida que se parezca a:

Aquí podemos ver que el Pi está usando la dirección MAC que configuramos y mi enrutador le ha dado una dirección IP de 192.168.001.131.

Rendimiento

Con la utilidad speedtest-cli, medí la velocidad del enlace de red entre 3,15 y 3,7 Mbits/s. Si esto es adecuado dependerá completamente del proyecto que esté construyendo.

Requisitos de energía y corriente

Muchas personas están felices de usar estos dispositivos alimentados directamente desde el pin de 3.3V de Pi. Sin embargo, la hoja de datos del ENC28J60 establece que puede requerir 180 mA de corriente al transmitir, lo que supera el límite de 50 mA del regulador integrado de 3,3 V de la RasPi.

Por esta razón, decidí asegurarme de que mi ENC28J60 nunca se quedara sin corriente y agregué un pequeño regulador de 5V a 3.3V (HK1117). Este pequeño módulo de 3 pines es fácil de conectar y proporciona al dispositivo Ethernet toda la corriente que pueda necesitar.

Encabezado PiHK1117ENC28J60
Clavija 2 (5V) Vin
Pin 6 (Tierra) Tierra
Vout Vcc (3,3 V)

Solución de problemas de Pi Zero Ethernet

Mientras configuraba mi módulo y escribía este artículo, me encontré con algunos problemas. Estos se resolvieron tomando nota de los siguientes puntos:

  • Comprueba dos veces todas tus conexiones
  • Compruebe si hay conexiones sueltas
  • Tenga cuidado de no confundir CLK y SCK
  • Tenga cuidado de no confundir MISO (SO) y MOSI (SI)
  • Considere usar un regulador de 3.3V separado para proporcionar una corriente adecuada

Compre un módulo Ethernet

El ENC28J60 está disponible en muchos minoristas, incluidos:

Mi dispositivo fue descrito como un «Mini ENC28J60» y costó £4.