Ir para o conteúdo principal

Simulador ESP32

O ESP32 é um microcontrolador popular habilitado para WiFi e Bluetooth, amplamente utilizado para projetos de IoT. Wokwi simula o ESP32, ESP32-C3, ESP32-S2 e ESP32-S3 (beta) e ESP32-C6 (alpha).

ESP32 boards

NomeChipDescrição
ESP32 DevKit v1ESP32Placa de desenvolvimento popular ESP32
TinyPICOESP32Placa ESP32 compacta por UnexpectedMaker
Franzininho WiFiESP32-S2Placa ESP32-S2 da Comunidade Franzininho
Wemos S2 miniESP32-S2Pequena placa ESP32-S2 da Wemos
ESP32-S2-DevKitM-1ESP32-S2Placa de desenvolvimento ESP32-S2 de nível básico
ESP32-C3-DevKitM-1ESP32-C3Placa de desenvolvimento ESP32-C3 de nível básico
Rust Board ESP32-C3ESP32-C3Placa ESP32-C3 para desenvolvimento Rust
ESP32-S3-DevKitC-1ESP32-S3Placa de desenvolvimento ESP32-C3 de nível básico (beta)
ESP32-C6-DevKitC-1ESP32-S6Placa oficial de desenvolvimento ESP32-S6 (alpha)

Você pode contribuir com placas adicionais enviando um pull request para wokwi-boards.

Começando

Você pode usar o simulador ESP32 para executar diferentes tipos de aplicativos:

  1. Projetos ESP32 Arduino Core (incluindo projetos ESP-IDF)
  2. Projetos MicroPython e CircuitPython
  3. Projetos Rust (consulte https://wokwi.com/rust)
  4. Arquivos de firmware de aplicativos personalizados (por exemplo, aplicativos criados usando o ESP-IDF)

Arduino Core

Comece a partir do modelo de projeto Arduino-ESP32, ou do Exemplo de Blink ESP32.

Se você quiser usar bibliotecas Arduino de terceiros, adicione um arquivo libraries.txt com a lista de bibliotecas que você usa.

MicroPython

Comece com o modelo de projeto MicroPython ESP32, ou com o Exemplo de Blink MicroPython ESP32.

Nota: Enquanto a simulação está em execução, pressione Ctrl+C dentro do Terminal Serial para entrar no MicroPython REPL. Alternativamente, você pode editar o código de Exemplo Blink e remover o loop while. Para obter mais informações, consulte o Guia MicroPython.

Firmware de aplicativo personalizado

Abra o modelo de projeto de aplicativo personalizado do ESP32 e pressione "F1" no editor de código. Em seguida, escolha "Fazer upload do firmware e iniciar a simulação...". Escolha qualquer arquivo .bin, .elf ou .uf2 do seu computador e a simulação será iniciada.

Informação

Ao carregar um firmware personalizado, é recomendável criar um único arquivo .bin que contenha o gerenciador de inicialização, a tabela de partições e aplicativo. Você pode usar o comando esptool merge_bin para criar o arquivo.

Para projetos ESP-IDF, você também pode criar um único arquivo UF2 usando o comando: idf.py uf2. O arquivo estará localizado em build/uf2.bin, que pode ser carregado no simulador.

Exemplos no simulador

Exemplos Arduino

Exemplos MicroPython

Exemplos ESP-IDF

Os exemplos a seguir usam as funções ESP-IDF. Eles são compilados usando o Arduino ESP32 Core:

Recursos do simulador

PeriféricoESP32S2S3C3Notas
Processador core(s)✔️✔️✔️✔️
GPIO✔️✔️🟡✔️Interrupções suportadas
IOMUX🟡🟡🟡🟡
PSRAM✔️✔️✔️4MB de SRAM externa *
UART✔️✔️✔️✔️
USB✔️✔️Suporte para UART sobre USB (CDC)
I2C✔️✔️✔️✔️Mestre apenas. Endereçamento de 10 bits não suportado.
I2SAberto para votação
SPI✔️✔️✔️✔️
TWAI
RMT🟡🟡🟡Somente transmissão, use para controlar NeoPixels
LEDC PWM✔️✔️✔️Used by analogWrite(), Servo, Buzzer, etc.
MCPWM
DMA🟡🟡
WiFi✔️✔️✔️✔️Veja o Guia WiFi do ESP32
BluetoothAberto para votação
Timers🟡✔️🟡✔️
Watchdog
RTC🟡🟡🟡🟡Apenas resistores RTC pull-up / pull-down
ADC✔️✔️✔️Nota: analogRead() retorna valores até 4095
RNG✔️✔️✔️✔️Gerador de números aleatórios
AES Accelerator✔️✔️✔️
SHA Accelerator✔️✔️✔️
RSA Accelerator✔️✔️✔️
Hall Effect Sensor
ULP Processor
GDB Debugging🟡🟡🟡🟡Apenas através do wokwi-gdbserver

Legenda:
✔️ - Simulado
🟡 - Implementação parcial/trabalho em andamento
❌ - Não implementado (mas se você precisar, abra uma solicitação de recurso)
— - Não disponível neste chip

* A quantidade de SRAM pode ser personalizada usando o atributo "psramSize".

Simulação WiFi

Veja o Guia WiFi do ESP32.

Uso Avançado

Flash e tamanho da memória

Você pode personalizar o tamanho do flash e PSRAM adicionando os seguintes atributos ao chip:

AtributoDescriçãoPadrão
flashSizeTamanho da flash em MB. Valores válidos: "2", "4", "8", "16", "32"."4"
psramSizeTamanho da PSRAM em MB. Valores válidos: "2", "4", "8"."4"

Tabela de partição personalizada

Você pode especificar uma tabela de partição personalizada adicionando um arquivo "partitions.csv" ao seu projeto. Confira o ESP32 Partition Table Guide para o formato exato deste arquivo.

Offset do firmware personalizado

Ao carregar um firmware personalizado, você pode especificar o deslocamento do firmware na memória flash. Por padrão, o Wokwi examinará o binário do firmware e tentará descobrir o deslocamento automaticamente, com base na presença do bootloader e no tipo do chip. Se o Wokwi não conseguir descobrir o deslocamento, ele assumirá que seu firmware é um firmware de aplicativo e o carregará no deslocamento 0x10000.

Você pode especificar o deslocamento manualmente adicionando o seguinte atributo ao chip:

AtributoDescriçãoPadrão
firmwareOffsetOffset do firmware na memória flash, em bytes.""

Pulando o bootloader

Nos chips ESP32 e ESP32-S2, o Wokwi pula a ROM de boot e o bootloader, para que seu firmware comece a rodar imediatamente. Outros chips (ESP32-C3, ESP32-S3, etc.) sempre executam a sequência de inicialização completa.

Se você deseja que o Wokwi sempre execute o bootloader, você pode adicionar o seguinte atributo ao chip:

AtributoDescriçãoPadrão
fullBootDefina como "1" para simular a sequência de inicialização completa: boot ROM -> bootloader -> aplicativo.""