ESP32 simulator, the classic one, on an Xtensa core
O Mokxi modela o DOIT ESP32 DevKit V1 de trinta pinos: um ESP32-WROOM-32 com seu Xtensa LX6 a 240 MHz, a matriz de GPIO, o IO_MUX, as três UARTs, o grupo de timers 0, o ADC1 e o controlador PWM LEDC, nos endereços reais. Um núcleo, não dois, e sem rádio (o WiFi aqui é simulado, e avisa), e o contrato diz exatamente onde fica cada limite.
- 10áreas de periféricos modeladas
- 24projetos prontos para rodar
- Tempo realna sua própria máquina
O que é modelado
Tirado do documento de contrato da própria placa e posto em palavras simples, com o que falta ao lado.
Modelado
- Núcleo
- Xtensa LX6 no ABI com janelas, sessenta e quatro registradores de endereço, os handlers de overflow e underflow de janela, uma instrução por ciclo a 240 MHz
- Memória
- 128 KB de RAM de instruções em 0x4008_0000 e 192 KB de RAM de dados em 0x3FFB_0000, mantidas separadas como o ESP-IDF as mantém
- Matriz de GPIO e IO_MUX
- Quarenta pinos com a divisão real em dois registradores, pulls e habilitação de entrada por pad, e os GPIO 34 a 39 recusados como saídas, porque o chip não tem driver neles
- UART0
- No ritmo do baud rate configurado, ligada ao monitor serial
- UART1 e UART2
- Serial1 e Serial2 em quaisquer pinos que begin() nomear, pela matriz de GPIO: quadros reais no fio, bit a bit, na taxa que o divisor realmente dá, com o buffer de recepção do driver do core
- Grupo de timers 0
- Timer 0 num tick de um microssegundo atrás de millis() e micros(); delay() coloca o núcleo em espera no CCOMPARE0 em vez de ficar girando nele
- ADC1
- Doze bits nos oito canais reais (GPIO 36, 37, 38, 39, 32, 33, 34 e 35) com as quatro atenuações, e 11 dB seguindo a curva de um componente real até 4095 em cerca de 3,1 V
- LEDC
- O grupo de alta velocidade: quatro timers e oito canais em qualquer pino com driver de saída, por trás de analogWrite, ledcAttach e ledcWrite
- A matriz de interrupções
- Suas fontes roteadas como o hardware as roteia, então attachInterrupt são três escritas em vez de uma
- WiFi, simulado
- WiFi.h, HTTPClient.h e WebServer.h sobre uma rede escrita em software: sem rádio, sem 802.11, e internet real só quando você faz login e ativa
Não modelado
- Rádio de qualquer tipo. Não há 802.11 nem rádio Bluetooth no modelo. WiFi e Bluetooth são simulados (a API do Arduino sobre uma rede nossa que só alcança a internet real quando você faz login e ativa, e um celular no painel de Bluetooth do editor), e toda página que os menciona diz isso.
- O segundo núcleo. Um ESP32 de verdade tem dois núcleos LX6; este modelo roda o núcleo PRO, então qualquer coisa que inicie uma tarefa no núcleo 1 não vai rodar.
- A FPU: um binário de ponto flutuante por hardware compilado em outro lugar dá falha na primeira instrução float. Os sketches compilados aqui usam ponto flutuante por software, então contas com float funcionam.
- O cache, a flash e a PSRAM, o RTC e o ULP, o deep sleep, o ADC2, os sensores de toque e hall, I2C, SPI, I2S e RMT.
- Vários endereços (a ordem dos pads do IO_MUX, os layouts do grupo de timers e do LEDC, os offsets do SENS, os números da matriz de interrupções e os índices de sinal da matriz de GPIO que o LEDC usa) são crença deste modelo, e não algo que ele possa garantir. A seção 6 do contrato nomeia cada um.
Abra um e aperte Rodar
Cada um destes abre no editor exatamente como está desenhado aqui.
Todos os projetos prontos do ESP32 DevKit V1
Cada um tem sua própria página com o circuito rodando, o código e uma lista de componentes.
- Potenciômetro com ESP32Iniciante
- Botão e LED com ESP-NOWIntermediário
- Monitor de energia PZEM-004T com ESP32Intermediário
- Pintura por toque com ILI9488 e ESP32Intermediário
- Pintura por toque com ST7796S e ESP32Intermediário
- Medidor de nível de microfone I2S com ESP32Intermediário
- Player de onda senoidal I2S com ESP32Intermediário
- Sistema de emergência de trânsito com RFID e ESP32Intermediário
- Servidor web de clima com DHT22 e ESP32Intermediário
- Servidor web com dois LEDs no ESP32Iniciante
- Servidor web assíncrono com ESP32: BME280, slider e reléIntermediário
- Campainha com Telegram e sensor PIR no ESP32Intermediário
- Relógio NTP num display TM1637 com ESP32Iniciante
- Lâmpada com Bluetooth serial no ESP32Iniciante
- Lâmpada com UART BLE no ESP32Intermediário
- Blink em MicroPython no ESP32Iniciante
- Interrupção de botão em MicroPython no ESP32Iniciante
- Fade com PWM em MicroPython no ESP32Iniciante
- DHT22 no ESP32 com MicroPythonIniciante
- OLED SSD1306 no ESP32 com MicroPythonIniciante
- Clima por WiFi em MicroPython no ESP32Intermediário
- Analisador de espectro de áudioAvançado
- Olhos animatrônicosAvançado
- An ESP32 and an Arduino Uno talking over serialIntermediário
Componentes ligados ao ESP32 DevKit V1, passo a passo
Cada página traz a ligação com os nomes de pino do próprio ESP32 DevKit V1, o código, os erros comuns e o circuito rodando.
- ESP32 DHT22
- ESP32 SSD1306 OLED
- ESP32 I2C LCD
- Servo com ESP32
- ESP32 HC-SR04
- NeoPixel com ESP32
- Botão com ESP32
- Potenciômetro com ESP32
- Buzzer com ESP32
- Relé com ESP32
- Sensor PIR com ESP32
- ESP32 MPU6050
- ESP32 BMP280
- ESP32 DS18B20
- Receptor IR com ESP32
- Teclado matricial com ESP32
- Display TM1637 com ESP32
- Motor de passo 28BYJ-48 com ESP32
- ESP32 RC522 RFID
- ESP32 LDR
- ESP32 BME280
- Joystick com ESP32
- Display de 7 segmentos com ESP32
- ESP32 DS3231 RTC
Tutoriais que usam esta placa
Cada um termina num circuito rodando, nesta mesma placa.
- A pinagem do ESP32 DevKit V1: cada pino, e quais evitar
- analogRead no ESP32: 12 bits, atenuação e ADC2
- Uno vs ESP32 vs Pico: por qual começar
- Dez projetos de ESP32 para iniciantes, em ordem
- Um ESP32 e um Arduino Uno numa só simulação
- Uma requisição HTTP GET: buscar o clima em JSON
- MicroPython no ESP32: blink, um botão, PWM, um DHT22, um OLED e WiFi
Perguntas
É grátis?
Sim. Toda placa e todo componente está no plano Grátis, sem precisar de conta.
Posso compilar meu próprio sketch para ela?
Sim. Edite o sketch e aperte Rodar: ele compila na aba com clang para Xtensa, e o painel Compilação mostra cada etapa. Nada é enviado. Contas com ponto flutuante funcionam: o navegador compila com float por software, como em todas as outras placas daqui.
Simula WiFi ou Bluetooth?
Os dois, simulados, e avisa claramente que são. O Bluetooth é um celular no painel de Bluetooth do editor, não um rádio. Seu sketch usa as chamadas reais do Arduino (WiFi.begin, WiFi.status, HTTPClient, WebServer), e a placa entra numa rede, busca uma página e serve outra. Por baixo não há rádio nem 802.11. Quatro endereços inventados sob .mokxi respondem dentro desta aba. Com login, você pode ativar a Internet real no painel Nuvem, e as requisições HTTP e HTTPS a hosts reais saem pelo gateway do Mokxi.
Por que pinMode(34, OUTPUT) não funciona?
Porque também não funciona no chip. Os GPIO 34 a 39 têm um buffer de entrada e nenhum driver de saída. O Mokxi recusa a escrita como o silício faz, conta a recusa e põe uma pequena marca âmbar na placa, em vez de deixar você acreditar que o pino está acionando algo.
Por que meu potenciômetro chega a 4095 antes do fim do curso?
Porque, com a atenuação padrão de 11 dB, a leitura bruta de um ESP32 de verdade satura em cerca de 3,1 V, antes dos 3,3 V da alimentação, e se curva no caminho: o meio do potenciômetro lê cerca de 1890, não 2048. O Mokxi modela essa curva, e o exemplo do potenciômetro imprime o número bruto para não ficar um mistério.
Esta é a placa de 30 pinos ou a de 38?
A DOIT DevKit V1 de trinta pinos. A DevKitC de 38 pinos da Espressif tem uma polegada inteira entre as fileiras de conectores e expõe mais seis pinos: os números de GPIO são os do mesmo chip, as posições não.
Roda os dois núcleos?
Um. O núcleo PRO roda; não há APP CPU nem FreeRTOS para escalonar entre eles, então um sketch com setup()/loop() funciona e xTaskCreatePinnedToCore não.
As outras placas
Todas estas rodam hoje, e todas são grátis.
Procurando a introdução mais curta? Veja a página do simulador de ESP32 DevKit.
Um chip RISC-V a 160 MHz, com o mapa de memória real.
O Arduino clássico, com um ATmega328P rodando a 16 MHz.
O chip do Uno numa placa pequena que cabe na protoboard.
O Arduino grandão, com 54 pinos digitais e quatro portas seriais.
Uma placa no formato do Uno cujo chip cuida da própria serial USB.
Uma segunda placa RISC-V, com 31 pinos e WiFi simulado.
O ESP32-S3 a 240 MHz, com serial USB e um LED RGB.
O ESP8266 do NodeMCU a 80 MHz, com WiFi simulado.
Teste com o seu próprio firmware
O que você monta aqui roda, sem alterações, na placa que está na sua mesa. Nada para instalar e sem precisar de conta.