Aby użyć ESP32 jako radia Wi-Fi dla Raspberry Pi, połącz obsługiwany układ przez zgodny interfejs, wgraj firmware ESP-Hosted-Linux i uruchom odpowiadający mu sterownik w Linuksie. System udostępni wtedy interfejs wlanX, przez który skonfigurujesz Wi-Fi oraz adres IP. To rozwiązanie dla osób budujących własne połączenie radiowe z komputerem jednopłytkowym — wymaga zarówno pracy ze sprzętem, jak i przygotowania systemu.

Co robi ESP-Hosted-Linux

ESP-Hosted-Linux firmy Espressif pozwala podłączyć radio ESP do komputera z Linuksem jako koprocesor bezprzewodowy. Podział pracy jest prosty: ESP zapewnia część radiową, a Linux zarządza połączeniem sieciowym.

Sterownik korzysta z cfg80211 i nl80211, czyli standardowych mechanizmów obsługi sieci bezprzewodowych w Linuksie. Dzięki temu radio pojawia się jako zwykły interfejs WLAN, a połączeniem z punktem dostępowym można sterować za pomocą systemowego menedżera sieci lub wpa_supplicant. Projekt obsługuje również pracę jako punkt dostępowy; ten poradnik skupia się na podłączeniu do istniejącej sieci.

Jeśli chcesz tylko przesyłać dane między aplikacją na ESP32 a programem na Raspberry Pi, oba urządzenia mogą korzystać z własnych interfejsów i wspólnej sieci Wi-Fi. W ESP-Hosted-Linux zależność jest inna: radio ESP staje się interfejsem sieciowym komputera z Linuksem. Nazwę sieci i hasło ustawiasz więc po stronie Linuksa.

Istnieje też ESP-Hosted-MCU, w którym większa część zarządzania połączeniem pozostaje na ESP. Wybór architektury zależy od tego, czy potrzebujesz bardziej samodzielnego mikrokontrolera sieciowego, czy radia obsługiwanego przez linuksowy stos sieciowy.

Wybór układu ESP32 i interfejsu

Najpierw wybierz parę: konkretny układ ESP oraz sposób jego połączenia z hostem, czyli komputerem zarządzającym radiem. SDIO i SPI to magistrale przenoszące dane między urządzeniami; USB jest kolejną opcją dla wskazanego układu.

Espressif podaje następujące kombinacje w tabeli obsługiwanego sprzętu:

UkładInterfejs połączenia z hostemPasmo Wi-FiStandardy Wi-Fi
ESP32SDIO, SPI2,4 GHz802.11b/g/n
ESP32-S2SPI2,4 GHz802.11b/g/n
ESP32-S3SPI2,4 GHz802.11b/g/n
ESP32-S31SPI, USB2,4 GHz802.11b/g/n
ESP32-C2SPI2,4 GHz802.11b/g/n
ESP32-C3SPI2,4 GHz802.11b/g/n
ESP32-C5SDIO, SPI2,4 i 5 GHz802.11a/b/g/n/ac/ax
ESP32-C6SDIO, SPI2,4 GHz802.11b/g/n/ax
ESP32-C61SDIO, SPI2,4 GHz802.11b/g/n/ax

Który wariant wybrać do swojego projektu?

Jeśli planujesz SDIO, wybierz ESP32, ESP32-C5, ESP32-C6 albo ESP32-C61. Przykładowe połączenie z Raspberry Pi opisane w dalszej części dotyczy ESP32-C6 przez SDIO.

Jeżeli potrzebujesz Wi-Fi w paśmie 5 GHz, ESP32-C5 oferuje zarówno 2,4 GHz, jak i 5 GHz. ESP32-C6 pracuje w paśmie 2,4 GHz. To konkretne kryterium wyboru: układ musi obsługiwać pasmo sieci, z którą zamierzasz się łączyć.

ESP32-S31 pozwala wybrać USB. Zgodnie z instrukcją dla Raspberry Pi ta ścieżka nie wymaga pinów GPIO Raspberry Pi ani nakładki Device Tree, czyli opisu konfiguracji sprzętu przekazywanego jądru. Nadal potrzebuje jednak właściwego firmware ESP i sterownika hosta.

Co przygotować przed rozpoczęciem?

Potrzebujesz:

  • płytki z obsługiwanym układem ESP i dostępem do sygnałów wybranej magistrali;
  • Raspberry Pi lub innego komputera z Linuksem, którego kontroler magistrali można wykorzystać w tej konfiguracji;
  • połączeń elektrycznych, stabilnego zasilania i wspólnej masy odpowiednich dla wybranego interfejsu;
  • środowiska ESP-IDF do przygotowania firmware ESP;
  • możliwości zbudowania i załadowania właściwego modułu jądra Linuksa;
  • narzędzi sieciowych Linuksa oraz danych dostępowych do sieci Wi-Fi.

Obsługa magistrali przez ESP to jedna część układanki. Po stronie hosta muszą działać również kontroler, konfiguracja funkcji pinów, integracja z jądrem i odpowiedni opis sprzętu. Sama wersja jądra nie wystarcza do określenia zgodności konkretnej płytki. Zanim zaczniesz lutować, sprawdź ścieżkę uruchomienia dla swojego hosta.

Połączenie ESP32-C6 z Raspberry Pi przez SDIO

Dla ESP32-C6 Espressif podaje mapowanie sygnałów SDIO na 40-pinowym złączu Raspberry Pi. Numery w środkowej kolumnie to fizyczne pozycje pinów złącza, a nie numery GPIO Raspberry Pi. Ostatnia kolumna zawiera domyślne przypisania po stronie ESP32-C6.

SygnałFizyczny pin złącza Raspberry PiGPIO lub sygnał ESP32-C6
DAT313GPIO 23
CLK15GPIO 19
CMD16GPIO 18
DAT018GPIO 20
DAT122GPIO 21
DAT237GPIO 22
Reset ESP31RST
Masa39Masa

Przypisania Raspberry Pi i domyślne GPIO ESP32-C6 trzeba połączyć z wymaganiami opisanymi w instrukcji sprzętowej Espressif. Samo podłączenie przewodów to dopiero część uruchomienia: host musi jeszcze mieć skonfigurowaną magistralę SDIO.

Podciąganie sygnałów i zasilanie

Linie CMD oraz DAT0–DAT3 wymagają rezystorów podciągających, które utrzymują właściwy stan logiczny, gdy linia nie jest aktywnie sterowana. Schemat Espressif pokazuje zewnętrzne rezystory 10 kΩ. Sprawdź jednak swoją płytkę: producent przestrzega przed dokładaniem drugiego zestawu, jeżeli podciąganie jest już zamontowane.

Sygnały SDIO i SPI pracują z logiką 3,3 V. Nie podłączaj ich do sygnałów logicznych 5 V. Zapewnij stabilne zasilanie ESP i solidne połączenie masy z Raspberry Pi.

Przewody magistrali powinny być krótkie. Jeśli transfery są niestabilne, Espressif zaleca obniżenie zegara SDIO. To praktyczny punkt diagnostyczny: problemy z komunikacją mogą wymagać poprawy połączeń i ustawień magistrali, zanim przejdziesz do konfiguracji sieci.

Jeśli wybierasz SPI

Dla SPI przygotuj połączenia właściwe dla tej magistrali oraz reset. Espressif wymaga także sygnałów Handshake i Data Ready, służących do koordynowania wymiany danych. Skorzystaj z mapowania SPI dla swojego hosta i układu ESP; tabela SDIO dotyczy innego sposobu połączenia.

Firmware i sterownik Linuksa

Jak skonfigurować ESP32 jako radio Wi-Fi dla Raspberry Pi

Firmware, konfiguracja magistrali hosta i sterownik muszą odpowiadać tej samej parze układ–interfejs. Dla przykładu z poprzedniej sekcji jest to ESP32-C6 oraz SDIO. Szybki start Espressif prowadzi przez przygotowanie obu stron połączenia.

  1. Skonfiguruj firmware ESP. W środowisku ESP-IDF wybierz właściwy układ docelowy i interfejs połączenia. Dzięki temu firmware będzie przygotowany do komunikacji przez wybraną magistralę.
  2. Zbuduj firmware ESP. Kompilacja tworzy oprogramowanie dla konfiguracji wybranej w poprzednim kroku.
  3. Wgraj firmware do ESP. Układ musi uruchomić oprogramowanie ESP-Hosted-Linux odpowiadające konfiguracji hosta.
  4. Przygotuj magistralę w Linuksie. Zastosuj konfigurację kontrolera i pinów właściwą dla płytki oraz wybranego interfejsu. Ten etap udostępnia sterownikowi sprzętową drogę komunikacji z ESP.
  5. Zbuduj właściwy moduł hosta. Wybierz wariant sdio, spi lub usb zgodny z połączeniem. Sterownik jest linuksową stroną wymiany danych z firmware ESP.
  6. Załaduj moduł do jądra. Po jego uruchomieniu system może rozpoznać radio i utworzyć interfejs sieciowy.
  7. Znajdź interfejs bezprzewodowy. Użyj iw dev oraz ip link, aby sprawdzić, jakie interfejsy pojawiły się w systemie.

Nazwa interfejsu ma postać wlanX, ale nie musi to być wlan0. Odczytaj rzeczywistą nazwę, zanim wpiszesz ją w konfiguracji sieciowej. Jeśli Raspberry Pi ma więcej interfejsów bezprzewodowych, automatyczne założenie numeru może skierować konfigurację do niewłaściwego radia.

Konfiguracja Wi-Fi w Linuksie

Po pojawieniu się interfejsu ESP-backed dalszą konfiguracją zajmuje się Linux. Przewodnik trybu stacji Espressif opisuje połączenie z punktem dostępowym i pozostawia konfigurację IP narzędziom systemowym.

  1. Połącz interfejs z siecią Wi-Fi. W systemowym menedżerze sieci lub wpa_supplicant wybierz wykryty interfejs i ustaw dane dostępowe do punktu dostępowego. Ten krok zestawia połączenie radiowe.
  2. Skonfiguruj adres IP. Użyj menedżera sieci lub klienta DHCP w Linuksie. DHCP automatycznie pobiera ustawienia adresowe sieci, dzięki którym host może komunikować się z innymi urządzeniami.

To dwa oddzielne etapy: połączenie z punktem dostępowym oraz ustawienie warstwy IP. Firmware ESP obsługuje radio, a ustawienia sieciowe komputera pozostają po stronie Linuksa.

Jak sprawdzić, czy konfiguracja działa?

Sprawdź kolejno trzy elementy:

  • iw dev wykrywa interfejs bezprzewodowy udostępniony przez sterownik;
  • narzędzie zarządzające Wi-Fi pokazuje połączenie tego interfejsu z wybranym punktem dostępowym;
  • menedżer sieci lub klient DHCP skonfigurował adres IP dla połączenia.

Obecność interfejsu oznacza, że możesz przejść do konfiguracji Wi-Fi. Dopiero połączenie radiowe i ustawienia IP dają hostowi działającą ścieżkę sieciową.

Typowe pułapki podczas uruchamiania

Jeśli interfejs się nie pojawia, sprawdź dmesg, czyli dziennik komunikatów jądra, oraz logi ESP odczytywane przez port szeregowy. Szukaj problemu na etapie, który właśnie uruchamiasz: komunikacji z układem, pracy sterownika albo konfiguracji sieci.

Najważniejsze rzeczy do sprawdzenia to:

  • zgodność układu i magistrali z tabelą obsługi;
  • zgodność interfejsu wybranego w firmware z wariantem sterownika hosta;
  • konfiguracja kontrolera magistrali i funkcji pinów po stronie Raspberry Pi;
  • fizyczna numeracja pinów, połączenie masy i stabilność zasilania;
  • podciąganie CMD oraz DAT0–DAT3 w SDIO;
  • obecność sygnałów Handshake i Data Ready w SPI;
  • rzeczywista nazwa interfejsu wpisana w konfiguracji sieciowej.

Jak rozumieć wyniki SDIO ESP32-C6

Espressif publikuje pomiary referencyjne ESP32-C6 przez SDIO dla Wi-Fi w paśmie 2,4 GHz. Wyniki rozdzielają TCP i UDP, czyli dwa protokoły transportowe, oraz kierunek transmisji: Tx oznacza nadawanie, a Rx odbiór.

Szerokość kanału Wi-FiTCP Tx (Mbps)TCP Rx (Mbps)UDP Tx (Mbps)UDP Rx (Mbps)
20 MHz40,955,667,868,3
40 MHz41,751,090,458,4

Najwyższy wynik TCP w tych pomiarach to 55,6 Mbps dla Rx przy kanale 20 MHz. Najwyższy wynik UDP to 90,4 Mbps dla Tx przy kanale 40 MHz. Szerokość kanału radiowego i częstotliwość zegara magistrali SDIO są odrębnymi ustawieniami.

Espressif zastrzega, że szczegóły hostów i metodologia kierunków Tx/Rx nie są w pełni opisane dla wszystkich wyników. Producent traktuje te liczby jako wyniki referencyjne, a nie gwarancję przepustowości konkretnego montażu Raspberry Pi.

Praktyczna konsekwencja jest prosta: jeżeli interesuje cię transfer TCP, sięgaj po wyniki TCP dla odpowiedniego kierunku. Dla UDP używaj osobnych wartości. Maksima pochodzą z różnych konfiguracji radiowych, więc planowanie projektu wokół jednej ogólnej „prędkości ESP32-C6” byłoby zbyt dużym uproszczeniem.

Diagnostyka modułu i zaniku zasilania

Przy problemach z uruchomieniem modułu wróć do konfiguracji hosta i sprawdź komunikaty dmesg. Po stronie ESP log szeregowy pomaga sprawdzić przebieg startu firmware. Te dwa widoki dotyczą różnych końców tego samego połączenia: sterownika Linuksa i oprogramowania radia.

W pojedynczym montażu z ESP32-C6 odnotowano rozłączenie i ponowne połączenie po odcięciu oraz przywróceniu zasilania ESP sprzętowym przełącznikiem, bez awarii modułu jądra. To zgłoszony wynik tego konkretnego projektu.

Ściąga do uruchomienia

  • Wybór sprzętu: dopasuj układ ESP, magistralę i pasmo Wi-Fi do hosta oraz sieci.
  • Połączenie SDIO ESP32-C6: stosuj fizyczne numery pinów Raspberry Pi, logikę 3,3 V i wymagane podciąganie.
  • Uruchomienie: przygotuj firmware ESP, magistralę hosta i zgodny sterownik.
  • Kontrola interfejsu: użyj iw dev oraz ip link i odczytaj rzeczywistą nazwę wlanX.
  • Sieć: zestaw połączenie Wi-Fi w Linuksie, a następnie skonfiguruj IP przez menedżer sieci lub klienta DHCP.