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
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.
Abre uno y presiona Ejecutar
Cada uno de estos se abre en el editor tal como está dibujado aquí.
Todos los proyectos integrados del ESP32 DevKit V1
Cada uno tiene su propia página con el circuito funcionando, el código y una lista de componentes.
- Perilla con ESP32Principiante
- Botón y LED con ESP-NOWIntermedio
- Monitor de energía PZEM-004T con ESP32Intermedio
- Pintura táctil ILI9488 con ESP32Intermedio
- Pintura táctil ST7796S con ESP32Intermedio
- Medidor de nivel de micrófono I2S con ESP32Intermedio
- Reproductor de onda senoidal I2S con ESP32Intermedio
- Sistema de emergencia de tráfico con RFID y ESP32Intermedio
- Servidor web del clima con DHT22 y ESP32Intermedio
- Servidor web con dos LED y ESP32Principiante
- Servidor web asíncrono con ESP32: BME280, control deslizante y reléIntermedio
- Timbre con Telegram y sensor PIR con ESP32Intermedio
- Reloj NTP en una pantalla TM1637 con ESP32Principiante
- Lámpara por serie Bluetooth con ESP32Principiante
- Lámpara por BLE UART con ESP32Intermedio
- Parpadeo en MicroPython en un ESP32Principiante
- Interrupción de botón en MicroPython en un ESP32Principiante
- Desvanecimiento PWM en MicroPython en un ESP32Principiante
- DHT22 en un ESP32 con MicroPythonPrincipiante
- OLED SSD1306 en un ESP32 con MicroPythonPrincipiante
- Clima por WiFi en MicroPython en un ESP32Intermedio
- Analizador de espectro de audioAvanzado
- Ojos animatrónicosAvanzado
- An ESP32 and an Arduino Uno talking over serialIntermedio
Componentes conectados al ESP32 DevKit V1, paso a paso
Cada página tiene el cableado con los nombres de pin propios del ESP32 DevKit V1, el código, los errores comunes y el circuito funcionando.
- ESP32 DHT22
- ESP32 SSD1306 OLED
- ESP32 I2C LCD
- Servo con ESP32
- ESP32 HC-SR04
- NeoPixel con ESP32
- Botón con ESP32
- Potenciómetro con ESP32
- Buzzer con ESP32
- Relé con ESP32
- Sensor PIR con ESP32
- ESP32 MPU6050
- ESP32 BMP280
- ESP32 DS18B20
- Receptor IR con ESP32
- Teclado con ESP32
- Pantalla TM1637 con ESP32
- Motor a pasos 28BYJ-48 con ESP32
- ESP32 RC522 RFID
- ESP32 LDR
- ESP32 BME280
- Joystick con ESP32
- Pantalla de 7 segmentos con ESP32
- ESP32 DS3231 RTC
Tutoriales que usan esta placa
Cada uno termina en un circuito funcionando, en esta misma placa.
- El pinout del ESP32 DevKit V1: cada pin y cuáles evitar
- analogRead en un ESP32: 12 bits, atenuación y ADC2
- Uno contra ESP32 contra Pico: con cuál empezar
- Diez proyectos con ESP32 para principiantes, en orden
- Un ESP32 y un Arduino Uno en una misma simulación
- Una solicitud HTTP GET: obtener el clima como JSON
- MicroPython en el ESP32: parpadeo, un botón, PWM, un DHT22, una OLED y WiFi
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.
Las otras placas
Todas estas funcionan hoy, y todas son gratis.
¿Buscas la introducción más corta? Mira la página del simulador de ESP32 DevKit.
Un chip RISC-V a 160 MHz, sobre el mapa de memoria real.
El Arduino clásico, con un ATmega328P a 16 MHz.
El chip del Uno en una placa pequeña que cabe en una protoboard.
El Arduino grande, con 54 pines digitales y cuatro puertos serie.
Una placa con forma de Uno cuyo chip maneja su propio USB serie.
Una segunda placa RISC-V, con 31 pines y WiFi simulado.
El ESP32-S3 a 240 MHz, con USB serie y un LED RGB.
El ESP8266 del NodeMCU a 80 MHz, con WiFi simulado.
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.