Para configurar um ESP32 como coprocessador Wi-Fi do Raspberry Pi, use o ESP-Hosted-Linux: ele conecta um rádio ESP compatível ao computador por um barramento e apresenta ao Linux uma interface wlanX. Você prepara a ligação elétrica, grava o firmware correspondente e carrega o driver; depois, o Linux gerencia a conexão Wi-Fi e o endereço IP. É um caminho para quem quer integrar um rádio ao sistema, em vez de apenas trocar mensagens entre dois dispositivos conectados à mesma rede.
O trabalho passa por três camadas: hardware, firmware e Linux. Elas precisam combinar. Um chip com suporte a SDIO, por exemplo, também exige que a placa Linux tenha esse barramento configurado e utilizável.
O que o ESP-Hosted-Linux faz
O ESP atua como coprocessador de rádio: fornece a parte sem fio, enquanto o computador mantém o controle da rede. O projeto da Espressif integra a interface aos mecanismos cfg80211 e nl80211, usados pelo Linux para configurar dispositivos Wi-Fi.
Na prática, isso permite usar ferramentas habituais do sistema para conectar a interface a um ponto de acesso. O projeto também oferece operação como ponto de acesso, mas o procedimento aqui acompanha a conexão a uma rede Wi-Fi existente.
Essa divisão de funções é importante na hora de programar. O nome e a senha da rede são configurados no Linux, por meio do gerenciador de rede ou do wpa_supplicant. O firmware do ESP precisa corresponder ao chip e ao barramento escolhidos.
Já no ESP-Hosted-MCU, uma parcela maior do gerenciamento da conexão fica no próprio ESP. E, quando Raspberry Pi e ESP32 usam suas interfaces individuais para entrar na mesma rede, a comunicação ocorre entre aplicações: são arquiteturas diferentes, com tarefas diferentes.
Escolher um ESP32 e um transporte compatíveis
Antes de separar os fios, escolha o chip e o transporte — o barramento que leva os dados entre o ESP e o computador. A matriz de hardware da Espressif apresenta estas combinações:
| Chip | Transportes compatíveis | Bandas Wi-Fi | Padrões Wi-Fi |
| ESP32 | SDIO, SPI | 2,4 GHz | 802.11b/g/n |
| ESP32-S2 | SPI | 2,4 GHz | 802.11b/g/n |
| ESP32-S3 | SPI | 2,4 GHz | 802.11b/g/n |
| ESP32-S31 | SPI, USB | 2,4 GHz | 802.11b/g/n |
| ESP32-C2 | SPI | 2,4 GHz | 802.11b/g/n |
| ESP32-C3 | SPI | 2,4 GHz | 802.11b/g/n |
| ESP32-C5 | SDIO, SPI | 2,4 e 5 GHz | 802.11a/b/g/n/ac/ax |
| ESP32-C6 | SDIO, SPI | 2,4 GHz | 802.11b/g/n/ax |
| ESP32-C61 | SDIO, SPI | 2,4 GHz | 802.11b/g/n/ax |
Se você pretende usar SDIO, as opções são ESP32, ESP32-C5, ESP32-C6 e ESP32-C61. Para uma rede de 5 GHz, o ESP32-C5 oferece essa banda; o ESP32-C6 opera em 2,4 GHz. A escolha depende da rede e da integração que você quer montar.
O ESP32-S31 oferece uma alternativa por USB. Na referência para Raspberry Pi, a Espressif informa que esse caminho dispensa GPIOs do Pi e uma sobreposição do Device Tree — a descrição de hardware usada pelo kernel. Ainda são necessários o firmware e o driver USB correspondentes.
O que você precisa preparar
Para seguir com a montagem, tenha:
- Um ESP compatível com o transporte escolhido.
- Um Raspberry Pi ou outra placa Linux com controlador de barramento utilizável, configuração dos pinos e integração com o kernel.
- Alimentação estável, terra comum e as conexões exigidas pelo transporte.
- O ambiente ESP-IDF para configurar, compilar e gravar o firmware.
- Um ambiente Linux preparado para compilar e carregar o módulo do transporte.
- Uma rede Wi-Fi compatível com a banda do chip escolhido.
O suporte do chip é apenas uma parte da decisão. A placa Linux também precisa oferecer o controlador, os GPIOs e a configuração de hardware exigidos. Confira essa integração antes de montar o circuito.
Conectar o ESP32-C6 ao Raspberry Pi por SDIO
SDIO é um barramento que, nesta montagem, transporta os dados entre o Raspberry Pi e o rádio ESP32-C6. A ligação usa clock, comando, quatro linhas de dados, reset e terra.
A tabela reúne a pinagem do Raspberry Pi e os GPIOs padrão do ESP32-C6 na configuração de hardware da Espressif.
| Sinal | Pino físico do conector de 40 pinos do Raspberry Pi | GPIO ou terminal do ESP32-C6 |
| DAT3 | 13 | GPIO 23 |
| CLK | 15 | GPIO 19 |
| CMD | 16 | GPIO 18 |
| DAT0 | 18 | GPIO 20 |
| DAT1 | 22 | GPIO 21 |
| DAT2 | 37 | GPIO 22 |
| Reset do ESP | 31 | RST |
| Terra | 39 | Terra |
Os números na coluna do Raspberry Pi são posições físicas do conector. Use essa numeração para localizar cada conexão; os números de GPIO do ESP32-C6 aparecem na outra coluna.
Pull-ups, alimentação e integridade do sinal
CMD e DAT0–DAT3 precisam de resistores de pull-up, que mantêm essas linhas em nível lógico alto quando necessário. O diagrama da Espressif utiliza resistores externos de 10 kΩ e orienta verificar os que já existem na placa para evitar duplicá-los.
As linhas SDIO e SPI usam lógica de 3,3 V. Mantenha a fiação curta, uma conexão de terra firme e a alimentação estável. A pinagem resolve as conexões, mas o controlador SDIO do Raspberry Pi também precisa ser configurado para operar com elas.
Se as transferências ficarem instáveis, a Espressif recomenda reduzir o clock do barramento SDIO. Esse ajuste atua na comunicação elétrica entre as placas.
Caso você escolha SPI, use a ligação correspondente desse transporte: além das conexões SPI e de reset, o projeto exige os sinais Handshake e Data Ready, que coordenam a troca de dados. A pinagem SDIO da tabela serve especificamente à montagem SDIO.
Configurar o firmware e o driver Linux
Com chip e transporte definidos, siga a sequência do guia de início rápido da Espressif. A configuração do ESP e a do computador precisam apontar para a mesma combinação de hardware e barramento.
- Configure o firmware para o chip escolhido. No ambiente ESP-IDF, selecione o alvo correspondente ao seu ESP. Isso prepara a compilação para aquele componente.
- Selecione o transporte no firmware. Escolha SDIO, SPI ou USB conforme a combinação compatível e a ligação que você montou.
- Compile o firmware. Essa etapa gera o programa que fará o ESP trabalhar como rádio do computador Linux.
- Grave o firmware no ESP. Use o procedimento de gravação do ESP-IDF para colocar a configuração compilada no dispositivo.
- Prepare o barramento no Linux. Ajuste a integração do controlador e dos pinos para a sua placa. A configuração é específica da plataforma e pode envolver o Device Tree.
- Compile o módulo do transporte escolhido. Use o módulo
sdio,spiouusbcorrespondente ao firmware e à conexão física. - Carregue o módulo no Linux. Com o driver ativo e o ESP acessível pelo barramento, o sistema pode apresentar a interface sem fio.
O ponto delicado é a correspondência entre as camadas. Um firmware configurado para SPI precisa da ligação SPI e do módulo SPI no computador. A mesma regra vale para SDIO e USB.
Configurar Wi-Fi no Linux
Depois de carregar o driver, passe para as ferramentas de rede do sistema. O guia de estação Wi-Fi da Espressif mantém no Linux tanto a associação ao ponto de acesso quanto a configuração de IP.
- Identifique a interface sem fio com
iw dev. Anote o nome que o sistema apresenta; a interface do ESP pode serwlanX, sem necessariamente receber o nomewlan0. - Confira a interface com
ip link. Esse comando permite verificar a interface de rede reconhecida pelo Linux. - Configure a conexão ao ponto de acesso. Use o gerenciador de rede do Linux ou o
wpa_supplicant, indicando a interface correta e as credenciais da rede. - Configure o endereço IP. Deixe essa etapa a cargo do gerenciador de rede ou de um cliente DHCP, que solicita um endereço à rede.
A interface aparecer, a associação Wi-Fi funcionar e o endereço IP ser configurado são marcos distintos. Essa separação ajuda a localizar o problema sem refazer toda a montagem a cada tentativa.
Como verificar o funcionamento e localizar falhas
Se a interface aparecer em iw dev e ip link, confira a associação ao ponto de acesso e a configuração de IP nas ferramentas de rede do Linux. Quando a inicialização falhar, consulte dmesg, que reúne mensagens do kernel, e os registros da porta serial do ESP.
Os erros mais úteis de evitar são concretos:
- Chip e transporte incompatíveis: confira a combinação na matriz antes de compilar.
- Pinagem trocada: revise as posições físicas do Raspberry Pi e os GPIOs do ESP separadamente.
- Pull-ups inadequados: confira CMD e DAT0–DAT3 e os resistores já presentes na placa.
- Ligação elétrica instável: revise alimentação, terra e comprimento dos fios; para SDIO, avalie a redução do clock conforme a orientação da Espressif.
- Firmware e módulo diferentes: confira se ambos usam o mesmo transporte.
- Nome de interface presumido: use o nome retornado pelo Linux na configuração da rede.
Entender as medições SDIO do ESP32-C6
A Espressif publica medições de referência do ESP32-C6 por SDIO, usando Wi-Fi em 2,4 GHz. Os resultados separam TCP e UDP, dois protocolos de transporte de dados, e as direções Tx e Rx — transmissão e recepção.
| Largura do canal Wi-Fi | TCP Tx/Rx (Mbps) | UDP Tx/Rx (Mbps) |
| 20 MHz | 40,9 / 55,6 | 67,8 / 68,3 |
| 40 MHz | 41,7 / 51,0 | 90,4 / 58,4 |
O pico TCP de 55,6 Mbps aparece em Rx com canal de 20 MHz. Já o pico UDP de 90,4 Mbps aparece em Tx com canal de 40 MHz. A Espressif ressalta que seus resultados de referência variam conforme a direção e a configuração de rádio e não garantem a velocidade de cada montagem.
Há uma consequência prática na tabela: o canal de 40 MHz registra um valor maior em UDP Tx, enquanto o de 20 MHz registra um valor maior em TCP Rx. Portanto, a configuração de rádio e o tipo de tráfego fazem parte da avaliação de desempenho.
As larguras de 20 e 40 MHz se referem ao canal Wi-Fi. O clock SDIO, ajustável quando a ligação elétrica está instável, pertence ao barramento entre o Raspberry Pi e o ESP.
Operação do módulo e recuperação após corte de energia
O funcionamento do rádio depende da integração entre o módulo Linux, o controlador do barramento e o firmware do ESP. Para diagnosticar uma interrupção, os registros do kernel e da porta serial ajudam a acompanhar essas duas pontas da comunicação.
Em uma montagem com ESP32-C6, foi relatada a desconexão e a reconexão após um interruptor cortar e restaurar a alimentação do ESP, sem travamento ou falha do módulo do kernel naquele teste.