import Header from "@/components/Header"; import Footer from "@/components/Footer"; import Link from "next/link"; import seriesData from "@/public/series.json"; import { notFound } from "next/navigation"; import ConnectionsDiagram from "@/components/ConnectionsDiagram"; import Image from "next/image"; import SeriesTabMenu from "@/components/SeriesTabMenu"; export default function SerieDetail({ params }) { const { key } = params; const serie = seriesData[key]; if (!serie) { notFound(); } let conexoes = []; try { conexoes = require(`@/public/conexoes/${key}.json`); } catch (error) { console.log(`Arquivo de conexões não encontrado para ${key}`); } // Development board image mapping const devBoardImages = { "ESP32": "/placas/esp32.png", "ESP32-S2": "/placas/esp32-s2.png", "ESP32-S3": "/placas/esp32-s3.png", "ESP32-C3": "/placas/esp32-c3.png", "ESP32-C5": "/placas/esp32-c5.png", "ESP32-C6": "/placas/esp32-c6.png", "ESP32-H2": "/placas/esp32-h2.png", "ESP32-C2": "/placas/esp32-c2.png", "ESP32-P4": "/placas/esp32-p4.png", }; const seriesKeys = Object.keys(seriesData); const currentIndex = seriesKeys.indexOf(key); const previousKey = currentIndex > 0 ? seriesKeys[currentIndex - 1] : null; const nextKey = currentIndex < seriesKeys.length - 1 ? seriesKeys[currentIndex + 1] : null; const processadorSpecs = [ { label: "Arquitetura", value: serie.arquitetura, icon: "🔧" }, { label: "Núcleos", value: serie.nucleos, icon: "⚙️" }, { label: "Frequência", value: serie.frequencia, icon: "🚀" }, { label: "Coprocessador ULP", value: serie.coprocessador_ulp || "Não", icon: "💤" }, { label: "Aceleradores IA", value: serie.aceleradores_ia || "Não", icon: "🤖" }, ]; const conectividadeSpecs = [ { label: "Wi-Fi", value: serie.wifi || "Não", icon: "📶" }, { label: "Bluetooth", value: serie.bluetooth || "Não", icon: "📱" }, { label: "Zigbee/Thread", value: serie.zigbee_thread || "Não", icon: "🌐" }, { label: "Matter", value: serie.matter || "Não", icon: "🏠" }, { label: "Ethernet", value: serie.ethernet || serie.ethernet_mac || "Não", icon: "🔌" }, { label: "CAN", value: serie.can || "Não", icon: "🚗" }, ]; const memoriaSpecs = [ { label: "SRAM", value: serie.memoria_sram, icon: "💾" }, { label: "SRAM RTC", value: serie.memoria_sram_rtc, icon: "⏰" }, { label: "ROM", value: serie.memoria_rom, icon: "📀" }, { label: "Flash Externa", value: serie.flash_externa, icon: "💿" }, { label: "PSRAM Externa", value: serie.psram_externa || "Não", icon: "🎯" }, ]; const perifericos = [ { label: "GPIO", value: serie.gpio, icon: "📍" }, { label: "ADC", value: serie.adc, icon: "📊" }, { label: "DAC", value: serie.dac || "Não", icon: "🔊" }, { label: "Touch", value: serie.touch || "Não", icon: "👆" }, { label: "UART", value: serie.uart, icon: "💬" }, { label: "SPI", value: serie.spi, icon: "🔄" }, { label: "I2C", value: serie.i2c, icon: "🔗" }, { label: "I2S", value: serie.i2s, icon: "🎵" }, { label: "PWM", value: serie.pwm, icon: "〰️" }, { label: "USB", value: serie.usb || "Não", icon: "🔌" }, ]; const interfacesEspeciais = []; if (serie.lcd) interfacesEspeciais.push({ label: "LCD", value: serie.lcd, icon: "🖥️" }); if (serie.camera) interfacesEspeciais.push({ label: "Camera", value: serie.camera, icon: "📷" }); if (serie.mipi_csi) interfacesEspeciais.push({ label: "MIPI CSI", value: serie.mipi_csi, icon: "📹" }); if (serie.mipi_dsi) interfacesEspeciais.push({ label: "MIPI DSI", value: serie.mipi_dsi, icon: "🖼️" }); if (serie.sdio) interfacesEspeciais.push({ label: "SDIO", value: serie.sdio, icon: "💳" }); if (serie.sensor_hall) interfacesEspeciais.push({ label: "Sensor Hall", value: serie.sensor_hall, icon: "🧲" }); if (serie.sensor_temperatura) interfacesEspeciais.push({ label: "Sensor Temperatura", value: serie.sensor_temperatura, icon: "🌡️" }); const tabs = [ { id: 'connections', label: 'Diagrama de Conexões', available: conexoes.length > 0, content: (
) }, { id: 'devboard', label: 'Placa de Desenvolvimento', available: devBoardImages[key], content: (

🔧 Placa de Desenvolvimento Oficial

{`${key}

{key} - Placa de desenvolvimento oficial da Espressif

) }, { id: 'specs', label: 'Especificações', available: true, content: (
{interfacesEspeciais.length > 0 && ( )}
) } ]; return (
← Voltar para Séries
{serie.icone}

{key}

{serie.nome_completo}

{serie.arquitetura}
📄 Datasheet Oficial

{serie.descricao}

PROCESSADOR

{serie.nucleos.includes("2") ? "Dual-Core" : "Single-Core"}

{serie.frequencia}

MEMÓRIA SRAM

{serie.memoria_sram}

+ {serie.memoria_sram_rtc} RTC

GPIO

{serie.gpio}

Pinos disponíveis

{previousKey ? ( ←

Anterior

{previousKey}

) : (
)} 📊 Comparar Séries {nextKey ? (

Próximo

{nextKey}

→ ) : (
)}
); } function SpecSection({ title, specs, cor }) { return (

{title}

{specs.map((spec, index) => (
{spec.icon}

{spec.label}

{spec.value}

))}
); } export async function generateMetadata({ params }) { const { key } = params; const serie = seriesData[key]; if (!serie) { return { title: "Série não encontrada", }; } return { title: `${key} - ${serie.nome_completo}`, description: serie.descricao, }; } export async function generateStaticParams() { return Object.keys(seriesData).map((key) => ({ key: key, })); }