Ir para o conteúdo principal

Rede WiFi ESP32

Wokwi simula uma rede WiFi com acesso total à Internet. Você pode usar o ESP32 juntamente com o WiFi virtual para prototipar projetos de IoT. Os casos de uso comuns incluem:

  • Conecte-se a servidores MQTT para enviar dados do sensor
  • Consultar serviços da web por HTTP, HTTPS e web sockets
  • Execute um servidor HTTP dentro do ESP32 e conecte-se a ele a partir do seu navegador (requer o Wokwi IoT Gateway)

Conectando-se ao Wi-Fi

O simulador fornece um ponto de acesso WiFi virtual chamado Wokwi-GUEST. É um ponto de acesso aberto - nenhuma senha é necessária.

Conectando do Arduino

Para conectar a partir do dispositivo Arduino (em um ESP32), use o seguinte código:

#include <WiFi.h>

void setup() {
Serial.begin(9600);
Serial.print("Conectando-se ao Wi-Fi");
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println(" Conectado!");
}

void loop() {
delay(100); // TODO: Construa algo incrível!
}

Nota: Especificamos o número (6) do canal WiFi ao chamar WiFi.begin(). Isto pula a fase de varredura do WiFi e economiza cerca de 4 segundos ao se conectar ao WiFi.

Conectando do MicroPython

Para conectar de um projeto MicroPython, use o seguinte código:

import network
import time

print("Conectando-se ao Wi-Fi", end="")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect('Wokwi-GUEST', '')
while not sta_if.isconnected():
print(".", end="")
time.sleep(0.1)
print(" Conectado!")

Uma vez conectado, você pode usar a urequests library para enviar solicitações HTTP e HTTPS, e o umqtt library para estabelecer conexões MQTT.

Acesso à Internet

Wokwi usa um gateway especial para conectar seu ESP32 simulado à internet. Este gateway é necessário, pois os navegadores da Web não permitem acesso direto à Internet. Há duas maneiras de usar o Wokwi IoT Gateway: o gateway público e o gateway privado.

Gateway PublicoGateway Privado
VelocidadeMais devagarMais rápido
EstabilidadeMédiaAlta
LocalizaçãoRemoto, na nuvemFunciona no seu computador
PrivacidadeConexões monitoradasSem monitoramento
Conexões de saída
Conexões de entrada
DisponibilidadeTodos os usuáriosApenas para membros do Club

O Gateway Publico

O Gateway é o método de conexão com a Internet padrão. Funciona imediatamente e permite o acesso à Internet, mas não à sua rede local. Todo o tráfego é monitorado para fins de segurança, portanto, não o use para dados privados ou confidenciais. Ocasionalmente, inspecionamos o tráfego e podemos impor limites se notarmos uso excessivo do gateway.

O Gateway Público é uma ótima opção para brincar e aprender sobre WiFi e rede no ESP32.

O Gateway Privado

O Gateway Privado é um pequeno aplicativo que você baixa e executa em seu computador. Permite acesso à internet ESP32 mais rápido e robusto: os dados vão direto do simulador (rodando no seu navegador) para a rede do seu computador, sem precisar passar pela nuvem. Isso significa:

  • Não há monitoramento. Seu tráfego permanece privado.
  • Seus projetos ESP32 podem acessar serviços executados em seu computador ou em sua rede local (por exemplo, um servidor MQTT ou HTTP local)
  • Você pode executar um servidor web no ESP32 e conectar-se a ele a partir do seu navegador (explicado abaixo)

O Gateway Privado está disponível apenas para usuários que ingressam no Wokwi Club.

Instalação

Baixe a versão mais recente na página de releases do Wokwi IoT Gateway. Você verá as versões para Windows, macOS e Linux. Em seguida, extraia o arquivo ZIP e execute o arquivo executável dentro dele. Seu navegador / sistema operacional pode avisá-lo de que o arquivo pode não ser seguro, então você terá que dizer a eles para executá-lo de qualquer maneira.

O gateway não requer permissões de administrador/raiz. Felizmente, ele é executado como um processo padrão em seu computador.

Quando você executa o gateway, ele deve imprimir um logotipo, sua versão e dizer: "Listening on TCP port 9011". Viva, você concluiu a configuração!

Se você está preocupado em executar o executável do gateway em seu computador, você está convidado a dar uma olhada no código-fonte e até mesmo construir o arquivo executável você mesmo (peça instruções sobre no discord).

Uso Básico

Após executar o gateway, abra qualquer projeto no Wokwi, vá até o editor de código, pressione "F1" e selecione "Enable Private Wokwi IoT Gateway". Você será perguntado se deseja habilitar o gateway. Responda "OK" para habilitar o Gateway Privado ou "Cancelar" para desativá-lo e voltar para o Gateway Público.

Em seguida, execute qualquer projeto ESP32 que use o WiFi. Olhe para a saída do gateway, deve dizer "Client connected". Isso significa que você está usando o Gateway Privado.

Se o seu projeto ESP32 for um servidor HTTP, você pode se conectar a ele a partir do seu navegador em http://localhost:9080/. A conexão será encaminhada pelo gateway para a porta HTTP padrão (80) no ESP32 simulado. Se você precisar encaminhar portas diferentes, por favor abra uma issue no Github.

Nota: O gateway de IoT privado não tem suporte no momento ao Safari devido a uma limitação técnica. Use um navegador diferente (por exemplo, Chrome, Firefox, Edge).

Uso Avançado

Endereços de rede

O ESP32 obtém um endereço IP de um servidor DHCP executado dentro do Wokwi IoT gateway. O endereço IP depende do tipo de gateway que você usa:

  • Gateway Público: 10.10.0.2
  • Gateway Privado: 10.13.37.2

O endereço MAC do ESP32 simulado é 24:0a:c4:00:01:10. O BSSID do ponto de acesso virtual ("Wokwi-GUEST") é 42:13:37:55:aa:01, e está ouvindo no canal 6 do WiFi.

Visualizando o tráfego WiFi com o Wireshark

O Wokwi simula uma pilha de rede completa: começando na camada MAC 802.11 mais baixa, passando pelas camadas IP e TCP/UDP, até protocolos como DNS, HTTP, MQTT, CoAP, etc. Use um analisador de protocolo de rede, como Wireshark.

Primeiro, execute um projeto ESP32 que use o WiFi no simulador. Em seguida, vá para o editor de código, pressione F1 e escolha Download WiFi Packet Capture (PCAP) file. Seu navegador baixará um arquivo chamado wokwi.pcap. Use o Wireshark para abrir este arquivo.

A captura de tela a seguir mostra um exemplo de captura de pacote de solicitação HTTP:

Pacotes Wireshark ESP32 WiFi: DNS, HTTP, and 802.11 MAC

Como você pode ver, o arquivo PCAP contém todos os tipos de pacotes: quadros de beacon 802.11, resposta de consulta DNS (a primeira entrada na lista) e pacotes de solicitação/resposta HTTP (nº 107 e 113).

Na maioria dos casos, você desejará se concentrar apenas em um protocolo específico. Você pode conseguir isso pressionando Ctrl+/ no wireshark e digitando um nome de protocolo (http, tcp, ip, dns, dhcp, etc.). Isso irá filtrar a lista e exibir apenas os pacotes relevantes.

::atenção

O campo Time na captura de pacotes usa o tempo do relógio de simulação. Pode avançar mais devagar que o relógio de parede se a simulação estiver rodando mais devagar que a velocidade máxima (100%).

Limitações

O Wokwi IoT Gateway suporta TCP e UDP. Ele não suporta o protocolo ICMP, portanto, a funcionalidade Ping não está disponível.

Exemplos no simulador