Placa

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
ESP32 DevKit V1: blinklive0.000 s 0.00x
Clique para abrir no editor
A placa está rodando firmware de verdade agora mesmo. Clique para abrir o circuito no editor.
O modelo

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.
Comece aqui

Abra um e aperte Rodar

Cada um destes abre no editor exatamente como está desenhado aqui.

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.

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.