Полное руководство по подключению модуля Ethernet ENC28J60 к Raspberry Pi
Подключение внешнего Ethernet-модуля ENC28J60 через SPI-интерфейс — отличный способ добавить проводную сеть к одноплатным компьютерам Raspberry Pi Zero, Model A или другим моделям без встроенного LAN-порта. Это руководство предоставляет пошаговую инструкцию по аппаратному подключению и программной настройке с использованием актуальных версий Raspberry Pi OS.
Полное руководство по подключению модуля Ethernet ENC28J60 к Raspberry Pi через SPI
Подключение ENC28J60 к Raspberry Pi: подробное руководство на русском языке Подключение внешнего Ethernet-модуля ENC28J60 через SPI-интерфейс — отличный способ добавить проводную сеть к одноплатным компьютерам Raspberry Pi Zero, Model A или другим моделям без встроенного LAN-порта. Это руководство предоставляет пошаговую инструкцию по аппаратному подключению и программной настройке с использованием актуальных версий Raspberry Pi OS.
Описание и введение
Данная статья содержит исчерпывающую инструкцию по интеграции недорогого сетевого контроллера ENC28J60 с Raspberry Pi. Мы рассмотрим корректную схему подключения контактов, активацию необходимых интерфейсов в операционной системе и устранение типичных проблем. Весь процесс проверен на последних версиях Raspberry Pi OS (включая дистрибутивы на основе Debian Bookworm, где изменились пути к конфигурационным файлам).
Аппаратное подключение (Схема распиновки)
Перед началом работы убедитесь, что у вас есть модуль ENC28J60, Raspberry Pi и семь соединительных проводов (например, «папа-мама»). Критически важно правильно подключить питание и сигнальные линии во избежание повреждения оборудования. Подключите контакты согласно следующей проверенной схеме. Использование проводов разного цвета значительно упростит процесс и последующую диагностику.
| Контакт Raspberry Pi (GPIO) | Контакт модуля ENC28J60 | Назначение |
|---|---|---|
| +3.3V (например, Pин 1 или 17) | VCC | Питание модуля (только 3.3V!) |
| GND (например, Pин 6, 9, 20) | GND | Земля (общий провод) |
| GPIO 10 (MOSI) | SI (MOSI) | Данные от Raspberry Pi к модулю |
| GPIO 9 (MISO) | SO (MISO) | Данные от модуля к Raspberry Pi |
| GPIO 11 (SCLK) | SCK | Тактовый сигнал интерфейса SPI |
| GPIO 8 (CE0) | CS | Выбор микросхемы (Chip Select 0) |
| GPIO 25 | INT | Линия прерывания (опционально) |
Внимание: Подача напряжения 5V на контакт VCC модуля ENC28J60 с высокой вероятностью выведет его из строя. Всегда проверяйте распиновку вашего конкретного модуля. После сборки схемы тщательно перепроверьте все соединения, особенно цепи питания, перед первым включением.
Программная настройка в Raspberry Pi OS
После физического подключения включите Raspberry Pi и войдите в систему. Далее необходимо активировать SPI-интерфейс и загрузить драйвер для модуля.
Активация SPI через интерфейс raspi-config
Откройте терминал. Самый простой способ включить SPI — использовать утилиту конфигурации. Выполните команду:
sudo raspi-config
В меню утилиты последовательно выберите: Interface Options -> SPI -> Yes для ответа на вопрос «Would you like the SPI interface to be enabled?». Подтвердите выбор, нажмите ОК и завершите работу утилиты, выбрав Finish. Система предложит перезагрузку — согласитесь.
Добавление драйвера ENC28J60
В современных версиях ОС драйвер для ENC28J60 встроен в ядро и активируется через файл конфигурации. Его необходимо отредактировать, выполнив команду:
sudo nano /boot/firmware/config.txt
Прокрутите файл вниз и добавьте в конец следующую строку:
dtoverlay=enc28j60
Сохраните изменения (Ctrl+O, затем Enter) и закройте редактор (Ctrl+X). Для применения изменений перезагрузите Raspberry Pi командой:
sudo reboot
Проверка работоспособности
После перезагрузки откройте терминал и выполните несколько команд для проверки.
Убедитесь, что новый сетевой интерфейс появился в системе. На Raspberry Pi Zero он, скорее всего, получит имя eth0. На моделях с встроенным Ethernet (например, Raspberry Pi 4) внешний модуль будет зарегистрирован как eth1. Выполните:
ip a
В длинном списке интерфейсов найдите запись, начинающуюся с eth (обычно eth0 или eth1). Это подтвердит, что система распознала устройство.
Далее проверьте, что драйвер модуля был успешно загружен ядром:
lsmod | grep enc28j60
В ответ вы должны увидеть строку с названием модуля enc28j60. Если команда не вывела ничего, значит, драйвер не загрузился — вернитесь к предыдущим шагам настройки.
Для диагностики полезно просмотреть логи ядра. Следующая команда отфильтрует сообщения, относящиеся к сетевому интерфейсу:
sudo dmesg | grep -i eth
Типичные проблемы и решения
В процессе настройки вы можете столкнуться со следующими трудностями.
Проблема: Сетевой интерфейс не отображается в выводе команды ip a.
Решение: Тщательно проверьте все соединения на плате. Убедитесь, что SPI активирован через raspi-config. Проверьте, что строка dtoverlay=enc28j60 корректно добавлена в файл /boot/firmware/config.txt и не содержит опечаток. Для углублённой диагностики выполните sudo dmesg | grep -i enc28 и изучите вывод.
Проблема: Светодиоды на модуле ENC28J60 и сетевом коммутаторе не горят, статус подключения «link down». Решение: ENC28J60 — устаревший чип, который работает только в режиме 10 Мбит/с (Half-Duplex). Многие современные маршрутизаторы и гигабитные коммутаторы могут не поддерживать этот режим по умолчанию. Попробуйте подключить модуль к старому роутеру, к порту 100 Мбит/с или напрямую к сетевой карте другого компьютера с помощью патч-корда. Также проверьте качество обжима разъёма RJ-45 на модуле.
Проблема: При каждой перезагрузке модуль получает новый случайный MAC-адрес.
Решение: Поскольку у модуля нет вшитого MAC-адреса, система генерирует его случайным образом. Для присвоения фиксированного адреса отредактируйте файл конфигурации DHCP-клиента:
sudo nano /etc/dhcpcd.conf
Добавьте в конец файла следующие строки (замените AA:BB:CC:DD:EE:FF на желаемый MAC-адрес, а eth0 на имя вашего интерфейса, если это необходимо):
interface eth0
duid
clientid
iaid aa:bb:cc:dd:ee:ff
Сохраните файл и перезагрузитесь.
Проблема: Необходимо назначить модулю статический IP-адрес.
Решение: Для этого также используется файл /etc/dhcpcd.conf. Добавьте в его конец блок (подставьте актуальные значения для вашей сети):
interface eth0
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8 1.1.1.1
После сохранения изменений примените новую конфигурацию командой sudo systemctl restart dhcpcd.
Следуя этому руководству, вы сможете добавить проводное Ethernet-соединение к вашей Raspberry Pi, используя доступный и простой в подключении модуль ENC28J60. Несмотря на ограничение скорости в 10 Мбит/с, это решение идеально подходит для задач, не требующих высокой пропускной способности: удалённое управление, сбор данных с датчиков или создание простых сетевых сервисов. Главное — внимательно проверить схему подключения и убедиться, что для питания модуля используется стабильное напряжение 3.3V.


