Add public/series.json containing detailed ESP32 family specifications
Add a new JSON file public/series.json that defines detailed metadata for multiple ESP32 series variants. The file includes entries for: ESP32, ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-P4 and ESP32-H2. Each entry provides human-friendly and technical fields such as: - nome_completo, icone, descricao - arquitetura, nucleos, frequencia, coprocessador_ulp, aceleradores_ia (when applicable) - wireless capabilities (Wi‑Fi, Bluetooth, Zigbee/Thread, Matter), USB, Ethernet - memory details (SRAM, RTC SRAM, ROM, external flash/PSRAM) - peripherals and I/O counts (GPIO, ADC, DAC, touch, UART, SPI, I2C, I2S, PWM, SDIO, etc.) - sensor info, temperature ranges, datasheet links and UI color values This file will be used to power device/series lists and UI displays with consistent, localized technical descriptions and links to datasheets.
No files matched your search
@@ -1,139 +1,41 @@
|
|||||||
# Logs
|
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||||
logs
|
|
||||||
*.log
|
|
||||||
npm-debug.log*
|
|
||||||
yarn-debug.log*
|
|
||||||
yarn-error.log*
|
|
||||||
lerna-debug.log*
|
|
||||||
|
|
||||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
# dependencies
|
||||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
/node_modules
|
||||||
|
/.pnp
|
||||||
# Runtime data
|
|
||||||
pids
|
|
||||||
*.pid
|
|
||||||
*.seed
|
|
||||||
*.pid.lock
|
|
||||||
|
|
||||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
|
||||||
lib-cov
|
|
||||||
|
|
||||||
# Coverage directory used by tools like istanbul
|
|
||||||
coverage
|
|
||||||
*.lcov
|
|
||||||
|
|
||||||
# nyc test coverage
|
|
||||||
.nyc_output
|
|
||||||
|
|
||||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
|
||||||
.grunt
|
|
||||||
|
|
||||||
# Bower dependency directory (https://bower.io/)
|
|
||||||
bower_components
|
|
||||||
|
|
||||||
# node-waf configuration
|
|
||||||
.lock-wscript
|
|
||||||
|
|
||||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
|
||||||
build/Release
|
|
||||||
|
|
||||||
# Dependency directories
|
|
||||||
node_modules/
|
|
||||||
jspm_packages/
|
|
||||||
|
|
||||||
# Snowpack dependency directory (https://snowpack.dev/)
|
|
||||||
web_modules/
|
|
||||||
|
|
||||||
# TypeScript cache
|
|
||||||
*.tsbuildinfo
|
|
||||||
|
|
||||||
# Optional npm cache directory
|
|
||||||
.npm
|
|
||||||
|
|
||||||
# Optional eslint cache
|
|
||||||
.eslintcache
|
|
||||||
|
|
||||||
# Optional stylelint cache
|
|
||||||
.stylelintcache
|
|
||||||
|
|
||||||
# Optional REPL history
|
|
||||||
.node_repl_history
|
|
||||||
|
|
||||||
# Output of 'npm pack'
|
|
||||||
*.tgz
|
|
||||||
|
|
||||||
# Yarn Integrity file
|
|
||||||
.yarn-integrity
|
|
||||||
|
|
||||||
# dotenv environment variable files
|
|
||||||
.env
|
|
||||||
.env.*
|
|
||||||
!.env.example
|
|
||||||
|
|
||||||
# parcel-bundler cache (https://parceljs.org/)
|
|
||||||
.cache
|
|
||||||
.parcel-cache
|
|
||||||
|
|
||||||
# Next.js build output
|
|
||||||
.next
|
|
||||||
out
|
|
||||||
|
|
||||||
# Nuxt.js build / generate output
|
|
||||||
.nuxt
|
|
||||||
dist
|
|
||||||
|
|
||||||
# Gatsby files
|
|
||||||
.cache/
|
|
||||||
# Comment in the public line in if your project uses Gatsby and not Next.js
|
|
||||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
|
||||||
# public
|
|
||||||
|
|
||||||
# vuepress build output
|
|
||||||
.vuepress/dist
|
|
||||||
|
|
||||||
# vuepress v2.x temp and cache directory
|
|
||||||
.temp
|
|
||||||
.cache
|
|
||||||
|
|
||||||
# Sveltekit cache directory
|
|
||||||
.svelte-kit/
|
|
||||||
|
|
||||||
# vitepress build output
|
|
||||||
**/.vitepress/dist
|
|
||||||
|
|
||||||
# vitepress cache directory
|
|
||||||
**/.vitepress/cache
|
|
||||||
|
|
||||||
# Docusaurus cache and generated files
|
|
||||||
.docusaurus
|
|
||||||
|
|
||||||
# Serverless directories
|
|
||||||
.serverless/
|
|
||||||
|
|
||||||
# FuseBox cache
|
|
||||||
.fusebox/
|
|
||||||
|
|
||||||
# DynamoDB Local files
|
|
||||||
.dynamodb/
|
|
||||||
|
|
||||||
# Firebase cache directory
|
|
||||||
.firebase/
|
|
||||||
|
|
||||||
# TernJS port file
|
|
||||||
.tern-port
|
|
||||||
|
|
||||||
# Stores VSCode versions used for testing VSCode extensions
|
|
||||||
.vscode-test
|
|
||||||
|
|
||||||
# yarn v3
|
|
||||||
.pnp.*
|
.pnp.*
|
||||||
.yarn/*
|
.yarn/*
|
||||||
!.yarn/patches
|
!.yarn/patches
|
||||||
!.yarn/plugins
|
!.yarn/plugins
|
||||||
!.yarn/releases
|
!.yarn/releases
|
||||||
!.yarn/sdks
|
|
||||||
!.yarn/versions
|
!.yarn/versions
|
||||||
|
|
||||||
# Vite logs files
|
# testing
|
||||||
vite.config.js.timestamp-*
|
/coverage
|
||||||
vite.config.ts.timestamp-*
|
|
||||||
|
# next.js
|
||||||
|
/.next/
|
||||||
|
/out/
|
||||||
|
|
||||||
|
# production
|
||||||
|
/build
|
||||||
|
|
||||||
|
# misc
|
||||||
|
.DS_Store
|
||||||
|
*.pem
|
||||||
|
|
||||||
|
# debug
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
.pnpm-debug.log*
|
||||||
|
|
||||||
|
# env files (can opt-in for committing if needed)
|
||||||
|
.env*
|
||||||
|
|
||||||
|
# vercel
|
||||||
|
.vercel
|
||||||
|
|
||||||
|
# typescript
|
||||||
|
*.tsbuildinfo
|
||||||
|
next-env.d.ts
|
||||||
@@ -1 +1,36 @@
|
|||||||
# esp32
|
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
First, run the development server:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run dev
|
||||||
|
# or
|
||||||
|
yarn dev
|
||||||
|
# or
|
||||||
|
pnpm dev
|
||||||
|
# or
|
||||||
|
bun dev
|
||||||
|
```
|
||||||
|
|
||||||
|
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
|
||||||
|
|
||||||
|
You can start editing the page by modifying `app/page.js`. The page auto-updates as you edit the file.
|
||||||
|
|
||||||
|
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
|
||||||
|
|
||||||
|
## Learn More
|
||||||
|
|
||||||
|
To learn more about Next.js, take a look at the following resources:
|
||||||
|
|
||||||
|
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
|
||||||
|
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
|
||||||
|
|
||||||
|
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
|
||||||
|
|
||||||
|
## Deploy on Vercel
|
||||||
|
|
||||||
|
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
|
||||||
|
|
||||||
|
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
|
||||||
@@ -0,0 +1,236 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import Header from "@/components/Header";
|
||||||
|
import Footer from "@/components/Footer";
|
||||||
|
import { useState } from "react";
|
||||||
|
import Link from "next/link";
|
||||||
|
import seriesData from "@/public/series.json";
|
||||||
|
|
||||||
|
export default function Comparacao() {
|
||||||
|
const [selectedSeries, setSelectedSeries] = useState(["ESP32", "ESP32-S3"]);
|
||||||
|
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 compareFields = [
|
||||||
|
{ category: "Geral", fields: [
|
||||||
|
{ key: "nome_completo", label: "Nome Completo" },
|
||||||
|
{ key: "descricao", label: "Descrição" },
|
||||||
|
]},
|
||||||
|
{ 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: "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: "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 <span className="text-red-500 font-semibold">✗</span>;
|
||||||
|
}
|
||||||
|
if (value === "Sim") {
|
||||||
|
return <span className="text-green-500 font-semibold">✓</span>;
|
||||||
|
}
|
||||||
|
return <span className="text-gray-700">{value}</span>;
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="bg-linear-to-br from-blue-50 via-white to-purple-50 min-h-screen">
|
||||||
|
<Header />
|
||||||
|
|
||||||
|
<main className="px-4 pt-16 pb-8 max-w-7xl mx-auto">
|
||||||
|
<div className="text-center mb-12">
|
||||||
|
<div className="inline-block mb-6">
|
||||||
|
<div className="bg-linear-to-r from-blue-600 to-purple-600 text-white px-4 py-2 rounded-full text-sm font-semibold shadow-lg">
|
||||||
|
📊 Compare Séries
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h1 className="text-5xl md:text-6xl font-extrabold bg-linear-to-r from-blue-600 via-purple-600 to-pink-600 bg-clip-text text-transparent mb-4">
|
||||||
|
Comparação de Séries
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<p className="text-lg text-gray-600 max-w-2xl mx-auto">
|
||||||
|
Compare especificações técnicas entre diferentes séries ESP32 para escolher o ideal para seu projeto
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="mb-12">
|
||||||
|
<h2 className="text-2xl font-bold text-gray-800 mb-4 text-center">
|
||||||
|
Selecione as Séries (2-4)
|
||||||
|
</h2>
|
||||||
|
<div className="grid grid-cols-2 md:grid-cols-4 lg:grid-cols-8 gap-4">
|
||||||
|
{series.map(([key, seriesItem]) => (
|
||||||
|
<button
|
||||||
|
key={key}
|
||||||
|
onClick={() => toggleSeries(key)}
|
||||||
|
className={`p-4 rounded-xl border-2 transition-all duration-300 transform hover:scale-105 ${
|
||||||
|
selectedSeries.includes(key)
|
||||||
|
? 'border-purple-500 shadow-lg bg-white'
|
||||||
|
: 'border-gray-200 hover:border-gray-300 bg-white opacity-60'
|
||||||
|
}`}
|
||||||
|
style={{
|
||||||
|
borderColor: selectedSeries.includes(key) ? seriesItem.cor : undefined
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div className="text-4xl mb-2">{seriesItem.icone}</div>
|
||||||
|
<div className="text-sm font-semibold text-gray-800">{key}</div>
|
||||||
|
{selectedSeries.includes(key) && (
|
||||||
|
<div className="mt-2">
|
||||||
|
<span className="inline-block w-3 h-3 rounded-full" style={{ backgroundColor: seriesItem.cor }}></span>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</button>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
<p className="text-center text-sm text-gray-500 mt-4">
|
||||||
|
{selectedSeries.length} de 4 séries selecionadas
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="bg-white rounded-2xl shadow-xl overflow-hidden border border-gray-200">
|
||||||
|
<div className="overflow-x-auto">
|
||||||
|
<table className="w-full">
|
||||||
|
<thead>
|
||||||
|
<tr className="bg-linear-to-r from-blue-600 to-purple-600">
|
||||||
|
<th className="px-6 py-4 text-left text-white font-bold bg-linear-to-r from-blue-600 to-purple-600 z-10">
|
||||||
|
Especificação
|
||||||
|
</th>
|
||||||
|
{selectedSeries.map(seriesKey => {
|
||||||
|
const seriesItem = seriesData[seriesKey];
|
||||||
|
return (
|
||||||
|
<th key={seriesKey} className="px-6 py-4 text-center text-white font-bold min-w-[200px]">
|
||||||
|
<div className="flex flex-col items-center gap-2">
|
||||||
|
<span className="text-3xl">{seriesItem.icone}</span>
|
||||||
|
<span>{seriesKey}</span>
|
||||||
|
<span className="inline-block w-4 h-4 rounded-full" style={{ backgroundColor: seriesItem.cor }}></span>
|
||||||
|
</div>
|
||||||
|
</th>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{compareFields.map(({ category, fields }) => (
|
||||||
|
<>
|
||||||
|
<tr key={category} className="bg-gray-100">
|
||||||
|
<td colSpan={selectedSeries.length + 1} className="px-6 py-3 font-bold text-gray-800 bg-gray-100 z-10">
|
||||||
|
{category}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{fields.map(({ key, label }) => (
|
||||||
|
<tr key={key} className="border-b border-gray-200 hover:bg-gray-50 transition-colors">
|
||||||
|
<td className="px-6 py-4 font-medium text-gray-700 bg-white z-10 border-r border-gray-200">
|
||||||
|
{label}
|
||||||
|
</td>
|
||||||
|
{selectedSeries.map(seriesKey => {
|
||||||
|
const seriesItem = seriesData[seriesKey];
|
||||||
|
const value = seriesItem[key];
|
||||||
|
return (
|
||||||
|
<td key={seriesKey} className="px-6 py-4 text-center">
|
||||||
|
{renderValue(value)}
|
||||||
|
</td>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</tr>
|
||||||
|
))}
|
||||||
|
</>
|
||||||
|
))}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="mt-12 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
|
||||||
|
{selectedSeries.map(seriesKey => {
|
||||||
|
const seriesItem = seriesData[seriesKey];
|
||||||
|
return (
|
||||||
|
<a
|
||||||
|
key={seriesKey}
|
||||||
|
href={seriesItem.datasheet}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
className="bg-white p-6 rounded-xl shadow-lg hover:shadow-2xl transform hover:-translate-y-2 transition-all duration-300 border-2"
|
||||||
|
style={{ borderColor: seriesItem.cor }}
|
||||||
|
>
|
||||||
|
<div className="text-4xl mb-3">{seriesItem.icone}</div>
|
||||||
|
<Link href={`/series/${seriesKey}`} className="no-underline">
|
||||||
|
<h3 className="text-lg font-bold text-gray-800 mb-2">{seriesKey}</h3>
|
||||||
|
</Link>
|
||||||
|
<p className="text-sm text-gray-600">Datasheet Oficial</p>
|
||||||
|
<a
|
||||||
|
className="flex items-center text-purple-600 font-semibold"
|
||||||
|
href={seriesItem.datasheet}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
|
<span>Abrir PDF</span>
|
||||||
|
<svg className="w-4 h-4 ml-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</a>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<Footer />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,188 @@
|
|||||||
|
import Header from "@/components/Header";
|
||||||
|
import Footer from "@/components/Footer";
|
||||||
|
import Link from "next/link";
|
||||||
|
import frameworksData from "@/public/frameworks.json";
|
||||||
|
import { notFound } from "next/navigation";
|
||||||
|
|
||||||
|
export default function FrameworkDetail({ params }) {
|
||||||
|
const { key } = params;
|
||||||
|
const framework = frameworksData[key];
|
||||||
|
|
||||||
|
if (!framework) {
|
||||||
|
notFound();
|
||||||
|
}
|
||||||
|
|
||||||
|
const features = framework.caracteristicas || [];
|
||||||
|
const useCases = framework.casos_uso || [];
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="bg-linear-to-br from-blue-50 via-white to-purple-50 min-h-screen">
|
||||||
|
<Header />
|
||||||
|
|
||||||
|
<main className="px-4 pt-16 pb-8 max-w-7xl mx-auto">
|
||||||
|
<div className="mb-8">
|
||||||
|
<Link href="/frameworks" className="inline-flex items-center text-gray-600 hover:text-purple-600 transition-colors mb-4">
|
||||||
|
<span className="mr-2">←</span> Voltar para Frameworks
|
||||||
|
</Link>
|
||||||
|
|
||||||
|
<div className="bg-white rounded-3xl shadow-xl p-8 border-2 border-gray-100"
|
||||||
|
style={{ borderColor: framework.cor + '30' }}>
|
||||||
|
<div className="flex items-start justify-between flex-wrap gap-4">
|
||||||
|
<div className="flex items-center gap-4">
|
||||||
|
<span className="text-6xl">{framework.icone}</span>
|
||||||
|
<div>
|
||||||
|
<h1 className="text-4xl md:text-5xl font-extrabold text-gray-800 mb-2">
|
||||||
|
{framework.nome}
|
||||||
|
</h1>
|
||||||
|
<p className="text-xl text-gray-600 mb-2">{framework.nome_completo}</p>
|
||||||
|
<span className="inline-block px-4 py-2 rounded-full text-sm font-semibold text-white"
|
||||||
|
style={{ backgroundColor: framework.cor }}>
|
||||||
|
{framework.tipo}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex items-center gap-3">
|
||||||
|
{framework.documentacao && (
|
||||||
|
<a
|
||||||
|
href={framework.documentacao}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
className="inline-flex items-center gap-2 bg-linear-to-r from-blue-600 to-purple-600 text-white px-5 py-2 rounded-xl font-semibold shadow hover:shadow-lg transition"
|
||||||
|
>
|
||||||
|
📘 Documentação
|
||||||
|
</a>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{framework.repositorio && (
|
||||||
|
<a
|
||||||
|
href={framework.repositorio}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
className="inline-flex items-center gap-2 bg-white text-gray-800 px-5 py-2 rounded-xl font-semibold shadow border-2 border-gray-100 hover:border-purple-300 transition"
|
||||||
|
>
|
||||||
|
🔗 Repositório
|
||||||
|
</a>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p className="text-lg text-gray-700 mt-6 leading-relaxed">
|
||||||
|
{framework.descricao}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="grid md:grid-cols-3 gap-6 mb-8">
|
||||||
|
<div className="bg-white rounded-2xl shadow-lg p-6 border-l-4" style={{ borderColor: framework.cor }}>
|
||||||
|
<h3 className="text-sm font-semibold text-gray-600 mb-2">LINGUAGEM</h3>
|
||||||
|
<p className="text-3xl font-bold text-gray-800">{framework.linguagem}</p>
|
||||||
|
<p className="text-gray-600 mt-1">Principal</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="bg-white rounded-2xl shadow-lg p-6 border-l-4" style={{ borderColor: framework.cor }}>
|
||||||
|
<h3 className="text-sm font-semibold text-gray-600 mb-2">TIPO</h3>
|
||||||
|
<p className="text-3xl font-bold text-gray-800">{framework.tipo}</p>
|
||||||
|
<p className="text-gray-600 mt-1">Categoria</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="bg-white rounded-2xl shadow-lg p-6 border-l-4" style={{ borderColor: framework.cor }}>
|
||||||
|
<h3 className="text-sm font-semibold text-gray-600 mb-2">FUNÇÃO PRINCIPAL</h3>
|
||||||
|
<p className="text-3xl font-bold text-gray-800">{framework.funcao_principal}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="grid lg:grid-cols-3 gap-6 mb-8">
|
||||||
|
<div className="lg:col-span-2 bg-white rounded-2xl shadow-lg p-6 border-2 border-gray-100">
|
||||||
|
<h2 className="text-2xl font-bold text-gray-800 mb-4 pb-3 border-b-2" style={{ borderColor: framework.cor }}>
|
||||||
|
✨ Principais Características
|
||||||
|
</h2>
|
||||||
|
<ul className="list-disc list-inside space-y-2 text-gray-700">
|
||||||
|
{features.map((f, i) => (
|
||||||
|
<li key={i} className="pl-2">{f}</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2 className="text-2xl font-bold text-gray-800 mt-8 mb-4 pb-3 border-b-2" style={{ borderColor: framework.cor }}>
|
||||||
|
📦 Casos de Uso
|
||||||
|
</h2>
|
||||||
|
<div className="grid md:grid-cols-2 gap-3">
|
||||||
|
{useCases.map((u, i) => (
|
||||||
|
<div key={i} className="bg-gray-50 p-3 rounded-lg text-gray-700">{u}</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="bg-white rounded-2xl shadow-lg p-6 border-2 border-gray-100">
|
||||||
|
<h2 className="text-2xl font-bold text-gray-800 mb-4 pb-3 border-b-2" style={{ borderColor: framework.cor }}>
|
||||||
|
📋 Detalhes Rápidos
|
||||||
|
</h2>
|
||||||
|
<div className="space-y-3 text-gray-700">
|
||||||
|
<div><span className="font-semibold">Nome completo:</span> {framework.nome_completo}</div>
|
||||||
|
<div><span className="font-semibold">Linguagem:</span> {framework.linguagem}</div>
|
||||||
|
<div><span className="font-semibold">Tipo:</span> {framework.tipo}</div>
|
||||||
|
<div><span className="font-semibold">Cor (tema):</span> <span className="inline-block w-4 h-4 rounded ml-2" style={{ backgroundColor: framework.cor }} /></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{framework.exemplo_codigo && (
|
||||||
|
<div className="bg-white rounded-2xl shadow-lg p-6 border-2 border-gray-100 mb-8">
|
||||||
|
<h3 className="text-lg font-semibold text-gray-800 mb-4" style={{ borderColor: framework.cor }}>
|
||||||
|
Exemplo de Código
|
||||||
|
</h3>
|
||||||
|
<div className="bg-gray-900 text-gray-100 p-4 rounded-lg overflow-auto text-sm" style={{ maxHeight: 480 }}>
|
||||||
|
<pre className="whitespace-pre-wrap">
|
||||||
|
<code>{framework.exemplo_codigo}</code>
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
|
<div className="flex gap-4 mt-6">
|
||||||
|
{framework.documentacao && (
|
||||||
|
<a
|
||||||
|
href={framework.documentacao}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
className="inline-flex items-center gap-2 bg-linear-to-r from-blue-600 to-purple-600 text-white px-6 py-3 rounded-xl font-semibold shadow hover:shadow-xl transition"
|
||||||
|
>
|
||||||
|
📚 Documentação Oficial
|
||||||
|
</a>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{framework.repositorio && (
|
||||||
|
<a
|
||||||
|
href={framework.repositorio}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
className="inline-flex items-center gap-2 bg-white text-gray-800 px-6 py-3 rounded-xl font-semibold shadow border-2 border-gray-100 hover:border-purple-300 transition"
|
||||||
|
>
|
||||||
|
💻 Repositório no GitHub
|
||||||
|
</a>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<Footer />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function generateMetadata({ params }) {
|
||||||
|
const { key } = params;
|
||||||
|
const framework = frameworksData[key];
|
||||||
|
|
||||||
|
if (!framework) {
|
||||||
|
return { title: "Framework não encontrado" };
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
title: `${framework.nome} - ${framework.nome_completo}`,
|
||||||
|
description: framework.descricao,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function generateStaticParams() {
|
||||||
|
return Object.keys(frameworksData).map((key) => ({ key }));
|
||||||
|
}
|
||||||
@@ -0,0 +1,192 @@
|
|||||||
|
import Header from "@/components/Header";
|
||||||
|
import Footer from "@/components/Footer";
|
||||||
|
import Link from "next/link";
|
||||||
|
import frameworksData from "@/public/frameworks.json";
|
||||||
|
|
||||||
|
export default function Frameworks() {
|
||||||
|
const frameworks = Object.entries(frameworksData);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="bg-linear-to-br from-blue-50 via-white to-purple-50 min-h-screen">
|
||||||
|
<Header />
|
||||||
|
|
||||||
|
<main className="px-4 pt-16 pb-8 max-w-7xl mx-auto">
|
||||||
|
<div className="text-center mb-12">
|
||||||
|
<h1 className="text-5xl md:text-6xl font-extrabold bg-linear-to-r from-blue-600 via-purple-600 to-pink-600 bg-clip-text text-transparent mb-4">
|
||||||
|
Frameworks ESP32
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<p className="text-lg text-gray-600 max-w-3xl mx-auto">
|
||||||
|
Descubra os frameworks e bibliotecas disponíveis para ESP32. De desenvolvimento geral a
|
||||||
|
aplicações especializadas em áudio, visão computacional, IA e IoT.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||||
|
{frameworks.map(([key, framework]) => (
|
||||||
|
<Link
|
||||||
|
key={key}
|
||||||
|
href={`/frameworks/${key}`}
|
||||||
|
className="group"
|
||||||
|
>
|
||||||
|
<div className="bg-white rounded-2xl shadow-lg hover:shadow-2xl transform hover:-translate-y-2 transition-all duration-300 border-2 border-gray-100 hover:border-opacity-50 h-full flex flex-col">
|
||||||
|
|
||||||
|
<div className="p-6 border-b border-gray-100">
|
||||||
|
<div className="flex items-center justify-between mb-3">
|
||||||
|
<span className="text-5xl">{framework.icone}</span>
|
||||||
|
<div className="flex flex-col gap-2 items-end">
|
||||||
|
<span className="px-3 py-1 rounded-full text-xs font-semibold text-white"
|
||||||
|
style={{ backgroundColor: framework.cor }}>
|
||||||
|
{framework.linguagem}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2 className="text-2xl font-bold text-gray-800 mb-1 group-hover:text-purple-600 transition-colors">
|
||||||
|
{framework.nome}
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<p className="text-xs text-gray-500 mb-3 font-medium">
|
||||||
|
{framework.nome_completo}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p className="text-sm text-gray-600 line-clamp-3">
|
||||||
|
{framework.descricao}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="p-6 space-y-4 grow">
|
||||||
|
<div>
|
||||||
|
<span className="inline-block px-3 py-1 rounded-lg text-xs font-semibold"
|
||||||
|
style={{
|
||||||
|
backgroundColor: `${framework.cor}20`,
|
||||||
|
color: framework.cor
|
||||||
|
}}>
|
||||||
|
{framework.tipo}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h4 className="text-xs font-bold text-gray-700 mb-2 uppercase tracking-wide">
|
||||||
|
🎯 Função Principal
|
||||||
|
</h4>
|
||||||
|
<p className="text-sm text-gray-600 line-clamp-2">
|
||||||
|
{framework.funcao_principal}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h4 className="text-xs font-bold text-gray-700 mb-2 uppercase tracking-wide">
|
||||||
|
⚡ Características
|
||||||
|
</h4>
|
||||||
|
<ul className="space-y-1">
|
||||||
|
{framework.caracteristicas.slice(0, 3).map((carac, idx) => (
|
||||||
|
<li key={idx} className="text-xs text-gray-600 flex items-start">
|
||||||
|
<span className="mr-2 mt-0.5" style={{ color: framework.cor }}>▪</span>
|
||||||
|
<span className="line-clamp-1">{carac}</span>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
{framework.caracteristicas.length > 3 && (
|
||||||
|
<li className="text-xs text-gray-400 italic">
|
||||||
|
+{framework.caracteristicas.length - 3} mais...
|
||||||
|
</li>
|
||||||
|
)}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h4 className="text-xs font-bold text-gray-700 mb-2 uppercase tracking-wide">
|
||||||
|
💼 Casos de Uso
|
||||||
|
</h4>
|
||||||
|
<div className="flex flex-wrap gap-2">
|
||||||
|
{framework.casos_uso.slice(0, 3).map((caso, idx) => (
|
||||||
|
<span key={idx} className="text-xs bg-gray-100 text-gray-700 px-2 py-1 rounded">
|
||||||
|
{caso}
|
||||||
|
</span>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="px-6 pb-6">
|
||||||
|
<div className="flex items-center justify-between text-sm font-semibold group-hover:text-purple-600 transition-colors">
|
||||||
|
<span>Ver Detalhes e Exemplos</span>
|
||||||
|
<span className="transform group-hover:translate-x-2 transition-transform">→</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Link>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="mt-12 grid md:grid-cols-2 gap-6">
|
||||||
|
<div className="bg-white rounded-2xl shadow-lg p-8 border border-gray-100">
|
||||||
|
<h3 className="text-2xl font-bold text-gray-800 mb-4">
|
||||||
|
🎓 Iniciante no ESP32?
|
||||||
|
</h3>
|
||||||
|
<p className="text-gray-600 mb-4">
|
||||||
|
Se você está começando, recomendamos iniciar com <strong>Arduino</strong> ou <strong>MicroPython</strong>
|
||||||
|
para prototipagem rápida, ou <strong>ESP-IDF</strong> para projetos profissionais com controle total.
|
||||||
|
</p>
|
||||||
|
<div className="flex flex-wrap gap-2">
|
||||||
|
<Link href="/frameworks/Arduino" className="px-4 py-2 bg-blue-100 text-blue-700 rounded-lg text-sm font-semibold hover:bg-blue-200 transition-colors">
|
||||||
|
📘 Arduino
|
||||||
|
</Link>
|
||||||
|
<Link href="/frameworks/MicroPython" className="px-4 py-2 bg-purple-100 text-purple-700 rounded-lg text-sm font-semibold hover:bg-purple-200 transition-colors">
|
||||||
|
🐍 MicroPython
|
||||||
|
</Link>
|
||||||
|
<Link href="/frameworks/ESP-IDF" className="px-4 py-2 bg-red-100 text-red-700 rounded-lg text-sm font-semibold hover:bg-red-200 transition-colors">
|
||||||
|
⚙️ ESP-IDF
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="bg-white rounded-2xl shadow-lg p-8 border border-gray-100">
|
||||||
|
<h3 className="text-2xl font-bold text-gray-800 mb-4">
|
||||||
|
🚀 Aplicações Especializadas?
|
||||||
|
</h3>
|
||||||
|
<p className="text-gray-600 mb-4">
|
||||||
|
Para projetos específicos, explore frameworks especializados como <strong>ESP-ADF</strong> (áudio),
|
||||||
|
<strong>ESP-WHO</strong> (visão), <strong>ESP-NN</strong> (IA) ou <strong>ESP-Matter</strong> (smart home).
|
||||||
|
</p>
|
||||||
|
<div className="flex flex-wrap gap-2">
|
||||||
|
<Link href="/frameworks/ESP-ADF" className="px-4 py-2 bg-blue-100 text-blue-700 rounded-lg text-sm font-semibold hover:bg-blue-200 transition-colors">
|
||||||
|
🎵 Áudio
|
||||||
|
</Link>
|
||||||
|
<Link href="/frameworks/ESP-WHO" className="px-4 py-2 bg-orange-100 text-orange-700 rounded-lg text-sm font-semibold hover:bg-orange-200 transition-colors">
|
||||||
|
📷 Visão
|
||||||
|
</Link>
|
||||||
|
<Link href="/frameworks/ESP-NN" className="px-4 py-2 bg-teal-100 text-teal-700 rounded-lg text-sm font-semibold hover:bg-teal-200 transition-colors">
|
||||||
|
🧠 IA
|
||||||
|
</Link>
|
||||||
|
<Link href="/frameworks/ESP-Matter" className="px-4 py-2 bg-yellow-100 text-yellow-700 rounded-lg text-sm font-semibold hover:bg-yellow-200 transition-colors">
|
||||||
|
🏠 Smart Home
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="mt-8 bg-linear-to-r from-blue-600 via-purple-600 to-pink-600 rounded-2xl shadow-lg p-8 text-white">
|
||||||
|
<div className="flex flex-col md:flex-row items-center justify-between gap-6">
|
||||||
|
<div className="flex-1">
|
||||||
|
<h3 className="text-2xl font-bold mb-2">
|
||||||
|
💡 Precisa de Ajuda para Escolher?
|
||||||
|
</h3>
|
||||||
|
<p className="text-blue-100">
|
||||||
|
Compare frameworks, veja exemplos de código e entenda qual se adequa melhor ao seu projeto.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<Link
|
||||||
|
href="/comparacao-frameworks"
|
||||||
|
className="bg-white text-purple-600 px-6 py-3 rounded-xl font-semibold shadow-lg hover:shadow-xl transform hover:-translate-y-1 transition-all duration-300 whitespace-nowrap"
|
||||||
|
>
|
||||||
|
📊 Comparar Frameworks
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<Footer />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
@import "tailwindcss";
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
import { Roboto } from "next/font/google";
|
||||||
|
import "./globals.css";
|
||||||
|
|
||||||
|
const roboto = Roboto({ subsets: ["latin"] });
|
||||||
|
|
||||||
|
export const metadata = {
|
||||||
|
title: "ESPDocs",
|
||||||
|
description: "Documentação não oficial do ESP32 em português.",
|
||||||
|
authors: { name: "Lucas Rayan Guerra", url: "https://cienciaembarcada.com.br" },
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function RootLayout({ children }) {
|
||||||
|
return (
|
||||||
|
<html lang="pt-BR">
|
||||||
|
<body className={`${roboto.className} font-sans`}>
|
||||||
|
{children}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,150 @@
|
|||||||
|
import Header from "@/components/Header";
|
||||||
|
import Footer from "@/components/Footer";
|
||||||
|
import Link from "next/link";
|
||||||
|
|
||||||
|
export default function Sobre() {
|
||||||
|
const features = [
|
||||||
|
{ icon: "📚", title: "Documentação Curada", desc: "Conteúdos organizados por níveis — do iniciante ao avançado." },
|
||||||
|
{ icon: "🔧", title: "Exemplos Práticos", desc: "Projetos e trechos de código para aprender fazendo." },
|
||||||
|
{ icon: "🌐", title: "Comunidade", desc: "Contribuições abertas e canal para dúvidas e trocas." },
|
||||||
|
{ icon: "♿", title: "Acessibilidade", desc: "Textos claros, contraste adequado e navegação por teclado." },
|
||||||
|
];
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="bg-linear-to-br from-blue-50 via-white to-purple-50 min-h-screen text-gray-800">
|
||||||
|
<a href="#conteudo" className="sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 focus:bg-white focus:px-4 focus:py-2 focus:rounded-md focus:shadow focus:ring-2 focus:ring-purple-500">
|
||||||
|
Ir para o conteúdo
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<Header />
|
||||||
|
|
||||||
|
<main id="conteudo" className="px-4 pt-16 pb-20 max-w-6xl mx-auto">
|
||||||
|
<header className="relative overflow-hidden rounded-2xl p-8 md:p-12 bg-linear-to-r from-blue-600 via-purple-600 to-pink-500 text-white shadow-lg">
|
||||||
|
<div className="absolute right-0 top-0 -mr-40 -mt-24 opacity-20 pointer-events-none">
|
||||||
|
<svg width="400" height="300" viewBox="0 0 600 400" fill="none" aria-hidden="true">
|
||||||
|
<path d="M0 200 C150 100 350 300 600 200 L600 400 L0 400 Z" fill="white" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="relative z-10 max-w-4xl mx-auto">
|
||||||
|
<h1 className="text-4xl md:text-5xl font-extrabold leading-tight bg-clip-text text-transparent bg-linear-to-r from-white to-purple-100 mb-3">
|
||||||
|
Sobre o ESPDocs
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<p className="text-lg md:text-xl opacity-90 max-w-3xl mb-6">
|
||||||
|
Uma documentação não oficial, em português, feita por e para a comunidade — com foco em clareza, exemplos práticos e colaboração aberta.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div className="flex flex-col sm:flex-row gap-3 sm:gap-4 items-start sm:items-center">
|
||||||
|
<Link href="/" className="inline-flex items-center justify-center bg-white text-blue-700 px-4 py-2 rounded-lg font-semibold shadow-sm hover:shadow-md transition focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-white" aria-label="Voltar para a página inicial">
|
||||||
|
← Voltar
|
||||||
|
</Link>
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="https://github.com/lucasrguerra/ESPDocs"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
className="inline-flex items-center justify-center bg-white/20 border border-white/30 text-white px-4 py-2 rounded-lg font-semibold hover:bg-white/30 transition focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-white"
|
||||||
|
aria-label="Abrir repositório do projeto no GitHub (abre em nova aba)"
|
||||||
|
>
|
||||||
|
Contribuir no GitHub
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div className="mt-8 grid grid-cols-1 md:grid-cols-3 gap-6">
|
||||||
|
<section className="md:col-span-2 space-y-6">
|
||||||
|
<article className="bg-white/70 backdrop-blur-sm rounded-2xl p-6 shadow-sm border border-gray-100">
|
||||||
|
<h2 className="text-2xl font-bold mb-2">Nossa missão</h2>
|
||||||
|
<p className="text-gray-700 leading-relaxed">
|
||||||
|
Facilitar o aprendizado e acelerar projetos com ESP32 por meio de documentação clara, exemplos testados e comparativos práticos.
|
||||||
|
Priorizamos traduções fiéis, explicações passo a passo e dicas baseadas em experiência real de desenvolvimento.
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article className="bg-white rounded-2xl p-6 shadow-sm border border-gray-100">
|
||||||
|
<h2 className="text-2xl font-bold mb-2">Por que o ESPDocs?</h2>
|
||||||
|
<p className="text-gray-700 leading-relaxed mb-4">
|
||||||
|
Informações técnicas frequentemente estão dispersas entre datasheets, fóruns e repositórios. O ESPDocs centraliza esse conteúdo em português, com foco em aplicabilidade.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul role="list" className="grid sm:grid-cols-2 gap-4">
|
||||||
|
{features.map((f) => (
|
||||||
|
<li key={f.title} className="flex gap-3 items-start bg-gray-50 p-4 rounded-lg border border-gray-100">
|
||||||
|
<div className="text-2xl" aria-hidden="true">{f.icon}</div>
|
||||||
|
<div>
|
||||||
|
<h3 className="font-semibold text-gray-800">{f.title}</h3>
|
||||||
|
<p className="text-sm text-gray-600">{f.desc}</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article className="bg-white/70 backdrop-blur-sm rounded-2xl p-6 shadow-sm border border-gray-100">
|
||||||
|
<h2 className="text-2xl font-bold mb-2">Como contribuir</h2>
|
||||||
|
<p className="text-gray-700 leading-relaxed mb-3">
|
||||||
|
Correções, traduções e novos exemplos são bem-vindos. Abra uma issue ou um pull request no repositório. Buscamos clareza nas descrições e exemplos testáveis.
|
||||||
|
</p>
|
||||||
|
<ol className="list-decimal list-inside text-gray-700 space-y-1">
|
||||||
|
<li>Fork do repositório e crie uma branch clara.</li>
|
||||||
|
<li>Adicione exemplos ou corrija o conteúdo com referências quando possível.</li>
|
||||||
|
<li>Abra um PR e descreva o que foi alterado.</li>
|
||||||
|
</ol>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article className="bg-white rounded-2xl p-6 shadow-sm border border-gray-100">
|
||||||
|
<h2 className="text-2xl font-bold mb-2">Acessibilidade</h2>
|
||||||
|
<p className="text-gray-700 leading-relaxed">
|
||||||
|
O site prioriza leitura, contraste legível e navegação por teclado. Se encontrar barreiras, por favor relate-nos para que possamos melhorar.
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<aside className="space-y-4">
|
||||||
|
<div className="bg-white rounded-2xl p-6 shadow-md border border-gray-100">
|
||||||
|
<div className="flex items-center justify-between mb-3">
|
||||||
|
<h3 className="text-lg font-semibold">Contribua</h3>
|
||||||
|
<span className="text-xs bg-green-100 text-green-800 px-2 py-1 rounded-full">Open Source</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p className="text-gray-700 mb-4">Ajude a melhorar o ESPDocs com exemplos, correções e traduções.</p>
|
||||||
|
|
||||||
|
<div className="flex flex-col gap-3">
|
||||||
|
<a
|
||||||
|
href="https://github.com/lucasrguerra/ESPDocs"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
className="inline-flex items-center justify-center px-4 py-2 rounded-lg bg-linear-to-r from-blue-600 to-purple-600 text-white font-semibold shadow-sm hover:shadow-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-purple-500"
|
||||||
|
aria-label="Abrir repositório no GitHub"
|
||||||
|
>
|
||||||
|
Ver repositório
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<Link href="/contato" className="inline-flex items-center justify-center px-4 py-2 rounded-lg border border-gray-200 text-gray-700 hover:border-purple-400 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-purple-500" aria-label="Ir para a página de contato">
|
||||||
|
Entrar em contato
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="mt-4 text-sm text-gray-500">
|
||||||
|
<strong>Nota:</strong> Conteúdo não oficial. Consulte sempre datasheets e documentos oficiais para decisões críticas.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="bg-white/80 rounded-2xl p-4 shadow-sm border border-gray-100">
|
||||||
|
<h4 className="font-semibold mb-2">Resumo</h4>
|
||||||
|
<ul className="text-sm text-gray-700 space-y-2">
|
||||||
|
<li>🔎 Conteúdo técnico explicado.</li>
|
||||||
|
<li>🧪 Exemplos e projetos.</li>
|
||||||
|
<li>🤝 Comunidade e contribuições.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<Footer />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,306 @@
|
|||||||
|
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: (
|
||||||
|
<div className="bg-white rounded-3xl shadow-xl p-8 border-2 border-gray-100">
|
||||||
|
<ConnectionsDiagram connections={conexoes} color={serie.cor} />
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'devboard',
|
||||||
|
label: 'Placa de Desenvolvimento',
|
||||||
|
available: devBoardImages[key],
|
||||||
|
content: (
|
||||||
|
<div className="bg-white rounded-3xl shadow-xl p-8 border-2 border-gray-100">
|
||||||
|
<h2 className="text-2xl font-bold text-gray-800 mb-6 pb-3 border-b-2 flex items-center gap-3" style={{ borderColor: serie.cor }}>
|
||||||
|
<span>🔧</span>
|
||||||
|
Placa de Desenvolvimento Oficial
|
||||||
|
</h2>
|
||||||
|
<div className="flex justify-center">
|
||||||
|
<div className="relative w-full max-w-4xl">
|
||||||
|
<Image
|
||||||
|
src={devBoardImages[key]}
|
||||||
|
alt={`${key} DevKit - Placa de Desenvolvimento`}
|
||||||
|
width={1200}
|
||||||
|
height={800}
|
||||||
|
className="rounded-xl shadow-lg w-full h-auto"
|
||||||
|
priority
|
||||||
|
/>
|
||||||
|
<p className="text-center text-sm text-gray-600 mt-4">
|
||||||
|
{key} - Placa de desenvolvimento oficial da Espressif
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'specs',
|
||||||
|
label: 'Especificações',
|
||||||
|
available: true,
|
||||||
|
content: (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<SpecSection title="⚙️ Processador" specs={processadorSpecs} cor={serie.cor} />
|
||||||
|
<SpecSection title="📡 Conectividade" specs={conectividadeSpecs} cor={serie.cor} />
|
||||||
|
<SpecSection title="💾 Memória" specs={memoriaSpecs} cor={serie.cor} />
|
||||||
|
<SpecSection title="🔌 Periféricos" specs={perifericos} cor={serie.cor} />
|
||||||
|
{interfacesEspeciais.length > 0 && (
|
||||||
|
<SpecSection title="✨ Interfaces Especiais" specs={interfacesEspeciais} cor={serie.cor} />
|
||||||
|
)}
|
||||||
|
<SpecSection
|
||||||
|
title="🌡️ Temperatura"
|
||||||
|
specs={[
|
||||||
|
{ label: "Operação", value: serie.temperatura_operacao, icon: "🔧" },
|
||||||
|
{ label: "Armazenamento", value: serie.temperatura_armazenamento, icon: "📦" },
|
||||||
|
]}
|
||||||
|
cor={serie.cor}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="bg-linear-to-br from-blue-50 via-white to-purple-50 min-h-screen">
|
||||||
|
<Header />
|
||||||
|
|
||||||
|
<main className="px-4 pt-16 pb-8 max-w-7xl mx-auto">
|
||||||
|
<div className="mb-8">
|
||||||
|
<Link href="/series" className="inline-flex items-center text-gray-600 hover:text-purple-600 transition-colors mb-4">
|
||||||
|
<span className="mr-2">←</span> Voltar para Séries
|
||||||
|
</Link>
|
||||||
|
|
||||||
|
<div className="bg-white rounded-3xl shadow-xl p-8 border-2 border-gray-100"
|
||||||
|
style={{ borderColor: serie.cor + '30' }}>
|
||||||
|
<div className="flex items-start justify-between flex-wrap gap-4">
|
||||||
|
<div className="flex items-center gap-4">
|
||||||
|
<span className="text-6xl">{serie.icone}</span>
|
||||||
|
<div>
|
||||||
|
<h1 className="text-4xl md:text-5xl font-extrabold text-gray-800 mb-2">
|
||||||
|
{key}
|
||||||
|
</h1>
|
||||||
|
<p className="text-xl text-gray-600 mb-2">{serie.nome_completo}</p>
|
||||||
|
<span className="inline-block px-4 py-2 rounded-full text-sm font-semibold text-white"
|
||||||
|
style={{ backgroundColor: serie.cor }}>
|
||||||
|
{serie.arquitetura}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a
|
||||||
|
href={serie.datasheet}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
className="inline-flex items-center gap-2 bg-linear-to-r from-blue-600 to-purple-600 text-white px-6 py-3 rounded-xl font-semibold shadow-lg hover:shadow-xl transform hover:-translate-y-1 transition-all duration-300"
|
||||||
|
>
|
||||||
|
📄 Datasheet Oficial
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p className="text-lg text-gray-700 mt-6 leading-relaxed">
|
||||||
|
{serie.descricao}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="grid md:grid-cols-3 gap-6 mb-8">
|
||||||
|
<div className="bg-white rounded-2xl shadow-lg p-6 border-l-4" style={{ borderColor: serie.cor }}>
|
||||||
|
<h3 className="text-sm font-semibold text-gray-600 mb-2">PROCESSADOR</h3>
|
||||||
|
<p className="text-3xl font-bold text-gray-800">{serie.nucleos.includes("2") ? "Dual-Core" : "Single-Core"}</p>
|
||||||
|
<p className="text-gray-600 mt-1">{serie.frequencia}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="bg-white rounded-2xl shadow-lg p-6 border-l-4" style={{ borderColor: serie.cor }}>
|
||||||
|
<h3 className="text-sm font-semibold text-gray-600 mb-2">MEMÓRIA SRAM</h3>
|
||||||
|
<p className="text-3xl font-bold text-gray-800">{serie.memoria_sram}</p>
|
||||||
|
<p className="text-gray-600 mt-1">+ {serie.memoria_sram_rtc} RTC</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="bg-white rounded-2xl shadow-lg p-6 border-l-4" style={{ borderColor: serie.cor }}>
|
||||||
|
<h3 className="text-sm font-semibold text-gray-600 mb-2">GPIO</h3>
|
||||||
|
<p className="text-3xl font-bold text-gray-800">{serie.gpio}</p>
|
||||||
|
<p className="text-gray-600 mt-1">Pinos disponíveis</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<SeriesTabMenu tabs={tabs} color={serie.cor} />
|
||||||
|
|
||||||
|
<div className="flex justify-between items-center gap-4 mt-12">
|
||||||
|
{previousKey ? (
|
||||||
|
<Link
|
||||||
|
href={`/series/${previousKey}`}
|
||||||
|
className="flex items-center gap-2 bg-white px-6 py-3 rounded-xl shadow-lg hover:shadow-xl transform hover:-translate-x-1 transition-all duration-300 border-2 border-gray-100 hover:border-purple-300"
|
||||||
|
>
|
||||||
|
<span>←</span>
|
||||||
|
<div className="text-left">
|
||||||
|
<p className="text-xs text-gray-600">Anterior</p>
|
||||||
|
<p className="font-semibold text-gray-800">{previousKey}</p>
|
||||||
|
</div>
|
||||||
|
</Link>
|
||||||
|
) : (
|
||||||
|
<div />
|
||||||
|
)}
|
||||||
|
|
||||||
|
<Link
|
||||||
|
href="/comparacao"
|
||||||
|
className="bg-linear-to-r from-blue-600 to-purple-600 text-white px-6 py-3 rounded-xl font-semibold shadow-lg hover:shadow-xl transform hover:-translate-y-1 transition-all duration-300"
|
||||||
|
>
|
||||||
|
📊 Comparar Séries
|
||||||
|
</Link>
|
||||||
|
|
||||||
|
{nextKey ? (
|
||||||
|
<Link
|
||||||
|
href={`/series/${nextKey}`}
|
||||||
|
className="flex items-center gap-2 bg-white px-6 py-3 rounded-xl shadow-lg hover:shadow-xl transform hover:translate-x-1 transition-all duration-300 border-2 border-gray-100 hover:border-purple-300"
|
||||||
|
>
|
||||||
|
<div className="text-right">
|
||||||
|
<p className="text-xs text-gray-600">Próximo</p>
|
||||||
|
<p className="font-semibold text-gray-800">{nextKey}</p>
|
||||||
|
</div>
|
||||||
|
<span>→</span>
|
||||||
|
</Link>
|
||||||
|
) : (
|
||||||
|
<div />
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<Footer />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function SpecSection({ title, specs, cor }) {
|
||||||
|
return (
|
||||||
|
<div className="bg-white rounded-2xl shadow-lg p-6 border-2 border-gray-100">
|
||||||
|
<h2 className="text-2xl font-bold text-gray-800 mb-4 pb-3 border-b-2" style={{ borderColor: cor }}>
|
||||||
|
{title}
|
||||||
|
</h2>
|
||||||
|
<div className="grid md:grid-cols-2 lg:grid-cols-3 gap-4">
|
||||||
|
{specs.map((spec, index) => (
|
||||||
|
<div key={index} className="flex items-start gap-3 p-3 rounded-lg hover:bg-gray-50 transition-colors">
|
||||||
|
<span className="text-2xl">{spec.icon}</span>
|
||||||
|
<div className="flex-1">
|
||||||
|
<p className="text-sm font-semibold text-gray-600">{spec.label}</p>
|
||||||
|
<p className="text-base font-bold text-gray-800 mt-1">{spec.value}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
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,
|
||||||
|
}));
|
||||||
|
}
|
||||||
@@ -0,0 +1,133 @@
|
|||||||
|
import Header from "@/components/Header";
|
||||||
|
import Footer from "@/components/Footer";
|
||||||
|
import Link from "next/link";
|
||||||
|
import seriesData from "@/public/series.json";
|
||||||
|
|
||||||
|
export default function Series() {
|
||||||
|
const series = Object.entries(seriesData);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="bg-linear-to-br from-blue-50 via-white to-purple-50 min-h-screen">
|
||||||
|
<Header />
|
||||||
|
|
||||||
|
<main className="px-4 pt-16 pb-8 max-w-7xl mx-auto">
|
||||||
|
<div className="text-center mb-12">
|
||||||
|
<h1 className="text-5xl md:text-6xl font-extrabold bg-linear-to-r from-blue-600 via-purple-600 to-pink-600 bg-clip-text text-transparent mb-4">
|
||||||
|
Séries ESP32
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<p className="text-lg text-gray-600 max-w-2xl mx-auto">
|
||||||
|
Explore toda a família ESP32. Cada série foi projetada para atender necessidades específicas,
|
||||||
|
desde projetos simples até aplicações de IA e IoT avançadas.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||||
|
{series.map(([key, serie]) => (
|
||||||
|
<Link
|
||||||
|
key={key}
|
||||||
|
href={`/series/${key}`}
|
||||||
|
className="group"
|
||||||
|
>
|
||||||
|
<div className="bg-white rounded-2xl shadow-lg hover:shadow-2xl transform hover:-translate-y-2 transition-all duration-300 border-2 border-gray-100 hover:border-opacity-50 h-full"
|
||||||
|
style={{ '--hover-color': serie.cor }}>
|
||||||
|
|
||||||
|
<div className="p-6 border-b border-gray-100">
|
||||||
|
<div className="flex items-center justify-between mb-3">
|
||||||
|
<span className="text-4xl">{serie.icone}</span>
|
||||||
|
<span className="px-3 py-1 rounded-full text-xs font-semibold text-white"
|
||||||
|
style={{ backgroundColor: serie.cor }}>
|
||||||
|
{serie.arquitetura.includes("RISC-V") ? "RISC-V" : "Xtensa"}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2 className="text-2xl font-bold text-gray-800 mb-2 group-hover:text-purple-600 transition-colors">
|
||||||
|
{key}
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<p className="text-sm text-gray-600 line-clamp-2">
|
||||||
|
{serie.descricao}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="p-6 space-y-3">
|
||||||
|
<div className="flex items-center justify-between text-sm">
|
||||||
|
<span className="text-gray-600">⚙️ Núcleos:</span>
|
||||||
|
<span className="font-semibold text-gray-800">{serie.nucleos}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex items-center justify-between text-sm">
|
||||||
|
<span className="text-gray-600">🚀 Frequência:</span>
|
||||||
|
<span className="font-semibold text-gray-800">{serie.frequencia}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex items-center justify-between text-sm">
|
||||||
|
<span className="text-gray-600">💾 SRAM:</span>
|
||||||
|
<span className="font-semibold text-gray-800">{serie.memoria_sram}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex items-center justify-between text-sm">
|
||||||
|
<span className="text-gray-600">📶 Wi-Fi:</span>
|
||||||
|
<span className="font-semibold text-gray-800">
|
||||||
|
{String(serie.wifi).includes("Não") ? "❌" : "✅"}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex items-center justify-between text-sm">
|
||||||
|
<span className="text-gray-600">📱 Bluetooth:</span>
|
||||||
|
<span className="font-semibold text-gray-800">
|
||||||
|
{serie.bluetooth === "Não" ? "❌" : "✅"}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{serie.aceleradores_ia && (
|
||||||
|
<div className="pt-2 border-t border-gray-100">
|
||||||
|
<span className="inline-block px-2 py-1 bg-purple-100 text-purple-700 text-xs font-semibold rounded">
|
||||||
|
🤖 Aceleradores IA
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{serie.matter === "Sim" && (
|
||||||
|
<div className="pt-2 border-t border-gray-100">
|
||||||
|
<span className="inline-block px-2 py-1 bg-green-100 text-green-700 text-xs font-semibold rounded">
|
||||||
|
🏠 Suporte Matter
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="px-6 pb-6">
|
||||||
|
<div className="flex items-center justify-between text-sm font-semibold group-hover:text-purple-600 transition-colors">
|
||||||
|
<span>Ver Detalhes</span>
|
||||||
|
<span className="transform group-hover:translate-x-2 transition-transform">→</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Link>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="mt-8 bg-white rounded-2xl shadow-lg p-8 border border-gray-100">
|
||||||
|
<h3 className="text-2xl font-bold text-gray-800 mb-4 text-center">
|
||||||
|
💡 Não sabe qual escolher?
|
||||||
|
</h3>
|
||||||
|
<p className="text-gray-600 text-center max-w-2xl mx-auto mb-6">
|
||||||
|
Compare as especificações de cada série para encontrar a mais adequada ao seu projeto.
|
||||||
|
Considere requisitos de conectividade, processamento e recursos específicos.
|
||||||
|
</p>
|
||||||
|
<div className="flex justify-center">
|
||||||
|
<Link
|
||||||
|
href="/comparacao"
|
||||||
|
className="bg-linear-to-r from-blue-600 to-purple-600 text-white px-6 py-3 rounded-xl font-semibold shadow-lg hover:shadow-xl transform hover:-translate-y-1 transition-all duration-300"
|
||||||
|
>
|
||||||
|
📊 Comparar Séries
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<Footer />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
import Header from "@/components/Header";
|
||||||
|
import Footer from "@/components/Footer";
|
||||||
|
import Link from "next/link";
|
||||||
|
|
||||||
|
export default function Sobre() {
|
||||||
|
return (
|
||||||
|
<div className="bg-linear-to-br from-blue-50 via-white to-purple-50 min-h-screen">
|
||||||
|
<Header />
|
||||||
|
|
||||||
|
<main className="px-4 pt-16 pb-20 max-w-5xl mx-auto">
|
||||||
|
<div className="bg-white/60 backdrop-blur-sm rounded-2xl p-8 shadow-md border border-gray-100">
|
||||||
|
<div className="mb-6">
|
||||||
|
<Link href="/" className="text-sm text-blue-600 hover:underline">← Voltar</Link>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h1 className="text-4xl md:text-5xl font-extrabold text-gray-900 mb-6">
|
||||||
|
Sobre o ESPDocs
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<p className="text-lg text-gray-700 mb-4">
|
||||||
|
O ESPDocs nasceu da paixão por explorar o potencial dos microcontroladores ESP32 e da vontade de compartilhar conhecimento de forma acessível e colaborativa. Criado por um entusiasta e desenvolvedor com mais de quatro anos de experiência prática com a plataforma, o projeto tem como propósito reunir, organizar e traduzir informações técnicas — muitas vezes dispersas — em um só lugar.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p className="text-lg text-gray-700 mb-4">
|
||||||
|
Mais do que uma simples documentação não oficial, o ESPDocs é um espaço vivo de aprendizado. Aqui, cada detalhe sobre o hardware, frameworks, protocolos e boas práticas de desenvolvimento é tratado com cuidado e clareza, para que qualquer pessoa — do iniciante ao profissional — possa compreender e aplicar.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p className="text-lg text-gray-700 mb-4">
|
||||||
|
A iniciativa surgiu com um foco especial na comunidade brasileira, que cresce e se destaca no cenário da eletrônica e IoT. O objetivo é facilitar o acesso ao conhecimento técnico em português, incentivar a experimentação e fortalecer a troca de experiências entre desenvolvedores, estudantes e pesquisadores.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p className="text-lg text-gray-700 mb-4">
|
||||||
|
O ESPDocs é, acima de tudo, uma homenagem à curiosidade e ao espírito colaborativo que impulsionam a inovação.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p className="text-lg text-gray-800 font-semibold mt-6">
|
||||||
|
ESPDocs — Documentando o futuro da IoT, em código aberto e em português.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<Footer />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,430 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { useState, useEffect } from "react";
|
||||||
|
|
||||||
|
const FILTER_CATEGORIES = [
|
||||||
|
{ id: "All", name: "Todos", color: "#64748b" },
|
||||||
|
{ id: "Ground", name: "Terra (GND)", color: "#64748b" },
|
||||||
|
{ id: "Power", name: "Alimentação", color: "#ef4444" },
|
||||||
|
{ id: "RTC", name: "RTC", color: "#f59e0b" },
|
||||||
|
{ id: "GPIO", name: "GPIO", color: "#22c55e" },
|
||||||
|
{ id: "ADC", name: "ADC", color: "#ec4899" },
|
||||||
|
{ id: "DAC", name: "DAC", color: "#a855f7" },
|
||||||
|
{ id: "Touch", name: "Touch", color: "#06b6d4" },
|
||||||
|
{ id: "UART", name: "UART", color: "#3b82f6" },
|
||||||
|
{ id: "SPI", name: "SPI", color: "#ef4444" },
|
||||||
|
{ id: "I2C", name: "I2C", color: "#10b981" },
|
||||||
|
{ id: "PWM", name: "PWM", color: "#f97316" },
|
||||||
|
{ id: "USB", name: "USB", color: "#8b5cf6" },
|
||||||
|
{ id: "Clock", name: "Clock", color: "#eab308" },
|
||||||
|
{ id: "JTAG", name: "JTAG", color: "#8b5cf6" },
|
||||||
|
{ id: "Strapping", name: "Inicialização", color: "#dc2626" },
|
||||||
|
];
|
||||||
|
|
||||||
|
export default function ConnectionsDiagram({ connections, color }) {
|
||||||
|
const [activeFilter, setActiveFilter] = useState("All");
|
||||||
|
const [selectedConnection, setSelectedConnection] = useState(null);
|
||||||
|
const [hoveredConnection, setHoveredConnection] = useState(null);
|
||||||
|
|
||||||
|
const isConnectionVisible = (connection) => {
|
||||||
|
if (activeFilter === "All") return true;
|
||||||
|
return connection.categorias.includes(activeFilter);
|
||||||
|
};
|
||||||
|
|
||||||
|
const getCategoryColor = (category) => {
|
||||||
|
const filter = FILTER_CATEGORIES.find((f) => f.id === category);
|
||||||
|
return filter?.color || "#64748b";
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const handleEscape = (e) => {
|
||||||
|
if (e.key === "Escape") setSelectedConnection(null);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (selectedConnection) {
|
||||||
|
document.addEventListener("keydown", handleEscape);
|
||||||
|
document.body.style.overflow = "hidden";
|
||||||
|
}
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
document.removeEventListener("keydown", handleEscape);
|
||||||
|
document.body.style.overflow = "unset";
|
||||||
|
};
|
||||||
|
}, [selectedConnection]);
|
||||||
|
|
||||||
|
if (!connections || connections.length === 0) {
|
||||||
|
return (
|
||||||
|
<div className="flex flex-col items-center justify-center py-16 px-4">
|
||||||
|
<div className="w-20 h-20 mb-6 rounded-full bg-gray-100 flex items-center justify-center">
|
||||||
|
<svg
|
||||||
|
className="w-10 h-10 text-gray-400"
|
||||||
|
fill="none"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
strokeWidth="2"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke="currentColor"
|
||||||
|
>
|
||||||
|
<path d="M9 3v2m6-2v2M9 19v2m6-2v2M5 9H3m2 6H3m18-6h-2m2 6h-2M7 19h10a2 2 0 002-2V7a2 2 0 00-2-2H7a2 2 0 00-2 2v10a2 2 0 002 2zM9 9h6v6H9V9z" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p className="text-lg font-medium text-gray-600">
|
||||||
|
Diagrama de conexões indisponível
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p className="text-sm text-gray-500 mt-2">
|
||||||
|
Este modelo ainda não possui dados de conexão
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="space-y-8 pb-8">
|
||||||
|
<div className="space-y-3">
|
||||||
|
<h2 className="text-2xl font-bold text-gray-800 mb-6 pb-3 border-b-2 flex items-center gap-3" style={{ borderColor: color }}>
|
||||||
|
<span>📍</span>
|
||||||
|
Diagrama de Conexões Interativo
|
||||||
|
</h2>
|
||||||
|
<p className="text-lg text-gray-600 leading-relaxed max-w-3xl">
|
||||||
|
Clique em qualquer conexão para ver informações detalhadas ou use filtros para destacar funções específicas.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="bg-white rounded-2xl shadow-sm border border-gray-200 p-6">
|
||||||
|
<div className="flex items-center gap-3 mb-4">
|
||||||
|
<svg
|
||||||
|
className="w-5 h-5 text-gray-700"
|
||||||
|
fill="none"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
strokeWidth="2"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke="currentColor"
|
||||||
|
>
|
||||||
|
<path d="M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z" />
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<h4 className="text-lg font-semibold text-gray-900">
|
||||||
|
Filtre por Função
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
{activeFilter !== "All" && (
|
||||||
|
<span className="ml-auto text-sm text-gray-600">
|
||||||
|
{connections.filter(isConnectionVisible).length} de {connections.length} conexões
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex flex-wrap gap-2.5">
|
||||||
|
{FILTER_CATEGORIES.map((filter) => {
|
||||||
|
const isActive = activeFilter === filter.id;
|
||||||
|
return (
|
||||||
|
<button
|
||||||
|
key={filter.id}
|
||||||
|
onClick={() => setActiveFilter(filter.id)}
|
||||||
|
aria-pressed={isActive}
|
||||||
|
aria-label={`Filter by ${filter.name}`}
|
||||||
|
className={`px-5 py-2.5 rounded-xl text-sm font-semibold transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 ${
|
||||||
|
isActive
|
||||||
|
? "shadow-lg transform scale-105 text-white"
|
||||||
|
: "bg-gray-50 text-gray-700 hover:bg-gray-100 hover:shadow-md"
|
||||||
|
}`}
|
||||||
|
style={{
|
||||||
|
backgroundColor: isActive ? filter.color : undefined,
|
||||||
|
focusRingColor: filter.color,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{filter.name}
|
||||||
|
</button>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="bg-linear-to-br from-gray-50 to-gray-100 rounded-2xl p-8 border-2 border-gray-200 shadow-inner">
|
||||||
|
<div className="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 xl:grid-cols-8 gap-4">
|
||||||
|
{connections.map((connection, index) => {
|
||||||
|
const visible = isConnectionVisible(connection);
|
||||||
|
const isHovered = hoveredConnection === index;
|
||||||
|
return (
|
||||||
|
<button
|
||||||
|
key={index}
|
||||||
|
onClick={() => visible && setSelectedConnection(connection)}
|
||||||
|
onMouseEnter={() => visible && setHoveredConnection(index)}
|
||||||
|
onMouseLeave={() => setHoveredConnection(null)}
|
||||||
|
disabled={!visible}
|
||||||
|
aria-label={`Connection ${connection.nome}, number ${connection.numero}`}
|
||||||
|
className={`relative flex flex-col items-center justify-center p-2 rounded-2xl border-2 transition-all duration-300 ${
|
||||||
|
visible
|
||||||
|
? "opacity-100 hover:scale-110 hover:shadow-2xl hover:z-10 cursor-pointer active:scale-95"
|
||||||
|
: "opacity-15 cursor-not-allowed grayscale"
|
||||||
|
}`}
|
||||||
|
style={{
|
||||||
|
backgroundColor: visible ? connection.cor + "15" : "#f3f4f615",
|
||||||
|
borderColor: visible ? (isHovered ? connection.cor : connection.cor + "60") : "#d1d5db",
|
||||||
|
transform: isHovered ? "translateY(-2px)" : undefined,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
className="w-12 h-12 rounded-full flex items-center justify-center text-white font-bold text-sm mb-3 shadow-lg ring-2 ring-white"
|
||||||
|
style={{ backgroundColor: connection.cor }}
|
||||||
|
>
|
||||||
|
{typeof connection.numero === "number"
|
||||||
|
? connection.numero
|
||||||
|
: connection.numero.substring(0, 4)}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="text-xs font-bold text-center text-gray-900 leading-tight">
|
||||||
|
{connection.nome}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{connection.restricoes && (
|
||||||
|
<div
|
||||||
|
className="absolute -top-2 -right-2 bg-red-500 rounded-full p-1.5 shadow-lg"
|
||||||
|
aria-label="Has restrictions"
|
||||||
|
>
|
||||||
|
<svg
|
||||||
|
className="w-3.5 h-3.5 text-white"
|
||||||
|
fill="none"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
strokeWidth="2"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke="currentColor"
|
||||||
|
>
|
||||||
|
<path d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</button>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{connections.some(c => c.restricoes) && (
|
||||||
|
<div className="bg-linear-to-r from-amber-50 to-yellow-50 border-2 border-amber-200 rounded-2xl p-6 shadow-sm">
|
||||||
|
<div className="flex gap-4">
|
||||||
|
<div className="shrink-0">
|
||||||
|
<div className="w-12 h-12 rounded-full bg-amber-100 flex items-center justify-center">
|
||||||
|
<svg
|
||||||
|
className="w-6 h-6 text-amber-600"
|
||||||
|
fill="none"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
strokeWidth="2"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke="currentColor"
|
||||||
|
>
|
||||||
|
<path d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex-1">
|
||||||
|
<p className="text-lg font-bold text-amber-900 mb-3">
|
||||||
|
Informações Importantes
|
||||||
|
</p>
|
||||||
|
<ul className="space-y-2.5 text-sm text-amber-800">
|
||||||
|
<li className="flex items-start gap-3">
|
||||||
|
<span className="text-amber-600 mt-0.5 font-bold">•</span>
|
||||||
|
<span className="leading-relaxed">
|
||||||
|
Conexões com ícones de aviso possuem restrições de uso. Clique para mais detalhes.
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
<li className="flex items-start gap-3">
|
||||||
|
<span className="text-amber-600 mt-0.5 font-bold">•</span>
|
||||||
|
<span className="leading-relaxed">
|
||||||
|
Sempre consulte o datasheet oficial antes de usar conexões com funções especiais.
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{selectedConnection && (
|
||||||
|
<div
|
||||||
|
className="fixed inset-0 bg-black bg-opacity-60 backdrop-blur-sm flex items-center justify-center p-4 z-50 animate-fadeIn"
|
||||||
|
onClick={() => setSelectedConnection(null)}
|
||||||
|
role="dialog"
|
||||||
|
aria-modal="true"
|
||||||
|
aria-labelledby="modal-title"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
className="bg-white rounded-3xl shadow-2xl max-w-3xl w-full max-h-[90vh] overflow-hidden flex flex-col animate-slideUp"
|
||||||
|
onClick={(e) => e.stopPropagation()}
|
||||||
|
>
|
||||||
|
<div className="sticky top-0 bg-linear-to-r from-white to-gray-50 border-b-2 border-gray-200 p-8">
|
||||||
|
<div className="flex items-start justify-between gap-6">
|
||||||
|
<div className="flex items-center gap-5 flex-1">
|
||||||
|
<div
|
||||||
|
className="w-16 h-16 rounded-2xl flex items-center justify-center text-white font-bold text-xl shadow-xl ring-4 ring-white shrink-0"
|
||||||
|
style={{ backgroundColor: selectedConnection.cor }}
|
||||||
|
>
|
||||||
|
{typeof selectedConnection.numero === "number"
|
||||||
|
? selectedConnection.numero
|
||||||
|
: selectedConnection.numero.substring(0, 4)}
|
||||||
|
</div>
|
||||||
|
<div className="min-w-0">
|
||||||
|
<h3 id="modal-title" className="text-3xl font-bold text-gray-900 mb-1">
|
||||||
|
{selectedConnection.nome}
|
||||||
|
</h3>
|
||||||
|
<p className="text-base text-gray-600">
|
||||||
|
Conexão {selectedConnection.numero}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button
|
||||||
|
onClick={() => setSelectedConnection(null)}
|
||||||
|
aria-label="Close modal"
|
||||||
|
className="text-gray-400 hover:text-gray-600 transition-colors p-2 hover:bg-gray-100 rounded-xl shrink-0"
|
||||||
|
>
|
||||||
|
<svg
|
||||||
|
className="w-7 h-7"
|
||||||
|
fill="none"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
strokeWidth="2"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke="currentColor"
|
||||||
|
>
|
||||||
|
<path d="M6 18L18 6M6 6l12 12" />
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex-1 overflow-y-auto p-8 space-y-8">
|
||||||
|
<div>
|
||||||
|
<h4 className="text-lg font-bold text-gray-900 mb-4 flex items-center gap-2">
|
||||||
|
<svg className="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
|
||||||
|
<path d="M7 3a1 1 0 000 2h6a1 1 0 100-2H7zM4 7a1 1 0 011-1h10a1 1 0 110 2H5a1 1 0 01-1-1zM2 11a2 2 0 012-2h12a2 2 0 012 2v4a2 2 0 01-2 2H4a2 2 0 01-2-2v-4z" />
|
||||||
|
</svg>
|
||||||
|
Categorias
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<div className="flex flex-wrap gap-2.5">
|
||||||
|
{selectedConnection.categorias.map((cat) => (
|
||||||
|
<span
|
||||||
|
key={cat}
|
||||||
|
className="px-4 py-2 rounded-xl text-sm font-bold text-white shadow-md ring-2 ring-white"
|
||||||
|
style={{ backgroundColor: getCategoryColor(cat) }}
|
||||||
|
>{cat}</span>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h4 className="text-lg font-bold text-gray-900 mb-4 flex items-center gap-2">
|
||||||
|
<svg className="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
|
||||||
|
<path fillRule="evenodd" d="M11.3 1.046A1 1 0 0112 2v5h4a1 1 0 01.82 1.573l-7 10A1 1 0 018 18v-5H4a1 1 0 01-.82-1.573l7-10a1 1 0 011.12-.38z" clipRule="evenodd" />
|
||||||
|
</svg>
|
||||||
|
Funções da Conexão
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<div className="bg-linear-to-br from-gray-50 to-gray-100 rounded-2xl p-6 border border-gray-200">
|
||||||
|
<ul className="space-y-3">
|
||||||
|
{selectedConnection.funcoes.map((func, index) => (
|
||||||
|
<li key={index} className="flex items-start gap-4 text-sm group">
|
||||||
|
<span
|
||||||
|
className="mt-1 shrink-0 w-2 h-2 rounded-full group-hover:scale-125 transition-transform"
|
||||||
|
style={{ backgroundColor: color }}
|
||||||
|
/>
|
||||||
|
<span className="text-gray-800 font-medium leading-relaxed">{func}</span>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{selectedConnection.restricoes && (
|
||||||
|
<div className="bg-linear-to-br from-red-50 to-rose-50 border-2 border-red-200 rounded-2xl p-6 shadow-sm">
|
||||||
|
<div className="flex gap-4">
|
||||||
|
<div className="shrink-0">
|
||||||
|
<div className="w-12 h-12 rounded-full bg-red-100 flex items-center justify-center">
|
||||||
|
<svg
|
||||||
|
className="w-6 h-6 text-red-600"
|
||||||
|
fill="none"
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
strokeWidth="2"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke="currentColor"
|
||||||
|
>
|
||||||
|
<path d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="flex-1">
|
||||||
|
<p className="text-lg font-bold text-red-900 mb-3">
|
||||||
|
Alertas Importantes
|
||||||
|
</p>
|
||||||
|
<p className="text-sm text-red-800 leading-relaxed">
|
||||||
|
{selectedConnection.restricoes}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="sticky bottom-0 bg-linear-to-t from-gray-50 to-white border-t-2 border-gray-200 p-6">
|
||||||
|
<button
|
||||||
|
onClick={() => setSelectedConnection(null)}
|
||||||
|
className="w-full py-4 rounded-2xl font-bold text-white shadow-lg hover:shadow-xl transform hover:-translate-y-0.5 active:translate-y-0 transition-all duration-200 focus:outline-none focus:ring-4 focus:ring-offset-2"
|
||||||
|
style={{ backgroundColor: color }}
|
||||||
|
aria-label="Close modal"
|
||||||
|
>
|
||||||
|
Close
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
|
<div className="bg-white rounded-2xl shadow-lg p-6 border-2 border-gray-100">
|
||||||
|
<h3 className="text-lg font-bold text-gray-800 mb-3">Sobre a Matriz de Conexões Flexível</h3>
|
||||||
|
<p className="text-gray-700 leading-relaxed">
|
||||||
|
O ESP32 possui uma matriz de conexões flexível que permite mapear diversas funções para múltiplos pinos.
|
||||||
|
Isso significa que muitas conexões podem ser configuradas para desempenhar diferentes papéis, dependendo das necessidades do seu projeto.
|
||||||
|
Consulte a documentação oficial para entender como aproveitar ao máximo essa flexibilidade.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style jsx>{`
|
||||||
|
@keyframes fadeIn {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes slideUp {
|
||||||
|
from {
|
||||||
|
transform: translateY(20px);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
transform: translateY(0);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.animate-fadeIn {
|
||||||
|
animation: fadeIn 0.2s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.animate-slideUp {
|
||||||
|
animation: slideUp 0.3s ease-out;
|
||||||
|
}
|
||||||
|
`}</style>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
export default function Footer() {
|
||||||
|
return (
|
||||||
|
<footer className="bg-white py-3 text-black border-t border-gray-300 space-y-2">
|
||||||
|
<div className="text-center leading-5 text-sm md:flex md:justify-between max-w-5xl mx-auto">
|
||||||
|
<div className="m-0 p-0">
|
||||||
|
© {new Date().getFullYear()}
|
||||||
|
<a
|
||||||
|
href="https://cienciaembarcada.com.br"
|
||||||
|
className="text-blue-700 font-semibold hover:underline"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
|
Ciência Embarcada
|
||||||
|
</a>
|
||||||
|
. Todos os direitos reservados.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="m-0 p-0">
|
||||||
|
Desenvolvido por
|
||||||
|
<a
|
||||||
|
href="https://linkedin.com/in/lucasrguerra"
|
||||||
|
className="text-blue-700 font-semibold hover:underline"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
|
Lucas Rayan Guerra
|
||||||
|
</a>
|
||||||
|
.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { usePathname } from "next/navigation";
|
||||||
|
import { useState } from "react";
|
||||||
|
import Link from "next/link";
|
||||||
|
|
||||||
|
import Button from "@mui/material/Button";
|
||||||
|
import Drawer from "@mui/material/Drawer";
|
||||||
|
import List from "@mui/material/List";
|
||||||
|
import ListItem from "@mui/material/ListItem";
|
||||||
|
|
||||||
|
import MenuIcon from "@mui/icons-material/Menu";
|
||||||
|
import HomeIcon from "@mui/icons-material/Home";
|
||||||
|
import AboutIcon from "@mui/icons-material/Info";
|
||||||
|
import ModelsIcon from "@mui/icons-material/Memory";
|
||||||
|
import FrameworksIcon from "@mui/icons-material/Apps";
|
||||||
|
import CompareIcon from "@mui/icons-material/CompareArrows";
|
||||||
|
|
||||||
|
export default function Header() {
|
||||||
|
const [drawerOpen, setDrawerOpen] = useState(false);
|
||||||
|
|
||||||
|
const pathname = usePathname();
|
||||||
|
const menuItems = [
|
||||||
|
{ text: "Início", href: "/", icon: <HomeIcon /> },
|
||||||
|
{ text: "Sobre o Projeto", href: "/sobre", icon: <AboutIcon /> },
|
||||||
|
{ text: "Séries", href: "/series", icon: <ModelsIcon /> },
|
||||||
|
{ text: "Frameworks", href: "/frameworks", icon: <FrameworksIcon /> },
|
||||||
|
{ text: "Comparar Séries", href: "/comparacao", icon: <CompareIcon /> },
|
||||||
|
];
|
||||||
|
|
||||||
|
function isActive(href) {
|
||||||
|
return pathname === href;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<header className="bg-white/80 backdrop-blur-md py-4 px-4 md:px-8 text-black shadow-lg border-b border-gray-100 sticky top-0 z-50">
|
||||||
|
<div className="flex justify-between max-w-5xl mx-auto items-center">
|
||||||
|
<Link href="/" className="group">
|
||||||
|
<h1 className="text-2xl md:text-3xl font-bold bg-linear-to-r from-blue-600 via-purple-600 to-pink-600 bg-clip-text text-transparent transition-all duration-300 group-hover:scale-105">
|
||||||
|
ESPDocs
|
||||||
|
</h1>
|
||||||
|
</Link>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
variant="outlined"
|
||||||
|
onClick={() => setDrawerOpen(true)}
|
||||||
|
className="border-2 border-gray-300 text-gray-700 hover:border-purple-500 hover:text-purple-600 transition-all duration-300 hover:shadow-lg rounded-xl! px-4"
|
||||||
|
>
|
||||||
|
<MenuIcon className="" />
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Drawer
|
||||||
|
anchor="right"
|
||||||
|
open={drawerOpen}
|
||||||
|
onClose={() => setDrawerOpen(false)}
|
||||||
|
PaperProps={{
|
||||||
|
className: "bg-linear-to-br from-white via-blue-50 to-purple-50"
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div className="p-6 w-72">
|
||||||
|
<div className="mb-6">
|
||||||
|
<h2 className="text-2xl font-bold bg-linear-to-r from-blue-600 to-purple-600 bg-clip-text text-transparent">
|
||||||
|
Menu
|
||||||
|
</h2>
|
||||||
|
<div className="h-1 w-16 bg-linear-to-r from-blue-600 to-purple-600 rounded-full mt-2"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<List>
|
||||||
|
{menuItems.map((item, index) => (
|
||||||
|
<ListItem
|
||||||
|
key={item.text}
|
||||||
|
disablePadding
|
||||||
|
className="mb-3"
|
||||||
|
style={{
|
||||||
|
animation: `slideIn 0.3s ease-out ${index * 0.1}s both`
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div className="w-full">
|
||||||
|
<Link
|
||||||
|
className={`flex items-center w-full p-4 text-left rounded-xl transition-all duration-300 ${
|
||||||
|
isActive(item.href)
|
||||||
|
? "bg-linear-to-r from-blue-600 to-purple-600 text-white shadow-lg transform scale-105"
|
||||||
|
: "hover:bg-white hover:shadow-md hover:transform hover:scale-102 text-gray-700"
|
||||||
|
}`}
|
||||||
|
onClick={() => { setDrawerOpen(false); }}
|
||||||
|
href={item.href}
|
||||||
|
>
|
||||||
|
<span className={`transition-transform duration-300 ${isActive(item.href) ? "scale-110" : "group-hover:scale-110"}`}>
|
||||||
|
{item.icon}
|
||||||
|
</span>
|
||||||
|
<span className="ml-3 font-medium">{item.text}</span>
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
</ListItem>
|
||||||
|
))}
|
||||||
|
</List>
|
||||||
|
|
||||||
|
<div className="mt-8 p-4 bg-white/50 backdrop-blur-sm rounded-xl border border-gray-200">
|
||||||
|
<p className="text-xs text-gray-600 text-center">
|
||||||
|
Documentação não oficial
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Drawer>
|
||||||
|
|
||||||
|
<style jsx global>{`
|
||||||
|
@keyframes slideIn {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateX(20px);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateX(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`}</style>
|
||||||
|
</header>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { useState } from 'react';
|
||||||
|
|
||||||
|
export default function SeriesTabMenu({ tabs, color }) {
|
||||||
|
const availableTabs = tabs.filter(tab => tab.available);
|
||||||
|
const [activeTab, setActiveTab] = useState(availableTabs[0]?.id || 'specs');
|
||||||
|
|
||||||
|
const activeTabContent = availableTabs.find(tab => tab.id === activeTab)?.content;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="mb-8">
|
||||||
|
<div className="hidden md:flex bg-white rounded-2xl shadow-lg py-2 px-4 mb-6 border-2 border-gray-100 gap-4">
|
||||||
|
{availableTabs.map((tab) => (
|
||||||
|
<button
|
||||||
|
key={tab.id}
|
||||||
|
onClick={() => setActiveTab(tab.id)}
|
||||||
|
className={`flex-1 flex items-center justify-center gap-2 py-4 px-6 rounded-xl font-semibold transition-all duration-300 ${
|
||||||
|
activeTab === tab.id
|
||||||
|
? 'text-white shadow-lg transform scale-105'
|
||||||
|
: 'text-gray-600 hover:bg-gray-50'
|
||||||
|
}`}
|
||||||
|
style={
|
||||||
|
activeTab === tab.id
|
||||||
|
? { backgroundColor: color }
|
||||||
|
: {}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<span className="hidden lg:inline">{tab.label}</span>
|
||||||
|
</button>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="md:hidden mb-6">
|
||||||
|
<div className="bg-white rounded-2xl shadow-lg border-2 border-gray-100 overflow-hidden">
|
||||||
|
<button
|
||||||
|
onClick={() => {
|
||||||
|
const dropdown = document.getElementById('mobile-tab-dropdown');
|
||||||
|
dropdown.classList.toggle('hidden');
|
||||||
|
}}
|
||||||
|
className="w-full flex items-center justify-between py-4 px-6 font-semibold text-white"
|
||||||
|
style={{ backgroundColor: color }}
|
||||||
|
>
|
||||||
|
<div className="flex items-center gap-3">
|
||||||
|
<span className="text-xl">
|
||||||
|
{availableTabs.find(tab => tab.id === activeTab)?.icon}
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
{availableTabs.find(tab => tab.id === activeTab)?.label}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<span className="text-xl">▼</span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div id="mobile-tab-dropdown" className="hidden">
|
||||||
|
{availableTabs.map((tab) => (
|
||||||
|
tab.id !== activeTab && (
|
||||||
|
<button
|
||||||
|
key={tab.id}
|
||||||
|
onClick={() => {
|
||||||
|
setActiveTab(tab.id);
|
||||||
|
document.getElementById('mobile-tab-dropdown').classList.add('hidden');
|
||||||
|
}}
|
||||||
|
className="w-full flex items-center gap-3 py-4 px-6 text-gray-700 hover:bg-gray-50 transition-colors border-t border-gray-100"
|
||||||
|
>
|
||||||
|
<span className="text-xl">{tab.icon}</span>
|
||||||
|
<span className="font-medium">{tab.label}</span>
|
||||||
|
</button>
|
||||||
|
)
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="animate-fadeIn">
|
||||||
|
{activeTabContent}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
import { dirname } from "path";
|
||||||
|
import { fileURLToPath } from "url";
|
||||||
|
import { FlatCompat } from "@eslint/eslintrc";
|
||||||
|
|
||||||
|
const __filename = fileURLToPath(import.meta.url);
|
||||||
|
const __dirname = dirname(__filename);
|
||||||
|
|
||||||
|
const compat = new FlatCompat({
|
||||||
|
baseDirectory: __dirname,
|
||||||
|
});
|
||||||
|
|
||||||
|
const eslintConfig = [
|
||||||
|
...compat.extends("next/core-web-vitals"),
|
||||||
|
{
|
||||||
|
ignores: [
|
||||||
|
"node_modules/**",
|
||||||
|
".next/**",
|
||||||
|
"out/**",
|
||||||
|
"build/**",
|
||||||
|
"next-env.d.ts",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export default eslintConfig;
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"paths": {
|
||||||
|
"@/*": ["./*"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
/** @type {import('next').NextConfig} */
|
||||||
|
const nextConfig = {};
|
||||||
|
|
||||||
|
export default nextConfig;
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"name": "esp32",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"dev": "next dev --turbopack",
|
||||||
|
"build": "next build --turbopack",
|
||||||
|
"start": "next start",
|
||||||
|
"lint": "eslint"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@emotion/react": "^11.14.0",
|
||||||
|
"@emotion/styled": "^11.14.1",
|
||||||
|
"@mui/icons-material": "^7.3.4",
|
||||||
|
"@mui/material": "^7.3.4",
|
||||||
|
"next": "15.5.6",
|
||||||
|
"react": "19.1.0",
|
||||||
|
"react-dom": "19.1.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@eslint/eslintrc": "^3",
|
||||||
|
"@tailwindcss/postcss": "^4",
|
||||||
|
"eslint": "^9",
|
||||||
|
"eslint-config-next": "15.5.6",
|
||||||
|
"tailwindcss": "^4"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
const config = {
|
||||||
|
plugins: ["@tailwindcss/postcss"],
|
||||||
|
};
|
||||||
|
|
||||||
|
export default config;
|
||||||
@@ -0,0 +1,494 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"numero": "GND",
|
||||||
|
"nome": "GND",
|
||||||
|
"tipo": "ground",
|
||||||
|
"funcoes": [
|
||||||
|
"Referência elétrica do sistema",
|
||||||
|
"Conexão externa de terra"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Ground"
|
||||||
|
],
|
||||||
|
"cor": "#64748b",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDD3P3",
|
||||||
|
"nome": "VDD3P3",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação do domínio analógico"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 3.0 V e 3.6 V (típico 3.3 V)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDDA",
|
||||||
|
"nome": "VDDA",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação do domínio analógico"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power",
|
||||||
|
"Analog"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 3.0 V e 3.6 V (típico 3.3 V)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDD3P3_RTC",
|
||||||
|
"nome": "VDD3P3_RTC",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação para o domínio RTC e parte do domínio digital"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 3.0 V e 3.6 V (típico 3.3 V)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDD3P3_CPU",
|
||||||
|
"nome": "VDD3P3_CPU",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação para o domínio digital e CPU"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 3.0 V e 3.6 V (típico 3.3 V); não exceder 3.3 V para gravação de eFuse"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDDSPI",
|
||||||
|
"nome": "VDDSPI",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação dos barramentos Flash e PSRAM",
|
||||||
|
"Pode funcionar como entrada ou saída",
|
||||||
|
"Backup de alimentação para flash integrado"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Pode ser 3.3 V ou configurável como GPIO; padrão para alimentação de flash"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "CHIP_PU",
|
||||||
|
"nome": "CHIP_PU (EN)",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Habilitar chip (nível alto)",
|
||||||
|
"Reseta o chip (nível baixo)"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power",
|
||||||
|
"Reset"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Deve estar em nível alto para operação normal; não deixar flutuante"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 0,
|
||||||
|
"nome": "GPIO0",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO0",
|
||||||
|
"XTAL_32K_P",
|
||||||
|
"ADC1_CH0"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"RTC",
|
||||||
|
"ADC",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pode ser usado para cristal RTC de 32.768 kHz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 1,
|
||||||
|
"nome": "GPIO1",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO1",
|
||||||
|
"XTAL_32K_N",
|
||||||
|
"ADC1_CH1"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"RTC",
|
||||||
|
"ADC",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pode ser usado para cristal RTC de 32.768 kHz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 2,
|
||||||
|
"nome": "GPIO2",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO2",
|
||||||
|
"ADC1_CH2",
|
||||||
|
"FSPIQ"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC",
|
||||||
|
"SPI",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Strapping pin; recomendado pull-up devido a glitches"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 3,
|
||||||
|
"nome": "GPIO3",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO3",
|
||||||
|
"ADC1_CH3"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 4,
|
||||||
|
"nome": "GPIO4",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO4",
|
||||||
|
"ADC1_CH4",
|
||||||
|
"MTMS",
|
||||||
|
"FSPIHD"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC",
|
||||||
|
"JTAG",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG Test Mode Select"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 5,
|
||||||
|
"nome": "GPIO5",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO5",
|
||||||
|
"ADC2_CH0",
|
||||||
|
"MTDI",
|
||||||
|
"FSPIWP"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC",
|
||||||
|
"JTAG",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG Test Data In"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 6,
|
||||||
|
"nome": "GPIO6",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO6",
|
||||||
|
"MTCK",
|
||||||
|
"FSPICLK"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"JTAG",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG Test Clock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 7,
|
||||||
|
"nome": "GPIO7",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO7",
|
||||||
|
"MTDO",
|
||||||
|
"FSPID"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"JTAG",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG Test Data Out"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 8,
|
||||||
|
"nome": "GPIO8",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO8"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Strapping pin para controle de modo de boot e impressão ROM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 9,
|
||||||
|
"nome": "GPIO9",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO9"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pull-up interno; strapping pin para modo boot (alto=SPI boot)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 10,
|
||||||
|
"nome": "GPIO10",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO10",
|
||||||
|
"FSPICS0"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 11,
|
||||||
|
"nome": "GPIO11",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO11"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pin VDDSPI pode ser configurado como GPIO se flash for alimentado externamente"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 12,
|
||||||
|
"nome": "GPIO12",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO12",
|
||||||
|
"SPIHD"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash; pull-up interno; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 13,
|
||||||
|
"nome": "GPIO13",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO13",
|
||||||
|
"SPIWP"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash; pull-up interno; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 14,
|
||||||
|
"nome": "GPIO14",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO14",
|
||||||
|
"SPICS0"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash; pull-up interno; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 15,
|
||||||
|
"nome": "GPIO15",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO15",
|
||||||
|
"SPICLK"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash; pull-up interno; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 16,
|
||||||
|
"nome": "GPIO16",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO16",
|
||||||
|
"SPID"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash; pull-up interno; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 17,
|
||||||
|
"nome": "GPIO17",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO17",
|
||||||
|
"SPIQ"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash; pull-up interno; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 18,
|
||||||
|
"nome": "GPIO18",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO18",
|
||||||
|
"USB_D-"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"USB"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "USB D- para USB OTG e USB Serial/JTAG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 19,
|
||||||
|
"nome": "GPIO19",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO19",
|
||||||
|
"USB_D+"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"USB"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "USB D+ para USB OTG e USB Serial/JTAG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 20,
|
||||||
|
"nome": "GPIO20",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO20",
|
||||||
|
"UART0_RXD"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"UART"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pull-up interno; UART0 RX para download de firmware"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 21,
|
||||||
|
"nome": "GPIO21",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO21",
|
||||||
|
"UART0_TXD"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"UART"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pull-up interno; UART0 TX para download de firmware"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "XTAL_N",
|
||||||
|
"nome": "XTAL_N",
|
||||||
|
"tipo": "analog",
|
||||||
|
"funcoes": [
|
||||||
|
"Entrada/saída de clock externo",
|
||||||
|
"Conexão ao cristal ou oscilador do chip"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Analog",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#a855f7",
|
||||||
|
"restricoes": "Clock diferencial negativo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "XTAL_P",
|
||||||
|
"nome": "XTAL_P",
|
||||||
|
"tipo": "analog",
|
||||||
|
"funcoes": [
|
||||||
|
"Entrada/saída de clock externo",
|
||||||
|
"Conexão ao cristal ou oscilador do chip"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Analog",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#a855f7",
|
||||||
|
"restricoes": "Clock diferencial positivo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "LNA",
|
||||||
|
"nome": "LNA_IN",
|
||||||
|
"tipo": "analog",
|
||||||
|
"funcoes": [
|
||||||
|
"Entrada/saída do amplificador de baixo ruído RF"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Analog",
|
||||||
|
"RF"
|
||||||
|
],
|
||||||
|
"cor": "#a855f7",
|
||||||
|
"restricoes": "Sinais de entrada/saída do LNA RF para comunicação 2.4 GHz Wi-Fi/BLE"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,649 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"numero": "GND",
|
||||||
|
"nome": "GND",
|
||||||
|
"tipo": "ground",
|
||||||
|
"funcoes": [
|
||||||
|
"Conexão externa de terra",
|
||||||
|
"Referência elétrica do sistema"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Ground"
|
||||||
|
],
|
||||||
|
"cor": "#64748b",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDDA",
|
||||||
|
"nome": "VDDA",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação do domínio analógico"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power",
|
||||||
|
"Analog"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 3.0 V e 3.6 V (típico 3.3 V)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDDPST1",
|
||||||
|
"nome": "VDDPST1",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação do domínio digital de baixa potência",
|
||||||
|
"Fornece energia para pinos LP IO"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 3.0 V e 3.6 V (típico 3.3 V)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDDPST2",
|
||||||
|
"nome": "VDDPST2",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação do domínio digital de alta performance",
|
||||||
|
"Fornece energia para pinos HP IO"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 3.0 V e 3.6 V (típico 3.3 V)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDDPST3",
|
||||||
|
"nome": "VDDPST3",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação do domínio digital de alta performance",
|
||||||
|
"Fornece energia para pinos HP IO"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 3.0 V e 3.6 V (típico 3.3 V)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDDSPI",
|
||||||
|
"nome": "VDDSPI",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação dos barramentos Flash e PSRAM",
|
||||||
|
"Pode funcionar como entrada ou saída",
|
||||||
|
"Backup de alimentação para flash integrado"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power",
|
||||||
|
"Flash"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Pode ser 3.3 V ou configurável como GPIO; padrão para alimentação de flash"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "CHIP_PU",
|
||||||
|
"nome": "CHIP_PU (EN)",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Habilitar chip (nível alto)",
|
||||||
|
"Reseta o chip (nível baixo)"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power",
|
||||||
|
"Reset"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Deve estar em nível alto para operação normal; não deixar flutuante"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 0,
|
||||||
|
"nome": "GPIO0",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO0",
|
||||||
|
"XTAL_32K_P",
|
||||||
|
"ADC1_CH0",
|
||||||
|
"LPGPIO0"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"RTC",
|
||||||
|
"ADC",
|
||||||
|
"Clock",
|
||||||
|
"LP_GPIO"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pode ser usado para cristal RTC de 32.768 kHz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 1,
|
||||||
|
"nome": "GPIO1",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO1",
|
||||||
|
"XTAL_32K_N",
|
||||||
|
"ADC1_CH1",
|
||||||
|
"LPGPIO1"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"RTC",
|
||||||
|
"ADC",
|
||||||
|
"Clock",
|
||||||
|
"LP_GPIO"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pode ser usado para cristal RTC de 32.768 kHz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 2,
|
||||||
|
"nome": "GPIO2",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO2",
|
||||||
|
"MTMS",
|
||||||
|
"ADC1_CH2",
|
||||||
|
"FSPIQ",
|
||||||
|
"LPGPIO2",
|
||||||
|
"LPI2C_SDA"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC",
|
||||||
|
"SPI",
|
||||||
|
"JTAG",
|
||||||
|
"LP_GPIO",
|
||||||
|
"LP_I2C"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG Test Mode Select; pode ser usado com LP_I2C"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 3,
|
||||||
|
"nome": "GPIO3",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO3",
|
||||||
|
"MTDI",
|
||||||
|
"ADC1_CH3",
|
||||||
|
"LPGPIO3",
|
||||||
|
"LPI2C_SCL"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC",
|
||||||
|
"JTAG",
|
||||||
|
"LP_GPIO",
|
||||||
|
"LP_I2C"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG Test Data In; pode ser usado com LP_I2C"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 4,
|
||||||
|
"nome": "GPIO4",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO4",
|
||||||
|
"MTCK",
|
||||||
|
"ADC1_CH4",
|
||||||
|
"FSPIHD",
|
||||||
|
"LPGPIO4",
|
||||||
|
"LPUART_RXD"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC",
|
||||||
|
"JTAG",
|
||||||
|
"SPI",
|
||||||
|
"LP_GPIO",
|
||||||
|
"LP_UART"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG Test Clock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 5,
|
||||||
|
"nome": "GPIO5",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO5",
|
||||||
|
"MTDO",
|
||||||
|
"ADC1_CH5",
|
||||||
|
"FSPIWP",
|
||||||
|
"LPGPIO5",
|
||||||
|
"LPUART_TXD"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC",
|
||||||
|
"JTAG",
|
||||||
|
"SPI",
|
||||||
|
"LP_GPIO",
|
||||||
|
"LP_UART"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG Test Data Out"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 6,
|
||||||
|
"nome": "GPIO6",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO6",
|
||||||
|
"FSPICLK",
|
||||||
|
"LPGPIO6"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI",
|
||||||
|
"LP_GPIO"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 7,
|
||||||
|
"nome": "GPIO7",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO7",
|
||||||
|
"FSPID",
|
||||||
|
"SDIODATA1"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI",
|
||||||
|
"SDIO",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Strapping pin para controle de fonte de sinal JTAG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 8,
|
||||||
|
"nome": "GPIO8",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO8",
|
||||||
|
"SDIODATA0",
|
||||||
|
"PADCOMP0"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SDIO",
|
||||||
|
"Analog",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Strapping pin para controle de modo de boot e impressão ROM; comparador analógico"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 9,
|
||||||
|
"nome": "GPIO9",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO9",
|
||||||
|
"SDIOCLK",
|
||||||
|
"PADCOMP1"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SDIO",
|
||||||
|
"Analog",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pull-up interno; strapping pin para modo boot (alto=SPI boot); comparador analógico"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 10,
|
||||||
|
"nome": "GPIO10",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO10",
|
||||||
|
"SDIOCMD",
|
||||||
|
"FSPICS0"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI",
|
||||||
|
"SDIO"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 11,
|
||||||
|
"nome": "GPIO11",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO11",
|
||||||
|
"UART0_TXD"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"UART"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "UART0 TX para download de firmware"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 12,
|
||||||
|
"nome": "GPIO12",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO12",
|
||||||
|
"UART0_RXD"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"UART"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pull-up interno; UART0 RX para download de firmware"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 13,
|
||||||
|
"nome": "GPIO13",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO13",
|
||||||
|
"USB_D-",
|
||||||
|
"SDIODATA3"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"USB",
|
||||||
|
"SDIO"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "USB D- para USB OTG e USB Serial/JTAG; drive padrão 40 mA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 14,
|
||||||
|
"nome": "GPIO14",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO14",
|
||||||
|
"USB_D+",
|
||||||
|
"SDIODATA2"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"USB",
|
||||||
|
"SDIO"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "USB D+ para USB OTG e USB Serial/JTAG; drive padrão 40 mA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 15,
|
||||||
|
"nome": "GPIO15",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO15",
|
||||||
|
"SPICS1"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com PSRAM; pull-up interno"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 16,
|
||||||
|
"nome": "GPIO16",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO16",
|
||||||
|
"SPICS0"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash; pull-up interno; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 17,
|
||||||
|
"nome": "GPIO17",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO17",
|
||||||
|
"SPIQ"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash; pull-up interno; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 18,
|
||||||
|
"nome": "GPIO18",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO18",
|
||||||
|
"SPIWP"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash; pull-up interno; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 19,
|
||||||
|
"nome": "GPIO19",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO19",
|
||||||
|
"VDDSPI"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pin VDDSPI pode ser configurado como GPIO se flash for alimentado externamente"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 20,
|
||||||
|
"nome": "GPIO20",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO20",
|
||||||
|
"SPIHD"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash; pull-up interno; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 21,
|
||||||
|
"nome": "GPIO21",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO21",
|
||||||
|
"SPICLK"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash; pull-up interno; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 22,
|
||||||
|
"nome": "GPIO22",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO22",
|
||||||
|
"SPID"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash; pull-up interno; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 23,
|
||||||
|
"nome": "GPIO23",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO23"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 24,
|
||||||
|
"nome": "GPIO24",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO24"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 25,
|
||||||
|
"nome": "GPIO25",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO25"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Strapping pin para controle de borda de clock SDIO"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 26,
|
||||||
|
"nome": "GPIO26",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO26"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Strapping pin para controle de modo de boot"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 27,
|
||||||
|
"nome": "GPIO27",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO27"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pull-up interno; strapping pin para modo boot e impressão ROM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 28,
|
||||||
|
"nome": "GPIO28",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO28"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pull-up interno; strapping pin para modo boot (alto=SPI boot)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "XTAL_N",
|
||||||
|
"nome": "XTAL_N",
|
||||||
|
"tipo": "analog",
|
||||||
|
"funcoes": [
|
||||||
|
"Entrada/saída de clock externo",
|
||||||
|
"Conexão ao cristal ou oscilador do chip"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Analog",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#a855f7",
|
||||||
|
"restricoes": "Clock diferencial negativo; suporta cristal de 40 MHz ou 48 MHz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "XTAL_P",
|
||||||
|
"nome": "XTAL_P",
|
||||||
|
"tipo": "analog",
|
||||||
|
"funcoes": [
|
||||||
|
"Entrada/saída de clock externo",
|
||||||
|
"Conexão ao cristal ou oscilador do chip"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Analog",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#a855f7",
|
||||||
|
"restricoes": "Clock diferencial positivo; suporta cristal de 40 MHz ou 48 MHz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "ANT",
|
||||||
|
"nome": "ANT_2G",
|
||||||
|
"tipo": "analog",
|
||||||
|
"funcoes": [
|
||||||
|
"Entrada/saída de RF 2.4 GHz"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Analog",
|
||||||
|
"RF"
|
||||||
|
],
|
||||||
|
"cor": "#a855f7",
|
||||||
|
"restricoes": "Antena para comunicação Wi-Fi/BLE em 2.4 GHz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "ANT",
|
||||||
|
"nome": "ANT_5G",
|
||||||
|
"tipo": "analog",
|
||||||
|
"funcoes": [
|
||||||
|
"Entrada/saída de RF 5 GHz"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Analog",
|
||||||
|
"RF"
|
||||||
|
],
|
||||||
|
"cor": "#a855f7",
|
||||||
|
"restricoes": "Antena para comunicação Wi-Fi em 5 GHz"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,652 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"numero": "GND",
|
||||||
|
"nome": "GND",
|
||||||
|
"tipo": "ground",
|
||||||
|
"funcoes": [
|
||||||
|
"Referência elétrica do sistema",
|
||||||
|
"Conexão externa de terra"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Ground"
|
||||||
|
],
|
||||||
|
"cor": "#64748b",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDDA",
|
||||||
|
"nome": "VDDA",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação do domínio analógico"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power",
|
||||||
|
"Analog"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 3.0 V e 3.6 V (típico 3.3 V)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDDPST1",
|
||||||
|
"nome": "VDDPST1",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação para o domínio LP digital e parte do domínio analógico"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Alimenta os pinos LP IO; típico 3.3 V"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDDPST2",
|
||||||
|
"nome": "VDDPST2",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação para o domínio HP digital"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Alimenta os pinos HP IO; típico 3.3 V"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDDSPI",
|
||||||
|
"nome": "VDDSPI",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação dos barramentos Flash e PSRAM",
|
||||||
|
"Pode funcionar como entrada ou saída",
|
||||||
|
"Backup de alimentação para flash integrado"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Pode ser 3.3 V ou configurável como GPIO27; padrão para alimentação de flash"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "CHIP_PU",
|
||||||
|
"nome": "CHIP_PU (EN)",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Habilitar chip (nível alto)",
|
||||||
|
"Reseta o chip (nível baixo)"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power",
|
||||||
|
"Reset"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Deve estar em nível alto para operação normal; não deixar flutuante"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 0,
|
||||||
|
"nome": "GPIO0",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO0",
|
||||||
|
"XTAL_32K_P",
|
||||||
|
"ADC1_CH0",
|
||||||
|
"LPGPIO0",
|
||||||
|
"LPUART_DTR"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"RTC",
|
||||||
|
"ADC",
|
||||||
|
"Clock",
|
||||||
|
"LP_IO"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pode ser usado para cristal RTC de 32.768 kHz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 1,
|
||||||
|
"nome": "GPIO1",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO1",
|
||||||
|
"XTAL_32K_N",
|
||||||
|
"ADC1_CH1",
|
||||||
|
"LPGPIO1",
|
||||||
|
"LPUART_DSR"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"RTC",
|
||||||
|
"ADC",
|
||||||
|
"Clock",
|
||||||
|
"LP_IO"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pode ser usado para cristal RTC de 32.768 kHz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 2,
|
||||||
|
"nome": "GPIO2",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO2",
|
||||||
|
"ADC1_CH2",
|
||||||
|
"FSPIQ",
|
||||||
|
"LPGPIO2",
|
||||||
|
"LPUART_RTS"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC",
|
||||||
|
"SPI",
|
||||||
|
"LP_IO",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Strapping pin; pode ser usado para SPI2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 3,
|
||||||
|
"nome": "GPIO3",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO3",
|
||||||
|
"ADC1_CH3",
|
||||||
|
"LPGPIO3",
|
||||||
|
"LPUART_CTS"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC",
|
||||||
|
"LP_IO"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 4,
|
||||||
|
"nome": "GPIO4",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO4",
|
||||||
|
"ADC1_CH4",
|
||||||
|
"MTMS",
|
||||||
|
"FSPIHD",
|
||||||
|
"LPGPIO4",
|
||||||
|
"LPUART_RXD"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC",
|
||||||
|
"JTAG",
|
||||||
|
"SPI",
|
||||||
|
"LP_IO",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG Test Mode Select; Strapping pin"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 5,
|
||||||
|
"nome": "GPIO5",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO5",
|
||||||
|
"ADC1_CH5",
|
||||||
|
"MTDI",
|
||||||
|
"FSPIWP",
|
||||||
|
"LPGPIO5",
|
||||||
|
"LPUART_TXD"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC",
|
||||||
|
"JTAG",
|
||||||
|
"SPI",
|
||||||
|
"LP_IO",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG Test Data In; Strapping pin"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 6,
|
||||||
|
"nome": "GPIO6",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO6",
|
||||||
|
"ADC1_CH6",
|
||||||
|
"MTCK",
|
||||||
|
"FSPICLK",
|
||||||
|
"LPGPIO6",
|
||||||
|
"LPI2C_SDA"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"JTAG",
|
||||||
|
"SPI",
|
||||||
|
"LP_IO"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG Test Clock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 7,
|
||||||
|
"nome": "GPIO7",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO7",
|
||||||
|
"MTDO",
|
||||||
|
"FSPID",
|
||||||
|
"LPGPIO7",
|
||||||
|
"LPI2C_SCL"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"JTAG",
|
||||||
|
"SPI",
|
||||||
|
"LP_IO"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG Test Data Out"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 8,
|
||||||
|
"nome": "GPIO8",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO8"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Strapping pin para controle de modo de boot e impressão ROM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 9,
|
||||||
|
"nome": "GPIO9",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO9"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pull-up interno; strapping pin para modo boot (alto=SPI boot)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 10,
|
||||||
|
"nome": "GPIO10",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO10"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Apenas em QFN40"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 11,
|
||||||
|
"nome": "GPIO11",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO11"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Apenas em QFN40"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 12,
|
||||||
|
"nome": "GPIO12",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO12",
|
||||||
|
"USB_D-"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"USB"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "USB D- para USB OTG e USB Serial/JTAG; força de corrente padrão 40 mA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 13,
|
||||||
|
"nome": "GPIO13",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO13",
|
||||||
|
"USB_D+"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"USB"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "USB D+ para USB OTG e USB Serial/JTAG; força de corrente padrão 40 mA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 14,
|
||||||
|
"nome": "GPIO14",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO14"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Apenas em QFN32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 15,
|
||||||
|
"nome": "GPIO15",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO15"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Strapping pin para controle de fonte de sinal JTAG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 16,
|
||||||
|
"nome": "GPIO16",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO16",
|
||||||
|
"UART0_TXD",
|
||||||
|
"FSPICS0"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"UART",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "UART0 TX para download de firmware"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 17,
|
||||||
|
"nome": "GPIO17",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO17",
|
||||||
|
"UART0_RXD",
|
||||||
|
"FSPICS1"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"UART",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pull-up interno; UART0 RX para download de firmware"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 18,
|
||||||
|
"nome": "GPIO18",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO18",
|
||||||
|
"SDIOCMD",
|
||||||
|
"FSPICS2"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SDIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Interface SDIO 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 19,
|
||||||
|
"nome": "GPIO19",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO19",
|
||||||
|
"SDIOCLK",
|
||||||
|
"FSPICS3"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SDIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Interface SDIO 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 20,
|
||||||
|
"nome": "GPIO20",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO20",
|
||||||
|
"SDIODATA0",
|
||||||
|
"FSPICS4"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SDIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Interface SDIO 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 21,
|
||||||
|
"nome": "GPIO21",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO21",
|
||||||
|
"SDIODATA1",
|
||||||
|
"FSPICS5"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SDIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Interface SDIO 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 22,
|
||||||
|
"nome": "GPIO22",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO22",
|
||||||
|
"SDIODATA2"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SDIO"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Interface SDIO 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 23,
|
||||||
|
"nome": "GPIO23",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO23",
|
||||||
|
"SDIODATA3"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SDIO"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Interface SDIO 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 24,
|
||||||
|
"nome": "GPIO24",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO24",
|
||||||
|
"SPICS0"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "QFN40 apenas; Compartilhado com flash; pull-up interno; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 25,
|
||||||
|
"nome": "GPIO25",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO25",
|
||||||
|
"SPIQ"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "QFN40 apenas; Compartilhado com flash; pull-up interno; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 26,
|
||||||
|
"nome": "GPIO26",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO26",
|
||||||
|
"SPIWP"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "QFN40 apenas; Compartilhado com flash; pull-up interno; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 27,
|
||||||
|
"nome": "GPIO27",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO27",
|
||||||
|
"VDDSPI"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "QFN40 apenas; Pin VDDSPI pode ser configurado como GPIO se flash for alimentado externamente"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 28,
|
||||||
|
"nome": "GPIO28",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO28",
|
||||||
|
"SPIHD"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "QFN40 apenas; Compartilhado com flash; pull-up interno; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 29,
|
||||||
|
"nome": "GPIO29",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO29",
|
||||||
|
"SPICLK"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "QFN40 apenas; Compartilhado com flash; pull-up interno; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 30,
|
||||||
|
"nome": "GPIO30",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO30",
|
||||||
|
"SPID"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "QFN40 apenas; Compartilhado com flash; pull-up interno; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "XTAL_N",
|
||||||
|
"nome": "XTAL_N",
|
||||||
|
"tipo": "analog",
|
||||||
|
"funcoes": [
|
||||||
|
"Entrada/saída de clock externo",
|
||||||
|
"Conexão ao cristal ou oscilador do chip"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Analog",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#a855f7",
|
||||||
|
"restricoes": "Clock diferencial negativo para oscilador de 40 MHz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "XTAL_P",
|
||||||
|
"nome": "XTAL_P",
|
||||||
|
"tipo": "analog",
|
||||||
|
"funcoes": [
|
||||||
|
"Entrada/saída de clock externo",
|
||||||
|
"Conexão ao cristal ou oscilador do chip"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Analog",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#a855f7",
|
||||||
|
"restricoes": "Clock diferencial positivo para oscilador de 40 MHz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "ANT",
|
||||||
|
"nome": "ANT",
|
||||||
|
"tipo": "analog",
|
||||||
|
"funcoes": [
|
||||||
|
"Entrada/saída RF para comunicação 2.4 GHz",
|
||||||
|
"Interface de antena Wi-Fi/BLE/802.15.4"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Analog",
|
||||||
|
"RF"
|
||||||
|
],
|
||||||
|
"cor": "#a855f7",
|
||||||
|
"restricoes": "Sinais RF para comunicação sem fio"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,454 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"numero": "GND",
|
||||||
|
"nome": "GND",
|
||||||
|
"tipo": "ground",
|
||||||
|
"funcoes": [
|
||||||
|
"Referência elétrica do sistema",
|
||||||
|
"Conexão externa de terra"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Ground"
|
||||||
|
],
|
||||||
|
"cor": "#64748b",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDD3P3",
|
||||||
|
"nome": "VDD3P3",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação do domínio analógico",
|
||||||
|
"Tensão de alimentação principal"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 3.0 V e 3.6 V (típico 3.3 V)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDDAPMU",
|
||||||
|
"nome": "VDDAPMU",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação do domínio analógico",
|
||||||
|
"Alimentação para pinos GPIO12, XTAL32KP, XTAL32KN"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power",
|
||||||
|
"Analog"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 3.0 V e 3.6 V (típico 3.3 V)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VBAT",
|
||||||
|
"nome": "VBAT",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação do domínio analógico ou bateria",
|
||||||
|
"Alimentação para pinos GPIO12, XTAL32KP, XTAL32KN"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 3.0 V e 3.6 V (típico 3.3 V)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDDPST1",
|
||||||
|
"nome": "VDDPST1",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação do domínio de IO digital e LP IO"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 3.0 V e 3.6 V (típico 3.3 V)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDDPST2",
|
||||||
|
"nome": "VDDPST2",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação do domínio de IO digital"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 3.0 V e 3.6 V (típico 3.3 V)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "CHIP_PU",
|
||||||
|
"nome": "CHIP_PU (EN)",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Habilitar chip (nível alto)",
|
||||||
|
"Reseta o chip (nível baixo)"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power",
|
||||||
|
"Reset"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Deve estar em nível alto para operação normal; não deixar flutuante"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 0,
|
||||||
|
"nome": "GPIO0",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO0",
|
||||||
|
"FSPIQ"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 1,
|
||||||
|
"nome": "GPIO1",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO1",
|
||||||
|
"ADC1_CH0",
|
||||||
|
"FSPICS0"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 2,
|
||||||
|
"nome": "GPIO2 (MTMS)",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO2",
|
||||||
|
"MTMS",
|
||||||
|
"ADC1_CH1",
|
||||||
|
"FSPIWP"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"JTAG",
|
||||||
|
"ADC",
|
||||||
|
"SPI",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Strapping pin; JTAG Test Mode Select"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 3,
|
||||||
|
"nome": "GPIO3 (MTDO)",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO3",
|
||||||
|
"MTDO",
|
||||||
|
"ADC1_CH2",
|
||||||
|
"FSPIHD"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"JTAG",
|
||||||
|
"ADC",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG Test Data Out"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 4,
|
||||||
|
"nome": "GPIO4 (MTCK)",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO4",
|
||||||
|
"MTCK",
|
||||||
|
"ADC1_CH3",
|
||||||
|
"FSPICLK"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"JTAG",
|
||||||
|
"ADC",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG Test Clock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 5,
|
||||||
|
"nome": "GPIO5 (MTDI)",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO5",
|
||||||
|
"MTDI",
|
||||||
|
"ADC1_CH4",
|
||||||
|
"FSPID"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"JTAG",
|
||||||
|
"ADC",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG Test Data In"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 8,
|
||||||
|
"nome": "GPIO8",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO8"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Strapping pin para controle de modo de boot e impressão ROM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 9,
|
||||||
|
"nome": "GPIO9",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO9"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pull-up interno; strapping pin para modo boot (alto=SPI boot)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 10,
|
||||||
|
"nome": "GPIO10",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO10",
|
||||||
|
"Voltage Comparator ZCD0"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"Analog"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 11,
|
||||||
|
"nome": "GPIO11",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO11",
|
||||||
|
"Voltage Comparator ZCD1"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"Analog"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 12,
|
||||||
|
"nome": "GPIO12",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO12"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Alimentado por VDDAPMU/VBAT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 13,
|
||||||
|
"nome": "GPIO13 (XTAL_32K_P)",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO13",
|
||||||
|
"XTAL_32K_P"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"RTC",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pode ser usado para cristal RTC de 32.768 kHz; alimentado por VDDAPMU/VBAT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 14,
|
||||||
|
"nome": "GPIO14 (XTAL_32K_N)",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO14",
|
||||||
|
"XTAL_32K_N"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"RTC",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pode ser usado para cristal RTC de 32.768 kHz; alimentado por VDDAPMU/VBAT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 22,
|
||||||
|
"nome": "GPIO22",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO22"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 23,
|
||||||
|
"nome": "GPIO23 (U0RXD)",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO23",
|
||||||
|
"UART0_RXD",
|
||||||
|
"FSPICS1"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"UART",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pull-up interno; UART0 RX para download de firmware"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 24,
|
||||||
|
"nome": "GPIO24 (U0TXD)",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO24",
|
||||||
|
"UART0_TXD",
|
||||||
|
"FSPICS2"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"UART",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pull-up interno; UART0 TX para download de firmware"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 25,
|
||||||
|
"nome": "GPIO25",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO25",
|
||||||
|
"FSPICS3"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Strapping pin para controle de fonte de sinal JTAG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 26,
|
||||||
|
"nome": "GPIO26",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO26",
|
||||||
|
"USB_D-",
|
||||||
|
"FSPICS4"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"USB",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "USB D- para USB OTG e USB Serial/JTAG; drive strength padrão 40mA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 27,
|
||||||
|
"nome": "GPIO27",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO27",
|
||||||
|
"USB_D+",
|
||||||
|
"FSPICS5"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"USB",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "USB D+ para USB OTG e USB Serial/JTAG; drive strength padrão 40mA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "XTAL_N",
|
||||||
|
"nome": "XTAL_N",
|
||||||
|
"tipo": "analog",
|
||||||
|
"funcoes": [
|
||||||
|
"Entrada/saída de clock externo",
|
||||||
|
"Conexão ao cristal ou oscilador do chip"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Analog",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#a855f7",
|
||||||
|
"restricoes": "Clock diferencial negativo de 32 MHz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "XTAL_P",
|
||||||
|
"nome": "XTAL_P",
|
||||||
|
"tipo": "analog",
|
||||||
|
"funcoes": [
|
||||||
|
"Entrada/saída de clock externo",
|
||||||
|
"Conexão ao cristal ou oscilador do chip"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Analog",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#a855f7",
|
||||||
|
"restricoes": "Clock diferencial positivo de 32 MHz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "ANT",
|
||||||
|
"nome": "ANT",
|
||||||
|
"tipo": "analog",
|
||||||
|
"funcoes": [
|
||||||
|
"Entrada/saída RF para comunicação sem fio",
|
||||||
|
"Amplificador de baixo ruído RF"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Analog",
|
||||||
|
"RF"
|
||||||
|
],
|
||||||
|
"cor": "#a855f7",
|
||||||
|
"restricoes": "Sinais de entrada/saída do LNA RF para comunicação 2.4 GHz Bluetooth LE e 802.15.4"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,883 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"numero": "GND",
|
||||||
|
"nome": "GND",
|
||||||
|
"tipo": "ground",
|
||||||
|
"funcoes": [
|
||||||
|
"Referência elétrica do sistema",
|
||||||
|
"Referência para nível lógico baixo"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Ground"
|
||||||
|
],
|
||||||
|
"cor": "#64748b",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDDA",
|
||||||
|
"nome": "VDDA",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação analógica do chip"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power",
|
||||||
|
"Analog"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 2.8 V e 3.6 V"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDD3P3",
|
||||||
|
"nome": "VDD3P3",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação analógica do chip"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 2.8 V e 3.6 V"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDD3P3_RTC",
|
||||||
|
"nome": "VDD3P3_RTC",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação para o domínio RTC analógico"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 2.8 V e 3.6 V"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDD3P3_RTCIO",
|
||||||
|
"nome": "VDD3P3_RTCIO",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação para RTC IO"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 3.0 V e 3.6 V"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDD3P3_CPU",
|
||||||
|
"nome": "VDD3P3_CPU",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação para CPU IO"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 2.8 V e 3.6 V; não exceder 3.3 V para gravação de eFuse"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDDSPI",
|
||||||
|
"nome": "VDDSPI",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação dos barramentos de Flash e PSRAM"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Pode ser 1.8 V ou 3.3 V configurável via GPIO45"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "CHIP_PU",
|
||||||
|
"nome": "CHIP_PU (EN)",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Habilitar chip (nível alto)",
|
||||||
|
"Reseta o chip (nível baixo)"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Deve estar em nível alto para operação normal; não deixar flutuante"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 0,
|
||||||
|
"nome": "GPIO0",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO0",
|
||||||
|
"RTC_GPIO0"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"RTC",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pull-up interno; strapping pin para modo boot (alto=SPI boot, baixo=download boot)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 1,
|
||||||
|
"nome": "GPIO1",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO1",
|
||||||
|
"ADC1_CH0",
|
||||||
|
"TOUCH1",
|
||||||
|
"RTC_GPIO1"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 2,
|
||||||
|
"nome": "GPIO2",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO2",
|
||||||
|
"ADC1_CH1",
|
||||||
|
"TOUCH2",
|
||||||
|
"RTC_GPIO2"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 3,
|
||||||
|
"nome": "GPIO3",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO3",
|
||||||
|
"ADC1_CH2",
|
||||||
|
"TOUCH3",
|
||||||
|
"RTC_GPIO3"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 4,
|
||||||
|
"nome": "GPIO4",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO4",
|
||||||
|
"ADC1_CH3",
|
||||||
|
"TOUCH4",
|
||||||
|
"RTC_GPIO4"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 5,
|
||||||
|
"nome": "GPIO5",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO5",
|
||||||
|
"ADC1_CH4",
|
||||||
|
"TOUCH5",
|
||||||
|
"RTC_GPIO5"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 6,
|
||||||
|
"nome": "GPIO6",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO6",
|
||||||
|
"ADC1_CH5",
|
||||||
|
"TOUCH6",
|
||||||
|
"RTC_GPIO6"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 7,
|
||||||
|
"nome": "GPIO7",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO7",
|
||||||
|
"ADC1_CH6",
|
||||||
|
"TOUCH7",
|
||||||
|
"RTC_GPIO7"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 8,
|
||||||
|
"nome": "GPIO8",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO8",
|
||||||
|
"ADC1_CH7",
|
||||||
|
"TOUCH8",
|
||||||
|
"RTC_GPIO8"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 9,
|
||||||
|
"nome": "GPIO9",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO9",
|
||||||
|
"ADC1_CH8",
|
||||||
|
"TOUCH9",
|
||||||
|
"RTC_GPIO9",
|
||||||
|
"FSPIHD"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 10,
|
||||||
|
"nome": "GPIO10",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO10",
|
||||||
|
"ADC1_CH9",
|
||||||
|
"TOUCH10",
|
||||||
|
"RTC_GPIO10",
|
||||||
|
"FSPICS0",
|
||||||
|
"FSPIIO4"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 11,
|
||||||
|
"nome": "GPIO11",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO11",
|
||||||
|
"ADC2_CH0",
|
||||||
|
"TOUCH11",
|
||||||
|
"RTC_GPIO11",
|
||||||
|
"FSPID",
|
||||||
|
"FSPIIO5"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 12,
|
||||||
|
"nome": "GPIO12",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO12",
|
||||||
|
"ADC2_CH1",
|
||||||
|
"TOUCH12",
|
||||||
|
"RTC_GPIO12",
|
||||||
|
"FSPICLK",
|
||||||
|
"FSPIIO6"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 13,
|
||||||
|
"nome": "GPIO13",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO13",
|
||||||
|
"ADC2_CH2",
|
||||||
|
"TOUCH13",
|
||||||
|
"RTC_GPIO13",
|
||||||
|
"FSPIQ",
|
||||||
|
"FSPIIO7"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 14,
|
||||||
|
"nome": "GPIO14",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO14",
|
||||||
|
"ADC2_CH3",
|
||||||
|
"TOUCH14",
|
||||||
|
"RTC_GPIO14",
|
||||||
|
"FSPIWP",
|
||||||
|
"FSPIDQS"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 15,
|
||||||
|
"nome": "GPIO15",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO15",
|
||||||
|
"ADC2_CH4",
|
||||||
|
"RTC_GPIO15",
|
||||||
|
"UART0_RTS",
|
||||||
|
"XTAL_32K_P"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC",
|
||||||
|
"UART",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pode ser usado para cristal RTC de 32.768 kHz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 16,
|
||||||
|
"nome": "GPIO16",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO16",
|
||||||
|
"ADC2_CH5",
|
||||||
|
"RTC_GPIO16",
|
||||||
|
"UART0_CTS",
|
||||||
|
"XTAL_32K_N"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC",
|
||||||
|
"UART",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pode ser usado para cristal RTC de 32.768 kHz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 17,
|
||||||
|
"nome": "GPIO17",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO17",
|
||||||
|
"ADC2_CH6",
|
||||||
|
"DAC1",
|
||||||
|
"RTC_GPIO17",
|
||||||
|
"UART1_TXD"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"DAC",
|
||||||
|
"RTC",
|
||||||
|
"UART"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 18,
|
||||||
|
"nome": "GPIO18",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO18",
|
||||||
|
"ADC2_CH7",
|
||||||
|
"DAC2",
|
||||||
|
"RTC_GPIO18",
|
||||||
|
"UART1_RXD",
|
||||||
|
"CLKOUT3"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"DAC",
|
||||||
|
"RTC",
|
||||||
|
"UART",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 19,
|
||||||
|
"nome": "GPIO19",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO19",
|
||||||
|
"ADC2_CH8",
|
||||||
|
"RTC_GPIO19",
|
||||||
|
"UART1_RTS",
|
||||||
|
"CLKOUT2",
|
||||||
|
"USB_D-"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC",
|
||||||
|
"UART",
|
||||||
|
"Clock",
|
||||||
|
"USB"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "USB D- para USB OTG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 20,
|
||||||
|
"nome": "GPIO20",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO20",
|
||||||
|
"ADC2_CH9",
|
||||||
|
"RTC_GPIO20",
|
||||||
|
"UART1_CTS",
|
||||||
|
"CLKOUT1",
|
||||||
|
"USB_D+"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC",
|
||||||
|
"UART",
|
||||||
|
"Clock",
|
||||||
|
"USB"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "USB D+ para USB OTG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 21,
|
||||||
|
"nome": "GPIO21",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO21",
|
||||||
|
"RTC_GPIO21"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"RTC"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 26,
|
||||||
|
"nome": "GPIO26",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO26",
|
||||||
|
"SPICS1"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Usado para PSRAM embutida em ESP32-S2FN4R2 e ESP32-S2R2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 27,
|
||||||
|
"nome": "GPIO27",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO27",
|
||||||
|
"SPIHD"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash externa; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 28,
|
||||||
|
"nome": "GPIO28",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO28",
|
||||||
|
"SPIWP"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash externa; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 29,
|
||||||
|
"nome": "GPIO29",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO29",
|
||||||
|
"SPICS0"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash externa; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 30,
|
||||||
|
"nome": "GPIO30",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO30",
|
||||||
|
"SPICLK"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash externa; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 31,
|
||||||
|
"nome": "GPIO31",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO31",
|
||||||
|
"SPIQ"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash externa; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 32,
|
||||||
|
"nome": "GPIO32",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO32",
|
||||||
|
"SPID"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash externa; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 33,
|
||||||
|
"nome": "GPIO33",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO33",
|
||||||
|
"FSPIHD",
|
||||||
|
"SPIIO4"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Alimentação VDD3P3_CPU ou VDDSPI (configurável)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 34,
|
||||||
|
"nome": "GPIO34",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO34",
|
||||||
|
"FSPICS0",
|
||||||
|
"SPIIO5"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Alimentação VDD3P3_CPU ou VDDSPI (configurável)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 35,
|
||||||
|
"nome": "GPIO35",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO35",
|
||||||
|
"FSPID",
|
||||||
|
"SPIIO6"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Alimentação VDD3P3_CPU ou VDDSPI (configurável)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 36,
|
||||||
|
"nome": "GPIO36",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO36",
|
||||||
|
"FSPICLK",
|
||||||
|
"SPIIO7"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Alimentação VDD3P3_CPU ou VDDSPI (configurável)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 37,
|
||||||
|
"nome": "GPIO37",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO37",
|
||||||
|
"FSPIQ",
|
||||||
|
"SPIDQS"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Alimentação VDD3P3_CPU ou VDDSPI (configurável)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 38,
|
||||||
|
"nome": "GPIO38",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO38",
|
||||||
|
"FSPIWP"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 39,
|
||||||
|
"nome": "GPIO39",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO39",
|
||||||
|
"MTCK",
|
||||||
|
"CLKOUT3"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"JTAG",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG para depuração"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 40,
|
||||||
|
"nome": "GPIO40",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO40",
|
||||||
|
"MTDO",
|
||||||
|
"CLKOUT2"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"JTAG",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG para depuração"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 41,
|
||||||
|
"nome": "GPIO41",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO41",
|
||||||
|
"MTDI",
|
||||||
|
"CLKOUT1"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"JTAG",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG para depuração"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 42,
|
||||||
|
"nome": "GPIO42",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO42",
|
||||||
|
"MTMS"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"JTAG"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG para depuração"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 43,
|
||||||
|
"nome": "GPIO43",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO43",
|
||||||
|
"UART0_TXD",
|
||||||
|
"CLKOUT1"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"UART",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pull-up interno; UART0 TX para download de firmware"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 44,
|
||||||
|
"nome": "GPIO44",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO44",
|
||||||
|
"UART0_RXD",
|
||||||
|
"CLKOUT2"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"UART",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pull-up interno; UART0 RX para download de firmware"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 45,
|
||||||
|
"nome": "GPIO45",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO45"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pull-down interno; strapping pin para seleção de tensão VDDSPI (baixo=3.3V, alto=1.8V)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 46,
|
||||||
|
"nome": "GPIO46",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO46"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#22c55e",
|
||||||
|
"restricoes": "Somente entrada (input-only); pull-down fixo; strapping para habilitar/desabilitar mensagens ROM"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,945 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"numero": "GND",
|
||||||
|
"nome": "GND",
|
||||||
|
"tipo": "ground",
|
||||||
|
"funcoes": [
|
||||||
|
"Referência elétrica do sistema",
|
||||||
|
"Conexão externa de terra"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Ground"
|
||||||
|
],
|
||||||
|
"cor": "#64748b",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDD3P3",
|
||||||
|
"nome": "VDD3P3",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação do domínio analógico"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 3.0 V e 3.6 V (típico 3.3 V)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDDA",
|
||||||
|
"nome": "VDDA",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação do domínio analógico"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power",
|
||||||
|
"Analog"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 3.0 V e 3.6 V (típico 3.3 V)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDD3P3_RTC",
|
||||||
|
"nome": "VDD3P3_RTC",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação para o domínio RTC e parte do domínio digital"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 3.0 V e 3.6 V (típico 3.3 V)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDD3P3_CPU",
|
||||||
|
"nome": "VDD3P3_CPU",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação para o domínio digital e CPU"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 3.0 V e 3.6 V (típico 3.3 V); não exceder 3.3 V para gravação de eFuse"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDDSPI",
|
||||||
|
"nome": "VDDSPI",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Alimentação dos barramentos Flash e PSRAM",
|
||||||
|
"Pode funcionar como entrada ou saída"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power"
|
||||||
|
],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Pode ser 1.8 V ou 3.3 V configurável via GPIO45"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "CHIP_PU",
|
||||||
|
"nome": "CHIP_PU (EN)",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": [
|
||||||
|
"Habilitar chip (nível alto)",
|
||||||
|
"Reseta o chip (nível baixo)"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Power",
|
||||||
|
"Reset"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Deve estar em nível alto para operação normal; não deixar flutuante"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 0,
|
||||||
|
"nome": "GPIO0",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO0",
|
||||||
|
"RTC_GPIO0"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"RTC",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pull-up interno; strapping pin para modo boot (alto=SPI boot, baixo=download boot)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 1,
|
||||||
|
"nome": "GPIO1",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO1",
|
||||||
|
"ADC1_CH0",
|
||||||
|
"TOUCH1",
|
||||||
|
"RTC_GPIO1"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 2,
|
||||||
|
"nome": "GPIO2",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO2",
|
||||||
|
"ADC1_CH1",
|
||||||
|
"TOUCH2",
|
||||||
|
"RTC_GPIO2"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 3,
|
||||||
|
"nome": "GPIO3",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO3",
|
||||||
|
"ADC1_CH2",
|
||||||
|
"TOUCH3",
|
||||||
|
"RTC_GPIO3"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Strapping pin para controle de fonte de sinal JTAG; sem pull-up/down interno"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 4,
|
||||||
|
"nome": "GPIO4",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO4",
|
||||||
|
"ADC1_CH3",
|
||||||
|
"TOUCH4",
|
||||||
|
"RTC_GPIO4"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 5,
|
||||||
|
"nome": "GPIO5",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO5",
|
||||||
|
"ADC1_CH4",
|
||||||
|
"TOUCH5",
|
||||||
|
"RTC_GPIO5"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 6,
|
||||||
|
"nome": "GPIO6",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO6",
|
||||||
|
"ADC1_CH5",
|
||||||
|
"TOUCH6",
|
||||||
|
"RTC_GPIO6"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 7,
|
||||||
|
"nome": "GPIO7",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO7",
|
||||||
|
"ADC1_CH6",
|
||||||
|
"TOUCH7",
|
||||||
|
"RTC_GPIO7"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 8,
|
||||||
|
"nome": "GPIO8",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO8",
|
||||||
|
"ADC1_CH7",
|
||||||
|
"TOUCH8",
|
||||||
|
"RTC_GPIO8"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 9,
|
||||||
|
"nome": "GPIO9",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO9",
|
||||||
|
"ADC1_CH8",
|
||||||
|
"TOUCH9",
|
||||||
|
"RTC_GPIO9",
|
||||||
|
"FSPIHD"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 10,
|
||||||
|
"nome": "GPIO10",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO10",
|
||||||
|
"ADC1_CH9",
|
||||||
|
"TOUCH10",
|
||||||
|
"RTC_GPIO10",
|
||||||
|
"FSPICS0",
|
||||||
|
"FSPIIO4"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 11,
|
||||||
|
"nome": "GPIO11",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO11",
|
||||||
|
"ADC2_CH0",
|
||||||
|
"TOUCH11",
|
||||||
|
"RTC_GPIO11",
|
||||||
|
"FSPID",
|
||||||
|
"FSPIIO5"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 12,
|
||||||
|
"nome": "GPIO12",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO12",
|
||||||
|
"ADC2_CH1",
|
||||||
|
"TOUCH12",
|
||||||
|
"RTC_GPIO12",
|
||||||
|
"FSPICLK",
|
||||||
|
"FSPIIO6"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 13,
|
||||||
|
"nome": "GPIO13",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO13",
|
||||||
|
"ADC2_CH2",
|
||||||
|
"TOUCH13",
|
||||||
|
"RTC_GPIO13",
|
||||||
|
"FSPIQ",
|
||||||
|
"FSPIIO7"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 14,
|
||||||
|
"nome": "GPIO14",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO14",
|
||||||
|
"ADC2_CH3",
|
||||||
|
"TOUCH14",
|
||||||
|
"RTC_GPIO14",
|
||||||
|
"FSPIWP",
|
||||||
|
"FSPIDQS"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"Touch",
|
||||||
|
"RTC",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 15,
|
||||||
|
"nome": "GPIO15",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO15",
|
||||||
|
"ADC2_CH4",
|
||||||
|
"RTC_GPIO15",
|
||||||
|
"XTAL_32K_P",
|
||||||
|
"UART0_RTS"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC",
|
||||||
|
"UART",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pode ser usado para cristal RTC de 32.768 kHz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 16,
|
||||||
|
"nome": "GPIO16",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO16",
|
||||||
|
"ADC2_CH5",
|
||||||
|
"RTC_GPIO16",
|
||||||
|
"XTAL_32K_N",
|
||||||
|
"UART0_CTS"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC",
|
||||||
|
"UART",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pode ser usado para cristal RTC de 32.768 kHz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 17,
|
||||||
|
"nome": "GPIO17",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO17",
|
||||||
|
"ADC2_CH6",
|
||||||
|
"RTC_GPIO17",
|
||||||
|
"UART1_TXD"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC",
|
||||||
|
"UART"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 18,
|
||||||
|
"nome": "GPIO18",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO18",
|
||||||
|
"ADC2_CH7",
|
||||||
|
"RTC_GPIO18",
|
||||||
|
"UART1_RXD",
|
||||||
|
"CLKOUT3"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC",
|
||||||
|
"UART",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 19,
|
||||||
|
"nome": "GPIO19",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO19",
|
||||||
|
"ADC2_CH8",
|
||||||
|
"RTC_GPIO19",
|
||||||
|
"UART1_RTS",
|
||||||
|
"CLKOUT2",
|
||||||
|
"USB_D-"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC",
|
||||||
|
"UART",
|
||||||
|
"Clock",
|
||||||
|
"USB"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "USB D- para USB OTG e USB Serial/JTAG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 20,
|
||||||
|
"nome": "GPIO20",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO20",
|
||||||
|
"ADC2_CH9",
|
||||||
|
"RTC_GPIO20",
|
||||||
|
"UART1_CTS",
|
||||||
|
"CLKOUT1",
|
||||||
|
"USB_D+"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"ADC",
|
||||||
|
"RTC",
|
||||||
|
"UART",
|
||||||
|
"Clock",
|
||||||
|
"USB"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "USB D+ para USB OTG e USB Serial/JTAG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 21,
|
||||||
|
"nome": "GPIO21",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO21",
|
||||||
|
"RTC_GPIO21"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"RTC"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 26,
|
||||||
|
"nome": "GPIO26",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO26",
|
||||||
|
"SPICS1"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Usado para PSRAM embutida em algumas variantes; pull-up interno"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 27,
|
||||||
|
"nome": "GPIO27",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO27",
|
||||||
|
"SPIHD"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash/PSRAM; não usar como GPIO normal; pull-up interno"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 28,
|
||||||
|
"nome": "GPIO28",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO28",
|
||||||
|
"SPIWP"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash/PSRAM; não usar como GPIO normal; pull-up interno"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 29,
|
||||||
|
"nome": "GPIO29",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO29",
|
||||||
|
"SPICS0"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash/PSRAM; não usar como GPIO normal; pull-up interno"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 30,
|
||||||
|
"nome": "GPIO30",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO30",
|
||||||
|
"SPICLK"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash/PSRAM; não usar como GPIO normal; pull-up interno"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 31,
|
||||||
|
"nome": "GPIO31",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO31",
|
||||||
|
"SPIQ"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash/PSRAM; não usar como GPIO normal; pull-up interno"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 32,
|
||||||
|
"nome": "GPIO32",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO32",
|
||||||
|
"SPID"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com flash/PSRAM; não usar como GPIO normal; pull-up interno"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 33,
|
||||||
|
"nome": "GPIO33",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO33",
|
||||||
|
"FSPIHD",
|
||||||
|
"SPIIO4"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Alimentação VDD3P3_CPU ou VDDSPI (configurável); usado para modo SPI de 8 linhas"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 34,
|
||||||
|
"nome": "GPIO34",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO34",
|
||||||
|
"FSPICS0",
|
||||||
|
"SPIIO5"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Alimentação VDD3P3_CPU ou VDDSPI (configurável); usado para modo SPI de 8 linhas"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 35,
|
||||||
|
"nome": "GPIO35",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO35",
|
||||||
|
"FSPID",
|
||||||
|
"SPIIO6"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Alimentação VDD3P3_CPU ou VDDSPI (configurável); usado para modo SPI de 8 linhas"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 36,
|
||||||
|
"nome": "GPIO36",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO36",
|
||||||
|
"FSPICLK",
|
||||||
|
"SPIIO7"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Alimentação VDD3P3_CPU ou VDDSPI (configurável); usado para modo SPI de 8 linhas"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 37,
|
||||||
|
"nome": "GPIO37",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO37",
|
||||||
|
"FSPIQ",
|
||||||
|
"SPIDQS"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Alimentação VDD3P3_CPU ou VDDSPI (configurável); usado para modo SPI de 8 linhas"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 38,
|
||||||
|
"nome": "GPIO38",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO38",
|
||||||
|
"FSPIWP"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 39,
|
||||||
|
"nome": "GPIO39",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO39",
|
||||||
|
"MTCK",
|
||||||
|
"CLKOUT3"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"JTAG",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG para depuração"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 40,
|
||||||
|
"nome": "GPIO40",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO40",
|
||||||
|
"MTDO",
|
||||||
|
"CLKOUT2"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"JTAG",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG para depuração"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 41,
|
||||||
|
"nome": "GPIO41",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO41",
|
||||||
|
"MTDI",
|
||||||
|
"CLKOUT1"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"JTAG",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG para depuração"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 42,
|
||||||
|
"nome": "GPIO42",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO42",
|
||||||
|
"MTMS"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"JTAG"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "JTAG para depuração"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 43,
|
||||||
|
"nome": "GPIO43",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO43",
|
||||||
|
"UART0_TXD",
|
||||||
|
"CLKOUT1"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"UART",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pull-up interno; UART0 TX para download de firmware"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 44,
|
||||||
|
"nome": "GPIO44",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO44",
|
||||||
|
"UART0_RXD",
|
||||||
|
"CLKOUT2"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"UART",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pull-up interno; UART0 RX para download de firmware"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 45,
|
||||||
|
"nome": "GPIO45",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO45"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Pull-down interno; strapping pin para seleção de tensão VDDSPI (baixo=3.3V, alto=1.8V)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 46,
|
||||||
|
"nome": "GPIO46",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO46"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"Strapping"
|
||||||
|
],
|
||||||
|
"cor": "#22c55e",
|
||||||
|
"restricoes": "Somente entrada (input-only); pull-down interno; strapping para boot mode e controle de mensagens ROM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 47,
|
||||||
|
"nome": "GPIO47",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO47",
|
||||||
|
"SPICLK_P_DIFF"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Clock diferencial positivo para barramento SPI"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 48,
|
||||||
|
"nome": "GPIO48",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": [
|
||||||
|
"GPIO48",
|
||||||
|
"SPICLK_N_DIFF"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"GPIO",
|
||||||
|
"SPI",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Clock diferencial negativo para barramento SPI"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "XTAL_N",
|
||||||
|
"nome": "XTAL_N",
|
||||||
|
"tipo": "analog",
|
||||||
|
"funcoes": [
|
||||||
|
"Entrada/saída de clock externo",
|
||||||
|
"Conexão ao cristal ou oscilador do chip"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Analog",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#a855f7",
|
||||||
|
"restricoes": "Clock diferencial negativo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "XTAL_P",
|
||||||
|
"nome": "XTAL_P",
|
||||||
|
"tipo": "analog",
|
||||||
|
"funcoes": [
|
||||||
|
"Entrada/saída de clock externo",
|
||||||
|
"Conexão ao cristal ou oscilador do chip"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Analog",
|
||||||
|
"Clock"
|
||||||
|
],
|
||||||
|
"cor": "#a855f7",
|
||||||
|
"restricoes": "Clock diferencial positivo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "LNA",
|
||||||
|
"nome": "LNA_IN",
|
||||||
|
"tipo": "analog",
|
||||||
|
"funcoes": [
|
||||||
|
"Entrada/saída do amplificador de baixo ruído RF"
|
||||||
|
],
|
||||||
|
"categorias": [
|
||||||
|
"Analog",
|
||||||
|
"RF"
|
||||||
|
],
|
||||||
|
"cor": "#a855f7",
|
||||||
|
"restricoes": "Sinais de entrada/saída do LNA RF"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,362 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"numero": "GND",
|
||||||
|
"nome": "GND",
|
||||||
|
"tipo": "ground",
|
||||||
|
"funcoes": ["Referência elétrica do sistema", "Referência para nível lógico baixo"],
|
||||||
|
"categorias": ["Ground"],
|
||||||
|
"cor": "#64748b",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "CPU",
|
||||||
|
"nome": "VDD3P3_CPU",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": ["Alimentação digital principal"],
|
||||||
|
"categorias": ["Power"],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 1.8 V e 3.6 V"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "RTC",
|
||||||
|
"nome": "VDD3P3_RTC",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": ["Alimentação para o domínio RTC", "Alimentação de referência para o LDO interno"],
|
||||||
|
"categorias": ["Power"],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 3.0 V e 3.6 V em chips com flash; entre 2.3 V e 3.6 V sem flash"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "SDIO",
|
||||||
|
"nome": "VDD_SDIO",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": ["Alimentação dos barramentos de Flash e PSRAM"],
|
||||||
|
"categorias": ["Power"],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Tensão definida pela GPIO12 na inicialização"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "VDDA",
|
||||||
|
"nome": "VDDA",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": ["Alimentação analógica do chip", "Alimentação de referência para o ADC"],
|
||||||
|
"categorias": ["Power", "Analog"],
|
||||||
|
"cor": "#ef4444",
|
||||||
|
"restricoes": "Opera entre 3.0 V e 3.6 V com flash; entre 2.3 V e 3.6 V sem flash"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": "CHIP_PU",
|
||||||
|
"nome": "CHIP_PU (EN)",
|
||||||
|
"tipo": "power",
|
||||||
|
"funcoes": ["Habilitar chip (nível alto)", "Reseta a placa (nível baixo)"],
|
||||||
|
"categorias": ["Power"],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Deve estar em nível alto para operação normal; usar resistor pull-up para evitar reset acidental"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 0,
|
||||||
|
"nome": "GPIO0",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO0", "ADC2_CH1", "RTC_GPIO11", "TOUCH1", "HSPIWP", "I2C_SDA_RTC", "CLK_OUT1", "PWM"],
|
||||||
|
"categorias": ["GPIO", "ADC", "RTC", "Touch", "SPI", "I2C", "Clock", "PWM", "Strapping"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Resistor pull-up interno; uso como strapping durante boot; modo download firmware em nível baixo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 1,
|
||||||
|
"nome": "GPIO1",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO1", "UART0_TXD", "CLK_OUT3", "PWM"],
|
||||||
|
"categorias": ["GPIO", "UART", "Clock", "PWM"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Resistor pull-up interno; usado para download de firmware"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 2,
|
||||||
|
"nome": "GPIO2",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO2", "ADC2_CH2", "RTC_GPIO12", "TOUCH2", "I2C_SCL_RTC", "HSPIWP", "PWM"],
|
||||||
|
"categorias": ["GPIO", "ADC", "RTC", "Touch", "I2C", "PWM", "Strapping"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Resistor pull-down interno; habilita download firmware junto com GPIO0 em nível baixo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 3,
|
||||||
|
"nome": "GPIO3",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO3", "UART0_RXD", "CLK_OUT2", "PWM"],
|
||||||
|
"categorias": ["GPIO", "UART", "Clock", "PWM"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Resistor pull-up interno; usado para download de firmware"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 4,
|
||||||
|
"nome": "GPIO4",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO4", "ADC2_CH0", "RTC_GPIO10", "TOUCH0", "HSPIHD", "I2C_SCL_RTC", "PWM"],
|
||||||
|
"categorias": ["GPIO", "ADC", "RTC", "Touch", "SPI", "I2C", "PWM"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 5,
|
||||||
|
"nome": "GPIO5",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO5", "VSPICS0", "PWM"],
|
||||||
|
"categorias": ["GPIO", "SPI", "PWM", "Strapping"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Resistor pull-up interno; leitura em bordas para strapping"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 6,
|
||||||
|
"nome": "GPIO6",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO6", "SPICLK", "UART1_CTS", "PWM"],
|
||||||
|
"categorias": ["GPIO", "SPI", "UART", "PWM"],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com memória flash externa; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 7,
|
||||||
|
"nome": "GPIO7",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO7", "SPIQ", "UART2_RTS", "PWM"],
|
||||||
|
"categorias": ["GPIO", "SPI", "UART", "PWM"],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com memória flash externa; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 8,
|
||||||
|
"nome": "GPIO8",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO8", "SPID", "UART2_CTS", "PWM"],
|
||||||
|
"categorias": ["GPIO", "SPI", "UART", "PWM"],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com memória flash externa; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 9,
|
||||||
|
"nome": "GPIO9",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO9", "SPIHD", "UART1_RXD", "PWM"],
|
||||||
|
"categorias": ["GPIO", "SPI", "UART", "PWM"],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com memória flash externa; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 10,
|
||||||
|
"nome": "GPIO10",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO10", "SPIWP", "UART1_TXD", "PWM"],
|
||||||
|
"categorias": ["GPIO", "SPI", "UART", "PWM"],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com memória flash externa; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 11,
|
||||||
|
"nome": "GPIO11",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO11", "SPICS0", "UART1_RTS", "PWM"],
|
||||||
|
"categorias": ["GPIO", "SPI", "UART", "PWM"],
|
||||||
|
"cor": "#f97316",
|
||||||
|
"restricoes": "Compartilhado com memória flash externa; não usar como GPIO normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 12,
|
||||||
|
"nome": "GPIO12",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO12", "ADC2_CH5", "RTC_GPIO15", "TOUCH5", "HSPIQ", "JTAG_MTDI", "PWM"],
|
||||||
|
"categorias": ["GPIO", "ADC", "RTC", "Touch", "SPI", "JTAG", "Strapping", "PWM"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Resistor pull-down interno; seleção nível tensão flash externa; VDD_SDIO definida na inicialização"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 13,
|
||||||
|
"nome": "GPIO13",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO13", "ADC2_CH4", "RTC_GPIO14", "TOUCH4", "HSPID", "JTAG_MTCK", "PWM"],
|
||||||
|
"categorias": ["GPIO", "ADC", "RTC", "Touch", "SPI", "JTAG", "PWM"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 14,
|
||||||
|
"nome": "GPIO14",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO14", "ADC2_CH6", "RTC_GPIO16", "TOUCH6", "HSPICLK", "JTAG_MTMS", "PWM"],
|
||||||
|
"categorias": ["GPIO", "ADC", "RTC", "Touch", "SPI", "JTAG", "PWM"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 15,
|
||||||
|
"nome": "GPIO15",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO15", "ADC2_CH3", "RTC_GPIO13", "TOUCH3", "HSPICS0", "I2C_SDA_RTC", "JTAG_MTDO", "PWM"],
|
||||||
|
"categorias": ["GPIO", "ADC", "RTC", "Touch", "SPI", "I2C", "JTAG", "Strapping", "PWM"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Resistor pull-up interno; controla logs na UART 0; configurações strapping"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 16,
|
||||||
|
"nome": "GPIO16",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO16", "UART2_RXD", "PWM"],
|
||||||
|
"categorias": ["GPIO", "UART", "PWM"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 17,
|
||||||
|
"nome": "GPIO17",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO17", "UART2_TXD", "PWM"],
|
||||||
|
"categorias": ["GPIO", "UART", "PWM"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 18,
|
||||||
|
"nome": "GPIO18",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO18", "VSPICLK", "PWM"],
|
||||||
|
"categorias": ["GPIO", "SPI", "PWM"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 19,
|
||||||
|
"nome": "GPIO19",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO19", "UART0_CTS", "VSPIQ", "PWM"],
|
||||||
|
"categorias": ["GPIO", "UART", "SPI", "PWM"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 21,
|
||||||
|
"nome": "GPIO21",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO21", "VSPIHD", "PWM"],
|
||||||
|
"categorias": ["GPIO", "SPI", "PWM"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 22,
|
||||||
|
"nome": "GPIO22",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO22", "UART0_RTS", "VSPIWP", "PWM"],
|
||||||
|
"categorias": ["GPIO", "UART", "SPI", "PWM"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 23,
|
||||||
|
"nome": "GPIO23",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO23", "VSPID", "PWM"],
|
||||||
|
"categorias": ["GPIO", "SPI", "PWM"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 25,
|
||||||
|
"nome": "GPIO25",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO25", "ADC2_CH8", "RTC_GPIO6", "DAC1", "PWM"],
|
||||||
|
"categorias": ["GPIO", "ADC", "RTC", "DAC", "PWM"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 26,
|
||||||
|
"nome": "GPIO26",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO26", "ADC2_CH9", "RTC_GPIO7", "DAC2", "PWM"],
|
||||||
|
"categorias": ["GPIO", "ADC", "RTC", "DAC", "PWM"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 27,
|
||||||
|
"nome": "GPIO27",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO27", "ADC2_CH7", "RTC_GPIO17", "TOUCH7", "PWM"],
|
||||||
|
"categorias": ["GPIO", "ADC", "RTC", "Touch", "PWM"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 32,
|
||||||
|
"nome": "GPIO32",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO32", "ADC1_CH4", "RTC_GPIO9", "TOUCH9", "XTAL_32K_P", "PWM"],
|
||||||
|
"categorias": ["GPIO", "ADC", "RTC", "Touch", "Clock", "PWM"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Cristal oscilador externo opcional para RTC; frequência 32.768 kHz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 33,
|
||||||
|
"nome": "GPIO33",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO33", "ADC1_CH5", "RTC_GPIO8", "TOUCH8", "XTAL_32K_N", "PWM"],
|
||||||
|
"categorias": ["GPIO", "ADC", "RTC", "Touch", "Clock", "PWM"],
|
||||||
|
"cor": "#3b82f6",
|
||||||
|
"restricoes": "Cristal oscilador externo opcional para RTC; frequência 32.768 kHz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 34,
|
||||||
|
"nome": "GPIO34",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO34", "ADC1_CH6", "RTC_GPIO4"],
|
||||||
|
"categorias": ["GPIO", "ADC", "RTC"],
|
||||||
|
"cor": "#22c55e",
|
||||||
|
"restricoes": "Somente entrada; não suporta saída"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 35,
|
||||||
|
"nome": "GPIO35",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO35", "ADC1_CH7", "RTC_GPIO5"],
|
||||||
|
"categorias": ["GPIO", "ADC", "RTC"],
|
||||||
|
"cor": "#22c55e",
|
||||||
|
"restricoes": "Somente entrada; não suporta saída"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 36,
|
||||||
|
"nome": "GPIO36",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO36", "ADC1_CH0", "RTC_GPIO0"],
|
||||||
|
"categorias": ["GPIO", "ADC", "RTC"],
|
||||||
|
"cor": "#22c55e",
|
||||||
|
"restricoes": "Somente entrada; não suporta saída"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 37,
|
||||||
|
"nome": "GPIO37",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO37", "ADC1_CH1", "RTC_GPIO1"],
|
||||||
|
"categorias": ["GPIO", "ADC", "RTC"],
|
||||||
|
"cor": "#22c55e",
|
||||||
|
"restricoes": "Somente entrada; não suporta saída"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 38,
|
||||||
|
"nome": "GPIO38",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO38", "ADC1_CH2", "RTC_GPIO2"],
|
||||||
|
"categorias": ["GPIO", "ADC", "RTC"],
|
||||||
|
"cor": "#22c55e",
|
||||||
|
"restricoes": "Somente entrada; não suporta saída"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"numero": 39,
|
||||||
|
"nome": "GPIO39",
|
||||||
|
"tipo": "gpio",
|
||||||
|
"funcoes": ["GPIO39", "ADC1_CH3", "RTC_GPIO3"],
|
||||||
|
"categorias": ["GPIO", "ADC", "RTC"],
|
||||||
|
"cor": "#22c55e",
|
||||||
|
"restricoes": "Somente entrada (input-only)"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,241 @@
|
|||||||
|
{
|
||||||
|
"ESP-IDF": {
|
||||||
|
"nome": "ESP-IDF",
|
||||||
|
"icone": "⚙️",
|
||||||
|
"nome_completo": "Espressif IoT Development Framework",
|
||||||
|
"descricao": "Framework oficial de desenvolvimento da Espressif para ESP32, baseado em FreeRTOS",
|
||||||
|
"linguagem": "C/C++",
|
||||||
|
"tipo": "Framework Base",
|
||||||
|
"funcao_principal": "Desenvolvimento de aplicações IoT de propósito geral com acesso completo ao hardware",
|
||||||
|
"caracteristicas": [
|
||||||
|
"Sistema operacional em tempo real (FreeRTOS)",
|
||||||
|
"Pilha completa de Wi-Fi e Bluetooth",
|
||||||
|
"Suporte a todos os periféricos do ESP32",
|
||||||
|
"Ferramentas de build e debug integradas",
|
||||||
|
"Gerenciamento de energia avançado",
|
||||||
|
"Suporte OTA (Over-The-Air updates)",
|
||||||
|
"Biblioteca de componentes extensível"
|
||||||
|
],
|
||||||
|
"casos_uso": [
|
||||||
|
"Dispositivos IoT conectados",
|
||||||
|
"Automação residencial e industrial",
|
||||||
|
"Wearables e dispositivos vestíveis",
|
||||||
|
"Gateways e hubs de comunicação",
|
||||||
|
"Sistemas embarcados em tempo real"
|
||||||
|
],
|
||||||
|
"exemplo_codigo": "#include \"freertos/FreeRTOS.h\"\n#include \"freertos/task.h\"\n#include \"esp_wifi.h\"\n#include \"esp_log.h\"\n\nstatic const char *TAG = \"app_main\";\n\nvoid app_main(void)\n{\n ESP_LOGI(TAG, \"Iniciando aplicação ESP32\");\n \n // Inicializar Wi-Fi\n esp_netif_init();\n esp_event_loop_create_default();\n \n // Configurar Wi-Fi em modo station\n wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();\n esp_wifi_init(&cfg);\n \n ESP_LOGI(TAG, \"Wi-Fi inicializado com sucesso\");\n}",
|
||||||
|
"documentacao": "https://docs.espressif.com/projects/esp-idf/",
|
||||||
|
"repositorio": "https://github.com/espressif/esp-idf",
|
||||||
|
"cor": "#E74C3C"
|
||||||
|
},
|
||||||
|
"ESP-ADF": {
|
||||||
|
"nome": "ESP-ADF",
|
||||||
|
"icone": "🎵",
|
||||||
|
"nome_completo": "ESP Audio Development Framework",
|
||||||
|
"descricao": "Framework especializado para aplicações de áudio no ESP32",
|
||||||
|
"linguagem": "C/C++",
|
||||||
|
"tipo": "Framework Especializado",
|
||||||
|
"funcao_principal": "Desenvolvimento de aplicações de áudio com suporte a codecs, streaming e processamento",
|
||||||
|
"caracteristicas": [
|
||||||
|
"Suporte a múltiplos codecs de áudio (MP3, AAC, FLAC, WAV, etc.)",
|
||||||
|
"Pipeline de áudio configurável",
|
||||||
|
"Streaming de áudio via HTTP, HTTPS, HLS",
|
||||||
|
"Integração com serviços de nuvem (AWS, Google, Baidu)",
|
||||||
|
"Reconhecimento de voz e wake word",
|
||||||
|
"Equalização e efeitos de áudio",
|
||||||
|
"Suporte a Bluetooth A2DP e HFP"
|
||||||
|
],
|
||||||
|
"casos_uso": [
|
||||||
|
"Alto-falantes inteligentes",
|
||||||
|
"Assistentes de voz",
|
||||||
|
"Rádios de internet",
|
||||||
|
"Players de música",
|
||||||
|
"Interfones e intercomunicadores",
|
||||||
|
"Sistemas de PA (Public Address)"
|
||||||
|
],
|
||||||
|
"exemplo_codigo": "#include \"audio_pipeline.h\"\n#include \"audio_element.h\"\n#include \"mp3_decoder.h\"\n#include \"i2s_stream.h\"\n\nvoid app_main(void)\n{\n // Criar pipeline de áudio\n audio_pipeline_handle_t pipeline = audio_pipeline_init(&pipeline_cfg);\n \n // Criar elementos: HTTP stream -> MP3 decoder -> I2S output\n audio_element_handle_t http_stream = http_stream_init(&http_cfg);\n audio_element_handle_t mp3_decoder = mp3_decoder_init(&mp3_cfg);\n audio_element_handle_t i2s_stream = i2s_stream_init(&i2s_cfg);\n \n // Registrar elementos no pipeline\n audio_pipeline_register(pipeline, http_stream, \"http\");\n audio_pipeline_register(pipeline, mp3_decoder, \"mp3\");\n audio_pipeline_register(pipeline, i2s_stream, \"i2s\");\n \n // Conectar elementos\n audio_pipeline_link(pipeline, (const char *[]){\"http\", \"mp3\", \"i2s\"}, 3);\n \n // Iniciar reprodução\n audio_pipeline_run(pipeline);\n}",
|
||||||
|
"documentacao": "https://docs.espressif.com/projects/esp-adf/",
|
||||||
|
"repositorio": "https://github.com/espressif/esp-adf",
|
||||||
|
"cor": "#3498DB"
|
||||||
|
},
|
||||||
|
"ESP-DSP": {
|
||||||
|
"nome": "ESP-DSP",
|
||||||
|
"icone": "📊",
|
||||||
|
"nome_completo": "ESP Digital Signal Processing Library",
|
||||||
|
"descricao": "Biblioteca otimizada para processamento digital de sinais no ESP32",
|
||||||
|
"linguagem": "C/C++",
|
||||||
|
"tipo": "Biblioteca Especializada",
|
||||||
|
"funcao_principal": "Processamento de sinais digitais com algoritmos otimizados para arquitetura ESP32",
|
||||||
|
"caracteristicas": [
|
||||||
|
"Operações matemáticas otimizadas (FFT, convolução, correlação)",
|
||||||
|
"Filtros digitais (FIR, IIR, Kalman)",
|
||||||
|
"Transformadas (FFT, DCT, DWT)",
|
||||||
|
"Operações de matriz e vetores",
|
||||||
|
"Suporte a ponto fixo e ponto flutuante",
|
||||||
|
"Otimizações específicas para Xtensa e RISC-V"
|
||||||
|
],
|
||||||
|
"casos_uso": [
|
||||||
|
"Análise de sinais de áudio",
|
||||||
|
"Processamento de sinais de sensores",
|
||||||
|
"Filtros adaptativos",
|
||||||
|
"Análise espectral",
|
||||||
|
"Compressão de dados",
|
||||||
|
"Reconhecimento de padrões"
|
||||||
|
],
|
||||||
|
"exemplo_codigo": "#include \"esp_dsp.h\"\n\n#define N_SAMPLES 1024\nfloat input[N_SAMPLES];\nfloat output[N_SAMPLES];\n\nvoid app_main(void)\n{\n // Inicializar biblioteca DSP\n dsps_fft2r_init_fc32(NULL, N_SAMPLES);\n \n // Gerar sinal de entrada (exemplo: onda senoidal)\n for (int i = 0; i < N_SAMPLES; i++) {\n input[i] = sinf(2 * M_PI * 50 * i / N_SAMPLES);\n }\n \n // Aplicar FFT\n dsps_fft2r_fc32(input, N_SAMPLES);\n \n // Calcular magnitude do espectro\n for (int i = 0; i < N_SAMPLES / 2; i++) {\n output[i] = sqrtf(input[i*2] * input[i*2] + \n input[i*2+1] * input[i*2+1]);\n }\n}",
|
||||||
|
"documentacao": "https://docs.espressif.com/projects/esp-dsp/",
|
||||||
|
"repositorio": "https://github.com/espressif/esp-dsp",
|
||||||
|
"cor": "#9B59B6"
|
||||||
|
},
|
||||||
|
"ESP-WHO": {
|
||||||
|
"nome": "ESP-WHO",
|
||||||
|
"icone": "📷",
|
||||||
|
"nome_completo": "ESP Image Processing Framework",
|
||||||
|
"descricao": "Framework para processamento de imagens e visão computacional no ESP32",
|
||||||
|
"linguagem": "C/C++",
|
||||||
|
"tipo": "Framework Especializado",
|
||||||
|
"funcao_principal": "Detecção facial, reconhecimento facial e processamento de imagens",
|
||||||
|
"caracteristicas": [
|
||||||
|
"Detecção de faces em tempo real",
|
||||||
|
"Reconhecimento facial",
|
||||||
|
"Detecção de pontos faciais (landmarks)",
|
||||||
|
"Rastreamento de objetos",
|
||||||
|
"Otimizado para ESP32-S3 com aceleradores de IA",
|
||||||
|
"Suporte a câmeras via interface DVP",
|
||||||
|
"Modelos de rede neural otimizados"
|
||||||
|
],
|
||||||
|
"casos_uso": [
|
||||||
|
"Sistemas de reconhecimento facial",
|
||||||
|
"Controle de acesso inteligente",
|
||||||
|
"Câmeras de segurança com IA",
|
||||||
|
"Detecção de presença",
|
||||||
|
"Análise de expressões faciais",
|
||||||
|
"Contagem de pessoas"
|
||||||
|
],
|
||||||
|
"exemplo_codigo": "#include \"esp_camera.h\"\n#include \"fd_forward.h\"\n#include \"fr_forward.h\"\n\nvoid app_main(void)\n{\n // Inicializar câmera\n camera_config_t config = {\n .pin_pwdn = -1,\n .pin_reset = -1,\n .pin_xclk = 21,\n .pin_sscb_sda = 26,\n .pin_sscb_scl = 27,\n // ... outras configurações\n };\n esp_camera_init(&config);\n \n // Capturar frame\n camera_fb_t *fb = esp_camera_fb_get();\n \n // Detectar faces\n dl_matrix3du_t *image_matrix = dl_matrix3du_alloc(1, fb->width, fb->height, 3);\n box_array_t *detected = face_detect(image_matrix, &mtmn_config);\n \n if (detected) {\n printf(\"Detectadas %d faces\\n\", detected->len);\n // Processar faces detectadas\n }\n \n // Liberar recursos\n esp_camera_fb_return(fb);\n}",
|
||||||
|
"documentacao": "https://github.com/espressif/esp-who",
|
||||||
|
"repositorio": "https://github.com/espressif/esp-who",
|
||||||
|
"cor": "#E67E22"
|
||||||
|
},
|
||||||
|
"ESP-NN": {
|
||||||
|
"nome": "ESP-NN",
|
||||||
|
"icone": "🧠",
|
||||||
|
"nome_completo": "ESP Neural Network Library",
|
||||||
|
"descricao": "Biblioteca de redes neurais otimizada para ESP32",
|
||||||
|
"linguagem": "C/C++",
|
||||||
|
"tipo": "Biblioteca Especializada",
|
||||||
|
"funcao_principal": "Inferência de redes neurais com otimizações específicas para ESP32",
|
||||||
|
"caracteristicas": [
|
||||||
|
"Operações de rede neural otimizadas",
|
||||||
|
"Suporte a convolução, pooling, fully connected",
|
||||||
|
"Quantização de 8 e 16 bits",
|
||||||
|
"Otimizações SIMD para Xtensa e RISC-V",
|
||||||
|
"Compatível com TensorFlow Lite",
|
||||||
|
"Baixo consumo de memória",
|
||||||
|
"Aceleração via instruções vetoriais"
|
||||||
|
],
|
||||||
|
"casos_uso": [
|
||||||
|
"Classificação de imagens",
|
||||||
|
"Detecção de objetos",
|
||||||
|
"Reconhecimento de voz",
|
||||||
|
"Predição de séries temporais",
|
||||||
|
"Detecção de anomalias",
|
||||||
|
"IA na borda (Edge AI)"
|
||||||
|
],
|
||||||
|
"exemplo_codigo": "#include \"esp_nn.h\"\n\n#define INPUT_SIZE 224*224*3\n#define OUTPUT_SIZE 1000\n\nint8_t input_data[INPUT_SIZE];\nint8_t output_data[OUTPUT_SIZE];\n\nvoid app_main(void)\n{\n // Preparar dados de entrada (imagem pré-processada)\n // ...\n \n // Executar camada de convolução\n esp_nn_conv2d_s8(\n input_data, // entrada\n output_data, // saída\n weights, // pesos\n bias, // bias\n input_height, // altura entrada\n input_width, // largura entrada\n input_channels, // canais entrada\n output_channels, // canais saída\n kernel_size, // tamanho kernel\n stride, // stride\n padding // padding\n );\n \n // Processar saída\n int predicted_class = get_max_index(output_data, OUTPUT_SIZE);\n printf(\"Classe predita: %d\\n\", predicted_class);\n}",
|
||||||
|
"documentacao": "https://github.com/espressif/esp-nn",
|
||||||
|
"repositorio": "https://github.com/espressif/esp-nn",
|
||||||
|
"cor": "#1ABC9C"
|
||||||
|
},
|
||||||
|
"ESP-Matter": {
|
||||||
|
"nome": "ESP-Matter",
|
||||||
|
"icone": "🏠",
|
||||||
|
"nome_completo": "ESP Matter SDK",
|
||||||
|
"descricao": "SDK para desenvolvimento de dispositivos compatíveis com o padrão Matter",
|
||||||
|
"linguagem": "C/C++",
|
||||||
|
"tipo": "Framework Especializado",
|
||||||
|
"funcao_principal": "Criar dispositivos smart home interoperáveis usando o padrão Matter",
|
||||||
|
"caracteristicas": [
|
||||||
|
"Compatibilidade com padrão Matter (ex-Project CHIP)",
|
||||||
|
"Interoperabilidade entre ecossistemas (Apple, Google, Amazon)",
|
||||||
|
"Suporte a Thread e Wi-Fi",
|
||||||
|
"Comissionamento simplificado",
|
||||||
|
"Segurança robusta (PKI, criptografia)",
|
||||||
|
"Modelos de dispositivos pré-definidos",
|
||||||
|
"Integração com ESP-IDF"
|
||||||
|
],
|
||||||
|
"casos_uso": [
|
||||||
|
"Lâmpadas inteligentes",
|
||||||
|
"Tomadas e interruptores smart",
|
||||||
|
"Sensores de temperatura e umidade",
|
||||||
|
"Fechaduras inteligentes",
|
||||||
|
"Termostatos",
|
||||||
|
"Dispositivos de controle de cortinas"
|
||||||
|
],
|
||||||
|
"exemplo_codigo": "#include \"esp_matter.h\"\n#include \"esp_matter_console.h\"\n\nusing namespace esp_matter;\nusing namespace chip::app::Clusters;\n\nvoid app_main(void)\n{\n // Criar nó Matter\n node_t *node = node::create(&node_config, NULL, NULL);\n \n // Criar endpoint de lâmpada\n endpoint_t *endpoint = on_off_light::create(\n node, \n &endpoint_config, \n ENDPOINT_FLAG_NONE\n );\n \n // Adicionar cluster On/Off\n cluster_t *cluster = cluster::get(endpoint, OnOff::Id);\n \n // Iniciar Matter\n esp_matter::start(NULL);\n \n // Aguardar comissionamento\n printf(\"Dispositivo Matter pronto para comissionamento\\n\");\n}",
|
||||||
|
"documentacao": "https://docs.espressif.com/projects/esp-matter/",
|
||||||
|
"repositorio": "https://github.com/espressif/esp-matter",
|
||||||
|
"cor": "#F39C12"
|
||||||
|
},
|
||||||
|
"Arduino": {
|
||||||
|
"nome": "Arduino",
|
||||||
|
"icone": "🛠️",
|
||||||
|
"nome_completo": "Arduino Core for ESP32",
|
||||||
|
"descricao": "Implementação do framework Arduino para ESP32, facilitando o desenvolvimento",
|
||||||
|
"linguagem": "C++",
|
||||||
|
"tipo": "Framework Alternativo",
|
||||||
|
"funcao_principal": "Desenvolvimento rápido e simplificado usando a API familiar do Arduino",
|
||||||
|
"caracteristicas": [
|
||||||
|
"API simples e intuitiva",
|
||||||
|
"Grande comunidade e bibliotecas",
|
||||||
|
"IDE Arduino integrada",
|
||||||
|
"Suporte a Wi-Fi e Bluetooth",
|
||||||
|
"Compatibilidade com bibliotecas Arduino",
|
||||||
|
"Ideal para prototipagem rápida",
|
||||||
|
"Curva de aprendizado suave"
|
||||||
|
],
|
||||||
|
"casos_uso": [
|
||||||
|
"Prototipagem rápida",
|
||||||
|
"Projetos educacionais",
|
||||||
|
"Makers e hobistas",
|
||||||
|
"IoT simples",
|
||||||
|
"Sensores e atuadores básicos",
|
||||||
|
"Projetos DIY"
|
||||||
|
],
|
||||||
|
"exemplo_codigo": "#include <WiFi.h>\n\nconst char* ssid = \"Sua_Rede\";\nconst char* password = \"Sua_Senha\";\n\nvoid setup() {\n Serial.begin(115200);\n \n // Conectar ao Wi-Fi\n WiFi.begin(ssid, password);\n \n while (WiFi.status() != WL_CONNECTED) {\n delay(500);\n Serial.print(\".\");\n }\n \n Serial.println(\"\");\n Serial.println(\"WiFi conectado\");\n Serial.print(\"Endereço IP: \");\n Serial.println(WiFi.localIP());\n}\n\nvoid loop() {\n // Seu código aqui\n delay(1000);\n}",
|
||||||
|
"documentacao": "https://docs.espressif.com/projects/arduino-esp32/",
|
||||||
|
"repositorio": "https://github.com/espressif/arduino-esp32",
|
||||||
|
"cor": "#00979D"
|
||||||
|
},
|
||||||
|
"MicroPython": {
|
||||||
|
"nome": "MicroPython",
|
||||||
|
"icone": "🐍",
|
||||||
|
"nome_completo": "MicroPython for ESP32",
|
||||||
|
"descricao": "Implementação do Python 3 otimizada para microcontroladores ESP32",
|
||||||
|
"linguagem": "Python",
|
||||||
|
"tipo": "Framework Alternativo",
|
||||||
|
"funcao_principal": "Desenvolvimento em Python para prototipagem rápida e scripting",
|
||||||
|
"caracteristicas": [
|
||||||
|
"Sintaxe Python 3",
|
||||||
|
"REPL interativo",
|
||||||
|
"Desenvolvimento iterativo",
|
||||||
|
"Bibliotecas padrão Python",
|
||||||
|
"Suporte a Wi-Fi e Bluetooth",
|
||||||
|
"Sistema de arquivos integrado",
|
||||||
|
"Ideal para educação e prototipagem"
|
||||||
|
],
|
||||||
|
"casos_uso": [
|
||||||
|
"Prototipagem rápida",
|
||||||
|
"Educação e ensino",
|
||||||
|
"Scripts de automação",
|
||||||
|
"IoT experimental",
|
||||||
|
"Projetos de ciência de dados embarcados",
|
||||||
|
"Testes e validação"
|
||||||
|
],
|
||||||
|
"exemplo_codigo": "import network\nimport time\n\n# Conectar ao Wi-Fi\nwlan = network.WLAN(network.STA_IF)\nwlan.active(True)\nwlan.connect('Sua_Rede', 'Sua_Senha')\n\n# Aguardar conexão\nwhile not wlan.isconnected():\n time.sleep(0.5)\n print('.', end='')\n\nprint('\\nWi-Fi conectado')\nprint('IP:', wlan.ifconfig()[0])\n\n# Exemplo: Ler sensor e enviar dados\nwhile True:\n # Ler sensor\n temperatura = 25.5 # exemplo\n \n print(f'Temperatura: {temperatura}°C')\n time.sleep(1)",
|
||||||
|
"documentacao": "https://docs.micropython.org/en/latest/esp32/",
|
||||||
|
"repositorio": "https://github.com/micropython/micropython",
|
||||||
|
"cor": "#2B2B2B"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 263 KiB |
|
After Width: | Height: | Size: 345 KiB |
|
After Width: | Height: | Size: 337 KiB |
|
After Width: | Height: | Size: 365 KiB |
|
After Width: | Height: | Size: 301 KiB |
|
After Width: | Height: | Size: 321 KiB |
|
After Width: | Height: | Size: 2.2 MiB |
|
After Width: | Height: | Size: 494 KiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 472 KiB |
@@ -0,0 +1,266 @@
|
|||||||
|
{
|
||||||
|
"ESP32": {
|
||||||
|
"nome_completo": "ESP32 (Clássico)",
|
||||||
|
"icone": "🔷",
|
||||||
|
"descricao": "O modelo original com processador dual-core e ampla gama de periféricos",
|
||||||
|
"arquitetura": "Xtensa® LX6 dual-core de 32 bits",
|
||||||
|
"nucleos": "1 (Single-core) ou 2 (Dual-core)",
|
||||||
|
"frequencia": "Até 240 MHz",
|
||||||
|
"coprocessador_ulp": "Sim",
|
||||||
|
"wifi": "IEEE 802.11 b/g/n (2.4 GHz, até 150 Mbps)",
|
||||||
|
"bluetooth": "Bluetooth v4.2 BR/EDR (Clássico) e BLE (Low Energy)",
|
||||||
|
"memoria_sram": "520 KB",
|
||||||
|
"memoria_sram_rtc": "16 KB (dividida em RTC FAST e RTC SLOW)",
|
||||||
|
"memoria_rom": "448 KB (para boot e funções core)",
|
||||||
|
"flash_externa": "Até 16 MB via QSPI",
|
||||||
|
"psram_externa": "Até 8 MB via QSPI (em módulos específicos como WROVER)",
|
||||||
|
"gpio": "34 (alguns pinos têm restrições)",
|
||||||
|
"adc": "2x SAR ADC de 12 bits, até 18 canais",
|
||||||
|
"dac": "2x DAC de 8 bits",
|
||||||
|
"touch": "10 canais capacitivos",
|
||||||
|
"uart": "3",
|
||||||
|
"spi": "4 (SPI, HSPI, VSPI - 2 podem ser usados para Flash/PSRAM)",
|
||||||
|
"i2c": "2",
|
||||||
|
"i2s": "2",
|
||||||
|
"pwm": "LED PWM (até 16 canais), Motor PWM",
|
||||||
|
"ethernet_mac": "1 (requer PHY externo)",
|
||||||
|
"can": "1 (CAN 2.0, TWAI®)",
|
||||||
|
"sdio": "1 (SD/SDIO/MMC Host), 1 (SDIO/SPI Slave)",
|
||||||
|
"sensor_hall": "1 (interno)",
|
||||||
|
"sensor_temperatura": "1 (interno, precisão limitada)",
|
||||||
|
"temperatura_operacao": "-40°C a 125°C",
|
||||||
|
"temperatura_armazenamento": "-40°C a 150°C",
|
||||||
|
"datasheet": "https://documentation.espressif.com/esp32_datasheet_en.pdf",
|
||||||
|
"cor": "#007bff"
|
||||||
|
},
|
||||||
|
"ESP32-S2": {
|
||||||
|
"nome_completo": "ESP32-S2",
|
||||||
|
"icone": "🔒",
|
||||||
|
"descricao": "Foco em segurança e baixo consumo, com USB nativo e ADC de 13 bits",
|
||||||
|
"arquitetura": "Xtensa® LX7 single-core de 32 bits",
|
||||||
|
"nucleos": "1 (Single-core)",
|
||||||
|
"frequencia": "Até 240 MHz",
|
||||||
|
"coprocessador_ulp": "Sim (RISC-V)",
|
||||||
|
"wifi": "IEEE 802.11 b/g/n (2.4 GHz, até 150 Mbps)",
|
||||||
|
"bluetooth": "Não",
|
||||||
|
"memoria_sram": "320 KB",
|
||||||
|
"memoria_sram_rtc": "16 KB",
|
||||||
|
"memoria_rom": "128 KB",
|
||||||
|
"flash_externa": "Até 1 GB via QSPI",
|
||||||
|
"psram_externa": "Até 1 GB via QSPI/Octal SPI",
|
||||||
|
"gpio": "43",
|
||||||
|
"adc": "2x SAR ADC de 13 bits, até 20 canais",
|
||||||
|
"dac": "2x DAC de 8 bits",
|
||||||
|
"touch": "14 canais capacitivos",
|
||||||
|
"uart": "2",
|
||||||
|
"spi": "4 (SPI0/1 para Flash, SPI2/3 para uso geral)",
|
||||||
|
"i2c": "2",
|
||||||
|
"i2s": "1",
|
||||||
|
"pwm": "LED PWM (até 8 canais)",
|
||||||
|
"usb": "1 (USB OTG 1.1)",
|
||||||
|
"lcd": "Interface LCD de 8/16 bits",
|
||||||
|
"camera": "Interface DVP de 8/16 bits",
|
||||||
|
"sensor_temperatura": "1 (interno)",
|
||||||
|
"temperatura_operacao": "-40°C a 85°C",
|
||||||
|
"temperatura_armazenamento": "-40°C a 150°C",
|
||||||
|
"datasheet": "https://documentation.espressif.com/esp32-s2_datasheet_en.pdf",
|
||||||
|
"cor": "#28a745"
|
||||||
|
},
|
||||||
|
"ESP32-S3": {
|
||||||
|
"nome_completo": "ESP32-S3",
|
||||||
|
"icone": "🤖",
|
||||||
|
"descricao": "Processador dual-core com aceleradores para IA e processamento de sinal",
|
||||||
|
"arquitetura": "Xtensa® LX7 dual-core de 32 bits",
|
||||||
|
"nucleos": "2 (Dual-core)",
|
||||||
|
"frequencia": "Até 240 MHz",
|
||||||
|
"coprocessador_ulp": "Sim (RISC-V)",
|
||||||
|
"aceleradores_ia": "Sim (Vector Instructions para IA)",
|
||||||
|
"wifi": "IEEE 802.11 b/g/n (2.4 GHz, até 150 Mbps)",
|
||||||
|
"bluetooth": "Bluetooth 5.0 LE",
|
||||||
|
"memoria_sram": "512 KB",
|
||||||
|
"memoria_sram_rtc": "16 KB",
|
||||||
|
"memoria_rom": "384 KB",
|
||||||
|
"flash_externa": "Até 1 GB via QSPI/Octal SPI",
|
||||||
|
"psram_externa": "Até 1 GB via QSPI/Octal SPI",
|
||||||
|
"gpio": "45",
|
||||||
|
"adc": "2x SAR ADC de 12 bits, até 20 canais",
|
||||||
|
"dac": "Não",
|
||||||
|
"touch": "14 canais capacitivos",
|
||||||
|
"uart": "3",
|
||||||
|
"spi": "4 (SPI0/1 para Flash, SPI2/3 para uso geral)",
|
||||||
|
"i2c": "2",
|
||||||
|
"i2s": "2",
|
||||||
|
"pwm": "LED PWM (até 8 canais), Motor PWM (6 canais)",
|
||||||
|
"usb": "1 (USB OTG 1.1)",
|
||||||
|
"lcd": "Interface LCD RGB de 8/16 bits",
|
||||||
|
"camera": "Interface DVP de 8/16 bits",
|
||||||
|
"sdio": "1 (SD/SDIO/MMC Host)",
|
||||||
|
"sensor_temperatura": "1 (interno)",
|
||||||
|
"temperatura_operacao": "-40°C a 85°C",
|
||||||
|
"temperatura_armazenamento": "-40°C a 150°C",
|
||||||
|
"datasheet": "https://documentation.espressif.com/esp32-s3_datasheet_en.pdf",
|
||||||
|
"cor": "#fd7e14"
|
||||||
|
},
|
||||||
|
"ESP32-C3": {
|
||||||
|
"nome_completo": "ESP32-C3",
|
||||||
|
"icone": "💎",
|
||||||
|
"descricao": "Processador RISC-V de baixo custo, substituto do ESP8266",
|
||||||
|
"arquitetura": "RISC-V single-core de 32 bits",
|
||||||
|
"nucleos": "1 (Single-core)",
|
||||||
|
"frequencia": "Até 160 MHz",
|
||||||
|
"wifi": "IEEE 802.11 b/g/n (2.4 GHz, até 150 Mbps)",
|
||||||
|
"bluetooth": "Bluetooth 5.0 LE",
|
||||||
|
"memoria_sram": "400 KB",
|
||||||
|
"memoria_sram_rtc": "8 KB",
|
||||||
|
"memoria_rom": "384 KB",
|
||||||
|
"flash_externa": "Até 16 MB via QSPI",
|
||||||
|
"psram_externa": "Não",
|
||||||
|
"gpio": "22",
|
||||||
|
"adc": "2x SAR ADC de 12 bits, até 6 canais",
|
||||||
|
"dac": "Não",
|
||||||
|
"touch": "Não",
|
||||||
|
"uart": "2",
|
||||||
|
"spi": "3 (SPI0/1 para Flash, SPI2 para uso geral)",
|
||||||
|
"i2c": "1",
|
||||||
|
"i2s": "1",
|
||||||
|
"pwm": "LED PWM (até 6 canais)",
|
||||||
|
"usb": "1 (USB Serial/JTAG)",
|
||||||
|
"sensor_temperatura": "1 (interno)",
|
||||||
|
"temperatura_operacao": "-40°C a 105°C",
|
||||||
|
"temperatura_armazenamento": "-40°C a 150°C",
|
||||||
|
"datasheet": "https://documentation.espressif.com/esp32-c3_datasheet_en.pdf",
|
||||||
|
"cor": "#20c997"
|
||||||
|
},
|
||||||
|
"ESP32-C5": {
|
||||||
|
"nome_completo": "ESP32-C5",
|
||||||
|
"icone": "📶",
|
||||||
|
"descricao": "O primeiro com suporte a Wi-Fi 6 dual-band e Bluetooth 5.3, equipado com um processador RISC-V",
|
||||||
|
"arquitetura": "RISC-V single-core de 32 bits",
|
||||||
|
"nucleos": "1 (Single-core)",
|
||||||
|
"frequencia": "Até 240 MHz",
|
||||||
|
"wifi": "Wi-Fi 6 (802.11ax) dual-band 2.4 GHz e 5 GHz",
|
||||||
|
"bluetooth": "Bluetooth 5.3 LE",
|
||||||
|
"zigbee_thread": "IEEE 802.15.4",
|
||||||
|
"memoria_sram": "560 KB",
|
||||||
|
"memoria_sram_rtc": "16 KB",
|
||||||
|
"memoria_rom": "320 KB",
|
||||||
|
"flash_externa": "Até 16 MB via QSPI",
|
||||||
|
"psram_externa": "Não",
|
||||||
|
"gpio": "28",
|
||||||
|
"adc": "1x SAR ADC de 12 bits, até 7 canais",
|
||||||
|
"dac": "Não",
|
||||||
|
"touch": "Não",
|
||||||
|
"uart": "3",
|
||||||
|
"spi": "3",
|
||||||
|
"i2c": "2",
|
||||||
|
"i2s": "1",
|
||||||
|
"pwm": "LED PWM (até 6 canais), Motor PWM",
|
||||||
|
"usb": "1 (USB Serial/JTAG)",
|
||||||
|
"sensor_temperatura": "1 (interno)",
|
||||||
|
"temperatura_operacao": "-40°C a 85°C",
|
||||||
|
"temperatura_armazenamento": "-40°C a 150°C",
|
||||||
|
"datasheet": "https://documentation.espressif.com/esp32-c5_datasheet_en.pdf",
|
||||||
|
"cor": "#6f42c1"
|
||||||
|
},
|
||||||
|
"ESP32-C6": {
|
||||||
|
"nome_completo": "ESP32-C6",
|
||||||
|
"icone": "🌐",
|
||||||
|
"descricao": "Recursos de segurança avançada, Wi-Fi 6, Bluetooth, Zigbee e Thread com suporte a Matter",
|
||||||
|
"arquitetura": "RISC-V single-core de 32 bits",
|
||||||
|
"nucleos": "1 (Single-core)",
|
||||||
|
"frequencia": "Até 160 MHz",
|
||||||
|
"wifi": "Wi-Fi 6 (802.11ax) 2.4 GHz",
|
||||||
|
"bluetooth": "Bluetooth 5.3 LE",
|
||||||
|
"zigbee_thread": "IEEE 802.15.4 (Zigbee, Thread)",
|
||||||
|
"matter": "Sim",
|
||||||
|
"memoria_sram": "512 KB",
|
||||||
|
"memoria_sram_rtc": "16 KB",
|
||||||
|
"memoria_rom": "320 KB",
|
||||||
|
"flash_externa": "Até 16 MB via QSPI",
|
||||||
|
"psram_externa": "Não",
|
||||||
|
"gpio": "30",
|
||||||
|
"adc": "1x SAR ADC de 12 bits, até 7 canais",
|
||||||
|
"dac": "Não",
|
||||||
|
"touch": "Não",
|
||||||
|
"uart": "3",
|
||||||
|
"spi": "3",
|
||||||
|
"i2c": "2",
|
||||||
|
"i2s": "1",
|
||||||
|
"pwm": "LED PWM (até 6 canais), Motor PWM",
|
||||||
|
"usb": "1 (USB Serial/JTAG)",
|
||||||
|
"sdio": "1 (SD/SDIO/MMC Host)",
|
||||||
|
"sensor_temperatura": "1 (interno)",
|
||||||
|
"temperatura_operacao": "-40°C a 105°C",
|
||||||
|
"temperatura_armazenamento": "-40°C a 150°C",
|
||||||
|
"datasheet": "https://documentation.espressif.com/esp32-c6_datasheet_en.pdf",
|
||||||
|
"cor": "#17a2b8"
|
||||||
|
},
|
||||||
|
"ESP32-P4": {
|
||||||
|
"nome_completo": "ESP32-P4",
|
||||||
|
"icone": "⚡",
|
||||||
|
"descricao": "Alto desempenho com processador RISC-V dual-core a 400MHz e aceleradores de IA",
|
||||||
|
"arquitetura": "RISC-V dual-core de 32 bits",
|
||||||
|
"nucleos": "2 (Dual-core)",
|
||||||
|
"frequencia": "Até 400 MHz",
|
||||||
|
"aceleradores_ia": "Sim (Vector Instructions, aceleradores de IA)",
|
||||||
|
"wifi": "Não (sem conectividade wireless integrada)",
|
||||||
|
"bluetooth": "Não",
|
||||||
|
"ethernet": "Sim (Ethernet MAC integrado)",
|
||||||
|
"memoria_sram": "768 KB",
|
||||||
|
"memoria_rom": "768 KB",
|
||||||
|
"flash_externa": "Até 128 MB via QSPI/Octal SPI",
|
||||||
|
"psram_externa": "Até 32 MB via QSPI/Octal SPI",
|
||||||
|
"gpio": "54",
|
||||||
|
"adc": "1x SAR ADC de 12 bits, até 8 canais",
|
||||||
|
"dac": "Não",
|
||||||
|
"touch": "Não",
|
||||||
|
"uart": "5",
|
||||||
|
"spi": "3",
|
||||||
|
"i2c": "2",
|
||||||
|
"i2s": "3",
|
||||||
|
"pwm": "LED PWM (até 8 canais), Motor PWM (6 canais)",
|
||||||
|
"usb": "1 (USB OTG 2.0)",
|
||||||
|
"mipi_csi": "Interface MIPI CSI para câmera",
|
||||||
|
"mipi_dsi": "Interface MIPI DSI para display",
|
||||||
|
"lcd": "Interface LCD de 8/16/24 bits",
|
||||||
|
"camera": "Interface DVP de 8/16 bits",
|
||||||
|
"sdio": "2 (SD/SDIO/MMC Host)",
|
||||||
|
"sensor_temperatura": "1 (interno)",
|
||||||
|
"temperatura_operacao": "-40°C a 85°C",
|
||||||
|
"temperatura_armazenamento": "-40°C a 150°C",
|
||||||
|
"datasheet": "https://documentation.espressif.com/esp32-p4_datasheet_en.pdf",
|
||||||
|
"cor": "#ffc107"
|
||||||
|
},
|
||||||
|
"ESP32-H2": {
|
||||||
|
"nome_completo": "ESP32-H2",
|
||||||
|
"icone": "🔋",
|
||||||
|
"descricao": "Focado em ultra-baixo consumo com Bluetooth, Zigbee e Thread. Mas sem suporte a Wi-Fi",
|
||||||
|
"arquitetura": "RISC-V single-core de 32 bits",
|
||||||
|
"nucleos": "1 (Single-core)",
|
||||||
|
"frequencia": "Até 96 MHz",
|
||||||
|
"wifi": "Não",
|
||||||
|
"bluetooth": "Bluetooth 5.2 LE",
|
||||||
|
"zigbee_thread": "IEEE 802.15.4 (Zigbee, Thread)",
|
||||||
|
"matter": "Sim",
|
||||||
|
"memoria_sram": "320 KB",
|
||||||
|
"memoria_sram_rtc": "16 KB",
|
||||||
|
"memoria_rom": "128 KB",
|
||||||
|
"flash_externa": "Até 16 MB via QSPI",
|
||||||
|
"psram_externa": "Não",
|
||||||
|
"gpio": "27",
|
||||||
|
"adc": "1x SAR ADC de 12 bits, até 5 canais",
|
||||||
|
"dac": "Não",
|
||||||
|
"touch": "Não",
|
||||||
|
"uart": "2",
|
||||||
|
"spi": "3",
|
||||||
|
"i2c": "2",
|
||||||
|
"i2s": "1",
|
||||||
|
"pwm": "LED PWM (até 6 canais)",
|
||||||
|
"usb": "1 (USB Serial/JTAG)",
|
||||||
|
"sensor_temperatura": "1 (interno)",
|
||||||
|
"temperatura_operacao": "-40°C a 85°C",
|
||||||
|
"temperatura_armazenamento": "-40°C a 150°C",
|
||||||
|
"datasheet": "https://documentation.espressif.com/esp32-h2_datasheet_en.pdf",
|
||||||
|
"cor": "#6c757d"
|
||||||
|
}
|
||||||
|
}
|
||||||