Перейти к содержимому
Инструкция

ESP32 может добавить Linux-плате Wi-Fi и Bluetooth без отдельного адаптера

ESP32 можно использовать как отдельный беспроводной сопроцессор для Raspberry Pi и других плат под Linux. Радиомодуль берет на себя Wi-Fi и Bluetooth, а сама система получает привычные сетевые интерфейсы Linux.

RaVic
ESP32 может добавить Linux-плате Wi-Fi и Bluetooth без отдельного адаптера

Автор: Arya Voronova

У такого решения есть вполне понятная ниша. Одноплатные компьютеры с мощным процессором далеко не всегда получают встроенный Wi-Fi, а подключение обычного USB-адаптера занимает порт и требует совместимого драйвера. У Espressif для этой задачи существует проект ESP-Hosted: ESP32 подключается к основной системе по проводной шине и работает именно как беспроводной сопроцессор.

Для Linux предусмотрена отдельная реализация ESP-Hosted-Linux. После установки драйвера Wi-Fi появляется в системе как стандартный интерфейс wlan0. Для управления можно использовать привычные средства Linux, включая NetworkManager, wpa_supplicant и iw. Bluetooth подключается к штатному стеку через HCI. Поэтому прикладному ПО не требуется знать, что вместо обычного беспроводного контроллера за связью фактически отвечает ESP32.

09_1200x1200_2691d015aa

Фото: Arya Voronova

Связь между основной платой и сопроцессором может идти по SDIO или SPI. Bluetooth в некоторых конфигурациях дополнительно можно вывести через UART. Именно здесь проходит практическая граница решения: одного свободного GPIO недостаточно. На основной плате нужно настроить соответствующую шину, а при переносе ESP-Hosted на другую Linux-платформу может потребоваться работа с device tree и драйверами.

Поддержка не ограничена первоначальным ESP32. В актуальной документации перечислены ESP32-S2, S3, C2, C3, C5, C6 и C61, хотя доступные интерфейсы и беспроводные возможности зависят от конкретного чипа. Например, ESP32-C5 позволяет получить через ESP-Hosted поддержку диапазона 5 ГГц, тогда как классический ESP32 ограничен Wi-Fi 802.11b/g/n в диапазоне 2,4 ГГц.

Есть и ограничение на стороне программной реализации. В ESP-Hosted-Linux один wlan-интерфейс нельзя одновременно использовать в режимах точки доступа и клиента. Переключаться между ними можно, но одновременная работа AP и Station сейчас не поддерживается.

07_1080x1080_c686002480

Фото: Arya Voronova

Raspberry Pi здесь скорее удобный пример, чем обязательная часть схемы. Готовые конфигурации ESP-Hosted-Linux предусмотрены для Raspberry Pi 3 и 4, а более новая ветка ESP-Hosted-MCU демонстрирует работу и с Raspberry Pi 5. Сам подход рассчитан и на другие Linux-платы после портирования.

В результате ESP32 оказывается полезен далеко за пределами привычных самодельных датчиков и контроллеров. Для Linux-платы без встроенной беспроводной связи это способ вынести Wi-Fi и Bluetooth в дешевый отдельный чип, сохранив при этом обычную для Linux работу с сетью. Но это инженерное решение, а не универсальная замена USB-свистку: ради компактности придется настроить аппаратную шину и программную часть на стороне хоста.

3 показов