Adição do ESP32-H4

This commit is contained in:
Lucas Rayan committed 2026-08-20 04:13:37 -03:00
1 parent b1e76757ab
commit e7d6b5cf87
18 files changed
+15022 -1176

No files matched your search

+21 -10
View File
@@ -21,7 +21,8 @@ import {
Sliders,
Activity,
HelpCircle,
Thermometer
Thermometer,
ShieldCheck
} from "lucide-react";
// Category to Icon mapping
@@ -32,6 +33,7 @@ const categoryIcons = {
"Memória": <Database className="w-4 h-4 text-pink-500" />,
"Periféricos Digitais": <Sliders className="w-4 h-4 text-sky-500" />,
"Periféricos Analógicos": <Activity className="w-4 h-4 text-emerald-500" />,
"Segurança": <ShieldCheck className="w-4 h-4 text-teal-500" />,
"Interfaces Especiais": <Activity className="w-4 h-4 text-cyan-500" />,
"Especificações Ambientais": <Thermometer className="w-4 h-4 text-red-500" />,
};
@@ -108,6 +110,9 @@ export default function Comparacao() {
{ key: "sensor_hall", label: "Sensor Hall" },
{ key: "sensor_temperatura", label: "Sensor de Temperatura" },
]},
{ category: "Segurança", fields: [
{ key: "aceleradores_cripto", label: "Aceleradores Criptográficos" },
]},
{ category: "Interfaces Especiais", fields: [
{ key: "lcd", label: "LCD" },
{ key: "camera", label: "Câmera" },
@@ -339,15 +344,21 @@ export default function Comparacao() {
</div>
</div>
<a
href={seriesItem.datasheet}
target="_blank"
rel="noopener noreferrer"
className="inline-flex items-center justify-center gap-1.5 w-full text-center py-2 bg-slate-100 dark:bg-slate-950 hover:bg-purple-500/10 dark:hover:bg-purple-400/10 border border-slate-200 dark:border-slate-800 rounded-xl text-xs font-bold text-slate-650 dark:text-slate-350 hover:text-purple-600 dark:hover:text-purple-400 transition-colors"
>
<span>Datasheet Oficial</span>
<ExternalLink className="w-3.5 h-3.5" />
</a>
{seriesItem.datasheet ? (
<a
href={seriesItem.datasheet}
target="_blank"
rel="noopener noreferrer"
className="inline-flex items-center justify-center gap-1.5 w-full text-center py-2 bg-slate-100 dark:bg-slate-950 hover:bg-purple-500/10 dark:hover:bg-purple-400/10 border border-slate-200 dark:border-slate-800 rounded-xl text-xs font-bold text-slate-650 dark:text-slate-350 hover:text-purple-600 dark:hover:text-purple-400 transition-colors"
>
<span>Datasheet Oficial</span>
<ExternalLink className="w-3.5 h-3.5" />
</a>
) : (
<span className="inline-flex items-center justify-center gap-1.5 w-full text-center py-2 bg-slate-100 dark:bg-slate-950 border border-slate-200 dark:border-slate-800 rounded-xl text-xs font-bold text-slate-400 dark:text-slate-500 select-none">
<span>Datasheet ainda não publicado</span>
</span>
)}
</div>
);
})}
+5
View File
@@ -39,6 +39,11 @@ export default function Glossario() {
definicao: "Hardware dedicado para acelerar operações de inteligência artificial e redes neurais.",
exemplo: "ESP32-P4 possui Vector Extension para processamento de IA.",
},
{
termo: "Aceleradores Criptográficos",
definicao: "Blocos de hardware dedicados que executam algoritmos de criptografia (AES, SHA, RSA, ECC/ECDSA, HMAC) muito mais rápido e com menor consumo do que a CPU, além de sustentarem recursos como Secure Boot, criptografia de flash e assinatura digital.",
exemplo: "ESP32-C5 e ESP32-P4 incluem AES, SHA, RSA, ECC/ECDSA e Key Manager para provisionamento seguro de chaves.",
},
],
},
{
+39 -2
View File
@@ -32,7 +32,8 @@ import {
ShoppingBag,
BookOpen,
Compass,
Smartphone
Smartphone,
ShieldCheck
} from "lucide-react";
// Dynamic icon mapper to convert choices to sleek Lucide vectors
@@ -67,6 +68,10 @@ const iconMap = {
// IA
"ai_ai-ml": <Bot className="w-6 h-6 text-pink-500" />,
"ai_standard": <Ban className="w-6 h-6 text-slate-450 dark:text-slate-550" />,
// Segurança
"security_critical": <ShieldCheck className="w-6 h-6 text-teal-500" />,
"security_standard": <HelpCircle className="w-6 h-6 text-slate-450 dark:text-slate-550" />,
};
const getOptionIcon = (questionId, value) => {
@@ -83,6 +88,7 @@ export default function Seletor() {
power: null,
hardware: null,
ai: null,
security: null,
});
const [showResults, setShowResults] = useState(false);
const [showSummary, setShowSummary] = useState(false);
@@ -138,6 +144,15 @@ export default function Seletor() {
{ value: "ai-ml", label: "Sim, preciso rodar modelos de IA localmente", icon: "ai_ai-ml" },
{ value: "standard", label: "Não, processamento lógico comum é suficiente", icon: "ai_standard" },
]
},
{
id: "security",
question: "Qual o nível de segurança criptográfica exigido pelo produto?",
description: "Aceleradores criptográficos no silício executam AES, SHA, RSA e curvas elípticas em hardware, viabilizando Secure Boot, criptografia de flash e provisionamento seguro de chaves sem penalizar a CPU.",
options: [
{ value: "critical", label: "Crítico (Matter, pagamentos, provisionamento seguro de chaves)", icon: "security_critical" },
{ value: "standard", label: "Padrão (TLS comum e projetos sem requisitos regulatórios)", icon: "security_standard" },
]
}
];
@@ -168,6 +183,7 @@ export default function Seletor() {
power: null,
hardware: null,
ai: null,
security: null,
});
};
@@ -354,6 +370,27 @@ export default function Seletor() {
} else if (answers.ai === "standard") {
scores[key] += 5;
}
// 6. SEGURANÇA CRIPTOGRÁFICA (security)
if (answers.security === "critical") {
const cripto = serie.aceleradores_cripto || "";
if (cripto.includes("Key Manager")) {
scores[key] += 30;
reasons[key].push("Suíte criptográfica completa em hardware com Key Manager (provisionamento e uso de chaves sem exposição ao firmware)");
} else if (cripto.includes("ECDSA")) {
scores[key] += 20;
reasons[key].push("Aceleradores criptográficos com ECC/ECDSA dedicados (assinatura digital e Secure Boot eficientes)");
} else if (cripto) {
scores[key] += 10;
reasons[key].push("Aceleradores criptográficos básicos em hardware (AES, SHA, Secure Boot e criptografia de flash)");
} else {
scores[key] -= 20;
reasons[key].push("Sem aceleração criptográfica dedicada: operações de segurança ficam a cargo da CPU");
}
} else if (answers.security === "standard") {
scores[key] += 5;
}
});
return { scores, reasons };
@@ -397,7 +434,7 @@ export default function Seletor() {
</h1>
<p className="text-sm md:text-base text-slate-500 dark:text-slate-400 leading-relaxed max-w-2xl mx-auto">
Responda a **5 perguntas simples** sobre o propósito, conexões de hardware e fonte de alimentação do seu projeto e encontre instantaneamente o silício Espressif perfeito para sua bancada.
Responda a **6 perguntas simples** sobre o propósito, conexões de hardware, alimentação e segurança do seu projeto e encontre instantaneamente o silício Espressif perfeito para sua bancada.
</p>
</section>
+37 -10
View File
@@ -39,7 +39,9 @@ import {
Folder,
Thermometer,
ChevronRight,
Lightbulb
Lightbulb,
ShieldCheck,
KeyRound
} from "lucide-react";
export default async function SerieDetail({ params }) {
@@ -70,6 +72,11 @@ export default async function SerieDetail({ params }) {
{ label: "Aceleradores IA", value: serie.aceleradores_ia || "Não", icon: <Sparkles className="w-5 h-5 text-purple-500" /> },
];
const segurancaSpecs = [
{ label: "Aceleradores Criptográficos", value: serie.aceleradores_cripto || "Não", icon: <ShieldCheck className="w-5 h-5 text-teal-500" /> },
{ label: "Gerador de Números Aleatórios", value: serie.aceleradores_cripto ? "Sim (RNG por hardware)" : "Não", icon: <KeyRound className="w-5 h-5 text-teal-500" /> },
];
const conectividadeSpecs = [
{ label: "Wi-Fi", value: serie.wifi || "Não", icon: <Wifi className="w-5 h-5 text-indigo-500" /> },
{ label: "Bluetooth", value: serie.bluetooth || "Não", icon: <Bluetooth className="w-5 h-5 text-indigo-500" /> },
@@ -249,15 +256,22 @@ export default async function SerieDetail({ params }) {
{/* Links Block */}
<div className="grid sm:grid-cols-2 lg:grid-cols-1 gap-3 w-full lg:w-auto">
<a
href={serie.datasheet}
target="_blank"
rel="noopener noreferrer"
className="inline-flex items-center justify-center gap-2 bg-slate-900 dark:bg-slate-100 text-white dark:text-slate-950 px-5 py-3 rounded-xl font-bold text-xs uppercase tracking-wider hover:opacity-90 transition-opacity shadow-lg"
>
<FileText className="w-4 h-4" />
<span>Datasheet Oficial</span>
</a>
{serie.datasheet ? (
<a
href={serie.datasheet}
target="_blank"
rel="noopener noreferrer"
className="inline-flex items-center justify-center gap-2 bg-slate-900 dark:bg-slate-100 text-white dark:text-slate-950 px-5 py-3 rounded-xl font-bold text-xs uppercase tracking-wider hover:opacity-90 transition-opacity shadow-lg"
>
<FileText className="w-4 h-4" />
<span>Datasheet Oficial</span>
</a>
) : (
<span className="inline-flex items-center justify-center gap-2 bg-slate-200/60 dark:bg-slate-800/60 text-slate-500 dark:text-slate-400 border border-slate-300/60 dark:border-slate-700/60 px-5 py-3 rounded-xl font-bold text-xs uppercase tracking-wider select-none cursor-not-allowed">
<FileText className="w-4 h-4" />
<span>Datasheet ainda não publicado</span>
</span>
)}
<a
href={serie.guia_de_programacao}
@@ -286,6 +300,18 @@ export default async function SerieDetail({ params }) {
<p className="text-sm text-slate-500 dark:text-slate-400 mt-6 leading-relaxed max-w-4xl">
{serie.descricao}
</p>
{serie.status_documentacao && (
<div className="mt-6 max-w-4xl bg-amber-500/10 text-amber-700 dark:text-amber-400 border border-amber-500/20 p-5 rounded-2xl">
<div className="flex items-start gap-3">
<AlertTriangle className="w-5 h-5 shrink-0 mt-0.5" />
<div>
<p className="text-xs font-bold uppercase tracking-wider mb-1">Documentação preliminar</p>
<p className="text-xs leading-relaxed">{serie.status_documentacao}</p>
</div>
</div>
</div>
)}
</div>
</div>
@@ -326,6 +352,7 @@ export default async function SerieDetail({ params }) {
<div className="space-y-6 mt-12">
<SpecSection title="Processador" specs={processadorSpecs} cor={serie.cor} icon={<Cpu className="w-5 h-5" style={{ color: serie.cor }} />} />
<SpecSection title="Conectividade RF" specs={conectividadeSpecs} cor={serie.cor} icon={<Wifi className="w-5 h-5" style={{ color: serie.cor }} />} />
<SpecSection title="Segurança e Criptografia" specs={segurancaSpecs} cor={serie.cor} icon={<ShieldCheck className="w-5 h-5" style={{ color: serie.cor }} />} />
<SpecSection title="Estrutura de Memória" specs={memoriaSpecs} cor={serie.cor} icon={<Database className="w-5 h-5" style={{ color: serie.cor }} />} />
{/* Power Consumption section */}
+18 -2
View File
@@ -15,7 +15,9 @@ import {
Home,
ArrowRight,
Scale,
Compass
Compass,
ShieldCheck,
AlertTriangle
} from "lucide-react";
export default function Series() {
@@ -158,7 +160,7 @@ export default function Series() {
</div>
</div>
{/* IA / Matter Badges & Action Footer */}
{/* IA / Cripto / Matter Badges & Action Footer */}
<div className="mt-8">
<div className="flex flex-wrap gap-2 mb-6">
{serie.aceleradores_ia && (
@@ -168,6 +170,20 @@ export default function Series() {
</span>
)}
{serie.status_documentacao && (
<span className="inline-flex items-center gap-1 px-2.5 py-1 bg-amber-500/10 text-amber-600 dark:text-amber-400 text-[10px] font-bold uppercase rounded-lg border border-amber-500/20 shadow-xs select-none">
<AlertTriangle className="w-3 h-3" />
<span>Doc. Preliminar</span>
</span>
)}
{serie.aceleradores_cripto && (
<span className="inline-flex items-center gap-1 px-2.5 py-1 bg-teal-500/10 text-teal-600 dark:text-teal-400 text-[10px] font-bold uppercase rounded-lg border border-teal-500/20 shadow-xs select-none">
<ShieldCheck className="w-3 h-3" />
<span>Cripto por Hardware</span>
</span>
)}
{serie.matter === "Sim" && (
<span className="inline-flex items-center gap-1 px-2.5 py-1 bg-emerald-500/10 text-emerald-600 dark:text-emerald-400 text-[10px] font-bold uppercase rounded-lg border border-emerald-500/20 shadow-xs select-none">
<Home className="w-3 h-3" />