import Header from "@/components/Header"; import Footer from "@/components/Footer"; import BookCover from "@/components/BookCover"; import Link from "next/link"; import seriesData from "@/public/series.json"; import frameworksData from "@/public/frameworks.json"; import { SITE } from "@/lib/seo"; import { getLocalizedHref } from "@/i18n/links"; import { AlertTriangle, ArrowRight, ArrowUpRight, BookOpen, Box, Cpu, Scale, SlidersHorizontal, Terminal, } from "lucide-react"; const FEATURED = ["ESP32", "ESP32-S3", "ESP32-C6", "ESP32-C3", "ESP32-P4", "ESP32-H2"]; const TOOLS = [ { href: "/seletor", title: "Seletor inteligente", desc: "Responda oito perguntas sobre o projeto e receba os chips mais compatíveis, com justificativa técnica.", icon: SlidersHorizontal, action: "Encontrar meu chip", }, { href: "/comparacao", title: "Comparador de séries", desc: "Coloque até quatro modelos lado a lado e compare núcleos, rádio, memória, periféricos e segurança.", icon: Scale, action: "Comparar agora", }, { href: "/diagnostico", title: "Diagnóstico de falhas", desc: "Causas e correções para brownout, bootloop, Guru Meditation, watchdog e falhas de flash.", icon: AlertTriangle, action: "Abrir diagnóstico", }, { href: "/componentes", title: "Component Registry", desc: "Drivers, bibliotecas e BSPs do registro oficial da Espressif, com manifesto pronto para o projeto.", icon: Box, action: "Explorar componentes", }, { href: "/frameworks", title: "Frameworks e SDKs", desc: "ESP-IDF, Arduino, Rust, Matter, MicroPython e as ferramentas que ficam em volta do chip.", icon: Terminal, action: "Ver frameworks", }, { href: "/catalogo", title: "Catálogo de placas", desc: "DevKits e módulos reais, com interface USB, sensores integrados e link para a loja oficial.", icon: Cpu, action: "Ver placas", }, ]; const ERRORS = [ { code: "Brownout detector was triggered", cause: "Queda de tensão na inicialização do rádio.", fix: "Capacitor de 10–100 µF junto ao chip e fonte de 5 V com corrente suficiente.", }, { code: "Guru Meditation Error", cause: "Ponteiro inválido, stack overflow ou uso incorreto de interrupção.", fix: "Leia o backtrace com addr2line e dimensione a stack da task no FreeRTOS.", }, { code: "ADC2 indisponível com Wi-Fi", cause: "O controlador de rádio reserva o ADC2 enquanto está ativo.", fix: "Use os pinos do ADC1 para sensores analógicos que convivem com o Wi-Fi.", }, { code: "Flash Read err / bootloader", cause: "Tensão ou modo de flash incorretos, ou pino de strapping preso no boot.", fix: "Confira 3,3 V, pull-ups de boot e a configuração de flash no esptool.", }, ]; export default async function Home({ params }) { const { locale } = await params; const isPt = locale === "pt"; const getLinkHref = (href) => getLocalizedHref(`/${locale}${href}`, locale); const seriesCount = Object.keys(seriesData).length; const frameworkCount = Object.keys(frameworksData).length; const featured = FEATURED.map((key) => [key, seriesData[key]]).filter(([, serie]) => Boolean(serie)); return (

O ESP32,
sem ruído.

Especificações, pinagem, comparações e diagnóstico em uma leitura só. Menos tradução de datasheet, mais tempo com o protótipo na bancada.

{seriesCount} séries {frameworkCount} frameworks {isPt && ( <> 78 capítulos no livro 100% em português )}

Séries em destaque

O essencial de cada família, antes de abrir o datasheet.

Índice completo
{featured.map(([key, serie]) => (

{key}

{serie.arquitetura}

{serie.descricao}

{serie.frequencia} Ficha
))}
{isPt && (
)}

Ferramentas

Comece pelo problema.

Cada ferramenta resolve uma etapa concreta do projeto, sem cadastro e sem rodeio.

{TOOLS.map((tool) => { const Icon = tool.icon; return (

{tool.title}

{tool.desc}

{tool.action} ); })}

Diagnóstico

O primeiro boot não precisa virar noite.

Os erros mais comuns têm causa conhecida. O guia parte da mensagem no terminal e chega ao ajuste de hardware ou firmware.

4 exemplos de 30+
{ERRORS.map((item) => ( {item.code} {item.cause} {item.fix} ))}

Curadoria independente

Feito para consultar no meio do projeto.

O ESPDocs organiza dados públicos da Espressif e aponta sempre para a fonte oficial. Para decisões críticas, o datasheet e o Technical Reference Manual continuam sendo a palavra final.

); }