"use client"; import Header from "@/components/Header"; import Footer from "@/components/Footer"; import { useState, Fragment } from "react"; import Link from "next/link"; import seriesData from "@/public/series.json"; import { Scale, GitCompare, Check, ChevronDown, ChevronUp, ArrowRight, FileText, ExternalLink, ShoppingBag, Cpu, Network, Database, Sliders, Activity, HelpCircle, Thermometer, ShieldCheck, Package } from "lucide-react"; // Category to Icon mapping const categoryIcons = { "Geral": , "Processador": , "Conectividade": , "Memória": , "Periféricos Digitais": , "Periféricos Analógicos": , "Segurança": , "Disponibilidade e Ferramentas": , "Interfaces Especiais": , "Especificações Ambientais": , }; /* Lê "seguranca.ecc" além de chaves simples. */ function valorDe(objeto, caminho) { return caminho.split(".").reduce((atual, parte) => atual?.[parte], objeto); } export default function Comparacao() { const [selectedSeries, setSelectedSeries] = useState(["ESP32", "ESP32-S3"]); const [collapsedCategories, setCollapsedCategories] = useState({ "Interfaces Especiais": true, "Especificações Ambientais": true, }); const series = Object.entries(seriesData); const toggleSeries = (seriesKey) => { if (selectedSeries.includes(seriesKey)) { if (selectedSeries.length > 2) { setSelectedSeries(selectedSeries.filter(s => s !== seriesKey)); } } else { if (selectedSeries.length < 4) { setSelectedSeries([...selectedSeries, seriesKey]); } } }; const toggleCategory = (category) => { setCollapsedCategories({ ...collapsedCategories, [category]: !collapsedCategories[category] }); }; const compareFields = [ { category: "Geral", fields: [ { key: "nome_completo", label: "Nome Completo" }, { key: "descricao", label: "Descrição" }, ]}, { category: "Disponibilidade e Ferramentas", fields: [ { key: "esp_idf_minimo", label: "ESP-IDF mínimo" }, { key: "arduino_core", label: "Core Arduino" }, { key: "depuracao", label: "Depuração / JTAG" }, { key: "encapsulamento", label: "Encapsulamento" }, { key: "modulos", label: "Módulos disponíveis" }, ]}, { category: "Processador", fields: [ { key: "arquitetura", label: "Arquitetura" }, { key: "nucleos", label: "Núcleos" }, { key: "frequencia", label: "Frequência" }, { key: "coprocessador_ulp", label: "Coprocessador ULP" }, { key: "aceleradores_ia", label: "Aceleradores de IA" }, ]}, { category: "Conectividade", fields: [ { key: "wifi", label: "Wi-Fi" }, { key: "bluetooth", label: "Bluetooth" }, { key: "zigbee_thread", label: "Zigbee/Thread" }, { key: "matter", label: "Matter" }, { key: "ethernet", label: "Ethernet" }, ]}, { category: "Memória", fields: [ { key: "memoria_sram", label: "SRAM" }, { key: "memoria_sram_rtc", label: "SRAM RTC" }, { key: "memoria_rom", label: "ROM" }, { key: "flash_externa", label: "Flash Externa" }, { key: "psram_externa", label: "PSRAM Externa" }, ]}, { category: "Periféricos Digitais", fields: [ { key: "gpio", label: "GPIO" }, { key: "uart", label: "UART" }, { key: "spi", label: "SPI" }, { key: "i2c", label: "I²C" }, { key: "i2s", label: "I²S" }, { key: "pwm", label: "PWM" }, { key: "can", label: "CAN" }, { key: "usb", label: "USB" }, { key: "depuracao", label: "Depuração / JTAG" }, { key: "sdio", label: "SDIO" }, ]}, { category: "Periféricos Analógicos", fields: [ { key: "adc", label: "ADC" }, { key: "dac", label: "DAC" }, { key: "touch", label: "Touch Capacitivo" }, { key: "sensor_hall", label: "Sensor Hall" }, { key: "sensor_temperatura", label: "Sensor de Temperatura" }, ]}, { category: "Segurança", fields: [ { key: "seguranca.aes", label: "AES" }, { key: "seguranca.sha", label: "SHA" }, { key: "seguranca.rsa", label: "RSA / MPI" }, { key: "seguranca.ecc", label: "ECC (curvas elípticas)" }, { key: "seguranca.ecdsa", label: "ECDSA em hardware" }, { key: "seguranca.hmac", label: "HMAC" }, { key: "seguranca.assinatura_digital", label: "Assinatura Digital (DS)" }, { key: "seguranca.key_manager", label: "Key Manager" }, { key: "seguranca.rng", label: "Gerador aleatório (RNG)" }, { key: "seguranca.criptografia_flash", label: "Criptografia de flash" }, { key: "seguranca.secure_boot", label: "Secure Boot" }, { key: "seguranca.protecao_dpa", label: "Proteção contra DPA" }, ]}, { category: "Interfaces Especiais", fields: [ { key: "lcd", label: "LCD" }, { key: "camera", label: "Câmera" }, { key: "mipi_csi", label: "MIPI CSI" }, { key: "mipi_dsi", label: "MIPI DSI" }, { key: "ethernet_mac", label: "Ethernet MAC" }, ]}, { category: "Especificações Ambientais", fields: [ { key: "temperatura_operacao", label: "Temp. Operação" }, { key: "temperatura_armazenamento", label: "Temp. Armazenamento" }, ]}, ]; const renderValue = (value) => { if (!value || value === "Não") { return —; } if (value === "Sim") { return ( ); } return {value}; }; return (
{/* Top Section */}

Análise Técnica Comparativa

Comparador de Séries ESP32

Coloque lado a lado as especificações completas de clock, memória, interfaces de rádio e periféricos analógicos para validar a engenharia e o custo-benefício de cada microcontrolador.

{/* Model Selector Card */}

Escolha as Séries

Selecione de 2 a até 4 modelos simultâneos para montar sua planilha de comparação.

{selectedSeries.length} de 4 selecionados
{/* Brand-colored dynamic button selector grid */}
{series.map(([key, seriesItem]) => { const isSelected = selectedSeries.includes(key); return ( ); })}
{/* Side by side interactive Table */}
{selectedSeries.map(seriesKey => { const seriesItem = seriesData[seriesKey]; return ( ); })} {compareFields.map(({ category, fields }) => { const isCollapsed = collapsedCategories[category]; return ( {/* Collapsible Category Accordion Header */} toggleCategory(category)} className="bg-slate-100/80 dark:bg-slate-950/60 border-y border-slate-250/60 dark:border-slate-800/80 cursor-pointer select-none hover:bg-slate-200/60 dark:hover:bg-slate-900/80 transition-colors" > {/* Fields list within category (if expanded) */} {!isCollapsed && fields.map(({ key, label }) => ( {selectedSeries.map(seriesKey => { const seriesItem = seriesData[seriesKey]; const value = valorDe(seriesItem, key); return ( ); })} ))} ); })}
Especificação
{seriesItem.icone} {seriesKey}
{categoryIcons[category] || } {category}
{isCollapsed ? ( ) : ( )}
{label} {renderValue(value)}
{/* Professional CTA Banner for the Catalog */}
Hardware Adicional

Catálogo de Placas de Desenvolvimento

Quer testar o chip selecionado na bancada? Compare placas de desenvolvimento com layouts de pinos mapeados, conexões de periféricos e links oficiais dos melhores fornecedores.

Acessar Catálogo
{/* Detailed technical datasheets section */}

Documentação Técnica Relacionada

{selectedSeries.map(seriesKey => { const seriesItem = seriesData[seriesKey]; return (
{seriesItem.icone}

{seriesKey}

Guia de Hardware

{seriesItem.datasheet ? ( Datasheet Oficial ) : ( Datasheet ainda não publicado )}
); })}
); }