Placa

ESP32 simulator, the classic one, on an Xtensa core

Mokxi modela el DOIT ESP32 DevKit V1 de treinta pines: un ESP32-WROOM-32 con su Xtensa LX6 a 240 MHz, la matriz GPIO, IO_MUX, las tres UART, el grupo de temporizadores 0, el ADC1 y el controlador PWM LEDC, en las direcciones reales. Un núcleo, no dos, y sin radio (el WiFi aquí es simulado, y lo dice), y el contrato indica exactamente dónde está cada límite.

  • 10áreas de periféricos modeladas
  • 24proyectos listos para ejecutar
  • Tiempo realen tu propia máquina
ESP32 DevKit V1: parpadeolive0.000 s 0.00x
Haz clic para abrirlo en el editor
La placa está ejecutando firmware real ahora mismo. Haz clic para abrir el circuito en el editor.
El modelo

Qué se modela

Tomado del documento de contrato de la propia placa y dicho en palabras sencillas, con lo que falta al lado.

Modelado

Núcleo
Xtensa LX6 con ABI de ventanas, sesenta y cuatro registros de dirección, los manejadores de desbordamiento y subdesbordamiento de ventana, una instrucción por ciclo a 240 MHz
Memoria
128 KB de RAM de instrucciones en 0x4008_0000 y 192 KB de RAM de datos en 0x3FFB_0000, separadas como las separa ESP-IDF
Matriz GPIO e IO_MUX
Cuarenta pines con la división real en dos registros, pull y habilitación de entrada por pad, y GPIO 34 a 39 rechazados como salidas, porque el chip no tiene driver en ellos
UART0
Con el ritmo del baudaje configurado, conectado al monitor serie
UART1 y UART2
Serial1 y Serial2 en los pines que nombre begin(), a través de la matriz GPIO: tramas reales en el cable, bit a bit, a la velocidad que realmente da el divisor, con el búfer de recepción del driver del núcleo
Grupo de temporizadores 0
El temporizador 0 a un tick por microsegundo detrás de millis() y micros(); delay() detiene el núcleo en CCOMPARE0 en lugar de girar en vacío
ADC1
Doce bits en los ocho canales reales (GPIO 36, 37, 38, 39, 32, 33, 34 y 35) con las cuatro atenuaciones, y 11 dB siguiendo la curva de una pieza real hasta 4095 a unos 3.1 V
LEDC
El grupo de alta velocidad: cuatro temporizadores y ocho canales en cualquier pin con driver de salida, detrás de analogWrite, ledcAttach y ledcWrite
La matriz de interrupciones
Sus fuentes enrutadas como las enruta el hardware, así que attachInterrupt son tres escrituras y no una
WiFi, simulado
WiFi.h, HTTPClient.h y WebServer.h sobre una red escrita por software: sin radio, sin 802.11, e internet real solo cuando inicias sesión y lo activas

No modelado

  • Una radio de cualquier tipo. No hay 802.11 ni radio Bluetooth en el modelo. En su lugar se simulan el WiFi y el Bluetooth (la API de Arduino sobre una red nuestra que llega al internet real solo cuando inicias sesión y lo activas, y un teléfono en el panel de Bluetooth del editor), y cada página que los menciona lo dice.
  • El segundo núcleo. Un ESP32 real tiene dos núcleos LX6; este modelo ejecuta el núcleo PRO, así que cualquier cosa que inicie una tarea en el núcleo 1 no correrá.
  • La FPU: un binario de punto flotante por hardware construido en otro lado falla en su primera instrucción de punto flotante. Los sketches construidos aquí usan punto flotante por software, así que las operaciones con float funcionan.
  • La caché, la flash y la PSRAM, el RTC y el ULP, el sueño profundo, el ADC2, los sensores táctil y hall, I2C, SPI, I2S y RMT.
  • Varias direcciones (el orden de pads del IO_MUX, las disposiciones del grupo de temporizadores y de LEDC, los desplazamientos SENS, los números de la matriz de interrupciones y los índices de señal de la matriz GPIO que usa LEDC) son una suposición de este modelo y no algo que pueda respaldar. La sección 6 del contrato nombra cada una.
Empieza aquí

Abre uno y presiona Ejecutar

Cada uno de estos se abre en el editor tal como está dibujado aquí.

Preguntas

¿Es gratis?

Sí. Todas las placas y todos los componentes están en el plan Gratis, sin necesidad de cuenta.

¿Puedo compilar mi propio sketch para ella?

Sí. Edita el sketch y presiona Ejecutar: compila en la pestaña con clang para Xtensa, y el panel de compilación muestra cada paso. No se sube nada. Las operaciones de punto flotante funcionan: el navegador compila con punto flotante por software, como en todas las demás placas de aquí.

¿Simula WiFi o Bluetooth?

Ambos, simulados, y lo dice claramente. El Bluetooth es un teléfono en el panel de Bluetooth del editor, no una radio. Tu sketch usa las llamadas reales de Arduino (WiFi.begin, WiFi.status, HTTPClient, WebServer), y la placa se une a una red, obtiene una página y sirve otra. Por debajo no hay radio ni 802.11. Cuatro direcciones inventadas bajo .mokxi responden dentro de esta pestaña. Con la sesión iniciada, puedes activar Internet real en el panel Nube, y las solicitudes HTTP y HTTPS a servidores reales salen por el gateway de Mokxi.

¿Por qué no funciona pinMode(34, OUTPUT)?

Porque tampoco funciona en el chip. Los GPIO 34 a 39 tienen un búfer de entrada y ningún driver de salida. Mokxi rechaza la escritura como lo hace el silicio, la cuenta y pone una pequeña marca ámbar en la placa para que no creas que el pin está manejando algo.

¿Por qué mi potenciómetro llega a 4095 antes del final de su recorrido?

Porque con la atenuación predeterminada de 11 dB la lectura cruda de un ESP32 real se satura a unos 3.1 V, antes de los 3.3 V del riel, y se curva en el camino: la mitad del potenciómetro lee unos 1890, no 2048. Mokxi modela esa curva, y el ejemplo de la perilla imprime el número crudo para que no sea un misterio.

¿Es la placa de 30 pines o la de 38?

La DOIT DevKit V1 de treinta pines. La DevKitC de Espressif de 38 pines tiene una pulgada completa entre las filas de headers y saca seis pines más: los números GPIO son los del mismo chip, las posiciones no.

¿Ejecuta los dos núcleos?

Uno. Corre el núcleo PRO; no hay CPU APP ni FreeRTOS que reparta entre ambos, así que un sketch con setup()/loop() está bien y xTaskCreatePinnedToCore no.

Pruébalo con tu propio firmware

Lo que armas aquí corre sin cambios en la placa de tu escritorio. Sin instalar nada y sin necesidad de cuenta.