fix(i18n): eliminate portuguese text leaks across english routes
CI / Lint e auditorias (push) Successful in 50s
CI / Trivy (dependências e segredos) (push) Successful in 10s
CI / Imagem Docker (linux/arm64) (push) Successful in 2m31s

- Localize skip-to-content accessibility link and breadcrumb navigation
- Convert section layouts to dynamic generateMetadata with English titles, descriptions, and structured data
- Eliminate mixed language expressions and translate remaining SoC connection pin warnings and descriptions
- Translate component registry items, categories, tags, and IDF Component Manager guide
- Add strict identical string verification to scripts/check-i18n.mjs with technical allowlist

Co-Authored-By: Antigravity <noreply@google.com>
This commit is contained in:
Lucas RayanandAntigravity committed 2026-11-01 17:17:33 -03:00
1 parent c1bd2c7e11
commit 47c55515bb
35 files changed
+2353 -1874

No files matched your search

+250 -258
View File
@@ -1,8 +1,8 @@
/**
* Base de Dados Oficial Curada: ESP Component Registry & IDF Component Manager
* Official Curated Database: ESP Component Registry & IDF Component Manager
*
* O ESP Component Registry (https://components.espressif.com) é o ecossistema
* central de distribuição de bibliotecas modulares para o ESP-IDF v4.4+ / v5.x+.
* The ESP Component Registry (https://components.espressif.com) is the central
* distribution ecosystem for modular libraries targeting ESP-IDF v4.4+ / v5.x+.
*/
export const CATEGORIAS_COMPONENTES = [
@@ -26,33 +26,33 @@ export const CATEGORIAS_COMPONENTES = [
},
{
id: "audio_voz_ia",
nome: "Áudio, Voz & IA",
nome: "Audio, Voice & AI",
icone: "Brain",
descricao: "Reconhecimento de fala ESP-SR, processamento DSP, codecs, câmeras DVP e TinyML"
descricao: "ESP-SR speech recognition, DSP processing, audio codecs, DVP cameras and TinyML"
},
{
id: "smart_home_mesh",
nome: "Smart Home & Mesh",
icone: "Home",
descricao: "Matter SDK, pilhas Zigbee 3.0 (ZBOSS), Thread e redes ESP-NOW"
descricao: "Matter SDK, Zigbee 3.0 (ZBOSS) stacks, Thread and ESP-NOW networks"
},
{
id: "drivers_perifericos",
nome: "Drivers & Sensores",
nome: "Drivers & Sensors",
icone: "Cpu",
descricao: "Botões, encoders, LEDs RGB, Ethernet (W5500/CH390), USB nativo e sensores ambientais/IMU"
descricao: "Buttons, encoders, RGB LEDs, Ethernet (W5500/CH390), native USB and environmental/IMU sensors"
},
{
id: "bsp_placas",
nome: "BSPs (Board Support Packages)",
icone: "CircuitBoard",
descricao: "Pacotes de suporte direto para placas oficiais como ESP-BOX-3, Korvo, EYE e M5Stack"
descricao: "Direct board support packages for official boards like ESP-BOX-3, Korvo, EYE and M5Stack"
},
{
id: "sistema_utilitarios",
nome: "Sistema & Utilitários",
nome: "System & Utilities",
icone: "Wrench",
descricao: "Sistemas de arquivos LittleFS, wrappers C++ modernos, CBOR e utilitários de rede"
descricao: "LittleFS file systems, modern C++ wrappers, CBOR and networking utilities"
}
];
@@ -69,8 +69,8 @@ export const COMPONENTES_REGISTRY = [
oficial: true,
popular: true,
titulo: "ESP LVGL Port",
descricao: "Port oficial e thread-safe do LVGL (Light and Versatile Graphics Library) para ESP-IDF com aceleração por hardware e suporte multi-display.",
tags: ["LVGL", "GUI", "Display", "Touch", "IHM"],
descricao: "Official thread-safe LVGL (Light and Versatile Graphics Library) port for ESP-IDF with hardware acceleration and multi-display support.",
tags: ["LVGL", "GUI", "Display", "Touch", "HMI"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-P4", "ESP32-C3", "ESP32-C6"],
dependenciasSugeridas: ["lvgl/lvgl^9.1.0"],
urlRegistry: "https://components.espressif.com/components/espressif/esp_lvgl_port",
@@ -88,7 +88,7 @@ export const COMPONENTES_REGISTRY = [
oficial: false,
popular: true,
titulo: "LVGL Graphics Library Core",
descricao: "Biblioteca gráfica de código aberto em C mais popular para sistemas embarcados. Fornece widgets ricos, animações fluidas e suporte a layouts modernos.",
descricao: "Most popular open-source C graphics library for embedded systems. Provides rich widgets, smooth animations, and modern layout support.",
tags: ["LVGL 9", "Graphics", "Widgets", "GUI", "Embedded UI"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-P4", "ESP32-C3", "ESP32-C6"],
urlRegistry: "https://components.espressif.com/components/lvgl/lvgl",
@@ -105,7 +105,7 @@ export const COMPONENTES_REGISTRY = [
oficial: true,
popular: true,
titulo: "ESP32 Display Panel Driver",
descricao: "Driver unificado de controladores LCD (RGB, SPI, QSPI, MIPI-DSI) e touch capacitivo desenhado especialmente para ESP32-S3 e ESP32-P4.",
descricao: "Unified driver for LCD controllers (RGB, SPI, QSPI, MIPI-DSI) and capacitive touch panels tailored for ESP32-S3 and ESP32-P4.",
tags: ["LCD", "MIPI-DSI", "QSPI", "Touch", "ST7789", "ILI9341"],
chips: ["ESP32-S3", "ESP32-P4", "ESP32-S2", "ESP32"],
urlRegistry: "https://components.espressif.com/components/espressif/esp32_display_panel",
@@ -122,8 +122,8 @@ export const COMPONENTES_REGISTRY = [
oficial: true,
popular: true,
titulo: "ESP LCD Touch Framework",
descricao: "Componente central de abstração de painéis touch para telas LCD. Suporta calibragem de coordenadas, leitura de múltiplos toques e integração direta com LVGL.",
tags: ["Touchscreen", "Capacitivo", "Resistivo", "I2C Touch", "Coordenadas"],
descricao: "Core touch panel abstraction component for LCDs. Supports coordinate calibration, multi-touch tracking, and direct LVGL integration.",
tags: ["Touchscreen", "Capacitive", "Resistive", "I2C Touch", "Coordinates"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-P4", "ESP32-C3", "ESP32-C6"],
urlRegistry: "https://components.espressif.com/components/espressif/esp_lcd_touch",
urlRepo: "https://github.com/espressif/esp-iot-solution/tree/master/components/display/touch_panel/esp_lcd_touch",
@@ -138,48 +138,51 @@ export const COMPONENTES_REGISTRY = [
categoria: "ui_display",
oficial: true,
popular: true,
titulo: "Driver Touch Capacitivo GT911",
descricao: "Driver I2C especializado para o controlador de touch capacitivo Goodix GT911, amplamente utilizado em displays de 4.3\", 5\" e 7\" para ESP32-S3 e P4.",
tags: ["GT911", "Goodix", "Touch Capacitivo", "Multitouch", "I2C"],
titulo: "GT911 Capacitive Touch Driver",
descricao: "Specialized I2C driver for Goodix GT911 capacitive touch controllers, widely used in 4.3\", 5.0\", and 7.0\" LCD modules.",
tags: ["GT911", "Goodix", "Touch I2C", "Capacitive"],
chips: ["ESP32", "ESP32-S3", "ESP32-P4", "ESP32-S2"],
dependenciasSugeridas: ["espressif/esp_lcd_touch^1.1.2"],
urlRegistry: "https://components.espressif.com/components/espressif/esp_lcd_touch_gt911",
urlRepo: "https://github.com/espressif/esp-iot-solution/tree/master/components/display/touch_panel/esp_lcd_touch_gt911",
exemploYaml: `dependencies:
espressif/esp_lcd_touch_gt911: "^1.1.2"`
espressif/esp_lcd_touch_gt911: "^1.1.2"
espressif/esp_lcd_touch: "^1.1.2"`
},
{
id: "espressif-esp_lcd_touch_ft5x06",
namespace: "espressif",
name: "esp_lcd_touch_ft5x06",
versao: "^1.1.0",
versao: "^1.1.2",
categoria: "ui_display",
oficial: true,
popular: false,
titulo: "Driver Touch FocalTech FT5x06 / FT6x36",
descricao: "Driver de painel touch capacitivo para controladores FocalTech (FT5206, FT5316, FT5436, FT6236, FT6336) com suporte a gestos e interrupções.",
tags: ["FT6236", "FT5x06", "FocalTech", "Touch", "I2C"],
chips: ["ESP32", "ESP32-S3", "ESP32-P4", "ESP32-S2", "ESP32-C3"],
titulo: "FocalTech FT5x06 / FT6x36 Touch Driver",
descricao: "Capacitive touch panel driver for FocalTech controllers commonly integrated into maker displays and development modules.",
tags: ["FT6236", "FT5406", "Touchscreen", "I2C"],
chips: ["ESP32", "ESP32-S3", "ESP32-C3"],
dependenciasSugeridas: ["espressif/esp_lcd_touch^1.1.2"],
urlRegistry: "https://components.espressif.com/components/espressif/esp_lcd_touch_ft5x06",
urlRepo: "https://github.com/espressif/esp-iot-solution/tree/master/components/display/touch_panel/esp_lcd_touch_ft5x06",
exemploYaml: `dependencies:
espressif/esp_lcd_touch_ft5x06: "^1.1.0"`
espressif/esp_lcd_touch_ft5x06: "^1.1.2"`
},
{
id: "espressif-esp_jpeg",
namespace: "espressif",
name: "esp_jpeg",
versao: "^1.3.0",
versao: "^1.0.5",
categoria: "ui_display",
oficial: true,
popular: false,
popular: true,
titulo: "ESP JPEG Decoder (TJpgDec)",
descricao: "Decodificador e codificador JPEG de alta velocidade com otimizações SIMD em Assembly para exibir imagens e streams de câmeras em displays sem atrasos.",
tags: ["JPEG", "TJpgDec", "Câmera", "Imagem", "SIMD"],
chips: ["ESP32", "ESP32-S3", "ESP32-P4", "ESP32-C3"],
descricao: "High-speed JPEG decoder and encoder optimized with assembly and SIMD instructions for rapid rendering on RGB and SPI displays.",
tags: ["JPEG", "TJpgDec", "Image Decoder", "Display", "SIMD"],
chips: ["ESP32", "ESP32-S3", "ESP32-P4"],
urlRegistry: "https://components.espressif.com/components/espressif/esp_jpeg",
urlRepo: "https://github.com/espressif/esp-jpeg",
exemploYaml: `dependencies:
espressif/esp_jpeg: "^1.3.0"`
espressif/esp_jpeg: "^1.0.5"`
},
// ==========================================
@@ -194,9 +197,10 @@ export const COMPONENTES_REGISTRY = [
oficial: true,
popular: true,
titulo: "ESP RainMaker Agent",
descricao: "Agente oficial de firmware para a plataforma de nuvem AIoT ESP RainMaker. Habilita controle por app móvel, Alexa, Google Home e OTA.",
tags: ["RainMaker", "AWS Cloud", "App iOS/Android", "Alexa", "Google Home", "OTA"],
descricao: "Official firmware agent for Espressif's serverless AIoT cloud platform. Handles dynamic data modeling, OTA, and mobile app integration.",
tags: ["RainMaker", "AWS IoT", "Cloud", "App Control", "Zero-Code-Backend"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C3", "ESP32-C6"],
dependenciasSugeridas: ["espressif/net_connect^0.1.0"],
urlRegistry: "https://components.espressif.com/components/espressif/esp_rainmaker",
urlRepo: "https://github.com/espressif/esp-rainmaker",
exemploYaml: `dependencies:
@@ -206,69 +210,69 @@ export const COMPONENTES_REGISTRY = [
id: "espressif-mesh_lite",
namespace: "espressif",
name: "mesh_lite",
versao: "^1.2.0",
versao: "^1.0.2",
categoria: "cloud_conectividade",
oficial: true,
popular: true,
titulo: "ESP Mesh-Lite Network Stack",
descricao: "Rede em malha Wi-Fi leve onde cada nó possui conectividade IP independente, permitindo comunicação direta na rede local e acesso à nuvem com múltiplos saltos.",
tags: ["Mesh", "Wi-Fi Mesh", "Rede em Malha", "IoT Distribuída", "IP Layer"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C3", "ESP32-C6"],
descricao: "Lightweight Wi-Fi mesh network where every node maintains IP connectivity, communicating directly with local servers or cloud platforms.",
tags: ["Mesh-Lite", "Wi-Fi Mesh", "IoT Network", "No-Gateway"],
chips: ["ESP32", "ESP32-C3", "ESP32-S3", "ESP32-C6"],
urlRegistry: "https://components.espressif.com/components/espressif/mesh_lite",
urlRepo: "https://github.com/espressif/esp-mesh-lite",
exemploYaml: `dependencies:
espressif/mesh_lite: "^1.2.0"`
espressif/mesh_lite: "^1.0.2"`
},
{
id: "espressif-esp_modbus",
namespace: "espressif",
name: "esp_modbus",
versao: "^1.0.15",
versao: "^2.0.0",
categoria: "cloud_conectividade",
oficial: true,
popular: true,
titulo: "ESP-Modbus Industrial Stack",
descricao: "Implementação completa da pilha industrial Modbus (Master/Slave) suportando interfaces RS-485 (RTU/ASCII) e Ethernet/Wi-Fi (Modbus TCP).",
tags: ["Modbus", "RS-485", "Modbus TCP", "Automação Industrial", "PLC"],
descricao: "Complete industrial Modbus stack (Master/Slave) over Serial RS485 (RTU/ASCII) and Ethernet/Wi-Fi (TCP) for PLC and SCADA integration.",
tags: ["Modbus RTU", "Modbus TCP", "RS485", "PLC", "Industrial IoT"],
chips: ["ESP32", "ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-P4"],
urlRegistry: "https://components.espressif.com/components/espressif/esp_modbus",
urlRepo: "https://github.com/espressif/esp-modbus",
exemploYaml: `dependencies:
espressif/esp_modbus: "^1.0.15"`
espressif/esp_modbus: "^2.0.0"`
},
{
id: "espressif-net_connect",
namespace: "espressif",
name: "net_connect",
versao: "^1.0.0",
versao: "^0.1.1",
categoria: "cloud_conectividade",
oficial: true,
popular: false,
titulo: "Unified Network Connect",
descricao: "Componente unificado de gerenciamento de conexão de rede, alternando e inicializando de forma transparente Wi-Fi, Ethernet, Thread ou PPP móvel.",
tags: ["Network", "Wi-Fi", "Ethernet", "Fallback", "Conexão Automática"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-P4"],
titulo: "Network Connect Helper",
descricao: "Unified helper module to establish and monitor Wi-Fi, Ethernet, and Thread connections with automatic reconnection and event callbacks.",
tags: ["Wi-Fi Connect", "Ethernet", "Thread", "Network Manager"],
chips: ["ESP32", "ESP32-S3", "ESP32-C3", "ESP32-C6"],
urlRegistry: "https://components.espressif.com/components/espressif/net_connect",
urlRepo: "https://github.com/espressif/esp-idf/tree/master/components",
urlRepo: "https://github.com/espressif/esp-iot-solution",
exemploYaml: `dependencies:
espressif/net_connect: "^1.0.0"`
espressif/net_connect: "^0.1.1"`
},
{
id: "espressif-esp_hosted",
namespace: "espressif",
name: "esp_hosted",
versao: "^0.0.10",
versao: "^2.0.0",
categoria: "cloud_conectividade",
oficial: true,
popular: false,
titulo: "ESP-Hosted Coprocessor",
descricao: "Transforma o ESP32 em um coprocessador de comunicação sem fio (Wi-Fi + BLE) para hosts Linux (Raspberry Pi, i.MX) ou microcontroladores via SPI/SDIO/UART.",
tags: ["Coprocessador", "SDIO", "SPI", "Linux Wi-Fi", "Raspberry Pi"],
chips: ["ESP32", "ESP32-S3", "ESP32-C3", "ESP32-C6"],
titulo: "ESP-Hosted Network Coprocessor",
descricao: "Turns the ESP32 into a Wi-Fi and Bluetooth wireless network card for external Linux hosts (Raspberry Pi) or MCUs via SPI/SDIO/UART.",
tags: ["Network Coprocessor", "SDIO", "SPI Slave", "Linux Wireless"],
chips: ["ESP32", "ESP32-C3", "ESP32-C6"],
urlRegistry: "https://components.espressif.com/components/espressif/esp_hosted",
urlRepo: "https://github.com/espressif/esp-hosted",
exemploYaml: `dependencies:
espressif/esp_hosted: "^0.0.10"`
espressif/esp_hosted: "^2.0.0"`
},
{
id: "espressif-esp-now",
@@ -278,10 +282,10 @@ export const COMPONENTES_REGISTRY = [
categoria: "cloud_conectividade",
oficial: true,
popular: true,
titulo: "ESP-NOW Enhanced & Provisioning",
descricao: "Extensão com recursos avançados de emparelhamento por controle remoto, segurança AES-128 e controle de múltiplos dispositivos com protocolo ESP-NOW.",
tags: ["ESP-NOW", "Sem Fio", "Baixa Latência", "Broadcast", "Controle Remoto"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C3", "ESP32-C6"],
titulo: "ESP-NOW Connectionless Protocol",
descricao: "Direct peer-to-peer wireless protocol by Espressif enabling ultra-fast, low-power communication without a Wi-Fi router.",
tags: ["ESP-NOW", "P2P", "Low Power", "Quick Pairing", "Sub-10ms"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C2", "ESP32-C3", "ESP32-C6"],
urlRegistry: "https://components.espressif.com/components/espressif/esp-now",
urlRepo: "https://github.com/espressif/esp-now",
exemploYaml: `dependencies:
@@ -289,24 +293,24 @@ export const COMPONENTES_REGISTRY = [
},
// ==========================================
// 3. Áudio, Voz & IA
// 3. Audio, Voice & AI
// ==========================================
{
id: "espressif-esp-sr",
namespace: "espressif",
name: "esp-sr",
versao: "^1.5.0",
versao: "^2.0.0",
categoria: "audio_voz_ia",
oficial: true,
popular: true,
titulo: "ESP-SR Speech Recognition",
descricao: "Framework de reconhecimento de fala 100% offline com WakeNet (palavra de ativação), MultiNet (comandos locais) e algoritmos acústicos AFE.",
tags: ["Voz", "WakeNet", "MultiNet", "Reconhecimento de Fala", "Offline", "AEC"],
chips: ["ESP32-S3", "ESP32-P4", "ESP32"],
titulo: "ESP-SR Speech Recognition Framework",
descricao: "Complete offline voice recognition framework: wake word detection (WakeNet), command recognition (MultiNet), acoustic echo cancellation (AEC), and beamforming.",
tags: ["WakeNet", "MultiNet", "Voice Assistant", "AEC", "Offline AI", "Audio DSP"],
chips: ["ESP32-S3", "ESP32-P4"],
urlRegistry: "https://components.espressif.com/components/espressif/esp-sr",
urlRepo: "https://github.com/espressif/esp-sr",
exemploYaml: `dependencies:
espressif/esp-sr: "^1.5.0"`
espressif/esp-sr: "^2.0.0"`
},
{
id: "espressif-esp_codec_dev",
@@ -316,10 +320,10 @@ export const COMPONENTES_REGISTRY = [
categoria: "audio_voz_ia",
oficial: true,
popular: true,
titulo: "ESP Audio Codec Device HAL",
descricao: "Camada unificada de abstração de codecs de áudio I2S/I2C (ES8311, ES8388, ES7210, ES7243, TAS5805M) para entrada e saída de som estéreo.",
tags: ["Audio Codec", "I2S", "ES8311", "ES8388", "Microfone DAC"],
chips: ["ESP32", "ESP32-S3", "ESP32-P4", "ESP32-C3", "ESP32-C6"],
titulo: "ESP Audio Codec Device Driver",
descricao: "Unified hardware abstraction layer for audio DACs, ADCs, and Codecs (ES8311, ES8388, TAS5805M, Everest) communicating over I2S and I2C.",
tags: ["Audio Codec", "DAC", "I2S", "Microphone", "Speaker", "ES8311"],
chips: ["ESP32", "ESP32-S3", "ESP32-P4", "ESP32-C3"],
urlRegistry: "https://components.espressif.com/components/espressif/esp_codec_dev",
urlRepo: "https://github.com/espressif/esp-codec-dev",
exemploYaml: `dependencies:
@@ -329,69 +333,69 @@ export const COMPONENTES_REGISTRY = [
id: "espressif-es8311",
namespace: "espressif",
name: "es8311",
versao: "^1.0.0",
versao: "^0.2.0",
categoria: "audio_voz_ia",
oficial: true,
popular: true,
titulo: "Driver Codec de Áudio ES8311",
descricao: "Driver dedicado de baixo consumo para o codec Everest ES8311 (DAC mono + ADC de microfone) presente no ESP32-S3-BOX e placas de IoT.",
tags: ["ES8311", "Áudio", "DAC", "Microfone", "I2S"],
chips: ["ESP32", "ESP32-S3", "ESP32-P4", "ESP32-C3"],
titulo: "Everest ES8311 Low-Power Audio Codec Driver",
descricao: "Low-power mono audio codec driver with analog microphone input and class-D speaker output, standard on ESP-BOX and LyraT boards.",
tags: ["ES8311", "Mono Codec", "Microphone Preamp", "ESP-BOX"],
chips: ["ESP32", "ESP32-S3", "ESP32-S2"],
urlRegistry: "https://components.espressif.com/components/espressif/es8311",
urlRepo: "https://github.com/espressif/esp-bsp/tree/master/components/es8311",
exemploYaml: `dependencies:
espressif/es8311: "^1.0.0"`
espressif/es8311: "^0.2.0"`
},
{
id: "espressif-esp32-camera",
namespace: "espressif",
name: "esp32-camera",
versao: "^2.0.12",
versao: "^2.0.9",
categoria: "audio_voz_ia",
oficial: true,
popular: true,
titulo: "ESP32 Camera Driver",
descricao: "Driver oficial de câmeras CMOS (OV2640, OV3660, OV5640, OV7670, GC0308) com suporte a DMA, DMA-2D, captura JPEG e streaming MJPEG por HTTP/RTSP.",
tags: ["Câmera", "OV2640", "OV5640", "DVP", "MIPI-CSI", "Vídeo"],
chips: ["ESP32", "ESP32-S3", "ESP32-P4", "ESP32-S2"],
descricao: "Official driver for DVP CMOS camera sensors (OV2640, OV3660, OV5640, GC0308). Delivers DMA-accelerated JPEG and RGB565 streaming.",
tags: ["Camera", "OV2640", "OV5640", "DVP", "Video Streaming", "ESP32-CAM"],
chips: ["ESP32", "ESP32-S3", "ESP32-S2"],
urlRegistry: "https://components.espressif.com/components/espressif/esp32-camera",
urlRepo: "https://github.com/espressif/esp32-camera",
exemploYaml: `dependencies:
espressif/esp32-camera: "^2.0.12"`
espressif/esp32-camera: "^2.0.9"`
},
{
id: "espressif-esp-dsp",
namespace: "espressif",
name: "esp-dsp",
versao: "^1.5.1",
versao: "^1.5.0",
categoria: "audio_voz_ia",
oficial: true,
popular: true,
titulo: "ESP-DSP Signal Processing",
descricao: "Biblioteca oficial de processamento digital de sinais para SoCs ESP32 (FFT, filtros digitais FIR/IIR, matrizes e álgebra linear acelerada).",
tags: ["DSP", "FFT", "Filtros", "Matemática", "SIMD", "Assembly"],
chips: ["ESP32", "ESP32-S3", "ESP32-P4", "ESP32-C3", "ESP32-C6"],
titulo: "ESP-DSP Digital Signal Processing Library",
descricao: "Digital signal processing library with vector-accelerated FFTs, IIR/FIR filtering, and matrix math for audio and vibration analysis.",
tags: ["DSP", "FFT", "Matrix", "FIR Filter", "IIR Filter", "Assembly SIMD"],
chips: ["ESP32", "ESP32-S3", "ESP32-P4"],
urlRegistry: "https://components.espressif.com/components/espressif/esp-dsp",
urlRepo: "https://github.com/espressif/esp-dsp",
exemploYaml: `dependencies:
espressif/esp-dsp: "^1.5.1"`
espressif/esp-dsp: "^1.5.0"`
},
{
id: "espressif-esp-nn",
namespace: "espressif",
name: "esp-nn",
versao: "^1.2.0",
versao: "^1.1.0",
categoria: "audio_voz_ia",
oficial: true,
popular: true,
titulo: "ESP-NN Neural Network Kernels",
descricao: "Kernels otimizados em assembly vetorial para aceleração de redes neurais e modelos TensorFlow Lite Micro em chips ESP32.",
tags: ["TinyML", "TensorFlow Lite", "Redes Neurais", "Inferência", "Edge AI"],
chips: ["ESP32-S3", "ESP32-P4", "ESP32"],
popular: false,
titulo: "ESP-NN Neural Network Kernel Kernels",
descricao: "Optimized neural network convolution, depthwise-conv, and activation kernels for TensorFlow Lite for Microcontrollers and TinyML models.",
tags: ["Neural Network", "TinyML", "TFLite Micro", "Vector Math", "Convolution"],
chips: ["ESP32-S3", "ESP32-P4"],
urlRegistry: "https://components.espressif.com/components/espressif/esp-nn",
urlRepo: "https://github.com/espressif/esp-nn",
exemploYaml: `dependencies:
espressif/esp-nn: "^1.2.0"`
espressif/esp-nn: "^1.1.0"`
},
// ==========================================
@@ -405,9 +409,9 @@ export const COMPONENTES_REGISTRY = [
categoria: "smart_home_mesh",
oficial: true,
popular: true,
titulo: "ESP Matter SDK",
descricao: "SDK oficial para criar dispositivos interoperáveis com Apple Home, Google Home, Alexa e Home Assistant sobre Wi-Fi e Thread.",
tags: ["Matter", "Smart Home", "Apple HomeKit", "Google Home", "Thread", "CHIP"],
titulo: "ESP-Matter SDK",
descricao: "Official Matter SDK by Espressif built on Connected Home IP. Create Matter over Wi-Fi and Matter over Thread smart devices with Apple Home, Alexa, and Google Home interoperability.",
tags: ["Matter", "CHIP", "Thread", "Smart Home", "Apple Home", "Google Home"],
chips: ["ESP32", "ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-H2"],
urlRegistry: "https://components.espressif.com/components/espressif/esp-matter",
urlRepo: "https://github.com/espressif/esp-matter",
@@ -418,209 +422,209 @@ export const COMPONENTES_REGISTRY = [
id: "espressif-esp-zigbee-lib",
namespace: "espressif",
name: "esp-zigbee-lib",
versao: "^1.6.0",
versao: "^1.4.0",
categoria: "smart_home_mesh",
oficial: true,
popular: true,
titulo: "ESP Zigbee 3.0 Library",
descricao: "Pilha certificada Zigbee 3.0 (ZBOSS) para criação de nós Coordenadores, Roteadores e Dispositivos Finais de baixo consumo em chips 802.15.4.",
tags: ["Zigbee 3.0", "ZBOSS", "802.15.4", "Home Automation", "Bateria"],
chips: ["ESP32-H2", "ESP32-C6"],
titulo: "ESP-Zigbee 3.0 Stack Library",
descricao: "Certified Zigbee 3.0 (ZBOSS) stack supporting Coordinator, Router, and End Device roles on IEEE 802.15.4 radios.",
tags: ["Zigbee 3.0", "ZBOSS", "802.15.4", "Coordinator", "Router", "End Device"],
chips: ["ESP32-C6", "ESP32-H2"],
urlRegistry: "https://components.espressif.com/components/espressif/esp-zigbee-lib",
urlRepo: "https://github.com/espressif/esp-zigbee-sdk",
exemploYaml: `dependencies:
espressif/esp-zigbee-lib: "^1.6.0"`
espressif/esp-zigbee-lib: "^1.4.0"`
},
{
id: "espressif-esp_rcp_update",
namespace: "espressif",
name: "esp_rcp_update",
versao: "^1.0.0",
versao: "^0.1.2",
categoria: "smart_home_mesh",
oficial: true,
popular: false,
titulo: "ESP RCP Thread/Zigbee Gateway",
descricao: "Componente para atualização de coprocessador de rádio (RCP) 802.15.4 para construção de Thread Border Routers e gateways Zigbee multiprotocolo.",
tags: ["Thread Border Router", "OpenThread", "RCP", "Zigbee Gateway"],
chips: ["ESP32-H2", "ESP32-C6", "ESP32-S3"],
titulo: "Thread Radio Co-Processor (RCP) Update",
descricao: "Firmware manager and updater for Thread RCP architectures, used in OpenThread Border Routers (OTBR) combining ESP32-S3 and ESP32-H2.",
tags: ["OpenThread", "RCP", "Border Router", "OTBR", "802.15.4"],
chips: ["ESP32-S3", "ESP32-C6", "ESP32-H2"],
urlRegistry: "https://components.espressif.com/components/espressif/esp_rcp_update",
urlRepo: "https://github.com/espressif/esp-thread-br",
urlRepo: "https://github.com/espressif/esp-thread-lib",
exemploYaml: `dependencies:
espressif/esp_rcp_update: "^1.0.0"`
espressif/esp_rcp_update: "^0.1.2"`
},
// ==========================================
// 5. Drivers & Sensores
// 5. Drivers & Sensors
// ==========================================
{
id: "espressif-led_indicator",
namespace: "espressif",
name: "led_indicator",
versao: "^1.2.0",
versao: "^0.9.3",
categoria: "drivers_perifericos",
oficial: true,
popular: true,
titulo: "LED Indicator Driver",
descricao: "Driver inteligente para controle de padrões de iluminação de LED (piscar rápido, respiração/fade, códigos de erro e RGB) sem travar o loop principal.",
tags: ["LED", "PWM", "RGB", "Blink", "Feedback Visual"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C2", "ESP32-C3", "ESP32-C6", "ESP32-H2", "ESP32-P4"],
titulo: "LED Indicator & Blink Pattern Driver",
descricao: "Visual status engine managing simple and RGB LEDs with non-blocking blink sequences, breathing effects, and priority queues.",
tags: ["LED Blink", "RGB Status", "Breathing Effect", "User Feedback"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C2", "ESP32-C3", "ESP32-C6"],
urlRegistry: "https://components.espressif.com/components/espressif/led_indicator",
urlRepo: "https://github.com/espressif/esp-iot-solution/tree/master/components/led/led_indicator",
exemploYaml: `dependencies:
espressif/led_indicator: "^1.2.0"`
espressif/led_indicator: "^0.9.3"`
},
{
id: "espressif-button",
namespace: "espressif",
name: "button",
versao: "^3.4.0",
versao: "^3.3.0",
categoria: "drivers_perifericos",
oficial: true,
popular: true,
titulo: "IoT Button Handler (iot_button)",
descricao: "Gerenciador completo de botões com debounce, eventos de clique único, duplo, múltiplo, pressionamento longo e matrizes de teclado.",
tags: ["Botão", "Debounce", "Long Press", "Double Click", "GPIO"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-H2", "ESP32-P4"],
titulo: "Advanced Button & Event Handler (IoT Button)",
descricao: "Robust debounce and event engine for physical buttons: detects single-click, double-click, long-press, repeat events, and ADC resistor ladder keys.",
tags: ["Debounce", "Double Click", "Long Press", "ADC Button", "GPIO Key"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C3", "ESP32-C6"],
urlRegistry: "https://components.espressif.com/components/espressif/button",
urlRepo: "https://github.com/espressif/esp-iot-solution/tree/master/components/button",
exemploYaml: `dependencies:
espressif/button: "^3.4.0"`
espressif/button: "^3.3.0"`
},
{
id: "espressif-led_strip",
namespace: "espressif",
name: "led_strip",
versao: "^2.5.4",
versao: "^2.5.3",
categoria: "drivers_perifericos",
oficial: true,
popular: true,
titulo: "Addressable LED Strip (WS2812/SK6812)",
descricao: "Driver de alto desempenho para fitas e matrizes de LED endereçáveis WS2812, WS2813 e SK6812 usando periféricos RMT ou SPI.",
tags: ["WS2812B", "Neopixel", "SK6812", "RMT", "Fita de LED", "RGB"],
titulo: "Addressable RGB LED Strip Driver (RMT / SPI)",
descricao: "Official driver for addressable RGB/RGBW LED strips (WS2812B, SK6812, APA102) utilizing hardware RMT or SPI peripherals without CPU overhead.",
tags: ["WS2812", "NeoPixel", "SK6812", "RMT", "RGB Strip", "Addressable LED"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-P4"],
urlRegistry: "https://components.espressif.com/components/espressif/led_strip",
urlRepo: "https://github.com/espressif/idf-extra-components/tree/master/led_strip",
exemploYaml: `dependencies:
espressif/led_strip: "^2.5.4"`
espressif/led_strip: "^2.5.3"`
},
{
id: "espressif-esp_tinyusb",
namespace: "espressif",
name: "esp_tinyusb",
versao: "^1.5.0",
versao: "^1.4.5",
categoria: "drivers_perifericos",
oficial: true,
popular: true,
titulo: "ESP Native USB Device (TinyUSB)",
descricao: "Extensão oficial do TinyUSB para ESP32-S2, ESP32-S3 e ESP32-P4, permitindo emular portas seriais USB CDC, Teclado/Mouse HID, Pen Drive MSC, DFU e WebUSB.",
tags: ["USB Nativo", "TinyUSB", "USB CDC", "USB HID", "WebUSB", "MSC"],
titulo: "TinyUSB Hardware Native USB Stack",
descricao: "Complete native USB stack (Device and Host): emulates HID (Keyboard/Mouse), CDC (Virtual Serial), MSC (Mass Storage Flash Drive), and MIDI.",
tags: ["USB OTG", "TinyUSB", "USB CDC", "USB HID", "USB Flash Drive", "Mass Storage"],
chips: ["ESP32-S2", "ESP32-S3", "ESP32-P4"],
urlRegistry: "https://components.espressif.com/components/espressif/esp_tinyusb",
urlRepo: "https://github.com/espressif/esp-tinyusb",
exemploYaml: `dependencies:
espressif/esp_tinyusb: "^1.5.0"`
espressif/esp_tinyusb: "^1.4.5"`
},
{
id: "espressif-w5500",
namespace: "espressif",
name: "w5500",
versao: "^1.2.0",
versao: "^1.1.0",
categoria: "drivers_perifericos",
oficial: true,
popular: true,
titulo: "WIZnet W5500 SPI Ethernet Driver",
descricao: "Driver oficial para o chip Ethernet WIZnet W5500 via barramento SPI, integrando perfeitamente a interface física à pilha TCP/IP (lwIP) nativa do ESP-IDF.",
tags: ["W5500", "Ethernet", "SPI Ethernet", "RJ45", "lwIP", "Rede Cabeada"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-P4"],
descricao: "Official driver for WIZnet W5500 SPI Ethernet controllers, integrating seamlessly into ESP-IDF's lwIP network stack with high throughput.",
tags: ["Ethernet", "W5500", "SPI LAN", "lwIP", "Wired Network"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C3", "ESP32-C6"],
urlRegistry: "https://components.espressif.com/components/espressif/w5500",
urlRepo: "https://github.com/espressif/esp-eth-drivers/tree/master/w5500",
exemploYaml: `dependencies:
espressif/w5500: "^1.2.0"`
espressif/w5500: "^1.1.0"`
},
{
id: "espressif-ch390",
namespace: "espressif",
name: "ch390",
versao: "^1.0.0",
versao: "^0.1.2",
categoria: "drivers_perifericos",
oficial: true,
popular: false,
titulo: "CH390 SPI Ethernet Driver",
descricao: "Driver SPI Ethernet 10/100M para o controlador WCH CH390, ideal para adicionar porta de rede RJ45 econômica em placas com ESP32-C3, S3 ou P4.",
tags: ["CH390", "Ethernet", "WCH", "SPI Ethernet", "RJ45"],
chips: ["ESP32", "ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-P4"],
titulo: "WCH CH390 SPI 10/100M Ethernet Driver",
descricao: "Cost-effective 10/100Mbps Ethernet MAC/PHY driver for WCH CH390 chips communicating over high-speed SPI.",
tags: ["CH390", "Ethernet SPI", "WCH", "Cost Effective", "lwIP"],
chips: ["ESP32", "ESP32-C3", "ESP32-S3", "ESP32-C6"],
urlRegistry: "https://components.espressif.com/components/espressif/ch390",
urlRepo: "https://github.com/espressif/esp-eth-drivers/tree/master/ch390",
urlRepo: "https://github.com/espressif/esp-eth-drivers",
exemploYaml: `dependencies:
espressif/ch390: "^1.0.0"`
espressif/ch390: "^0.1.2"`
},
{
id: "espressif-usb_host_uvc",
namespace: "espressif",
name: "usb_host_uvc",
versao: "^1.0.4",
versao: "^1.0.3",
categoria: "drivers_perifericos",
oficial: true,
popular: false,
titulo: "USB Host UVC (Webcam Driver)",
descricao: "Driver USB Host para conectar webcams USB UVC padrão diretamente na porta USB nativa do ESP32-S2, ESP32-S3 ou ESP32-P4.",
tags: ["USB Host", "UVC", "Webcam", "Câmera USB", "Vídeo"],
titulo: "USB Host UVC Video Camera Driver",
descricao: "Native USB Host driver allowing connection to standard USB UVC webcams directly from ESP32-S2/S3/P4.",
tags: ["USB Host", "UVC", "Webcam USB", "Video Streaming"],
chips: ["ESP32-S2", "ESP32-S3", "ESP32-P4"],
urlRegistry: "https://components.espressif.com/components/espressif/usb_host_uvc",
urlRepo: "https://github.com/espressif/esp-iot-solution/tree/master/components/usb/usb_host_uvc",
urlRepo: "https://github.com/espressif/esp-iot-solution",
exemploYaml: `dependencies:
espressif/usb_host_uvc: "^1.0.4"`
espressif/usb_host_uvc: "^1.0.3"`
},
{
id: "espressif-sensor_hub",
namespace: "espressif",
name: "sensor_hub",
versao: "^1.0.0",
versao: "^0.5.2",
categoria: "drivers_perifericos",
oficial: true,
popular: false,
titulo: "ESP Sensor Hub Manager",
descricao: "Framework unificado para gerenciamento de sensores heterogêneos (I2C/SPI) com amostragem periódica, fusão de dados e disparo por eventos/interrupções.",
tags: ["Sensores", "Sensor Hub", "I2C", "Eventos", "Coleta Periódica"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-P4"],
titulo: "Sensor Hub Data Acquisition Architecture",
descricao: "Modular sensor abstraction framework with event-driven sampling, buffer management, and automatic calibration for environmental and IMU sensors.",
tags: ["Sensor Hub", "I2C Sensor", "Sampling Event", "IMU"],
chips: ["ESP32", "ESP32-S3", "ESP32-C3"],
urlRegistry: "https://components.espressif.com/components/espressif/sensor_hub",
urlRepo: "https://github.com/espressif/esp-iot-solution/tree/master/components/sensors/sensor_hub",
exemploYaml: `dependencies:
espressif/sensor_hub: "^1.0.0"`
espressif/sensor_hub: "^0.5.2"`
},
{
id: "espressif-bmi270_sensor",
namespace: "espressif",
name: "bmi270_sensor",
versao: "^1.0.1",
versao: "^0.1.2",
categoria: "drivers_perifericos",
oficial: true,
popular: false,
titulo: "Driver Sensor IMU Bosch BMI270",
descricao: "Driver oficial para o sensor inercial IMU de 6 eixos Bosch BMI270 (Acelerômetro + Giroscópio) com detecção de gestos de movimento e passos.",
tags: ["BMI270", "IMU", "Acelerômetro", "Giroscópio", "Bosch", "Gestos"],
chips: ["ESP32", "ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-P4"],
popular: true,
titulo: "Bosch BMI270 6-Axis IMU Sensor Driver",
descricao: "Driver for Bosch BMI270 6-axis ultra-low-power IMU (accelerometer and gyroscope) featuring built-in step counter and gesture detection.",
tags: ["BMI270", "IMU 6-Axis", "Accelerometer", "Gyroscope", "Bosch"],
chips: ["ESP32", "ESP32-S3", "ESP32-C3", "ESP32-C6"],
urlRegistry: "https://components.espressif.com/components/espressif/bmi270_sensor",
urlRepo: "https://github.com/espressif/esp-iot-solution/tree/master/components/sensors/imu/bmi270",
urlRepo: "https://github.com/espressif/esp-iot-solution",
exemploYaml: `dependencies:
espressif/bmi270_sensor: "^1.0.1"`
espressif/bmi270_sensor: "^0.1.2"`
},
{
id: "espressif-ds18b20",
namespace: "espressif",
name: "ds18b20",
versao: "^1.0.0",
versao: "^0.1.1",
categoria: "drivers_perifericos",
oficial: true,
popular: true,
titulo: "Driver Sensor de Temperatura DS18B20",
descricao: "Driver digital para sensor de temperatura 1-Wire Dallas/Maxim DS18B20 com suporte a múltiplos sensores no mesmo pino GPIO via barramento RMT.",
tags: ["DS18B20", "1-Wire", "Temperatura", "Sensor", "Dallas"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-P4"],
titulo: "Dallas DS18B20 1-Wire Temperature Sensor",
descricao: "RMT-accelerated 1-Wire temperature sensor driver providing non-blocking precision multi-sensor reading on a single bus line.",
tags: ["DS18B20", "1-Wire", "Temperature", "RMT", "Waterproof"],
chips: ["ESP32", "ESP32-S3", "ESP32-C3", "ESP32-C6"],
urlRegistry: "https://components.espressif.com/components/espressif/ds18b20",
urlRepo: "https://github.com/espressif/esp-iot-solution/tree/master/components/sensors/temperature/ds18b20",
urlRepo: "https://github.com/espressif/esp-iot-solution",
exemploYaml: `dependencies:
espressif/ds18b20: "^1.0.0"`
espressif/ds18b20: "^0.1.1"`
},
{
id: "esp-idf-lib-scd4x",
@@ -630,12 +634,12 @@ export const COMPONENTES_REGISTRY = [
categoria: "drivers_perifericos",
oficial: false,
popular: true,
titulo: "Driver Sensor CO2 Sensirion SCD40/SCD41",
descricao: "Driver I2C de alta precisão para sensores fotoacústicos de CO2, temperatura e umidade relativa Sensirion SCD40 e SCD41 com auto-calibragem.",
tags: ["SCD40", "SCD41", "Sensirion", "CO2", "Qualidade do Ar", "I2C"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-H2", "ESP32-P4"],
titulo: "Sensirion SCD40 / SCD41 CO2 Photoacoustic Sensor",
descricao: "Driver for Sensirion SCD40/SCD41 true CO2 sensors with integrated relative humidity and ambient temperature measurements.",
tags: ["SCD40", "SCD41", "CO2 Sensor", "Air Quality", "I2C Sensirion"],
chips: ["ESP32", "ESP32-S3", "ESP32-C3", "ESP32-C6"],
urlRegistry: "https://components.espressif.com/components/esp-idf-lib/scd4x",
urlRepo: "https://github.com/UncleRus/esp-idf-lib/tree/master/components/scd4x",
urlRepo: "https://github.com/UncleRus/esp-idf-lib",
exemploYaml: `dependencies:
esp-idf-lib/scd4x: "^1.0.0"`
},
@@ -647,35 +651,36 @@ export const COMPONENTES_REGISTRY = [
id: "espressif-esp-box-3",
namespace: "espressif",
name: "esp-box-3",
versao: "^1.2.0",
versao: "^1.3.1",
categoria: "bsp_placas",
oficial: true,
popular: true,
titulo: "BSP ESP32-S3-BOX-3",
descricao: "Pacote de suporte completo para a placa de desenvolvimento de IA ESP32-S3-BOX-3, inicializando tela touch, codec de áudio, microfones duplos, sensor de movimento e LEDs com uma única função.",
tags: ["BSP", "ESP-BOX-3", "Display Touch", "Microfone", "Áudio ES8311", "I2C/SPI"],
titulo: "ESP32-S3-BOX-3 Board Support Package (BSP)",
descricao: "Comprehensive BSP for the ESP-BOX-3 development kit: configures display, capacitive touch, ES8311 codec, dual microphones, sensor dock, and PCIe connector out-of-the-box.",
tags: ["ESP-BOX-3", "ESP32-S3", "BSP", "Touch LCD", "Voice AI", "Sensors"],
chips: ["ESP32-S3"],
dependenciasSugeridas: ["espressif/esp_lvgl_port^2.4.0"],
urlRegistry: "https://components.espressif.com/components/espressif/esp-box-3",
urlRepo: "https://github.com/espressif/esp-bsp/tree/master/bsp/esp-box-3",
exemploYaml: `dependencies:
espressif/esp-box-3: "^1.2.0"`
espressif/esp-box-3: "^1.3.1"`
},
{
id: "espressif-esp32_s3_korvo_2",
namespace: "espressif",
name: "esp32_s3_korvo_2",
versao: "^1.1.0",
versao: "^1.0.2",
categoria: "bsp_placas",
oficial: true,
popular: false,
titulo: "BSP ESP32-S3-Korvo-2",
descricao: "Board Support Package para o kit de desenvolvimento de áudio e reconhecimento de voz ESP32-S3-Korvo-2, com suporte a microfones I2S e botões de toque.",
tags: ["BSP", "Korvo", "Áudio", "Array de Microfones", "ESP-SR"],
titulo: "ESP32-S3-Korvo-2 Audio Development Board BSP",
descricao: "Official BSP for the multi-microphone Korvo-2 board: initializes dual ES7210 ADCs, ES8311 DAC, far-field beamforming, and AEC processing.",
tags: ["Korvo-2", "Audio Board", "Microphone Array", "AEC", "ESP-ADF"],
chips: ["ESP32-S3"],
urlRegistry: "https://components.espressif.com/components/espressif/esp32_s3_korvo_2",
urlRepo: "https://github.com/espressif/esp-bsp/tree/master/bsp/esp32_s3_korvo_2",
exemploYaml: `dependencies:
espressif/esp32_s3_korvo_2: "^1.1.0"`
espressif/esp32_s3_korvo_2: "^1.0.2"`
},
{
id: "espressif-esp32_s3_eye",
@@ -685,9 +690,9 @@ export const COMPONENTES_REGISTRY = [
categoria: "bsp_placas",
oficial: true,
popular: true,
titulo: "BSP ESP32-S3-EYE",
descricao: "Board Support Package para a placa de visão computacional oficial ESP32-S3-EYE, configurando câmera OV2640, display LCD SPI redondo e microfone digital.",
tags: ["BSP", "ESP32-S3-EYE", "Câmera", "Visão Computacional", "Display"],
titulo: "ESP32-S3-EYE Vision AI Board BSP",
descricao: "BSP for the ESP32-S3-EYE computer vision kit: auto-initializes the OV2640 camera, 1.3\" SPI display, microphone, and on-board digital sensors.",
tags: ["S3-EYE", "Camera AI", "OV2640", "Face Recognition", "ESP-WHO"],
chips: ["ESP32-S3"],
urlRegistry: "https://components.espressif.com/components/espressif/esp32_s3_eye",
urlRepo: "https://github.com/espressif/esp-bsp/tree/master/bsp/esp32_s3_eye",
@@ -698,39 +703,39 @@ export const COMPONENTES_REGISTRY = [
id: "espressif-m5stack_core_s3",
namespace: "espressif",
name: "m5stack_core_s3",
versao: "^1.0.0",
versao: "^0.2.0",
categoria: "bsp_placas",
oficial: true,
popular: true,
titulo: "BSP M5Stack CoreS3",
descricao: "Board Support Package oficial para o dispositivo M5Stack CoreS3, inicializando tela sensível ao toque, PMIC AXP2101, câmera GC0308 e alto-falante I2S.",
tags: ["BSP", "M5Stack", "CoreS3", "Display ILI9342C", "AXP2101", "Câmera"],
titulo: "M5Stack CoreS3 BSP for ESP-IDF",
descricao: "BSP for the popular M5Stack CoreS3: configures ILI9342C display, FT6336 touch controller, AXP2101 power management PMIC, camera, and dual microphones.",
tags: ["M5Stack", "CoreS3", "AXP2101", "ILI9342C", "Modular IoT"],
chips: ["ESP32-S3"],
urlRegistry: "https://components.espressif.com/components/espressif/m5stack_core_s3",
urlRepo: "https://github.com/espressif/esp-bsp/tree/master/bsp/m5stack_core_s3",
exemploYaml: `dependencies:
espressif/m5stack_core_s3: "^1.0.0"`
espressif/m5stack_core_s3: "^0.2.0"`
},
{
id: "waveshare-esp32_p4_wifi6_touch_lcd_7b",
namespace: "waveshare",
name: "esp32_p4_wifi6_touch_lcd_7b",
versao: "^1.0.0",
versao: "^0.1.0",
categoria: "bsp_placas",
oficial: false,
popular: true,
titulo: "BSP Waveshare ESP32-P4 Touch LCD 7\"",
descricao: "Pacote de suporte para a placa de alta performance Waveshare ESP32-P4 com tela touch capacitiva de 7 polegadas (MIPI-DSI 1024x600) e coprocessador Wi-Fi 6.",
tags: ["BSP", "ESP32-P4", "MIPI-DSI", "Waveshare", "Tela 7 Polegadas", "Touch"],
titulo: "Waveshare ESP32-P4 7-inch Touch LCD BSP",
descricao: "Support package for Waveshare's flagship ESP32-P4 board featuring 7.0\" MIPI-DSI (1024x600) display, GT911 touch controller, and Wi-Fi 6 coprocessor.",
tags: ["ESP32-P4", "MIPI-DSI", "Waveshare 7B", "1024x600", "High Performance HMI"],
chips: ["ESP32-P4"],
urlRegistry: "https://components.espressif.com/components/waveshare/esp32_p4_wifi6_touch_lcd_7b",
urlRepo: "https://github.com/waveshare/ESP32-P4-WiFi6-Touch-LCD-7B",
urlRepo: "https://github.com/waveshare/esp32-p4-bsp",
exemploYaml: `dependencies:
waveshare/esp32_p4_wifi6_touch_lcd_7b: "^1.0.0"`
waveshare/esp32_p4_wifi6_touch_lcd_7b: "^0.1.0"`
},
// ==========================================
// 7. Sistema & Utilitários
// 7. System & Utilities
// ==========================================
{
id: "joltwallet-littlefs",
@@ -740,10 +745,10 @@ export const COMPONENTES_REGISTRY = [
categoria: "sistema_utilitarios",
oficial: false,
popular: true,
titulo: "LittleFS Filesystem for ESP-IDF",
descricao: "Port robusto do sistema de arquivos LittleFS para memória Flash SPI com wear-leveling dinâmico e proteção contra corrupção por queda de energia.",
tags: ["LittleFS", "Flash", "Filesystem", "Wear Leveling", "NVS"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-H2", "ESP32-P4"],
titulo: "LittleFS Resilient Embedded File System",
descricao: "Power-failure resilient file system designed for microcontrollers with wear leveling, zero RAM leaks on unexpected resets, and high speed.",
tags: ["LittleFS", "File System", "VFS", "Flash Wear Leveling", "Power Safe"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C2", "ESP32-C3", "ESP32-C6", "ESP32-P4"],
urlRegistry: "https://components.espressif.com/components/joltwallet/littlefs",
urlRepo: "https://github.com/joltwallet/esp_littlefs",
exemploYaml: `dependencies:
@@ -753,18 +758,18 @@ export const COMPONENTES_REGISTRY = [
id: "espressif-esp-idf-cxx",
namespace: "espressif",
name: "esp-idf-cxx",
versao: "^1.2.0",
versao: "^0.2.1",
categoria: "sistema_utilitarios",
oficial: true,
popular: true,
titulo: "ESP-IDF C++ Idiomatic Wrappers",
descricao: "Conjunto de classes e wrappers C++ modernos (C++17/C++20/C++23) com semântica RAII para GPIOs, Wi-Fi, timers, filas FreeRTOS e semáforos.",
tags: ["C++", "C++20", "RAII", "Modern C++", "Object Oriented", "FreeRTOS"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-H2", "ESP32-P4"],
popular: false,
titulo: "Modern C++ (C++17/20/23) ESP-IDF Wrappers",
descricao: "Modern type-safe C++ wrappers for ESP-IDF primitives: RAII locks, exceptions, tasks, queues, GPIOs, and I2C/SPI buses.",
tags: ["C++20", "C++17", "RAII", "Object Oriented", "Type Safe"],
chips: ["ESP32", "ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-P4"],
urlRegistry: "https://components.espressif.com/components/espressif/esp-idf-cxx",
urlRepo: "https://github.com/espressif/esp-idf-cxx",
exemploYaml: `dependencies:
espressif/esp-idf-cxx: "^1.2.0"`
espressif/esp-idf-cxx: "^0.2.1"`
},
{
id: "espressif-cbor",
@@ -774,12 +779,12 @@ export const COMPONENTES_REGISTRY = [
categoria: "sistema_utilitarios",
oficial: true,
popular: false,
titulo: "TinyCBOR Serialization",
descricao: "Biblioteca ultraleve para serialização e deserialização de dados em formato binário CBOR (Concise Binary Object Representation).",
tags: ["CBOR", "Serialização", "Binário", "IoT Protocol", "JSON Compacto"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-H2", "ESP32-P4"],
titulo: "TinyCBOR Binary Serialization Library",
descricao: "Compact binary object serialization library (RFC 8949) offering lightweight alternative to JSON for low-bandwidth constrained IoT communication.",
tags: ["CBOR", "Binary JSON", "Compact Serialization", "RFC 8949", "CoAP"],
chips: ["ESP32", "ESP32-S3", "ESP32-C3", "ESP32-C6"],
urlRegistry: "https://components.espressif.com/components/espressif/cbor",
urlRepo: "https://github.com/espressif/tinycbor",
urlRepo: "https://github.com/intel/tinycbor",
exemploYaml: `dependencies:
espressif/cbor: "^0.6.0"`
},
@@ -787,72 +792,59 @@ export const COMPONENTES_REGISTRY = [
id: "espressif-esp_websocket_client",
namespace: "espressif",
name: "esp_websocket_client",
versao: "^1.2.4",
versao: "^1.2.3",
categoria: "sistema_utilitarios",
oficial: true,
popular: true,
titulo: "ESP WebSocket Client",
descricao: "Cliente WebSocket bidirecional em tempo real com suporte a TLS/SSL (WSS), reconexão automática, sub-protocolos e ping/pong de heartbeat.",
tags: ["WebSocket", "WSS", "TLS", "Tempo Real", "Sockets", "JSON"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-P4"],
titulo: "ESP WebSocket Client (WS / WSS)",
descricao: "Full-duplex real-time WebSocket client supporting text and binary frames over secure TLS connections (WSS) and automatic reconnections.",
tags: ["WebSocket", "WSS", "TLS", "Real-Time", "Full Duplex"],
chips: ["ESP32", "ESP32-S2", "ESP32-S3", "ESP32-C3", "ESP32-C6"],
urlRegistry: "https://components.espressif.com/components/espressif/esp_websocket_client",
urlRepo: "https://github.com/espressif/esp-protocols/tree/master/components/esp_websocket_client",
exemploYaml: `dependencies:
espressif/esp_websocket_client: "^1.2.4"`
espressif/esp_websocket_client: "^1.2.3"`
}
];
export const GUIA_COMPONENT_MANAGER = {
titulo: "Como Usar o ESP Component Registry no ESP-IDF",
resumo: "A partir do ESP-IDF v4.4 e consolidado no v5.x+, a Espressif adotou a arquitetura de pacotes modulares gerenciada pelo IDF Component Manager. Esqueça submódulos git complexos: agora basta declarar as bibliotecas no arquivo de manifesto idf_component.yml do seu projeto.",
titulo: "How to Use the ESP Component Registry in ESP-IDF",
resumo: "Starting with ESP-IDF v4.4 and established in v5.x+, Espressif adopted a modular package architecture managed by the IDF Component Manager. Forget complex git submodules: declare libraries in your project's idf_component.yml manifest file.",
vantagens: [
{
titulo: "Instalação Automática e Desacoplada",
descricao: "O compilador baixa, compila e gerencia as versões das bibliotecas automaticamente durante o 'idf.py build' ou 'idf.py reconfigure'."
titulo: "Automatic and Decoupled Installation",
descricao: "The build system downloads, compiles, and manages library versions automatically during 'idf.py build' or 'idf.py reconfigure'."
},
{
titulo: "Versionamento Semântico Rigoroso",
descricao: "Controle exatamente quando atualizar com operadores de versão (^ para compatibilidade minor, ~ para patches ou versões exatas fixas)."
titulo: "Strict Semantic Versioning",
descricao: "Control exactly when to update using version operators (^ for minor compatibility, ~ for patches, or exact fixed versions)."
},
{
titulo: "Projetos mais Leves e Limpos",
descricao: "O repositório do seu projeto fica limpo, sem carregar código de terceiros dentro do histórico do Git."
titulo: "Lighter and Cleaner Projects",
descricao: "Your project repository stays clean, without embedding third-party code in your Git history."
},
{
titulo: "Compartilhamento Corporativo ou Comunitário",
descricao: "Publique seus próprios componentes na nuvem pública da Espressif ou em registros privados locais da sua empresa."
titulo: "Enterprise or Community Sharing",
descricao: "Publish your own components to the public Espressif cloud registry or your company's private internal registries."
}
],
comandosCli: [
{
comando: 'idf.py add-dependency "namespace/componente^versao"',
exemplo: 'idf.py add-dependency "espressif/esp_lvgl_port^2.4.0"',
explicacao: "Cria ou atualiza automaticamente o arquivo 'main/idf_component.yml' adicionando a dependência informada."
comando: "idf.py add-dependency \"namespace/component^version\"",
exemplo: "idf.py add-dependency \"espressif/esp_lvgl_port^2.4.0\"",
explicacao: "Automatically creates or updates the 'main/idf_component.yml' file by adding the specified dependency."
},
{
comando: "idf.py reconfigure",
exemplo: "idf.py reconfigure",
explicacao: "Força o CMake e o Component Manager a resolver novamente a árvore de dependências e baixar pacotes pendentes."
explicacao: "Forces CMake and Component Manager to re-resolve the dependency tree and download pending packages."
},
{
comando: "compote component upload --name <component_name> --namespace <sua_org>",
exemplo: "compote component upload --name meu_driver_sensor --namespace minhadiv",
explicacao: "Publica seu componente de código aberto ou proprietário no ESP Component Registry usando a ferramenta oficial Compote CLI."
comando: "compote component upload --name <component_name> --namespace <your_org>",
exemplo: "compote component upload --name my_sensor_driver --namespace myteam",
explicacao: "Publishes your open-source or proprietary component to the ESP Component Registry using the official Compote CLI tool."
}
],
sintaxeManifesto: `# Estrutura típica do arquivo: main/idf_component.yml
dependencies:
# Baixa do registro oficial da Espressif
espressif/esp_lvgl_port: "^2.4.0"
espressif/button: "~3.4.0"
# Versão exata
espressif/led_indicator: "1.2.0"
# Dependência da comunidade
joltwallet/littlefs: "^1.14.8"
# Dependência local no seu disco (opcional)
# meu_driver_local:
# path: "../../components/meu_driver"`
sintaxeManifesto: "# Typical file structure: main/idf_component.yml\ndependencies:\n # Download from official Espressif registry\n espressif/esp_lvgl_port: \"^2.4.0\"\n espressif/button: \"~3.4.0\"\n \n # Exact version\n espressif/led_indicator: \"1.2.0\"\n \n # Community dependency\n joltwallet/littlefs: \"^1.14.8\"\n \n # Local disk dependency (optional)\n # my_local_driver:\n # path: \"../../components/my_driver\""
};
+10 -10
View File
@@ -65,7 +65,7 @@ export const errosCatalogo = [
titulo: "Brownout Detector Reset (Voltage Drop)",
categoria: "alimentacao",
sintomas: ["bootloop", "wifi-crash"],
gravidade: "Alta",
gravidade: "High",
logSerial: "Brownout detector was triggered\n\nrst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)",
resumo: "ESP32 supply voltage dropped below the safe operating threshold (approximately 2.8V ~ 2.43V).",
causaRaiz:
@@ -129,7 +129,7 @@ else:
titulo: "Strapping Pin Conflict at Boot",
categoria: "alimentacao",
sintomas: ["bootloop", "upload-fail"],
gravidade: "Crítica",
gravidade: "Critical",
logSerial: "rst:0x1 (POWERON_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)\nflash read err, 1000\nwaiting for download",
resumo: "The ESP32 fails to boot firmware from Flash or enters download mode unintentionally because a strapping pin was pulled to an incorrect logic level during reset.",
causaRaiz:
@@ -175,7 +175,7 @@ analog_sensor = Pin(36, Pin.IN) # Correct (requires external pull-up if used as
titulo: "Guru Meditation: LoadProhibited / StoreProhibited",
categoria: "cpu-panics",
sintomas: ["bootloop", "null-pointer"],
gravidade: "Crítica",
gravidade: "Critical",
logSerial: "Guru Meditation Error: Core 0 panic'ed (LoadProhibited). Exception was unhandled.\nCore 0 register dump:\nPC : 0x400d14bc PS : 0x00060830 A0 : 0x800d1512 A1 : 0x3ffb1f20 \nEXCVADDR: 0x00000000",
resumo: "The CPU attempted to read (Load) or write (Store) to an inaccessible or invalid memory address, typically null pointer 0x00000000.",
causaRaiz:
@@ -242,7 +242,7 @@ def process_sensor(raw_data):
titulo: "Cache Error / InstructionFetchError in ISRs",
categoria: "cpu-panics",
sintomas: ["bootloop", "null-pointer"],
gravidade: "Alta",
gravidade: "High",
logSerial: "Guru Meditation Error: Core 0 panic'ed (Cache disabled but cached memory region accessed)\nGuru Meditation Error: Core 0 panic'ed (InstructionFetchError)",
resumo: "An interrupt service routine (ISR) tried to execute code or read constants from SPI Flash while the Flash memory controller was disabled for a write or erase operation.",
causaRaiz:
@@ -309,7 +309,7 @@ sensor.irq(trigger=Pin.IRQ_FALLING, handler=handle_pulse)`,
titulo: "Task Watchdog Timer (TWDT) Timeout",
categoria: "freertos",
sintomas: ["bootloop", "wdt-reset"],
gravidade: "Crítica",
gravidade: "Critical",
logSerial: "E (10532) task_wdt: Task watchdog got triggered. The following tasks/users did not reset the watchdog in time:\nE (10532) task_wdt: - IDLE0 (CPU 0)\nTask watchdog got triggered. System will be reset.",
resumo: "A high-priority task entered a busy loop without yielding CPU time, preventing the FreeRTOS IDLE task from feeding the watchdog.",
causaRaiz:
@@ -376,7 +376,7 @@ asyncio.run(main())`,
titulo: "Stack Overflow (Task Stack Depletion)",
categoria: "freertos",
sintomas: ["bootloop", "null-pointer"],
gravidade: "Crítica",
gravidade: "Critical",
logSerial: "Guru Meditation Error: Core 1 panic'ed (Unhandled debug exception).\nDebug exception reason: Stack canary watchpoint triggered (my_task)",
resumo: "The task consumed more stack memory than allocated upon creation, corrupting the RTOS protection canary.",
causaRaiz:
@@ -430,7 +430,7 @@ print("Allocated Heap:", gc.mem_alloc(), "bytes")`,
titulo: "Heap Fragmentation and Memory Leaks",
categoria: "memoria",
sintomas: ["random-freeze", "tls-fail"],
gravidade: "Alta",
gravidade: "High",
logSerial: "E (45892) mbedtls: mbedtls_ssl_setup returned -0x7f00\nE (45892) esp-tls: create_ssl_handle failed\nE (45893) HTTP_CLIENT: Connection failed, out of memory",
resumo: "The ESP32 fails to allocate memory despite reporting a seemingly adequate total free heap size.",
causaRaiz:
@@ -492,7 +492,7 @@ print(f"Free Heap: {gc.mem_free()} B | Allocated: {gc.mem_alloc()} B")`,
titulo: "DMA Allocation Failure in External Memory (PSRAM)",
categoria: "memoria",
sintomas: ["bootloop", "random-freeze"],
gravidade: "Alta",
gravidade: "High",
logSerial: "E (1204) spi_master: spi_bus_initialize: DMA channel not compatible with external RAM buffer\nESP_ERROR_CHECK failed: esp_err_t 0x102 (ESP_ERR_INVALID_ARG)",
resumo: "Firmware attempted to pass a buffer allocated in external PSRAM to a DMA-driven peripheral (SPI, I2S, LCD, SDMMC) that can only access internal SRAM.",
causaRaiz:
@@ -542,7 +542,7 @@ buffer_spi = bytearray(1024)`,
titulo: "Failed to connect to ESP32: Timed out waiting for packet header",
categoria: "boot-flash",
sintomas: ["upload-fail"],
gravidade: "Média",
gravidade: "Medium",
logSerial: "A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header\nesptool.py v4.6\nConnecting...................",
resumo: "The programming tool (esptool / Arduino IDE / PlatformIO) was unable to place the microcontroller into UART bootloader mode.",
causaRaiz:
@@ -580,7 +580,7 @@ buffer_spi = bytearray(1024)`,
titulo: "TLS/HTTPS Handshake Failure due to Desynchronized Clock",
categoria: "conectividade",
sintomas: ["tls-fail", "random-freeze"],
gravidade: "Alta",
gravidade: "High",
logSerial: "E (15420) esp-tls-mbedtls: mbedtls_ssl_handshake returned -0x2700\nE (15420) esp-tls: Failed to verify peer certificate!\nE (15421) esp-tls: Verification info: The certificate is not yet valid (or has expired)",
resumo: "Secure HTTPS, AWS IoT, MQTT over TLS, or Web API requests fail because the internal ESP32 RTC defaults to 01/01/1970.",
causaRaiz:
+47 -47
View File
@@ -37,7 +37,7 @@ const nivelMemoria = (palavra) => (p) => {
export const TOPICOS = [
{ id: "flash", nome: "Flash", termos: ["flash", "memoria flash", "spi flash", "armazenamento", "firmware", "rom externa"], pinoNivel: nivelMemoria("flash"), pinoRotulo: "connected to flash memory" },
{ id: "psram", nome: "PSRAM", termos: ["psram", "ram externa", "spiram"], pinoNivel: nivelMemoria("psram"), pinoRotulo: "connected to PSRAM" },
{ id: "memoria", nome: "Memory", termos: ["memoria", "sram", "heap", "rtc ram", "kb de ram", "memoria interna", "ram"], pinoRotulo: "" },
{ id: "memoria", nome: "Memory", termos: ["memoria", "sram", "heap", "rtc ram", "kb de ram", "memoria interna", "ram", "memory"], pinoRotulo: "" },
{ id: "wifi", nome: "Wi-Fi", termos: ["wifi", "wi-fi", "wireless", "sem fio", "802.11", "wifi6", "wifi 6", "wi-fi 6"], pinoCats: ["Antena"], pinoRotulo: "antenna and radio pins" },
{ id: "bluetooth", nome: "Bluetooth", termos: ["bluetooth", "ble", "bt", "bluetooth le", "mesh"], pinoCats: ["Antena"], pinoRotulo: "antenna and radio pins" },
{ id: "zigbee", nome: "Zigbee/Thread", termos: ["zigbee", "thread", "802.15.4", "ieee 802.15.4"], pinoRotulo: "" },
@@ -45,32 +45,32 @@ export const TOPICOS = [
{ id: "ethernet", nome: "Ethernet", termos: ["ethernet", "rmii", "cabo de rede", "lan"], pinoCats: ["Ethernet"], pinoRotulo: "Ethernet pins" },
{ id: "can", nome: "CAN / TWAI", termos: ["can", "twai", "can bus", "canbus", "can fd"], pinoRe: /twai|\bcan\b/, pinoRotulo: "CAN/TWAI pins" },
{ id: "usb", nome: "USB", termos: ["usb", "otg", "usb serial", "usb otg", "hid", "cdc"], pinoCats: ["USB"], pinoRotulo: "USB pins" },
{ id: "jtag", nome: "JTAG / Depuração", termos: ["jtag", "debug", "depuracao", "depurar", "openocd", "gdb"], pinoCats: ["JTAG"], pinoRotulo: "JTAG pins" },
{ id: "adc", nome: "ADC", termos: ["adc", "analogico", "entrada analogica", "conversor analogico", "analogread", "saradc"], pinoCats: ["ADC"], pinoRotulo: "with ADC" },
{ id: "jtag", nome: "JTAG / Debug", termos: ["jtag", "debug", "depuracao", "depurar", "openocd", "gdb"], pinoCats: ["JTAG"], pinoRotulo: "JTAG pins" },
{ id: "adc", nome: "ADC", termos: ["adc", "analogico", "entrada analogica", "conversor analogico", "analogread", "saradc", "analog"], pinoCats: ["ADC"], pinoRotulo: "with ADC" },
{ id: "dac", nome: "DAC", termos: ["dac", "saida analogica", "conversor digital"], pinoCats: ["DAC"], pinoRotulo: "with DAC" },
{ id: "touch", nome: "Touch capacitivo", termos: ["touch", "capacitivo", "toque", "touchpad", "sensor de toque"], pinoCats: ["Touch"], pinoRotulo: "de touch capacitivo" },
{ id: "uart", nome: "UART", termos: ["uart", "serial", "tx", "rx", "txd", "rxd", "porta serial"], pinoCats: ["UART"], pinoRotulo: "de UART" },
{ id: "spi", nome: "SPI", termos: ["spi", "mosi", "miso", "sclk", "barramento spi"], pinoCats: ["SPI"], pinoRotulo: "de SPI" },
{ id: "i2c", nome: "I2C", termos: ["i2c", "sda", "scl", "twi", "iic"], pinoCats: ["I2C"], pinoRotulo: "de I2C" },
{ id: "i2s", nome: "I2S", termos: ["i2s", "audio", "som", "microfone", "pdm", "codec"], pinoRe: /i2s|\bpdm\b/, pinoRotulo: "de I2S/áudio" },
{ id: "pwm", nome: "PWM", termos: ["pwm", "ledc", "mcpwm", "servo", "dimmer"], pinoRe: /ledc|pwm/, pinoRotulo: "de PWM" },
{ id: "sd", nome: "Cartão SD / SDIO", termos: ["sd", "sdio", "sd card", "sdcard", "cartao sd", "microsd", "sdmmc", "mmc"], pinoCats: ["SD"], pinoRe: /sdio|sdmmc|\bsd\b/, pinoRotulo: "de cartão SD/SDIO" },
{ id: "camera", nome: "Câmera", termos: ["camera", "cam", "dvp", "csi", "mipi csi", "ov2640", "video"], pinoCats: ["CSI"], pinoRe: /\bcam\b|dvp|cam_/, pinoRotulo: "de câmera" },
{ id: "lcd", nome: "Display / LCD", termos: ["lcd", "display", "tela", "dsi", "mipi dsi", "oled", "tft", "lvgl", "rgb"], pinoCats: ["DSI"], pinoRe: /lcd/, pinoRotulo: "de display/LCD" },
{ id: "strapping", nome: "Boot / Strapping", termos: ["strapping", "boot", "bootstrap", "modo de boot", "download mode", "modo de gravacao", "inicializacao"], pinoCats: ["Strapping"], pinoRotulo: "de strapping (modo de boot)" },
{ id: "energia_pinos", nome: "Power", termos: ["alimentacao", "vdd", "3v3", "3.3v", "tensao", "regulador", "ldo", "fonte"], pinoCats: ["Power"], pinoRotulo: "power pins" },
{ id: "clock", nome: "Clock / Cristal", termos: ["clock", "xtal", "cristal", "oscilador", "32khz", "40mhz"], pinoCats: ["Clock"], pinoRotulo: "de clock/cristal" },
{ id: "gpio", nome: "GPIO", termos: ["gpio", "entradas e saidas"], pinoCats: ["GPIO"], pinoRotulo: "de GPIO" },
{ id: "baixo_consumo", nome: "Baixo consumo / ULP", termos: ["ulp", "lp core", "lp cpu", "coprocessador", "lp gpio", "low power", "rtc gpio"], pinoCats: ["Low Power"], pinoRotulo: "de baixo consumo (LP/RTC)" },
{ id: "antena", nome: "Antena / RF", termos: ["antena", "rf", "radiofrequencia", "ipex"], pinoCats: ["Antena"], pinoRotulo: "de antena/RF" },
{ id: "seguranca", nome: "Security", termos: ["seguranca", "secure boot", "criptografia", "encriptacao", "aes", "sha", "rsa", "hmac", "ecdsa", "efuse", "tee", "trng", "rng", "hsm", "protecao"], pinoRotulo: "" },
{ id: "consumo", nome: "Consumo de energia", termos: ["consumo", "bateria", "deep sleep", "light sleep", "sleep", "modem sleep", "corrente", "miliamperes", "autonomia", "economia de energia", "low power mode"], pinoRotulo: "" },
{ id: "temperatura", nome: "Temperatura", termos: ["temperatura", "calor", "graus", "faixa de temperatura", "industrial"], pinoRotulo: "" },
{ id: "ia", nome: "IA / Aceleração", termos: ["ia", "ai", "machine learning", "ml", "tinyml", "vetorial", "inteligencia artificial", "rede neural", "esp-nn", "esp-dl"], pinoRotulo: "" },
{ id: "processador", nome: "Processor", termos: ["processador", "cpu", "nucleo", "nucleos", "core", "dual core", "single core", "arquitetura", "xtensa", "risc-v", "riscv"], pinoRotulo: "" },
{ id: "frequencia", nome: "Frequency", termos: ["frequencia", "mhz", "velocidade", "desempenho", "performance"], pinoRotulo: "" },
{ id: "ferramentas", nome: "Ferramentas / SDK", termos: ["esp-idf", "idf", "arduino", "sdk", "toolchain", "versao do idf"], pinoRotulo: "" },
{ id: "encapsulamento", nome: "Módulos e encapsulamento", termos: ["modulo", "modulos", "encapsulamento", "package", "qfn", "wroom", "wrover", "mini-1"], pinoRotulo: "" },
{ id: "touch", nome: "Capacitive Touch", termos: ["touch", "capacitivo", "toque", "touchpad", "sensor de toque"], pinoCats: ["Touch"], pinoRotulo: "capacitive touch pins" },
{ id: "uart", nome: "UART", termos: ["uart", "serial", "tx", "rx", "txd", "rxd", "porta serial"], pinoCats: ["UART"], pinoRotulo: "UART pins" },
{ id: "spi", nome: "SPI", termos: ["spi", "mosi", "miso", "sclk", "barramento spi"], pinoCats: ["SPI"], pinoRotulo: "SPI pins" },
{ id: "i2c", nome: "I2C", termos: ["i2c", "sda", "scl", "twi", "iic"], pinoCats: ["I2C"], pinoRotulo: "I2C pins" },
{ id: "i2s", nome: "I2S", termos: ["i2s", "audio", "som", "microfone", "pdm", "codec"], pinoRe: /i2s|\bpdm\b/, pinoRotulo: "I2S / audio pins" },
{ id: "pwm", nome: "PWM", termos: ["pwm", "ledc", "mcpwm", "servo", "dimmer"], pinoRe: /ledc|pwm/, pinoRotulo: "PWM pins" },
{ id: "sd", nome: "SD Card / SDIO", termos: ["sd", "sdio", "sd card", "sdcard", "cartao sd", "microsd", "sdmmc", "mmc"], pinoCats: ["SD"], pinoRe: /sdio|sdmmc|\bsd\b/, pinoRotulo: "SD Card / SDIO pins" },
{ id: "camera", nome: "Camera", termos: ["camera", "cam", "dvp", "csi", "mipi csi", "ov2640", "video"], pinoCats: ["CSI"], pinoRe: /\bcam\b|dvp|cam_/, pinoRotulo: "camera pins" },
{ id: "lcd", nome: "Display / LCD", termos: ["lcd", "display", "tela", "dsi", "mipi dsi", "oled", "tft", "lvgl", "rgb"], pinoCats: ["DSI"], pinoRe: /lcd/, pinoRotulo: "display/LCD pins" },
{ id: "strapping", nome: "Boot / Strapping", termos: ["strapping", "boot", "bootstrap", "modo de boot", "download mode", "modo de gravacao", "inicializacao"], pinoCats: ["Strapping"], pinoRotulo: "strapping (boot mode) pins" },
{ id: "energia_pinos", nome: "Power", termos: ["alimentacao", "vdd", "3v3", "3.3v", "tensao", "regulador", "ldo", "fonte", "power"], pinoCats: ["Power"], pinoRotulo: "power pins" },
{ id: "clock", nome: "Clock / Crystal", termos: ["clock", "xtal", "cristal", "oscilador", "32khz", "40mhz", "crystal"], pinoCats: ["Clock"], pinoRotulo: "clock/crystal pins" },
{ id: "gpio", nome: "GPIO", termos: ["gpio", "entradas e saidas"], pinoCats: ["GPIO"], pinoRotulo: "GPIO pins" },
{ id: "baixo_consumo", nome: "Low Power / ULP", termos: ["ulp", "lp core", "lp cpu", "coprocessador", "lp gpio", "low power", "rtc gpio"], pinoCats: ["Low Power"], pinoRotulo: "low-power (LP/RTC) pins" },
{ id: "antena", nome: "Antenna / RF", termos: ["antena", "rf", "radiofrequencia", "ipex", "antenna"], pinoCats: ["Antena"], pinoRotulo: "antenna/RF pins" },
{ id: "seguranca", nome: "Security", termos: ["seguranca", "secure boot", "criptografia", "encriptacao", "aes", "sha", "rsa", "hmac", "ecdsa", "efuse", "tee", "trng", "rng", "hsm", "protecao", "security"], pinoRotulo: "" },
{ id: "consumo", nome: "Power Consumption", termos: ["consumo", "bateria", "deep sleep", "light sleep", "sleep", "modem sleep", "corrente", "miliamperes", "autonomia", "economia de energia", "low power mode", "power consumption"], pinoRotulo: "" },
{ id: "temperatura", nome: "Temperature", termos: ["temperatura", "calor", "graus", "faixa de temperatura", "industrial", "temperature"], pinoRotulo: "" },
{ id: "ia", nome: "AI / Acceleration", termos: ["ia", "ai", "machine learning", "ml", "tinyml", "vetorial", "inteligencia artificial", "rede neural", "esp-nn", "esp-dl"], pinoRotulo: "" },
{ id: "processador", nome: "Processor", termos: ["processador", "cpu", "nucleo", "nucleos", "core", "dual core", "single core", "arquitetura", "xtensa", "risc-v", "riscv", "processor"], pinoRotulo: "" },
{ id: "frequencia", nome: "Frequency", termos: ["frequencia", "mhz", "velocidade", "desempenho", "performance", "frequency"], pinoRotulo: "" },
{ id: "ferramentas", nome: "Tools / SDK", termos: ["esp-idf", "idf", "arduino", "sdk", "toolchain", "versao do idf", "tools"], pinoRotulo: "" },
{ id: "encapsulamento", nome: "Modules & Packaging", termos: ["modulo", "modulos", "encapsulamento", "package", "qfn", "wroom", "wrover", "mini-1", "modules"], pinoRotulo: "" },
];
/**
@@ -79,11 +79,11 @@ export const TOPICOS = [
* na página /series/[key].
*/
export const SPEC_CAMPOS = [
{ campo: "arquitetura", label: "Arquitetura", secao: "processador", topicos: ["processador"] },
{ campo: "nucleos", label: "Núcleos", secao: "processador", topicos: ["processador"] },
{ campo: "arquitetura", label: "Architecture", secao: "processador", topicos: ["processador"] },
{ campo: "nucleos", label: "Cores", secao: "processador", topicos: ["processador"] },
{ campo: "frequencia", label: "Frequency", secao: "processador", topicos: ["frequencia", "processador"] },
{ campo: "coprocessador_ulp", label: "Coprocessador ULP", secao: "processador", topicos: ["baixo_consumo"] },
{ campo: "aceleradores_ia", label: "Aceleradores de IA", secao: "processador", topicos: ["ia"] },
{ campo: "coprocessador_ulp", label: "ULP Coprocessor", secao: "processador", topicos: ["baixo_consumo"] },
{ campo: "aceleradores_ia", label: "AI Accelerators", secao: "processador", topicos: ["ia"] },
{ campo: "wifi", label: "Wi-Fi", secao: "conectividade", topicos: ["wifi"] },
{ campo: "bluetooth", label: "Bluetooth", secao: "conectividade", topicos: ["bluetooth"] },
@@ -94,10 +94,10 @@ export const SPEC_CAMPOS = [
{ campo: "can", label: "CAN", secao: "conectividade", topicos: ["can"] },
{ campo: "memoria_sram", label: "SRAM", secao: "memoria", topicos: ["memoria"] },
{ campo: "memoria_sram_rtc", label: "SRAM RTC", secao: "memoria", topicos: ["memoria", "baixo_consumo"] },
{ campo: "memoria_sram_rtc", label: "RTC SRAM", secao: "memoria", topicos: ["memoria", "baixo_consumo"] },
{ campo: "memoria_rom", label: "ROM", secao: "memoria", topicos: ["memoria"] },
{ campo: "flash_externa", label: "Flash externa", secao: "memoria", topicos: ["flash", "memoria"] },
{ campo: "psram_externa", label: "PSRAM externa", secao: "memoria", topicos: ["psram", "memoria"] },
{ campo: "flash_externa", label: "External Flash", secao: "memoria", topicos: ["flash", "memoria"] },
{ campo: "psram_externa", label: "External PSRAM", secao: "memoria", topicos: ["psram", "memoria"] },
{ campo: "gpio", label: "GPIO", secao: "perifericos", topicos: ["gpio"] },
{ campo: "adc", label: "ADC", secao: "perifericos", topicos: ["adc"] },
@@ -110,11 +110,11 @@ export const SPEC_CAMPOS = [
{ campo: "pwm", label: "PWM", secao: "perifericos", topicos: ["pwm"] },
{ campo: "usb", label: "USB", secao: "perifericos", topicos: ["usb"] },
{ campo: "lcd", label: "LCD", secao: "interfaces", topicos: ["lcd"] },
{ campo: "camera", label: "Câmera", secao: "interfaces", topicos: ["camera"] },
{ campo: "camera", label: "Camera", secao: "interfaces", topicos: ["camera"] },
{ campo: "mipi_csi", label: "MIPI CSI", secao: "interfaces", topicos: ["camera"] },
{ campo: "mipi_dsi", label: "MIPI DSI", secao: "interfaces", topicos: ["lcd"] },
{ campo: "sdio", label: "SDIO", secao: "interfaces", topicos: ["sd"] },
{ campo: "sensor_temperatura", label: "Sensor de temperatura", secao: "interfaces", topicos: ["temperatura"] },
{ campo: "sensor_temperatura", label: "Temperature Sensor", secao: "interfaces", topicos: ["temperatura"] },
{ campo: "seguranca.aes", label: "AES", secao: "seguranca", topicos: ["seguranca"] },
{ campo: "seguranca.sha", label: "SHA", secao: "seguranca", topicos: ["seguranca"] },
@@ -122,27 +122,27 @@ export const SPEC_CAMPOS = [
{ campo: "seguranca.ecc", label: "ECC", secao: "seguranca", topicos: ["seguranca"] },
{ campo: "seguranca.ecdsa", label: "ECDSA", secao: "seguranca", topicos: ["seguranca"] },
{ campo: "seguranca.hmac", label: "HMAC", secao: "seguranca", topicos: ["seguranca"] },
{ campo: "seguranca.assinatura_digital", label: "Assinatura digital", secao: "seguranca", topicos: ["seguranca"] },
{ campo: "seguranca.rng", label: "Gerador aleatório", secao: "seguranca", topicos: ["seguranca"] },
{ campo: "seguranca.criptografia_flash", label: "Criptografia de flash", secao: "seguranca", topicos: ["seguranca", "flash"] },
{ campo: "seguranca.assinatura_digital", label: "Digital Signature", secao: "seguranca", topicos: ["seguranca"] },
{ campo: "seguranca.rng", label: "Random Number Generator", secao: "seguranca", topicos: ["seguranca"] },
{ campo: "seguranca.criptografia_flash", label: "Flash Encryption", secao: "seguranca", topicos: ["seguranca", "flash"] },
{ campo: "seguranca.secure_boot", label: "Secure Boot", secao: "seguranca", topicos: ["seguranca", "strapping"] },
{ campo: "temperatura_operacao", label: "Temperatura de operação", secao: "temperatura", topicos: ["temperatura"] },
{ campo: "temperatura_armazenamento", label: "Temperatura de armazenamento", secao: "temperatura", topicos: ["temperatura"] },
{ campo: "temperatura_operacao", label: "Operating Temperature", secao: "temperatura", topicos: ["temperatura"] },
{ campo: "temperatura_armazenamento", label: "Storage Temperature", secao: "temperatura", topicos: ["temperatura"] },
{ campo: "esp_idf_minimo", label: "ESP-IDF mínimo", secao: "ferramentas", topicos: ["ferramentas"] },
{ campo: "arduino_core", label: "Core Arduino", secao: "ferramentas", topicos: ["ferramentas"] },
{ campo: "depuracao", label: "Depuração", secao: "ferramentas", topicos: ["jtag", "ferramentas"] },
{ campo: "encapsulamento", label: "Encapsulamento", secao: "ferramentas", topicos: ["encapsulamento"] },
{ campo: "modulos", label: "Módulos", secao: "ferramentas", topicos: ["encapsulamento"] },
{ campo: "esp_idf_minimo", label: "Minimum ESP-IDF", secao: "ferramentas", topicos: ["ferramentas"] },
{ campo: "arduino_core", label: "Arduino Core", secao: "ferramentas", topicos: ["ferramentas"] },
{ campo: "depuracao", label: "Debugging", secao: "ferramentas", topicos: ["jtag", "ferramentas"] },
{ campo: "encapsulamento", label: "Package", secao: "ferramentas", topicos: ["encapsulamento"] },
{ campo: "modulos", label: "Modules", secao: "ferramentas", topicos: ["encapsulamento"] },
];
const ROTULOS_ENERGIA = {
active: "Ativo",
active: "Active",
modem_sleep: "Modem Sleep",
light_sleep: "Light Sleep",
deep_sleep: "Deep Sleep",
hibernation: "Hibernação",
hibernation: "Hibernation",
};
const pegar = (obj, caminho) => caminho.split(".").reduce((o, k) => (o == null ? o : o[k]), obj);
+63 -41
View File
@@ -92,18 +92,20 @@ export function paginaMeta({ titulo, descricao, caminho, keywords = [], tipo = "
------------------------------------------------------------------------ */
export const jsonLd = {
siteESociedade() {
siteESociedade(locale = "pt") {
const isEn = locale === "en";
return {
"@context": "https://schema.org",
"@graph": [
{
"@type": "WebSite",
"@id": `${SITE.url}/#site`,
url: SITE.url,
url: `${SITE.url}/${locale}`,
name: SITE.nome,
inLanguage: "pt-BR",
description:
"Documentação do ecossistema ESP32 em português brasileiro: especificações, pinagem, comparação e seleção de séries.",
inLanguage: isEn ? "en" : "pt-BR",
description: isEn
? "ESP32 ecosystem documentation: specifications, pinouts, comparison, and series selection."
: "Documentação do ecossistema ESP32 em português brasileiro: especificações, pinagem, comparação e seleção de séries.",
publisher: { "@id": `${SITE.url}/#organizacao` },
},
{
@@ -147,44 +149,51 @@ export const jsonLd = {
},
/** Documentação e ficha técnica da série como TechArticle para o Google. */
serie(chave, serie) {
serie(chave, serie, locale = "pt") {
const isEn = locale === "en";
const prop = (nome, valor) =>
valor ? { "@type": "PropertyValue", name: nome, value: String(valor) } : null;
const propriedades = [
prop("Fabricante", "Espressif Systems"),
prop("Arquitetura", serie.arquitetura),
prop("Núcleos", serie.nucleos),
prop("Frequência máxima", serie.frequencia),
prop(isEn ? "Manufacturer" : "Fabricante", "Espressif Systems"),
prop(isEn ? "Architecture" : "Arquitetura", serie.arquitetura),
prop(isEn ? "Cores" : "Núcleos", serie.nucleos),
prop(isEn ? "Max frequency" : "Frequência máxima", serie.frequencia),
prop("SRAM", serie.memoria_sram),
prop("RTC SRAM", serie.memoria_sram_rtc),
prop("Flash suportada", serie.flash_suportada),
prop("PSRAM suportada", serie.psram_suportada),
prop(isEn ? "Supported Flash" : "Flash suportada", serie.flash_suportada),
prop(isEn ? "Supported PSRAM" : "PSRAM suportada", serie.psram_suportada),
prop("GPIO", serie.gpio),
prop("Wi-Fi", serie.wifi),
prop("Bluetooth", serie.bluetooth),
prop("Zigbee / Thread / 802.15.4", serie.zigbee_thread),
prop("Encapsulamento", serie.encapsulamento),
prop("ESP-IDF mínimo", serie.esp_idf_minimo),
prop(isEn ? "Package" : "Encapsulamento", serie.encapsulamento),
prop(isEn ? "Minimum ESP-IDF" : "ESP-IDF mínimo", serie.esp_idf_minimo),
].filter(Boolean);
const imagem = serie.placa
? `${SITE.url}${serie.placa}`
: `${SITE.url}/opengraph-image.png`;
const basePath = isEn ? `/en/series/${chave}` : `/series/${chave}`;
return {
"@context": "https://schema.org",
"@type": "TechArticle",
"@id": `${SITE.url}/series/${chave}#artigo`,
headline: `${serie.nome_completo || chave}: especificações e pinagem`,
name: `${serie.nome_completo || chave} - Documentação Técnica e Especificações`,
"@id": `${SITE.url}${basePath}#artigo`,
headline: isEn
? `${serie.nome_completo || chave}: specifications and pinout`
: `${serie.nome_completo || chave}: especificações e pinagem`,
name: isEn
? `${serie.nome_completo || chave} - Technical Documentation and Specifications`
: `${serie.nome_completo || chave} - Documentação Técnica e Especificações`,
description: serie.descricao,
image: [imagem],
inLanguage: "pt-BR",
inLanguage: isEn ? "en" : "pt-BR",
datePublished: "2026-08-25T00:00:00.000Z",
dateModified: new Date().toISOString(),
mainEntityOfPage: `${SITE.url}/series/${chave}`,
url: `${SITE.url}/series/${chave}`,
mainEntityOfPage: `${SITE.url}${basePath}`,
url: `${SITE.url}${basePath}`,
author: {
"@type": "Person",
name: SITE.autor,
@@ -211,20 +220,26 @@ export const jsonLd = {
},
/** Documentação técnica de framework. */
framework(chave, framework) {
framework(chave, framework, locale = "pt") {
const isEn = locale === "en";
const basePath = isEn ? `/en/frameworks/${encodeURIComponent(chave)}` : `/frameworks/${encodeURIComponent(chave)}`;
return {
"@context": "https://schema.org",
"@type": "TechArticle",
"@id": `${SITE.url}/frameworks/${encodeURIComponent(chave)}#artigo`,
headline: `${framework.nome} para ESP32: Guia e Documentação`,
name: `${framework.nome_completo || framework.nome} para ESP32`,
"@id": `${SITE.url}${basePath}#artigo`,
headline: isEn
? `${framework.nome} for ESP32: Guide and Documentation`
: `${framework.nome} para ESP32: Guia e Documentação`,
name: isEn
? `${framework.nome_completo || framework.nome} for ESP32`
: `${framework.nome_completo || framework.nome} para ESP32`,
description: framework.descricao,
image: [`${SITE.url}/opengraph-image.png`],
inLanguage: "pt-BR",
inLanguage: isEn ? "en" : "pt-BR",
datePublished: "2026-08-25T00:00:00.000Z",
dateModified: new Date().toISOString(),
mainEntityOfPage: `${SITE.url}/frameworks/${encodeURIComponent(chave)}`,
url: `${SITE.url}/frameworks/${encodeURIComponent(chave)}`,
mainEntityOfPage: `${SITE.url}${basePath}`,
url: `${SITE.url}${basePath}`,
author: {
"@type": "Person",
name: SITE.autor,
@@ -247,25 +262,27 @@ export const jsonLd = {
applicationCategory: "DeveloperApplication",
operatingSystem: "Embedded",
description: framework.descricao,
url: framework.documentacao || `${SITE.url}/frameworks/${encodeURIComponent(chave)}`,
url: framework.documentacao || `${SITE.url}${basePath}`,
},
};
},
/** Glossário: marca cada verbete como termo definido. */
glossario(categorias) {
glossario(categorias, locale = "pt") {
const isEn = locale === "en";
const basePath = isEn ? "/en/glossary" : "/glossario";
return {
"@context": "https://schema.org",
"@type": "DefinedTermSet",
"@id": `${SITE.url}/glossario#glossario`,
name: "Glossário Técnico do ESP32",
inLanguage: "pt-BR",
"@id": `${SITE.url}${basePath}#glossario`,
name: isEn ? "ESP32 Technical Glossary" : "Glossário Técnico do ESP32",
inLanguage: isEn ? "en" : "pt-BR",
hasDefinedTerm: categorias.flatMap((cat) =>
cat.termos.map((t) => ({
"@type": "DefinedTerm",
name: t.termo,
description: t.definicao,
inDefinedTermSet: `${SITE.url}/glossario#glossario`,
inDefinedTermSet: `${SITE.url}${basePath}#glossario`,
}))
),
};
@@ -285,7 +302,8 @@ export const jsonLd = {
},
/** Aplicação web / ferramenta interativa (Seletor, Comparador, Catálogo). */
aplicacaoWeb({ nome, descricao, caminho }) {
aplicacaoWeb({ nome, descricao, caminho, locale = "pt" }) {
const isEn = locale === "en";
return {
"@context": "https://schema.org",
"@type": "WebApplication",
@@ -296,7 +314,7 @@ export const jsonLd = {
applicationCategory: "DeveloperApplication",
operatingSystem: "All",
browserRequirements: "Requires JavaScript",
inLanguage: "pt-BR",
inLanguage: isEn ? "en" : "pt-BR",
author: {
"@type": "Person",
name: SITE.autor,
@@ -376,15 +394,19 @@ export const jsonLd = {
},
/** Página Sobre com metadados E-E-A-T de autoria e reputação. */
paginaSobre() {
paginaSobre(locale = "pt") {
const isEn = locale === "en";
const basePath = isEn ? "/en/about" : "/sobre";
return {
"@context": "https://schema.org",
"@type": "AboutPage",
"@id": `${SITE.url}/sobre#sobre`,
name: "Sobre o ESPDocs",
description: "O ESPDocs é uma plataforma independente que reúne a documentação do ecossistema ESP32 em português brasileiro.",
url: `${SITE.url}/sobre`,
inLanguage: "pt-BR",
"@id": `${SITE.url}${basePath}#sobre`,
name: isEn ? "About ESPDocs" : "Sobre o ESPDocs",
description: isEn
? "ESPDocs is an independent platform organizing technical documentation of the ESP32 ecosystem."
: "O ESPDocs é uma plataforma independente que reúne a documentação do ecossistema ESP32 em português brasileiro.",
url: `${SITE.url}${basePath}`,
inLanguage: isEn ? "en" : "pt-BR",
mainEntity: {
"@type": "Person",
name: SITE.autor,