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
Nome | Chip | Descrição |
---|---|---|
ESP32 DevKit v1 | ESP32 | Placa de desenvolvimento popular ESP32 |
TinyPICO | ESP32 | Placa ESP32 compacta por UnexpectedMaker |
Franzininho WiFi | ESP32-S2 | Placa ESP32-S2 da Comunidade Franzininho |
Wemos S2 mini | ESP32-S2 | Pequena placa ESP32-S2 da Wemos |
ESP32-S2-DevKitM-1 | ESP32-S2 | Placa de desenvolvimento ESP32-S2 de nível básico |
ESP32-C3-DevKitM-1 | ESP32-C3 | Placa de desenvolvimento ESP32-C3 de nível básico |
Rust Board ESP32-C3 | ESP32-C3 | Placa ESP32-C3 para desenvolvimento Rust |
ESP32-S3-DevKitC-1 | ESP32-S3 | Placa de desenvolvimento ESP32-C3 de nível básico (beta) |
ESP32-C6-DevKitC-1 | ESP32-S6 | Placa 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:
- Projetos ESP32 Arduino Core (incluindo projetos ESP-IDF)
- Projetos MicroPython e CircuitPython
- Projetos Rust (consulte https://wokwi.com/rust)
- 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.
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:
- Blink usando a API FreeRTOS
- Contador de LED binário usando tarefas FreeRTOS
- Entrada do botão GPIO + Interrupções
- WiFi Exemplo
Recursos do simulador
Periférico | ESP32 | S2 | S3 | C3 | Notas |
---|---|---|---|---|---|
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. |
I2S | ❌ | ❌ | ❌ | ❌ | Aberto 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 |
Bluetooth | ❌ | — | ❌ | ❌ | Aberto 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:
Atributo | Descrição | Padrão |
---|---|---|
flashSize | Tamanho da flash em MB. Valores válidos: "2", "4", "8", "16", "32". | "4" |
psramSize | Tamanho 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:
Atributo | Descrição | Padrão |
---|---|---|
firmwareOffset | Offset 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:
Atributo | Descrição | Padrão |
---|---|---|
fullBoot | Defina como "1" para simular a sequência de inicialização completa: boot ROM -> bootloader -> aplicativo. | "" |