ESP-Mosaico: placa modular da Espressif com ESP32-S31, tela AMOLED e foco em agentes de IA

A Espressif anunciou o ESP-Mosaico, uma plataforma de desenvolvimento modular baseada no ESP32-S31 e pensada para criar hardware com ajuda de agentes de programação por IA. O núcleo é um dispositivo compacto com tela AMOLED quadrada de 2,16″ e 480 x 480 pixels, áudio, IMU, dois magnetômetros, bateria interna e dois conectores laterais para módulos de expansão, como câmera e um módulo de interação. Várias unidades podem ser encaixadas lado a lado e funcionar como uma única aplicação.
Nesse artigo vamos conhecer o hardware do ESP-Mosaico em detalhe, entender como funciona o sistema de módulos e as duas formas de desenvolvimento que a Espressif propõe para a placa: Chat Coding e Vibe Coding.
Por que uma placa modular pensada para agentes de IA
A Espressif parte de uma constatação: o software já é gerado e modificado rapidamente com IA, mas o hardware continua preso a placas, interfaces e formatos fixos. A proposta do ESP-Mosaico é deixar o hardware extensível do mesmo jeito, adicionando recursos conforme a ideia evolui, sem precisar definir o formato final do dispositivo logo no começo. O nome vem daí: peças individuais que, combinadas, formam algo maior.
A outra metade da proposta é fazer o agente de IA saber qual hardware está conectado naquele momento. Os módulos são identificados automaticamente pelo sistema, e essa informação é usada pelo agente para gerar código que conversa com o que está de fato plugado na placa, reduzindo o trabalho repetitivo de fiação e adaptação de drivers.
Hardware do ESP-Mosaico
Fisicamente, o ESP-Mosaico é formado por duas placas: a CoreBoard e a BaseBoard, ligadas por um conector board-to-board de 60 pinos com passo de 0,5 mm. A CoreBoard concentra o SoC, a antena, o gerenciamento de energia, o conector do display, o codec de áudio e os sensores. A BaseBoard carrega o alto-falante, a bateria, um conversor buck dedicado para o 3,3 V externo e os dois conectores de expansão.
O processador é o ESP32-S31NRV16, com dois núcleos RISC-V de 32 bits a até 320 MHz, 512 KB de SRAM e 16 MB de PSRAM dentro do encapsulamento. Na conectividade, o chip traz Wi-Fi 6 em 2,4 GHz, Bluetooth 5.4 (LE e BR/EDR) e IEEE 802.15.4, com suporte a Thread 1.4 e Zigbee 3.0. Do lado multimídia, o ESP32-S31 tem codec JPEG em hardware, acelerador de processamento de pixels, controladores de LCD e câmera, USB 2.0 High-Speed OTG, MAC Ethernet, controlador CAN-FD e instruções SIMD em um dos núcleos. A nota de imprensa cita suporte a até 32 MB de PSRAM, que é o limite do chip; a versão usada no ESP-Mosaico vem com 16 MB.
Para armazenamento, além da PSRAM, a placa tem 16 MB de flash SPI NOR (GD25Q128E) para programa e dados e 1 Gbit (128 MB) de flash SPI NAND (GD5F1GM7UE) para imagens, áudio e outros recursos da aplicação. Esse NAND é o que viabiliza interfaces gráficas mais pesadas numa tela de 480 x 480 sem disputar espaço com o firmware.
A tela é um AMOLED quadrado de 2,16″, com controlador CO5300 ligado ao SoC por QSPI, e touch capacitivo com controlador da série CST9220 via I2C. Para sensoriamento de movimento há uma IMU de 6 eixos Bosch BMI270 e dois magnetômetros de 3 eixos Bosch BMM150, posicionados em pontos diferentes da CoreBoard.
O áudio usa o codec mono ES8311, conectado por I2S e alimentado por um LDO dedicado (HE9073A33) para reduzir ruído, o amplificador classe D NS4150B de 3 W, microfone onboard e alto-falante. A resposta tátil fica por conta de um motor de vibração acionado pelo GPIO8 através de um MOSFET.
A parte de energia é mais elaborada do que o tamanho do dispositivo sugere: bateria de Li-ion de 3,7 V e 65 mAh, carregador TP4057, fuel gauge BQ27220 para medir tensão, corrente e estado de carga, controlador de liga/desliga SAM8108 associado ao botão POWER, controlador USB Type-C HUSB320, dois conversores buck TLV62569 e um boost SY7088. A porta Type-C também funciona como fonte: quando um dispositivo USB é conectado, ela passa para modo source e entrega até 5 V / 500 mA, com desligamento automático acima de 1 A.
Um detalhe que chama atenção é a capacidade da bateria. Com 65 mAh alimentando Wi-Fi e uma tela AMOLED, a autonomia fica curta, e a corrente de carga de 65 mA indica que ela foi pensada para recargas rápidas e uso intermitente longe do cabo. A própria Espressif oferece um Battery Module como acessório para estender o uso portátil.
Completam o hardware os botões POWER, BOOT e um botão de função (chamado de AI KEY, no GPIO7), o LED de carga e uma fileira de pads na parte de trás da BaseBoard com GND, BOOT, RST, RX, TX e 5V, que servem para debug e também para alimentar o dispositivo.
Diagrama de blocos
Especificações completas
| Componente | Especificação |
|---|---|
| SoC | Espressif ESP32-S31NRV16, 2 núcleos RISC-V 32 bits, até 320 MHz, 512 KB SRAM |
| PSRAM | 16 MB in-package |
| Flash NOR | 16 MB SPI NOR (GD25Q128EWIGR) |
| Flash NAND | 1 Gbit / 128 MB SPI NAND (GD5F1GM7UEYIGR) |
| Wi-Fi | Wi-Fi 6, 2,4 GHz (IEEE 802.11b/g/n/ax) |
| Bluetooth | Bluetooth 5.4, LE + BR/EDR |
| 802.15.4 | Thread 1.4, Zigbee 3.0 |
| Antena | Cerâmica 2,4 GHz KH-3216-A35 |
| Display | AMOLED 2,16″, 480 x 480, QSPI, controlador CO5300 |
| Touch | Controlador série CST9220, I2C (0x5A) |
| IMU | Bosch BMI270, 6 eixos, I2C (0x69) |
| Magnetômetros | 2x Bosch BMM150, 3 eixos, I2C (0x11 e 0x12) |
| Codec de áudio | ES8311, mono, I2S + I2C (0x19), LDO dedicado HE9073A33 |
| Amplificador | NS4150B, classe D, 3 W, mono |
| Microfone | LMA2718B331-OE1, onboard |
| Alto-falante | Onboard |
| Háptico | Motor de vibração (GPIO8) |
| USB | 1x USB Type-C, USB 2.0 High-Speed OTG (alimentação, gravação, debug e dados), saída de 5 V / 500 mA em modo source |
| Controlador Type-C | HUSB320 |
| Expansão | 2x conectores 2 x 10 pinos, passo 2,54 mm (H2 esquerdo, H1 direito), com GPIO, I2C, UART, USB Serial/JTAG e alimentação |
| Pads traseiros | GND, BOOT, RST, RX, TX, 5V, GND |
| Botões | POWER, BOOT, função/AI KEY (GPIO7) |
| LEDs | LED de carga (V1.2: laranja carregando, branco carregado) |
| Bateria | Li-ion 3,7 V, 65 mAh |
| Carregador | TP4057, corrente de carga de 65 mA |
| Fuel gauge | BQ27220, I2C (0x55) |
| Controle de energia | SAM8108 (liga/desliga), TLV62569 (2x buck), SY7088 (boost) |
| Alimentação | USB-C 5 V, bateria, pads traseiros e pino 5V_IN dos conectores de expansão |
| Interconexão interna | Conector board-to-board de 60 pinos, passo 0,5 mm |
| Gabinete | Impressão 3D em resina, arquivos STL oficiais disponíveis |
| Montagem | Magnética, com suporte a múltiplos dispositivos |
Módulos de expansão e como a placa os reconhece
Os dois conectores laterais, H2 à esquerda e H1 à direita, têm 2 x 10 pinos com passo de 2,54 mm. Fora alimentação e GND, todos os pinos de sinal podem ser remapeados pela matriz de GPIO do ESP32-S31. As marcações de ADC, TOUCH, COMP e DAC na documentação indicam recursos analógicos de cada pino, sem impedir o uso como GPIO comum.
A identificação automática de módulos, que a Espressif apresenta como um dos pilares da plataforma, tem uma implementação simples: cada módulo carrega uma EEPROM no barramento I2C externo (GPIO0 e GPIO1). O BSP diferencia os lados pelo endereço, 0x50 para o slot esquerdo (seleção pelo GPIO14 em nível baixo) e 0x51 para o direito (GPIO39 em nível alto). A EEPROM fica no módulo, não na placa principal, então só aparece no barramento quando há algo conectado.
O slot direito é montado girado 180° em relação ao esquerdo. Olhando as tabelas de pinagem, os pinos 14 a 20 são iguais nos dois lados: SCL, SDA, 5V_IN, 5V_OUT, 3,3 V e GND. É isso que permite que a maioria dos módulos funcione em qualquer um dos lados.
Os dois lados não são idênticos no restante. O esquerdo expõe o USB Serial/JTAG (GPIO33 e GPIO34), enquanto o direito traz a UART0 (TX no GPIO58, RX no GPIO59). No lado direito, cinco pinos (GPIO49, 52, 54, 37 e 40) são compartilhados com o barramento I2S do codec. Na prática, um módulo que use esses pinos não convive com o áudio onboard: ou se usa o alto-falante e o microfone, ou se libera esses pinos para expansão.
O módulo de câmera só funciona no slot esquerdo. Ele usa a interface DVP e reaproveita o GPIO14 como linha de dados D4, o mesmo pino de seleção da EEPROM, que fica suspensa enquanto a câmera estiver ativa. O módulo aceita ser conectado com a placa ligada, mas não removido. Se for encaixado no lado errado, a orientação é desligar, mover para a esquerda e ligar de novo.
Os conectores também fornecem 3,3 V e 5 V para os módulos, com até 100 mA cada, liberados apenas quando o GPIO60 é levado a nível baixo. O pino 5V_IN funciona no sentido contrário, como entrada para alimentar o dispositivo e carregar a bateria.
Hoje a documentação cobre três acessórios: o Camera Module, o Multi-function Interaction Module e o Battery Module.
Várias unidades funcionando juntas
Vários ESP-Mosaico podem reconhecer a posição e a orientação relativa entre si e sincronizar o estado da aplicação sem fio. Com isso, as unidades podem ser unidas, separadas ou reorganizadas como parte da própria aplicação, em jogos que atravessam telas, painéis de informação modulares e interfaces de controle que se adaptam ao arranjo físico.
A documentação de hardware não explica como a posição relativa é detectada. A montagem magnética, junto com os dois magnetômetros BMM150 em pontos diferentes da placa e a IMU, são os candidatos naturais para isso, mas essa é uma leitura das especificações e não uma informação oficial da Espressif.
Duas formas de desenvolver: Chat Coding e Vibe Coding
A Espressif propõe dois caminhos complementares para programar o ESP-Mosaico.
Chat Coding com ESP-Claw
O Chat Coding é voltado a quem está começando em programação ou em desenvolvimento assistido por IA. Ele roda sobre o ESP-Claw, o framework de agente de IA embarcado no ESP-Mosaico. O usuário descreve em linguagem natural o que quer construir e o ESP-Claw gera, compila e grava a aplicação usando o hardware conectado, sem exigir toolchain instalada no computador. Um toque longo no AI KEY abre essa função direto no dispositivo.
Depois de gravada, a parte da aplicação que não depende de serviço online (interface, lógica e controle de periféricos) roda localmente na placa. O refinamento continua por conversa, adicionando funções, mudando comportamento ou ajustando a interface.
O firmware de fábrica é open source e, segundo a loja oficial, compatível com LLMs como ChatGPT, Claude e DeepSeek, além de provedores personalizados.
As aplicações podem ser empacotadas como Skills no Skills Lab: pacotes com scripts Lua, recursos gráficos e dependências de periféricos. Dá para instalar Skills prontas, adaptar as existentes ou publicar as próprias para outros usuários, pelo portal Mosaico.ai.
Vibe Coding com agentes no desktop
O Vibe Coding é o caminho para desenvolvimento mais avançado. A ideia é colocar um agente de programação rodando no computador dentro do ciclo completo de construir, testar e depurar, com o desenvolvedor definindo objetivos, restrições e critérios de aceitação. Para isso, a plataforma oferece:
- Desenvolvimento de UI orientado a especificação, com regras de design, componentes, recursos e restrições definidos para o agente.
- ESP-GSP, um framework de UI orientado a IA em que as interfaces são descritas em JSON estruturado, validadas no build, simuladas no PC e depois gravadas no ESP32.
- Depuração em malha fechada, expondo gravação, controle do dispositivo, entradas, estado da UI, dados de desempenho e informações de falha por interfaces unificadas, para que o agente analise o resultado e itere.
- Recursos prontos para agentes: BSPs, SDKs, esquemáticos, projetos de referência, documentação e “Agent References”.
O ESP-Mosaico também é suportado no ESP ZeroCode AI, com simulação completa da placa e dos periféricos e projetos da comunidade.
Desenvolvimento direto com ESP-IDF
Nada disso impede o uso convencional. A placa é programada com ESP-IDF tendo esp32s31 como target, e a Espressif mantém um BSP que inicializa display, touch, áudio, sensores, bateria, NAND, recursos dos módulos e console USB.
Um ponto de atenção para a primeira gravação: o ESP32-S31 nativo só aceita download pela porta Type-C em modo de download e não oferece auto-download nem saída de log sozinho. Quem resolve isso é o firmware de fábrica e o BSP, que implementam um console USB CDC com auto-download. Se a gravação falhar, basta segurar BOOT com o dispositivo desligado e então ligá-lo. Como alternativa, o USB Serial/JTAG do slot esquerdo e a UART do slot direito também servem para debug e gravação.
idf.py set-target esp32s31
idf.py -p /dev/ttyACM0 flash monitorAs opções CONFIG_BSP_USB_CONSOLE, CONFIG_BSP_USB_CONSOLE_AUTO_INIT e CONFIG_BSP_USB_AUTO_DOWNLOAD controlam esse comportamento. O firmware de fábrica pode ser regravado direto pelo navegador, na página de atualização online, e os esquemáticos da CoreBoard e da BaseBoard estão publicados em PDF.
Versões V1.0 e V1.2
A CoreBoard já tem duas revisões, identificadas pela serigrafia. As mudanças da V1.2 em relação à V1.0:
- LCD_RST e LCD_SCL trocados (V1.2: LCD_RST no GPIO44, LCD_SCL no GPIO42).
- LED de carga passou de vermelho/verde para laranja/branco.
- Removidos o LED laranja programável (GPIO3), o LED de 3,3 V e o controle independente do domínio de energia do codec (GPIO56).
- Dispositivos onboard e módulos separados em dois barramentos I2C: I2C0 interno (SDA no GPIO56, SCL no GPIO3) e I2C1 externo (SDA no GPIO0, SCL no GPIO1).
- O 3,3 V externo ganhou um conversor DC-DC próprio, para que os módulos não afetem a alimentação do microcontrolador.
As duas últimas mudanças são as mais relevantes para quem vai criar módulos: um módulo com problema no barramento I2C ou com consumo alto não derruba mais o touch, os sensores ou o próprio MCU.
Disponibilidade
O kit de desenvolvimento está à venda em pré-venda na loja oficial do Mosaico. A opção Vision Combo Kit inclui o Core Unit V1.2, o Camera Module e o Multi-function Interaction Module, e o Battery Module é vendido separadamente. Na época da cobertura do LinuxGizmos, o ESP-Mosaico aparecia com vendedores terceiros no AliExpress por cerca de US$ 117, sem preço oficial divulgado. O gabinete é impresso em resina, e os arquivos STL oficiais estão no MakerWorld para quem quiser imprimir uma versão própria.
Aplicações
A Espressif lista como alvos brinquedos com expansão magnética, sensoriamento de movimento, IHMs com tela quadrada e aplicações de voz e multimídia na borda. A combinação de várias unidades abre espaço para painéis modulares, jogos que se estendem por mais de uma tela e interfaces de controle montadas conforme o espaço disponível. O NAND de 128 MB e o codec JPEG do ESP32-S31 ajudam nos casos com muitas imagens e animações.
Conclusão
O ESP-Mosaico é ao mesmo tempo, uma vitrine do ESP32-S31 e uma aposta da Espressif em desenvolvimento de hardware com agentes de IA. O hardware em si é bem documentado: pinagem completa, endereços I2C, esquemáticos e BSP no ESP-IDF, o que permite usar a placa sem passar pelo ESP-Claw. Por outro lado, quem quiser explorar o Chat Coding ou o Vibe Coding encontra uma estrutura pensada para isso, com módulos detectados por EEPROM, UI descrita em JSON e depuração exposta para o agente. A bateria de 65 mAh e o compartilhamento de pinos entre o slot direito e o codec são os pontos a considerar antes de planejar um projeto portátil ou com muitos módulos.
Referências
- ESP-Mosaico (documentação ESP-Dev-Kits): https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s31/esp-mosaico/index.html
- ESP-Mosaico V1.2 User Guide: https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s31/esp-mosaico/user_guide.html
- Camera Module User Guide: https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s31/esp-mosaico/user_guide_camera.html
- Multi-function Interaction Module User Guide: https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s31/esp-mosaico/user_guide_interact.html
- ESP32-S31 Datasheet: https://documentation.espressif.com/esp32-s31_datasheet_en.html
- Site oficial: https://mosaico.espressif.com/
- Guia da aplicação de fábrica: https://mosaico.espressif.com/guide/
- Atualização de firmware online: https://mosaico.espressif.com/firmware-update/
- ESP-Claw: https://esp-claw.com/en/
- ESP ZeroCode AI: https://esp-zerocode.ai/
- Loja oficial: https://store.mosaico.ai/products/esp-mosaico
- STL oficiais (MakerWorld): https://makerworld.com/en/@ESP_MOSAICO
Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.


