Добавляем WiFi к Raspberry Pi всего за $2

0969558933d7b9e8acd4530c700e0127.jpg

Разного рода хаков для мини-ПК Raspberry Pi Zero, вышедшего в тираж пару недель назад довольно много. Правда, пока что большая часть — простенькие приемы, типа впайки WiFi модуля, что и хаком особо назвать нельзя. Сейчас начинают появляться более интересные вещи, среди которых — использование SDIO для добавления WiFi модуля. Причем USB при этом не используется, порт остается функциональным.

Пользователь Hackaday.io с ником ajlitt некоторое время задумался о возможности добавления WiFi модуля к таким платам, как Raspberry Pi A+ и Raspberry Pi Zero. Дело в том, что у Raspberry Pi B+, например, несколько USB портов, и один из них можно без проблем занять соотвествующим WiFi модулем. Но у Zero и A+ портов минимум, и подключать к ним WiFi модуль не всегда представляется возможным. Решение умельца оказалось довольно оригинальным. Дело в том, что у Raspberry Pi есть специальный GPIO-разъем с пинами, и к этому разъему можно подключать различные устройства, в том числе, и SDIO-девайсы. Эту особенность «малинки» и было решено использовать.
SDIO — это специальное расширение SPI-подобного протокола, который используется для работы с SD картами памяти. Идея SDIO — подключение совместимого устройства к разъему, для получения дополнительной функциональности гаджета. Этот способ активно использовался, например, в наладонниках (КПК). К такому разъему можно было подключить GPS-модуль, или что-то другое, получив новую функцию в своем устройстве.

10c7dc106507761f6816cc78bf294e21.jpg
Пример подключения GPS-модуля к КПК

Ajlitt попробовал найти драйвер для чипа ESP8089, и нашел спецификации самого чипа, где говорилось о том, что шину ESP8266 SPI можно освободить, убрав чип флеш-памяти. Оставалось только подключить SPI-контакты ESP8266 к SDIO Raspberry Pi, и остальную работу по подключению уже доделывал драйвер.

Для того, чтобы WiFi заработал, необходимо в самом начале отпаять SPI-память от модуля ESP-03.

Распиновка следующая:

b9300214736e404eb971a065b2f95a1c.jpg

Далее соединяем 3.3V и GND. Подключаем CH_PD (CH_EN на ESP8266 чипе) к любому свободному GPIO. Можно использовать, к примеру GPIO4. Это позволит подключить питание к модулю, а драйвер правильно активирует чип. Другие GPIO после подключения уже не стоит использовать. В противном случае ESP8266 захочет загрузиться из флеш-памяти, которая уже удалена, и ничего не получится.

После этого качаем 4.2 kernel из Raspberry Pi Github. Лучше всего https://github.com/raspberrypi/linux.git, ветка rpi-4.2.y.

После создаем esp8089 модуль:
git clone github.com/al177/esp8089.git
cd esp8089
make

И загружаем модуль:
modprobe mac80211
insmod esp8089.ko

Результат — WiFi модуль без использования USB. Вся работа довольно простая, нужны минимальные навыки пайки. При этом стоимость модификации составляет всего $2. А вот такие способы уже не нужны. Канал в случае работы со SDIO не такой быстрый, как в случае использования выделенного модуля, но вполне приемлемо.

1a40dcaf1cbf874d5f17a4cb221a672f.jpg

e93c5259aaffe51260cffa408699f07b.jpg

Страничка проекта с техническими подробностями.

© Geektimes