ESP32-S3 simulator, on an Xtensa LX7 core
O Mokxi modela a ESP32-S3-DevKitC-1: um ESP32-S3-WROOM-1 com seu Xtensa LX7 a 240 MHz, a matriz de GPIO, o IO MUX, a UART0, a porta serial USB do próprio chip, o SYSTIMER, o ADC1, o controlador PWM LEDC e o RMT que aciona o LED RGB da placa, nos endereços do manual de referência técnica da Espressif. Um núcleo, não dois, e sem rádio (o WiFi aqui é simulado, e avisa), e o contrato diz quais números foram conferidos e quais são suposições.
- 9áreas de periféricos modeladas
- 6projetos 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 LX7 no ABI com janelas: para tudo que o compilador emite, é o conjunto de instruções do LX6, com os nÃveis de interrupção próprios do S3. Uma instrução por ciclo a 240 MHz
- Memória
- 416 KB de SRAM1 vistos pelos dois barramentos, em 0x4037_8000 para código e 0x3FC8_8000 para dados, os mesmos bytes, e a SRAM2 depois dela
- Matriz de GPIO e IO MUX
- GPIO 0 a 48 com a divisão real em dois registradores, os pulls de reset do manual em cada pad, e a tabela de funções que faz de 26 a 32 a flash
- UART0 e serial USB
- UART0 no ritmo do baud rate configurado, e a porta USB Serial/JTAG em pacotes de 64 bytes por vez; o monitor serial ouve as duas
- SYSTIMER
- Unidade 0 a 16 MHz por trás de millis() e micros(); delay() coloca o núcleo em espera no CCOMPARE0 em vez de ficar girando
- ADC1
- Doze bits em dez canais, GPIO 1 a 10, com as quatro atenuações
- LEDC
- Oito canais e quatro timers em qualquer pino, com os bits de atualização de que o S3 precisa, por trás de analogWrite, ledcAttach e ledcWrite
- RMT e o LED RGB
- Quatro canais de transmissão com sua RAM, modo wrap e portadora; rgbLedWrite envia um quadro WS2812 e o LED da placa no GPIO48 (GPIO38 na v1.1) acende com ele
- 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 LE são simulados, e toda página que os menciona diz isso.
- O segundo núcleo. Um S3 de verdade tem dois núcleos LX7; este modelo roda o núcleo 0, então qualquer coisa que inicie uma tarefa no núcleo 1 não vai rodar.
- A FPU e as instruções vetoriais do S3: um binário compilado em outro lugar que as use dá falha. Os sketches compilados aqui usam ponto flutuante por software, então contas com float funcionam.
- A SRAM0, o cache, a flash e a PSRAM, os coprocessadores RTC e ULP, o deep sleep, o ADC2, o sensor de toque, os grupos de timers e os controladores I2C e SPI (Wire e SPI aqui são software em pinos comuns, como em toda placa).
- Alguns números são suposição deste modelo, e não uma página do manual: o mais um do divisor de clock da UART, o layout da RAM do RMT por canal, a fase da portadora, a temporização dos pacotes USB e o fundo de escala do ADC. 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 da ESP32-S3-DevKitC-1
Cada um tem sua própria página com o circuito rodando, o código e uma lista de componentes.
Componentes ligados à ESP32-S3-DevKitC-1, passo a passo
Cada página traz a ligação com os nomes de pino da própria ESP32-S3-DevKitC-1, o código, os erros comuns e o circuito rodando.
- ESP32-S3 DHT22
- ESP32-S3 SSD1306 OLED
- ESP32-S3 I2C LCD
- Servo com ESP32-S3
- ESP32-S3 HC-SR04
- NeoPixel com ESP32-S3
- ESP32-S3 MPU6050
- ESP32-S3 BMP280
- Potenciômetro com ESP32-S3
- Buzzer com ESP32-S3
- ESP32-S3 DS18B20
- Teclado matricial com ESP32-S3
- Motor de passo 28BYJ-48 com ESP32-S3
- Sensor PIR com ESP32-S3
- ESP32-S3 RC522 RFID
- Receptor IR com ESP32-S3
Tutoriais que usam esta placa
Cada um termina num circuito rodando, nesta mesma placa.
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.
Qual é a revisão, v1.0 ou v1.1?
Qualquer uma: a propriedade de revisão da placa escolhe. A única diferença que a Espressif lista é o LED RGB, no GPIO48 nas primeiras placas e no GPIO38 na v1.1. Os exemplos são feitos para o GPIO48, como a definição de placa do core do Arduino, então na v1.1 o LED fica apagado, como ficaria numa bancada.
Em qual porta está o Serial?
UART0, o conector "UART" com a ponte USB-UART, que é o que Serial é no core do Arduino com USB CDC On Boot desligado. USBSerial é a porta USB do próprio chip. O monitor serial daqui escuta as duas.
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, e por baixo não há rádio nem 802.11. 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 meu potenciômetro lê 4095 antes do fim do curso?
Porque a faixa do datasheet com a atenuação padrão de 12 dB termina em 2,9 V e a sua alimentação é de 3,3 V. Este modelo lê 4095 de 2,9 V para cima, e diz no contrato que um componente real guarda um pouco mais de folga.
Roda os dois núcleos?
Um. O núcleo 0 roda; não há segundo núcleo 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-S3.
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 clássico a 240 MHz, com WiFi simulado.
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.