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:

ChipTransportes compatíveisBandas Wi-FiPadrões 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 e 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

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.

SinalPino físico do conector de 40 pinos do Raspberry PiGPIO ou terminal do ESP32-C6
DAT313GPIO 23
CLK15GPIO 19
CMD16GPIO 18
DAT018GPIO 20
DAT122GPIO 21
DAT237GPIO 22
Reset do ESP31RST
Terra39Terra

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

Como configurar um ESP32 como coprocessador Wi-Fi no Raspberry Pi

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.

  1. 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.
  2. Selecione o transporte no firmware. Escolha SDIO, SPI ou USB conforme a combinação compatível e a ligação que você montou.
  3. Compile o firmware. Essa etapa gera o programa que fará o ESP trabalhar como rádio do computador Linux.
  4. Grave o firmware no ESP. Use o procedimento de gravação do ESP-IDF para colocar a configuração compilada no dispositivo.
  5. 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.
  6. Compile o módulo do transporte escolhido. Use o módulo sdio, spi ou usb correspondente ao firmware e à conexão física.
  7. 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.

  1. Identifique a interface sem fio com iw dev. Anote o nome que o sistema apresenta; a interface do ESP pode ser wlanX, sem necessariamente receber o nome wlan0.
  2. Confira a interface com ip link. Esse comando permite verificar a interface de rede reconhecida pelo Linux.
  3. 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.
  4. 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-FiTCP Tx/Rx (Mbps)UDP Tx/Rx (Mbps)
20 MHz40,9 / 55,667,8 / 68,3
40 MHz41,7 / 51,090,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.