16 Commits
Author SHA1 Message Date
Lucas RayanandClaude Sonnet 5.5 2595c65404 fix(sobre): rótulo sem caixa alta para passar na auditoria de design; release 1.8.0
CI / Lint e auditorias (push) Successful in 53s
CI / Trivy (dependências e segredos) (push) Successful in 14s
CI / Imagem Docker (linux/arm64) (push) Successful in 2m44s
Release / Plano (reaproveitar a imagem?) (push) Successful in 7s
Release / ci (push) Skipped
Release / Publica a imagem (linux/arm64) (push) Successful in 19s
Release / Deploy no Coolify (push) Skipped
Release / Cria a release no Gitea (push) Successful in 7s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 15:03:51 -03:00
Lucas RayanandClaude Sonnet 5.5 33b7f0bd66 docs(changelog): registra a remoção do link Livro e reescreve a entrada da página Sobre
Release / Plano (reaproveitar a imagem?) (push) Successful in 6s
CI / Trivy (dependências e segredos) (push) Successful in 12s
Release / ci (push) Failing after 1m8s
CI / Imagem Docker (linux/arm64) (push) Skipped
Release / Publica a imagem (linux/arm64) (push) Skipped
Release / Cria a release no Gitea (push) Skipped
Release / Deploy no Coolify (push) Skipped
CI / Lint e auditorias (push) Failing after 56s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 14:59:38 -03:00
Lucas RayanandClaude Sonnet 5.5 ea97a5fe61 feat(sobre): reescreve a página Sobre e remove o botão avulso do menu
CI / Lint e auditorias (push) Failing after 47s
CI / Trivy (dependências e segredos) (push) Successful in 12s
Release / ci (push) Failing after 59s
CI / Imagem Docker (linux/arm64) (push) Skipped
Release / Publica a imagem (linux/arm64) (push) Skipped
Release / Cria a release no Gitea (push) Skipped
Release / Deploy no Coolify (push) Skipped
Release / Plano (reaproveitar a imagem?) (push) Successful in 7s
Sobre fica só no menu Biblioteca (desktop), em todos os idiomas. A página
mostra as ferramentas atuais, os seis idiomas e os dados novos do autor.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 14:58:26 -03:00
Lucas RayanandClaude Opus 5.5 12480048f8 fix(menu): remove o link Livro da barra do desktop em pt
Release / Plano (reaproveitar a imagem?) (push) Successful in 9s
CI / Lint e auditorias (push) Successful in 1m9s
CI / Trivy (dependências e segredos) (push) Successful in 14s
CI / Imagem Docker (linux/arm64) (push) Successful in 4m20s
Release / ci (push) Successful in 5m43s
Release / Publica a imagem (linux/arm64) (push) Successful in 19s
Release / Cria a release no Gitea (push) Skipped
Release / Deploy no Coolify (push) Successful in 22s
Com o item extra, a nav encolhia e os rótulos quebravam com hífen
("Hard-ware"). O livro segue acessível pelo menu móvel e pelas demais
chamadas do site. O .nav-link ganha white-space: nowrap para não voltar
a quebrar se o menu apertar.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012kaT5kEbjo5xuMk2DiBLMM
2026-11-03 10:33:20 -03:00
Lucas RayanandClaude Sonnet 5.5 9ecf30dda0 chore(formacao-2): regenera o PDF dos slides com o resistor do slide 6 em cor única
Release / Plano (reaproveitar a imagem?) (push) Successful in 7s
CI / Lint e auditorias (push) Successful in 54s
CI / Trivy (dependências e segredos) (push) Successful in 11s
CI / Imagem Docker (linux/arm64) (push) Successful in 3m4s
Release / ci (push) Successful in 4m12s
Release / Publica a imagem (linux/arm64) (push) Successful in 21s
Release / Cria a release no Gitea (push) Skipped
Release / Deploy no Coolify (push) Successful in 22s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 08:49:32 -03:00
Lucas RayanandClaude Sonnet 5.5 f9b64b3354 fix(formacao-2): resistor de 10 kΩ do slide 6 em cor única, distinta do GPIO e do VCC
Release / Plano (reaproveitar a imagem?) (push) Successful in 12s
CI / Lint e auditorias (push) Successful in 1m51s
CI / Trivy (dependências e segredos) (push) Successful in 25s
CI / Imagem Docker (linux/arm64) (push) Successful in 2m35s
Release / ci (push) Successful in 4m52s
Release / Publica a imagem (linux/arm64) (push) Successful in 54s
Release / Cria a release no Gitea (push) Skipped
Release / Deploy no Coolify (push) Successful in 22s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 08:45:05 -03:00
Lucas RayanandClaude Sonnet 5.5 bfc1a73104 fix(menu): cabeçalho não estoura em 360-375px e o menu aberto rola por inteiro
Release / Plano (reaproveitar a imagem?) (push) Successful in 6s
CI / Lint e auditorias (push) Successful in 53s
CI / Trivy (dependências e segredos) (push) Successful in 11s
CI / Imagem Docker (linux/arm64) (push) Successful in 4m8s
Release / ci (push) Successful in 5m15s
Release / Publica a imagem (linux/arm64) (push) Successful in 19s
Release / Cria a release no Gitea (push) Skipped
Release / Deploy no Coolify (push) Successful in 21s
Abaixo de 390px o botão de tema vai para dentro do menu, que passa a rolar com o
cartão do livro e os links juntos. Fechar e logo ganham área de toque de 44px.
Verificado em 6 idiomas e de 320 a 430px sem nada ultrapassar o cabeçalho.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 20:24:38 -03:00
Lucas RayanandClaude Sonnet 5.5 23576b5c06 fix(placas): faixa sobe para logo abaixo da foto/diagrama e não estoura no celular
Release / Plano (reaproveitar a imagem?) (push) Successful in 7s
CI / Lint e auditorias (push) Successful in 55s
CI / Trivy (dependências e segredos) (push) Successful in 12s
CI / Imagem Docker (linux/arm64) (push) Successful in 4m8s
Release / ci (push) Successful in 5m16s
Release / Publica a imagem (linux/arm64) (push) Successful in 19s
Release / Cria a release no Gitea (push) Skipped
Release / Deploy no Coolify (push) Successful in 22s
Na página de série a faixa passa a ficar entre o bloco de foto/diagrama de pinos
e as especificações. No celular o botão ocupa a largura do cartão e as setas ficam
numa linha própria; testado de 320 a 1366 px sem nada ultrapassar a área.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 19:13:07 -03:00
Lucas RayanandClaude Sonnet 5.5 1f84f1f661 feat(placas): faixa de placas sugeridas nas séries, comparação e seletor
Release / Plano (reaproveitar a imagem?) (push) Successful in 12s
CI / Lint e auditorias (push) Successful in 1m39s
CI / Trivy (dependências e segredos) (push) Successful in 13s
CI / Imagem Docker (linux/arm64) (push) Successful in 2m35s
Release / ci (push) Successful in 4m30s
Release / Publica a imagem (linux/arm64) (push) Successful in 19s
Release / Cria a release no Gitea (push) Skipped
Release / Deploy no Coolify (push) Successful in 22s
Sorteia uma placa dos chips da página, com preferência pelas de loja oficial, e
troca só pelas setas, com transição suave. Usa o link de afiliado do idioma
(rel=sponsored) e some quando o chip não tem placa. Vai nas páginas de série, na
comparação e nos dois modos de resultado do seletor.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 18:31:01 -03:00
Lucas RayanandClaude Sonnet 5.5 6ab83c112d fix(docker): repete o build quando o download das Google Fonts falha
Release / Plano (reaproveitar a imagem?) (push) Successful in 6s
CI / Lint e auditorias (push) Successful in 1m24s
CI / Trivy (dependências e segredos) (push) Successful in 11s
CI / Imagem Docker (linux/arm64) (push) Successful in 2m37s
Release / ci (push) Successful in 4m12s
Release / Publica a imagem (linux/arm64) (push) Successful in 19s
Release / Cria a release no Gitea (push) Skipped
Release / Deploy no Coolify (push) Successful in 21s
O CI caía de forma intermitente em "next/font/google queries have exactly one
entry" (rede do runner). O mesmo código passou em outra execução. O build agora
tenta até 3 vezes.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 15:47:00 -03:00
Lucas RayanandClaude Sonnet 5.5 900c61df3d feat(catalogo): link de afiliado por idioma e botão alinhado no rodapé do card
Release / Plano (reaproveitar a imagem?) (push) Successful in 12s
CI / Lint e auditorias (push) Successful in 1m52s
CI / Trivy (dependências e segredos) (push) Successful in 14s
CI / Imagem Docker (linux/arm64) (push) Failing after 1m22s
Release / ci (push) Failing after 3m31s
Release / Publica a imagem (linux/arm64) (push) Skipped
Release / Cria a release no Gitea (push) Skipped
Release / Deploy no Coolify (push) Skipped
O botão do AliExpress passa a ficar no rodapé do card, alinhado entre os cards.
O link usa a coluna Link_<idioma> da planilha (en, es, fr, de, zh-CN) e cai no
Link (Brasil) quando ela está vazia. Colunas de link não viram filtro, e a API
lê A1:AZ1000.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 15:24:23 -03:00
Lucas RayanandClaude Opus 5.5 5fba78308c fix(release): chama o deploy do Coolify com POST
Release / ci (push) Skipped
Release / Publica a imagem (linux/arm64) (push) Successful in 21s
Release / Cria a release no Gitea (push) Skipped
Release / Deploy no Coolify (push) Skipped
Release / Plano (reaproveitar a imagem?) (push) Successful in 7s
O Coolify 4.5 trocou /api/v1/deploy para POST e responde 405 ao GET, o que
derrubou o primeiro deploy automático.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 13:26:51 -03:00
Lucas RayanandClaude Opus 5.5 b6fb230328 ci(release): deploy automático no Coolify quando o latest muda
Release / Plano (reaproveitar a imagem?) (push) Successful in 6s
CI / Lint e auditorias (push) Successful in 54s
CI / Trivy (dependências e segredos) (push) Successful in 13s
CI / Imagem Docker (linux/arm64) (push) Successful in 4m13s
Release / ci (push) Successful in 5m22s
Release / Publica a imagem (linux/arm64) (push) Successful in 19s
Release / Cria a release no Gitea (push) Skipped
Release / Deploy no Coolify (push) Failing after 1s
O job deploy roda depois de publicar a imagem: pede o deploy pela API do
Coolify e acompanha até terminar, falhando o workflow se o deploy falhar.
O digest do latest é comparado antes e depois de publicar, então merge só
de documentação ou tag (que reapontam o latest para o mesmo manifesto) não
reiniciam o container. workflow_dispatch força o deploy.

O script do digest fica em .gitea/scripts para não entrar no hash da
imagem e não provocar rebuild. Precisa dos secrets COOLIFY_URL e
COOLIFY_TOKEN no repositório.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 13:18:00 -03:00
Lucas RayanandClaude Opus 5.5 1860e34cbb feat(formacoes): módulo 2 (DHT22 + LCD 16x2 no Wokwi), PDFs e página de entrada
Release / Plano (reaproveitar a imagem?) (push) Successful in 7s
CI / Lint e auditorias (push) Successful in 1m48s
CI / Trivy (dependências e segredos) (push) Successful in 12s
CI / Imagem Docker (linux/arm64) (push) Failing after 2m27s
Release / ci (push) Failing after 4m31s
Release / Publica a imagem (linux/arm64) (push) Skipped
Release / Cria a release no Gitea (push) Skipped
- Formação 2 da LASER: slides visuais, apostila, projeto do Wokwi e scanner
  I2C, validados no simulador (leitura normal, temperatura negativa e sensor
  desconectado). Circuito com pull-ups de 10 kΩ e 4,7 kΩ para 3V3 e aviso
  sobre os pull-ups de 5 V da plaquinha PCF8574.
- PDFs prontos dos slides e das apostilas dos módulos 1 e 2;
  slides-pdf agora também exporta a apostila.
- Página de entrada em /formacoes e /formacoes/N, gerada por
  scripts/formacoes-viewer.mjs a partir do formacao.json de cada pasta.
- A apostila passou de index.html para apostila.html.
- Corrige o link do Fritzing da apostila 1 (/apostilas/1 não existe).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 13:11:28 -03:00
Lucas RayanandClaude Sonnet 5.5 71c5708726 feat(busca): pin-number queries in every language, pin answer card
CI / Lint e auditorias (push) Successful in 46s
CI / Trivy (dependências e segredos) (push) Successful in 10s
CI / Imagem Docker (linux/arm64) (push) Successful in 3m50s
Release / Plano (reaproveitar a imagem?) (push) Successful in 5s
Release / ci (push) Skipped
Release / Publica a imagem (linux/arm64) (push) Successful in 23s
Release / Cria a release no Gitea (push) Successful in 5s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 00:43:23 -03:00
Lucas RayanandClaude Sonnet 5.5 fe1802f818 fix: book canonical, fr/de pin warnings, pin grouping per locale, SEO checks
CI / Lint e auditorias (push) Successful in 48s
CI / Trivy (dependências e segredos) (push) Successful in 12s
CI / Imagem Docker (linux/arm64) (push) Successful in 3m41s
Release / Plano (reaproveitar a imagem?) (push) Successful in 6s
Release / ci (push) Skipped
Release / Publica a imagem (linux/arm64) (push) Successful in 16s
Release / Cria a release no Gitea (push) Successful in 6s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-01 23:58:11 -03:00
118 changed files with 19458 additions and 11843 deletions

No files matched your search

+17
View File
@@ -0,0 +1,17 @@
#!/usr/bin/env bash
# Uso: .gitea/scripts/digest-latest.sh <registro> <repositório>
# Imprime o digest do manifesto de <repositório>:latest, ou nada se a tag ainda
# não existe. Fica em .gitea/ para não entrar no hash da imagem (plano-imagem.sh).
# O release.yml compara o valor antes e depois de publicar para
# decidir se há o que implantar. Com o pacote privado, passe REGISTRY_USER e
# REGISTRY_PASSWORD (token com read:package).
set -euo pipefail
registry=$1; ns=${2,,}
auth=(); [ -n "${REGISTRY_PASSWORD:-}" ] && auth=(-u "${REGISTRY_USER:?}:$REGISTRY_PASSWORD")
token=$(curl -fsS "${auth[@]}" "https://$registry/v2/token?service=container_registry&scope=repository:$ns:pull" | jq -r .token)
curl -sSI \
-H "Authorization: Bearer $token" \
-H 'Accept: application/vnd.oci.image.index.v1+json,application/vnd.docker.distribution.manifest.list.v2+json,application/vnd.oci.image.manifest.v1+json,application/vnd.docker.distribution.manifest.v2+json' \
"https://$registry/v2/$ns/manifests/latest" \
| tr -d '\r' | awk -F': ' 'tolower($1) == "docker-content-digest" { print $2 }'
+56 -1
View File
@@ -1,7 +1,9 @@
name: Release name: Release
# Publica a imagem no registro de containers do Gitea depois de um merge em main, # Publica a imagem no registro de containers do Gitea depois de um merge em main,
# e de novo com tag semver quando uma tag v* é enviada. O servidor só faz pull. # e de novo com tag semver quando uma tag v* é enviada. Quando o latest passa a
# apontar para outra imagem, o job deploy pede ao Coolify para implantá-la.
# Precisa também dos secrets COOLIFY_URL e COOLIFY_TOKEN no repositório.
# Precisa do secret de usuário REGISTRY_TOKEN (token do Gitea com write:package). # Precisa do secret de usuário REGISTRY_TOKEN (token do Gitea com write:package).
on: on:
push: push:
@@ -52,6 +54,8 @@ jobs:
# O único runner é arm64 e o servidor de destino (Oracle) também, então a # O único runner é arm64 e o servidor de destino (Oracle) também, então a
# imagem é construída nativamente, sem emulação. # imagem é construída nativamente, sem emulação.
runs-on: ubuntu-24.04-arm runs-on: ubuntu-24.04-arm
outputs:
mudou: ${{ steps.depois.outputs.mudou }}
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@@ -69,6 +73,13 @@ jobs:
username: ${{ gitea.actor }} username: ${{ gitea.actor }}
password: ${{ secrets.REGISTRY_TOKEN }} password: ${{ secrets.REGISTRY_TOKEN }}
# O deploy só acontece se o latest passar a apontar para outra imagem.
# Um merge só de docs ou uma tag reaponta o latest para o mesmo manifesto,
# e reiniciar o container nesse caso seria trabalho repetido.
- name: Digest do latest antes
id: antes
run: echo "digest=$(.gitea/scripts/digest-latest.sh "$REGISTRY" "${{ gitea.repository }}")" >> "$GITHUB_OUTPUT"
- name: Metadados - name: Metadados
id: meta id: meta
uses: docker/metadata-action@v6 uses: docker/metadata-action@v6
@@ -101,6 +112,15 @@ jobs:
tags=$(jq -cr '.tags | map("-t " + .) | join(" ")' <<< '${{ steps.meta.outputs.json }}') tags=$(jq -cr '.tags | map("-t " + .) | join(" ")' <<< '${{ steps.meta.outputs.json }}')
docker buildx imagetools create $tags "${{ needs.plano.outputs.image }}:inputs-${{ needs.plano.outputs.inputs }}" docker buildx imagetools create $tags "${{ needs.plano.outputs.image }}:inputs-${{ needs.plano.outputs.inputs }}"
- name: Digest do latest depois
id: depois
run: |
antes="${{ steps.antes.outputs.digest }}"
depois=$(.gitea/scripts/digest-latest.sh "$REGISTRY" "${{ gitea.repository }}")
echo "latest: ${antes:-nenhum} -> $depois"
[ -n "$depois" ] && [ "$depois" != "$antes" ] && mudou=true || mudou=false
echo "mudou=$mudou" >> "$GITHUB_OUTPUT"
# Cria a entrada em "Releases" quando a execução é de uma tag v*. Roda depois # Cria a entrada em "Releases" quando a execução é de uma tag v*. Roda depois
# de publicar a imagem, com as notas da seção do CHANGELOG.md. # de publicar a imagem, com as notas da seção do CHANGELOG.md.
release: release:
@@ -127,3 +147,38 @@ jobs:
'{tag_name:$tag, name:$name, body:$body, prerelease:$pre}' > release.json '{tag_name:$tag, name:$name, body:$body, prerelease:$pre}' > release.json
curl -fsS -X POST "$API/releases" -H "Authorization: token $TOKEN" \ curl -fsS -X POST "$API/releases" -H "Authorization: token $TOKEN" \
-H 'Content-Type: application/json' -d @release.json -H 'Content-Type: application/json' -d @release.json
# Avisa o Coolify para puxar o latest novo e espera o deploy terminar, para
# que uma falha apareça aqui, e não só no painel do Coolify. Roda só quando o
# latest mudou, ou num disparo manual (que força o deploy).
# Precisa dos secrets COOLIFY_URL e COOLIFY_TOKEN no repositório.
deploy:
name: Deploy no Coolify
needs: publicar
if: ${{ !cancelled() && needs.publicar.result == 'success' && (needs.publicar.outputs.mudou == 'true' || gitea.event_name == 'workflow_dispatch') }}
runs-on: ubuntu-latest
steps:
- name: Deploy de ESPDocs
env:
COOLIFY_URL: ${{ secrets.COOLIFY_URL }}
COOLIFY_TOKEN: ${{ secrets.COOLIFY_TOKEN }}
APP: 62wmq51cgbcz9nyfwizmytku
run: |
if [ -z "$COOLIFY_URL" ] || [ -z "$COOLIFY_TOKEN" ]; then
echo "faltam os secrets COOLIFY_URL e COOLIFY_TOKEN no repositório"; exit 1
fi
auth="Authorization: Bearer $COOLIFY_TOKEN"
dep=$(curl -fsS -X POST -H "$auth" "$COOLIFY_URL/api/v1/deploy?uuid=$APP&force=false" | jq -r '.deployments[0].deployment_uuid')
[ -n "$dep" ] && [ "$dep" != null ] || { echo "o Coolify não devolveu um deployment"; exit 1; }
echo "deployment $dep"
# Até 15 minutos: o pull da imagem arm64 e o healthcheck cabem com folga.
for _ in $(seq 1 90); do
st=$(curl -fsS -H "$auth" "$COOLIFY_URL/api/v1/deployments/$dep" | jq -r '.status')
echo "status: $st"
case "$st" in
finished) exit 0 ;;
failed|cancelled*) exit 1 ;;
esac
sleep 10
done
echo "o deploy não terminou em 15 minutos"; exit 1
+3
View File
@@ -49,3 +49,6 @@ next-env.d.ts
# Configuração local do Superset # Configuração local do Superset
.superset/ .superset/
# mockups do brainstorming
.superpowers/
+105 -1
View File
@@ -6,6 +6,107 @@ Tudo o que muda de relevante no ESPDocs está aqui. O formato segue o
## [Não lançado] ## [Não lançado]
## [1.8.0] - 2026-11-03
### Adicionado
- Faixa discreta de placas sugeridas nas páginas de série, na comparação e nos resultados do
seletor (`PlacasSugeridas`). Sorteia uma placa dos chips da tela, com preferência (peso 3)
pelas de loja oficial, e fica parada até o leitor usar as setas, com transição suave (respeita
"reduzir movimento"). Cada placa traz o chip, uma linha de motivo traduzida nos 6 idiomas e o
link de afiliado do idioma da página, marcado como tal. Não aparece quando o chip não tem
placa. Sem rastreamento nem cookies. Na série, fica entre a foto/diagrama de pinos e as
especificações; no celular, o botão ocupa a largura do cartão.
- Catálogo de placas com link de afiliado por país: a planilha ganha as colunas `Link_en`,
`Link_es`, `Link_fr`, `Link_de` e `Link_zh-CN`, e o botão do card usa a do idioma da página,
caindo no `Link` (Brasil) quando a coluna está vazia. As colunas de link nunca viram filtro.
- Deploy automático no Coolify: depois de publicar a imagem, o `release.yml` pede o deploy e
espera o resultado. Só implanta quando o `latest` muda, então merge só de documentação ou
tag não reiniciam o container. Um disparo manual do workflow força o deploy.
- Formação 2 da LASER em `/formacoes/2`: estação de temperatura e umidade com DHT22, LCD 16x2
I2C e ESP32-S3, simulada no Wokwi com o framework Arduino. Slides, apostila, projeto do
Wokwi e programa de scanner I2C, tudo validado no simulador.
- Página de entrada para cada formação (`/formacoes/1`, `/formacoes/2`) e lista geral em
`/formacoes`, geradas por `npm run formacoes-viewer` a partir do `formacao.json` de cada pasta.
- PDFs prontos dos slides e das apostilas das formações 1 e 2. `npm run slides-pdf -- N`
agora gera também o PDF da apostila.
### Alterado
- Página Sobre reescrita nos seis idiomas. Lista o que o ESPDocs tem hoje (séries, comparador,
seletor, catálogo, diagnóstico, componentes, frameworks, glossário, busca, os seis idiomas e,
só em português, o livro), com um cartão com link para cada ferramenta. Os dados do autor
foram atualizados a partir do site pessoal (cargo na RNP, formação, reconhecimentos, foto e
links), e o JSON-LD do autor ganhou cargo e empregador.
- O botão avulso "Sobre" saiu da barra do desktop em todos os idiomas, porque a página já está
no menu Biblioteca. Ela continua no menu móvel e no rodapé.
- A apostila de cada formação passou de `index.html` para `apostila.html`; o `index.html`
agora é a página de entrada.
### Corrigido
- Barra do desktop em português: com o link "Livro" a mais, os rótulos quebravam com hífen
("Hard-ware"). O link saiu da barra (o livro segue no menu móvel, no rodapé e nas chamadas
do site) e `.nav-link` ganhou `white-space: nowrap`.
- Menu no celular: o botão do menu ultrapassava a borda do cabeçalho em 360 e 375 px. Abaixo
de 390 px o botão de tema passa para dentro do menu. O menu aberto rola inteiro (cartão do
livro e links juntos), então todos os itens ficam alcançáveis em telas baixas, e o botão de
fechar e o logo ganharam área de toque de 44 px.
- O build da imagem Docker repete até 3 vezes quando falha ao baixar as Google Fonts, falha
intermitente que derrubava o CI com "next/font/google queries have exactly one entry".
- Card do catálogo: o botão "Ver no AliExpress" fica sempre no rodapé, alinhado entre os cards.
- A API do catálogo lê `A1:AZ1000`, para comportar as colunas novas da planilha.
- O link do arquivo do Fritzing na apostila da formação 1 apontava para `/apostilas/1/`,
caminho que não existe.
## [1.7.0] - 2026-11-02
### Adicionado
- A busca inteligente entende pinos específicos, nos seis idiomas: `pino 32 esp32-s3`,
`pin 32 esp32-s3`, `broche 32 esp32-s3`, `esp32-s3 32号引脚`. O resultado é um cartão
com tudo o que o diagrama diz sobre o pino (nome, funções, categorias e avisos) e o
link para o diagrama filtrado, como já acontecia com memória, energia e outros assuntos.
- Como "pino 32" pode ser o pino físico ou o GPIO32, os dois aparecem quando são
pinos diferentes.
- Sem o chip (`pino 32`), vem um quadro com o que há nesse pino em cada série; com um
número que o chip não tem, a busca avisa até onde vão os pinos.
- O pino reconhecido aparece junto do chip na faixa "Entendi" e nos exemplos da busca.
### Corrigido
- Linhas repetidas num cartão da busca (por exemplo, vários avisos de um pino) saíam
duplicadas e fora de ordem.
## [1.6.1] - 2026-11-02
### Corrigido
- A página do livro (`/pt/livro`) dizia ao Google que o endereço canônico dela era a
home (`/pt`) e listava as homes dos outros idiomas como alternativas, o que a fazia
parecer duplicata da home. O livro agora é o próprio canonical e não tem alternativas,
já que só existe em português. O sitemap também passou a trazer o `x-default`.
- Em francês e alemão, os avisos dos pinos (tensões recomendadas, "não deixe flutuando",
descrições dos pinos do ESP32-S31 e do ESP32-C61 e outros) estavam em inglês, e mais
alguns valores ainda em português (por exemplo "e mais 11", "com GCM", "ou ECDSA");
espanhol e inglês tinham alguns resíduos. Tudo traduzido.
- As categorias dos pinos (`Antena`, `Strapping`, `Power`…) são identificadores, mas
estavam traduzidas nos dados de inglês, francês, alemão e chinês. Com isso o filtro
por categoria do diagrama de pinos não funcionava nesses idiomas. Restauradas.
- A seção "Pinos com restrição de uso" e a busca agrupavam os pinos de forma diferente
do português em inglês, francês, alemão e chinês (por exemplo, pinos da flash
aparecendo como "condicionais", ou pinos de UART contados como flash). Os padrões de
texto agora seguem o que está escrito em cada idioma e dão o mesmo resultado nos seis.
- No seletor de chip, o teste de "USB OTG 2.0" nunca casava com os dados; passou a
reconhecer o USB 2.0 High-Speed (ESP32-P4 e ESP32-S31).
### Adicionado
- `scripts/verifica-seo.py` (canonical, `hreflang` e `lang` de todas as URLs do
sitemap, comparados com o sitemap) e `scripts/verifica-pinos-*.mjs` (classificação
dos pinos igual em todos os idiomas, no `npm run check`). O `check-i18n` também procura
frases em inglês e mais palavras só-portuguesas nos dados dos outros idiomas.
## [1.6.0] - 2026-11-02 ## [1.6.0] - 2026-11-02
### Adicionado ### Adicionado
@@ -226,7 +327,10 @@ entrada resume tudo desde o primeiro commit, em 2025-10-21, até a imagem Docker
otimização de imagens (GHSA-2464-fhr4-w9xw), e `postcss` fixado acima da cópia otimização de imagens (GHSA-2464-fhr4-w9xw), e `postcss` fixado acima da cópia
embutida no `next`. embutida no `next`.
[Não lançado]: https://git.lucasrguerra.dev.br/lucasrguerra/ESPDocs/compare/v1.6.0...HEAD [Não lançado]: https://git.lucasrguerra.dev.br/lucasrguerra/ESPDocs/compare/v1.8.0...HEAD
[1.8.0]: https://git.lucasrguerra.dev.br/lucasrguerra/ESPDocs/compare/v1.7.0...v1.8.0
[1.7.0]: https://git.lucasrguerra.dev.br/lucasrguerra/ESPDocs/compare/v1.6.1...v1.7.0
[1.6.1]: https://git.lucasrguerra.dev.br/lucasrguerra/ESPDocs/compare/v1.6.0...v1.6.1
[1.6.0]: https://git.lucasrguerra.dev.br/lucasrguerra/ESPDocs/compare/v1.5.0...v1.6.0 [1.6.0]: https://git.lucasrguerra.dev.br/lucasrguerra/ESPDocs/compare/v1.5.0...v1.6.0
[1.5.0]: https://git.lucasrguerra.dev.br/lucasrguerra/ESPDocs/compare/v1.4.2...v1.5.0 [1.5.0]: https://git.lucasrguerra.dev.br/lucasrguerra/ESPDocs/compare/v1.4.2...v1.5.0
[1.4.2]: https://git.lucasrguerra.dev.br/lucasrguerra/ESPDocs/compare/v1.4.1...v1.4.2 [1.4.2]: https://git.lucasrguerra.dev.br/lucasrguerra/ESPDocs/compare/v1.4.1...v1.4.2
+7 -1
View File
@@ -15,7 +15,13 @@ ENV NEXT_TELEMETRY_DISABLED=1 NEXT_OUTPUT=standalone
COPY --from=deps /app/node_modules ./node_modules COPY --from=deps /app/node_modules ./node_modules
COPY . . COPY . .
# Cache de compilação do Next: só as páginas que mudaram são recompiladas. # Cache de compilação do Next: só as páginas que mudaram são recompiladas.
RUN --mount=type=cache,target=/app/.next/cache npm run build # O build baixa as Google Fonts (next/font/google); quando a rede do runner falha, o Turbopack
# aborta com "next/font/google queries have exactly one entry". Repete até 3 vezes.
RUN --mount=type=cache,target=/app/.next/cache \
for tentativa in 1 2 3; do \
npm run build && exit 0; \
echo "build falhou (tentativa $tentativa de 3)"; sleep 15; \
done; exit 1
FROM node:22-alpine FROM node:22-alpine
WORKDIR /app WORKDIR /app
+3 -2
View File
@@ -6,6 +6,7 @@ import Header from "@/components/Header";
import Footer from "@/components/Footer"; import Footer from "@/components/Footer";
import PageHero from "@/components/PageHero"; import PageHero from "@/components/PageHero";
import BoardCard from "@/components/BoardCard"; import BoardCard from "@/components/BoardCard";
import { isLinkColumn } from "@/lib/boardLinks";
import { AlertTriangle, RefreshCw, Search, ShoppingCart, SlidersHorizontal } from "lucide-react"; import { AlertTriangle, RefreshCw, Search, ShoppingCart, SlidersHorizontal } from "lucide-react";
const HEADER_MAP_EN = { const HEADER_MAP_EN = {
@@ -184,7 +185,7 @@ export default function PlacasPage() {
const generateFilterOptions = (data, headers) => { const generateFilterOptions = (data, headers) => {
const options = {}; const options = {};
const filterableColumns = headers.filter((h) => !excludedColumns.includes(h)); const filterableColumns = headers.filter((h) => !excludedColumns.includes(h) && !isLinkColumn(h));
filterableColumns.forEach((column) => { filterableColumns.forEach((column) => {
const uniqueValues = new Set(); const uniqueValues = new Set();
@@ -265,7 +266,7 @@ export default function PlacasPage() {
const activeFilterCount = Object.keys(activeFilters).length + (searchTerm ? 1 : 0); const activeFilterCount = Object.keys(activeFilters).length + (searchTerm ? 1 : 0);
const filterableColumns = headers.filter((h) => !excludedColumns.includes(h)); const filterableColumns = headers.filter((h) => !excludedColumns.includes(h) && !isLinkColumn(h));
const hero = ( const hero = (
<PageHero <PageHero
+5
View File
@@ -2,6 +2,7 @@
import Header from "@/components/Header"; import Header from "@/components/Header";
import Footer from "@/components/Footer"; import Footer from "@/components/Footer";
import PlacasSugeridas from "@/components/PlacasSugeridas";
import PageHero from "@/components/PageHero"; import PageHero from "@/components/PageHero";
import { useEffect, useState, useMemo, Fragment } from "react"; import { useEffect, useState, useMemo, Fragment } from "react";
import { usePathname } from "next/navigation"; import { usePathname } from "next/navigation";
@@ -740,6 +741,10 @@ export default function Comparacao() {
</div> </div>
</section> </section>
<div className="shell mt-8">
<PlacasSugeridas chips={selectedSeries} />
</div>
<section className="shell section" aria-labelledby="docs-titulo"> <section className="shell section" aria-labelledby="docs-titulo">
<h2 id="docs-titulo" className="section-title"> <h2 id="docs-titulo" className="section-title">
{isEs ? "Documentación oficial" : isEn ? "Official documentation" : isFr ? "Documentation officielle" : isZh ? "官方文档" : isDe ? "Offizielle Dokumentation" : "Documentação oficial"} {isEs ? "Documentación oficial" : isEn ? "Official documentation" : isFr ? "Documentation officielle" : isZh ? "官方文档" : isDe ? "Offizielle Dokumentation" : "Documentação oficial"}
+1 -1
View File
@@ -30,7 +30,7 @@ export async function generateMetadata({ params }) {
titulo: "Microcontroladores ESP32, o livro", titulo: "Microcontroladores ESP32, o livro",
descricao: descricao:
"Conheça o livro Microcontroladores ESP32: conectividade, eficiência e desempenho. 12 partes e 78 capítulos em português sobre arquitetura, energia, rádio, periféricos e firmware.", "Conheça o livro Microcontroladores ESP32: conectividade, eficiência e desempenho. 12 partes e 78 capítulos em português sobre arquitetura, energia, rádio, periféricos e firmware.",
caminho: "/pt/livro", caminho: "/livro",
keywords: [ keywords: [
"livro ESP32", "livro ESP32",
"Microcontroladores ESP32", "Microcontroladores ESP32",
+5 -1
View File
@@ -4,6 +4,7 @@ import { useState, useMemo } from "react";
import { usePathname } from "next/navigation"; import { usePathname } from "next/navigation";
import Header from "@/components/Header"; import Header from "@/components/Header";
import Footer from "@/components/Footer"; import Footer from "@/components/Footer";
import PlacasSugeridas from "@/components/PlacasSugeridas";
import Link from "next/link"; import Link from "next/link";
import { getLocalizedHref } from "@/i18n/links"; import { getLocalizedHref } from "@/i18n/links";
import seriesDataPt from "@/public/series.json"; import seriesDataPt from "@/public/series.json";
@@ -1877,7 +1878,7 @@ export default function Seletor() {
alerts[key].push(r("Incompatível: Sem interfaces dedicadas de tela/câmera (limitado a barramento SPI/I2C)", "Incompatible: No dedicated display/camera interfaces (limited to SPI/I2C bus)", "Incompatible: Sin interfaces dedicadas de pantalla/cámara (limitado a bus SPI/I2C)", "Incompatible : Aucune interface dédiée écran/caméra (limité au bus SPI/I2C)", "Inkompatibel: Keine dedizierten Display-/Kameraschnittstellen (auf SPI/I2C beschränkt)", "不兼容:没有专用的显示屏/摄像头接口(仅限 SPI/I2C 总线)")); alerts[key].push(r("Incompatível: Sem interfaces dedicadas de tela/câmera (limitado a barramento SPI/I2C)", "Incompatible: No dedicated display/camera interfaces (limited to SPI/I2C bus)", "Incompatible: Sin interfaces dedicadas de pantalla/cámara (limitado a bus SPI/I2C)", "Incompatible : Aucune interface dédiée écran/caméra (limité au bus SPI/I2C)", "Inkompatibel: Keine dedizierten Display-/Kameraschnittstellen (auf SPI/I2C beschränkt)", "不兼容:没有专用的显示屏/摄像头接口(仅限 SPI/I2C 总线)"));
} }
} else if (answers.hardware === "usb_otg") { } else if (answers.hardware === "usb_otg") {
if (serie.usb && String(serie.usb).includes("OTG 2.0")) { if (serie.usb && /High-Speed OTG|高速 OTG|OTG 2\.0/.test(String(serie.usb))) {
scores[key] += 40; scores[key] += 40;
reasons[key].push(r(`Porta USB 2.0 High-Speed OTG (${serie.usb}) para emulação HID, CDC e modo Host`, `USB 2.0 High-Speed OTG port (${serie.usb}) for HID emulation, CDC and Host mode`, `Puerto USB 2.0 High-Speed OTG (${serie.usb}) para emulación HID, CDC y modo Host`, `Port USB 2.0 High-Speed OTG (${serie.usb}) pour émulation HID, CDC et mode Hôte`, `USB 2.0 High-Speed OTG-Anschluss (${serie.usb}) für HID-, CDC-Emulation und Host-Modus`, `USB 2.0 高速 OTG 端口(${serie.usb}),支持 HID 模拟、CDC 和主机模式`)); reasons[key].push(r(`Porta USB 2.0 High-Speed OTG (${serie.usb}) para emulação HID, CDC e modo Host`, `USB 2.0 High-Speed OTG port (${serie.usb}) for HID emulation, CDC and Host mode`, `Puerto USB 2.0 High-Speed OTG (${serie.usb}) para emulación HID, CDC y modo Host`, `Port USB 2.0 High-Speed OTG (${serie.usb}) pour émulation HID, CDC et mode Hôte`, `USB 2.0 High-Speed OTG-Anschluss (${serie.usb}) für HID-, CDC-Emulation und Host-Modus`, `USB 2.0 高速 OTG 端口(${serie.usb}),支持 HID 模拟、CDC 和主机模式`));
} else if (serie.usb && String(serie.usb).includes("OTG")) { } else if (serie.usb && String(serie.usb).includes("OTG")) {
@@ -2554,6 +2555,8 @@ export default function Seletor() {
</div> </div>
</div> </div>
<PlacasSugeridas chips={topThree.map((rec) => rec.key)} className="mt-10" />
{otherRecommendations.length > 0 && ( {otherRecommendations.length > 0 && (
<div className="mt-10"> <div className="mt-10">
<h3 className="font-display text-xl font-semibold tracking-[-0.03em] text-ink"> <h3 className="font-display text-xl font-semibold tracking-[-0.03em] text-ink">
@@ -2714,6 +2717,7 @@ export default function Seletor() {
</button> </button>
</div> </div>
)} )}
{filteredChips.length > 0 && <PlacasSugeridas chips={filteredChips.map(([chave]) => chave)} className="mt-6" />}
</section> </section>
)} )}
+2
View File
@@ -13,6 +13,7 @@ import seriesDataDe from "@/data/de/series.json";
import seriesDataZh from "@/data/zh-CN/series.json"; import seriesDataZh from "@/data/zh-CN/series.json";
import ConnectionsDiagram from "@/components/ConnectionsDiagram"; import ConnectionsDiagram from "@/components/ConnectionsDiagram";
import SeriesTabMenu from "@/components/SeriesTabMenu"; import SeriesTabMenu from "@/components/SeriesTabMenu";
import PlacasSugeridas from "@/components/PlacasSugeridas";
import PinRestrictions from "@/components/PinRestrictions"; import PinRestrictions from "@/components/PinRestrictions";
import { getLocalizedHref } from "@/i18n/links"; import { getLocalizedHref } from "@/i18n/links";
import { import {
@@ -843,6 +844,7 @@ export default async function SerieDetail({ params }) {
<div className="shell mt-10"> <div className="shell mt-10">
<SeriesTabMenu tabs={tabs} isEn={isEn} isEs={isEs} isFr={isFr} isDe={isDe} isZh={isZh} /> <SeriesTabMenu tabs={tabs} isEn={isEn} isEs={isEs} isFr={isFr} isDe={isDe} isZh={isZh} />
<PlacasSugeridas chips={[key]} className="mt-5" />
<PinRestrictions conexoes={conexoes} serieKey={key} isEn={isEn} isEs={isEs} isFr={isFr} isDe={isDe} isZh={isZh} /> <PinRestrictions conexoes={conexoes} serieKey={key} isEn={isEn} isEs={isEs} isFr={isFr} isDe={isDe} isZh={isZh} />
</div> </div>
+491 -261
View File
@@ -1,55 +1,416 @@
import Link from "next/link";
import { paginaMeta, jsonLd, SITE } from "@/lib/seo"; import { paginaMeta, jsonLd, SITE } from "@/lib/seo";
import { getLocalizedHref } from "@/i18n/links";
import Header from "@/components/Header"; import Header from "@/components/Header";
import Footer from "@/components/Footer"; import Footer from "@/components/Footer";
import PageHero from "@/components/PageHero"; import PageHero from "@/components/PageHero";
import Image from "next/image"; import Image from "next/image";
import GiteaMark from "@/components/GiteaMark"; import GiteaMark from "@/components/GiteaMark";
import { ArrowUpRight, Code, Globe, GitCompare, Info, Languages } from "lucide-react"; import {
AlertTriangle,
ArrowUpRight,
BookA,
BookMarked,
BookOpen,
Box,
Cpu,
Info,
Scale,
Search,
SlidersHorizontal,
Sparkles,
} from "lucide-react";
const REPOSITORIO = SITE.repositorio; const REPOSITORIO = SITE.repositorio;
const LANGS = ["pt", "en", "es", "fr", "de", "zh-CN"];
/** Ferramentas e conteúdos do site: ícone e rota fixos, texto por idioma (ordem = ordem de FERRAMENTAS). */
const FERRAMENTAS = [
{ icon: Cpu, href: "/series" },
{ icon: Scale, href: "/comparacao" },
{ icon: SlidersHorizontal, href: "/seletor" },
{ icon: Box, href: "/catalogo" },
{ icon: AlertTriangle, href: "/diagnostico" },
{ icon: Search, href: "/componentes" },
{ icon: BookOpen, href: "/frameworks" },
{ icon: BookA, href: "/glossario" },
{ icon: Sparkles, href: null },
{ icon: BookMarked, href: "/livro", soPt: true },
];
const T = {
pt: {
metaTitulo: "Sobre o projeto",
metaDesc:
"O ESPDocs é uma plataforma independente, em seis idiomas, que reúne a documentação do ecossistema ESP32, com séries, comparador, seletor de chip, catálogo de placas, diagnóstico e glossário. Conheça o projeto e o autor.",
keywords: ["ESPDocs", "documentação ESP32 português", "projeto open source ESP32"],
inicio: "Início",
trilha: "Sobre",
tituloHero: "Sobre o ESPDocs",
label: "Projeto independente",
lede: "Uma plataforma não oficial, em seis idiomas, que organiza as informações técnicas do ESP32, ajuda a escolher o chip certo e leva você à documentação oficial da Espressif. Feita para a comunidade de hardware livre.",
repo: "Ver o repositório",
missaoTitulo: "Missão",
missao:
"Facilitar o acesso e a compreensão do ecossistema ESP32: organizar especificações, comparar séries, ajudar na escolha do chip e das placas, explicar erros comuns e centralizar os links da documentação oficial. O objetivo é economizar o seu tempo no desenvolvimento de firmware e IoT.",
porqueTitulo: "Por que o ESPDocs existe",
porque:
"As informações sobre os ESP32 costumam estar espalhadas entre datasheets densos, manuais de referência (TRM) e repositórios secundários, quase sempre só em inglês. O ESPDocs condensa e estrutura esses dados para a triagem rápida, antes de você aprofundar na engenharia oficial.",
temTitulo: "O que você encontra aqui",
temLede: "O projeto começou como uma tabela de séries e hoje reúne:",
ferramentas: [
["12 séries ESP32", "Especificações, diagramas de pinos interativos e pinos com restrição de uso, do ESP32 clássico ao ESP32-P4."],
["Comparador", "Até quatro séries lado a lado, com as diferenças em destaque."],
["Seletor inteligente", "Diga o que o projeto precisa e veja quais chips atendem."],
["Catálogo de placas", "DevKits com pinos, filtros e links de compra para o seu país."],
["Diagnóstico", "Brownout, bootloop, watchdog e mais: sintomas, causas e um decodificador de logs."],
["Component Registry", "42 componentes e drivers do registro oficial, com o manifest idf_component.yml pronto."],
["Frameworks e SDKs", "14 frameworks, do ESP-IDF e Arduino a Rust e Matter, com exemplos de código."],
["Glossário técnico", "Os termos que aparecem nos datasheets, explicados por categoria."],
["Busca inteligente", "Pergunte “pino 32 esp32-s3” ou “qual ESP32 tem PSRAM” e receba a resposta direta, com link para a fonte."],
["O livro", "Microcontroladores ESP32: hardware e firmware em 12 partes e 78 capítulos."],
],
idiomasTitulo: "Seis idiomas",
idiomas:
"O site inteiro está em português, inglês, espanhol, francês, alemão e chinês simplificado: interface, dados, busca e exemplos de código com comentários traduzidos. O livro existe só em português.",
contribuirTitulo: "Como contribuir",
contribuir: "Correções de tradução, ajustes em tabelas e novos exemplos de código são muito bem-vindos. O projeto cresce com a comunidade.",
passos: [
"Faça o fork do repositório no Gitea.",
"Implemente as melhorias e confira as referências técnicas oficiais.",
"Abra um Pull Request descrevendo os ajustes feitos.",
],
acessTitulo: "Acessibilidade",
acess:
"O ESPDocs prioriza a legibilidade, o contraste alto (nível AAA da WCAG), o tema claro e escuro e a navegação completa por teclado. Se encontrar alguma barreira de leitura ou navegação, abra uma issue no repositório.",
asideLabel: "Autor e aviso legal",
autorCargo: "Técnico de Operações do PoP-PE na RNP",
autorBio: [
"Desenvolvedor full-stack JavaScript com especialização em resposta a incidentes e forense, entre código, circuitos e investigação digital.",
"Cursa Ciência da Computação na UFRPE e Blockchain e Criptografia Digital na FMU. Criador do Ciência Embarcada, autor de livros técnicos e de ferramentas livres de segurança.",
],
destaquesTitulo: "Reconhecimentos",
destaques: [
"Prêmio de Inovação RNP 2026",
"1º lugar no CyberGame do Hackers do Bem (CSBC 2025)",
"HackerOne, nível Signal Specialist",
"12º lugar civil na Operação Curupira 3.0",
],
siteAutor: "Site pessoal",
blog: "Visitar o Ciência Embarcada",
avisoTitulo: "Aviso legal",
aviso:
"O ESPDocs é um agregador e organizador. Os manuais e repositórios referenciados pertencem à Espressif Systems. Em projetos críticos ou comerciais, consulte sempre a documentação oficial.",
},
en: {
metaTitulo: "About the Project",
metaDesc:
"ESPDocs is an independent platform in six languages that brings together ESP32 documentation: series, comparator, chip selector, board catalog, diagnostics and glossary. Learn about the project and its author.",
keywords: ["ESPDocs", "ESP32 documentation", "open source ESP32 project"],
inicio: "Home",
trilha: "About",
tituloHero: "About ESPDocs",
label: "Independent project",
lede: "An unofficial platform in six languages that organizes technical information about the ESP32, helps you pick the right chip and links you to the official Espressif documentation. Built for the open hardware community.",
repo: "View repository",
missaoTitulo: "Mission",
missao:
"Make the ESP32 ecosystem easier to reach and understand: organize specifications, compare series, help choose the chip and the board, explain common errors and centralize links to the official documentation. The goal is to save you time in firmware and IoT development.",
porqueTitulo: "Why ESPDocs exists",
porque:
"Information about the ESP32 is often scattered across dense datasheets, Technical Reference Manuals (TRM) and secondary repositories. ESPDocs condenses and structures this data for rapid evaluation before you dive into the official engineering documentation.",
temTitulo: "What you will find here",
temLede: "The project started as a table of series and now brings together:",
ferramentas: [
["12 ESP32 series", "Specifications, interactive pinout diagrams and restricted-use pins, from the classic ESP32 to the ESP32-P4."],
["Comparator", "Up to four series side by side, with the differences highlighted."],
["Smart selector", "Say what the project needs and see which chips fit."],
["Board catalog", "DevKits with pins, filters and purchase links for your country."],
["Diagnostics", "Brownout, bootloop, watchdog and more: symptoms, causes and a log decoder."],
["Component Registry", "42 components and drivers from the official registry, with the idf_component.yml manifest ready."],
["Frameworks and SDKs", "14 frameworks, from ESP-IDF and Arduino to Rust and Matter, with code examples."],
["Technical glossary", "The terms that show up in datasheets, explained by category."],
["Smart search", "Ask “pin 32 esp32-s3” or “which ESP32 has PSRAM” and get a direct answer with a link to the source."],
],
idiomasTitulo: "Six languages",
idiomas:
"The whole site is available in Portuguese, English, Spanish, French, German and Simplified Chinese: interface, data, search and code examples with translated comments.",
contribuirTitulo: "How to contribute",
contribuir: "Translation fixes, table refinements and new code examples are welcome. The project grows with the community.",
passos: ["Fork the repository on Gitea.", "Implement improvements and verify official technical references.", "Open a Pull Request describing the changes."],
acessTitulo: "Accessibility",
acess:
"ESPDocs prioritizes readability, high contrast (WCAG AAA level), light and dark themes, and full keyboard navigation. If you encounter any accessibility or navigation hurdles, please open an issue in the repository.",
asideLabel: "Author and legal notice",
autorCargo: "Operations Technician at PoP-PE, RNP",
autorBio: [
"Full-stack JavaScript developer specialized in incident response and forensics, working between code, circuits and digital investigation.",
"Studying Computer Science at UFRPE and Blockchain and Digital Cryptography at FMU. Creator of Ciência Embarcada and author of free security tools.",
],
destaquesTitulo: "Recognition",
destaques: [
"RNP Innovation Award 2026",
"1st place at the Hackers do Bem CyberGame (CSBC 2025)",
"HackerOne, Signal Specialist level",
"12th place (civil) at Operação Curupira 3.0",
],
siteAutor: "Personal website",
blog: "Visit Ciência Embarcada",
avisoTitulo: "Legal notice",
aviso:
"ESPDocs is an aggregator and curation platform. Referenced manuals and repositories are property of Espressif Systems. In mission-critical or commercial designs, always consult official documentation.",
},
es: {
metaTitulo: "Acerca del proyecto",
metaDesc:
"ESPDocs es una plataforma independiente, en seis idiomas, que reúne la documentación del ecosistema ESP32: series, comparador, selector de chip, catálogo de placas, diagnóstico y glosario. Conozca el proyecto y a su autor.",
keywords: ["ESPDocs", "documentación ESP32", "proyecto open source ESP32", "código abierto"],
inicio: "Inicio",
trilha: "Acerca",
tituloHero: "Acerca de ESPDocs",
label: "Proyecto independiente",
lede: "Una plataforma no oficial, en seis idiomas, que organiza la información técnica del ESP32, le ayuda a elegir el chip adecuado y le conecta con la documentación oficial de Espressif. Creada para la comunidad de hardware abierto.",
repo: "Ver el repositorio",
missaoTitulo: "Misión",
missao:
"Facilitar el acceso y la comprensión del ecosistema ESP32: organizar especificaciones, comparar series, ayudar a elegir el chip y la placa, explicar errores comunes y centralizar los enlaces a la documentación oficial. El objetivo es ahorrar tiempo en el desarrollo de firmware e IoT.",
porqueTitulo: "¿Por qué existe ESPDocs?",
porque:
"La información sobre el ESP32 suele estar dispersa entre hojas de datos densas, manuales de referencia técnica (TRM) y repositorios secundarios. ESPDocs condensa y estructura estos datos para una evaluación rápida antes de profundizar en la ingeniería oficial.",
temTitulo: "Qué encontrará aquí",
temLede: "El proyecto empezó como una tabla de series y hoy reúne:",
ferramentas: [
["12 series ESP32", "Especificaciones, diagramas de pines interactivos y pines con restricciones de uso, del ESP32 clásico al ESP32-P4."],
["Comparador", "Hasta cuatro series lado a lado, con las diferencias resaltadas."],
["Selector inteligente", "Indique lo que necesita el proyecto y vea qué chips lo cumplen."],
["Catálogo de placas", "DevKits con pines, filtros y enlaces de compra para su país."],
["Diagnóstico", "Brownout, bootloop, watchdog y más: síntomas, causas y un decodificador de logs."],
["Component Registry", "42 componentes y drivers del registro oficial, con el manifest idf_component.yml listo."],
["Frameworks y SDKs", "14 frameworks, de ESP-IDF y Arduino a Rust y Matter, con ejemplos de código."],
["Glosario técnico", "Los términos que aparecen en las hojas de datos, explicados por categoría."],
["Búsqueda inteligente", "Pregunte “pin 32 esp32-s3” o “qué ESP32 tiene PSRAM” y reciba la respuesta directa, con enlace a la fuente."],
],
idiomasTitulo: "Seis idiomas",
idiomas:
"Todo el sitio está en portugués, inglés, español, francés, alemán y chino simplificado: interfaz, datos, búsqueda y ejemplos de código con comentarios traducidos.",
contribuirTitulo: "Cómo contribuir",
contribuir: "Las correcciones de traducción, ajustes en tablas y nuevos ejemplos de código son muy bienvenidos. El proyecto crece junto con la comunidad.",
passos: [
"Haga un fork del repositorio en Gitea.",
"Implemente las mejoras y verifique las referencias técnicas oficiales.",
"Abra una solicitud de extracción (Pull Request) describiendo los cambios realizados.",
],
acessTitulo: "Accesibilidad",
acess:
"ESPDocs prioriza la legibilidad, el alto contraste (nivel AAA de WCAG), los temas claro y oscuro y la navegación completa por teclado. Si encuentra alguna barrera de lectura o navegación, abra un issue en el repositorio.",
asideLabel: "Autor y aviso legal",
autorCargo: "Técnico de Operaciones del PoP-PE en la RNP",
autorBio: [
"Desarrollador full-stack JavaScript especializado en respuesta a incidentes y forense, entre código, circuitos e investigación digital.",
"Cursa Ciencias de la Computación en la UFRPE y Blockchain y Criptografía Digital en la FMU. Creador de Ciência Embarcada y autor de herramientas libres de seguridad.",
],
destaquesTitulo: "Reconocimientos",
destaques: [
"Premio de Innovación RNP 2026",
"1.er lugar en el CyberGame de Hackers do Bem (CSBC 2025)",
"HackerOne, nivel Signal Specialist",
"12.º lugar civil en la Operação Curupira 3.0",
],
siteAutor: "Sitio personal",
blog: "Visitar Ciência Embarcada",
avisoTitulo: "Aviso legal",
aviso:
"ESPDocs es un agregador y organizador. Los manuales y repositorios referenciados pertenecen a Espressif Systems. En proyectos críticos o comerciales, consulte siempre la documentación oficial.",
},
fr: {
metaTitulo: "À propos du projet",
metaDesc:
"ESPDocs est une plateforme indépendante, en six langues, qui rassemble la documentation de l'écosystème ESP32 : séries, comparateur, sélecteur de puce, catalogue de cartes, diagnostic et glossaire. Découvrez le projet et son auteur.",
keywords: ["ESPDocs", "documentation ESP32", "projet open source ESP32", "open source"],
inicio: "Accueil",
trilha: "À propos",
tituloHero: "À propos d'ESPDocs",
label: "Projet indépendant",
lede: "Une plateforme non officielle, en six langues, qui organise les informations techniques de l'ESP32, vous aide à choisir la bonne puce et vous oriente vers la documentation officielle d'Espressif. Conçue pour la communauté du matériel libre.",
repo: "Voir le dépôt",
missaoTitulo: "Mission",
missao:
"Faciliter l'accès à l'écosystème ESP32 et sa compréhension : organiser les spécifications, comparer les séries, aider à choisir la puce et la carte, expliquer les erreurs courantes et centraliser les liens vers la documentation officielle. L'objectif est de vous faire gagner du temps dans le développement de firmware et d'IoT.",
porqueTitulo: "Pourquoi ESPDocs existe",
porque:
"Les informations sur l'ESP32 sont souvent dispersées entre des fiches techniques denses, des manuels de référence technique (TRM) et des dépôts secondaires. ESPDocs condense et structure ces données pour une évaluation rapide avant d'approfondir l'ingénierie officielle.",
temTitulo: "Ce que vous trouverez ici",
temLede: "Le projet a commencé comme un tableau de séries et rassemble aujourd'hui :",
ferramentas: [
["12 séries ESP32", "Spécifications, schémas de brochage interactifs et broches à usage restreint, de l'ESP32 classique à l'ESP32-P4."],
["Comparateur", "Jusqu'à quatre séries côte à côte, avec les différences mises en évidence."],
["Sélecteur intelligent", "Dites ce dont le projet a besoin et voyez quelles puces conviennent."],
["Catalogue de cartes", "DevKits avec broches, filtres et liens d'achat pour votre pays."],
["Diagnostic", "Brownout, bootloop, watchdog et plus : symptômes, causes et décodeur de logs."],
["Component Registry", "42 composants et pilotes du registre officiel, avec le manifest idf_component.yml prêt."],
["Frameworks et SDK", "14 frameworks, d'ESP-IDF et Arduino à Rust et Matter, avec des exemples de code."],
["Glossaire technique", "Les termes des fiches techniques, expliqués par catégorie."],
["Recherche intelligente", "Demandez « broche 32 esp32-s3 » ou « quel ESP32 a de la PSRAM » et obtenez la réponse directe, avec le lien vers la source."],
],
idiomasTitulo: "Six langues",
idiomas:
"Tout le site est disponible en portugais, anglais, espagnol, français, allemand et chinois simplifié : interface, données, recherche et exemples de code avec commentaires traduits.",
contribuirTitulo: "Comment contribuer",
contribuir: "Les corrections de traduction, les ajustements de tableaux et les nouveaux exemples de code sont très appréciés. Le projet grandit avec la communauté.",
passos: [
"Forkez le dépôt sur Gitea.",
"Apportez les améliorations et vérifiez les références techniques officielles.",
"Ouvrez une Pull Request décrivant les modifications apportées.",
],
acessTitulo: "Accessibilité",
acess:
"ESPDocs privilégie la lisibilité, un contraste élevé (niveau AAA du WCAG), les thèmes clair et sombre et une navigation complète au clavier. Si vous rencontrez un obstacle de lecture ou de navigation, ouvrez un ticket dans le dépôt.",
asideLabel: "Auteur et mentions légales",
autorCargo: "Technicien d'opérations du PoP-PE au RNP",
autorBio: [
"Développeur full-stack JavaScript spécialisé en réponse aux incidents et en forensique, entre code, circuits et investigation numérique.",
"Étudie l'informatique à l'UFRPE et la blockchain et la cryptographie numérique à la FMU. Créateur de Ciência Embarcada et auteur d'outils libres de sécurité.",
],
destaquesTitulo: "Distinctions",
destaques: [
"Prix de l'innovation RNP 2026",
"1re place au CyberGame de Hackers do Bem (CSBC 2025)",
"HackerOne, niveau Signal Specialist",
"12e place civile à l'Operação Curupira 3.0",
],
siteAutor: "Site personnel",
blog: "Visiter Ciência Embarcada",
avisoTitulo: "Mentions légales",
aviso:
"ESPDocs est une plateforme d'agrégation et de synthèse. Les manuels et dépôts référencés appartiennent à Espressif Systems. Pour les projets critiques ou commerciaux, consultez systématiquement la documentation officielle.",
},
de: {
metaTitulo: "Über das Projekt",
metaDesc:
"ESPDocs ist eine unabhängige Plattform in sechs Sprachen, die die Dokumentation des ESP32-Ökosystems bündelt: Serien, Vergleich, Chip-Auswahl, Board-Katalog, Diagnose und Glossar. Lernen Sie das Projekt und den Autor kennen.",
keywords: ["ESPDocs", "ESP32 Dokumentation", "ESP32 Open-Source-Projekt", "Open Source"],
inicio: "Startseite",
trilha: "Über uns",
tituloHero: "Über ESPDocs",
label: "Unabhängiges Projekt",
lede: "Eine inoffizielle Plattform in sechs Sprachen, die technische Informationen zum ESP32 strukturiert, bei der Wahl des passenden Chips hilft und Sie mit der offiziellen Dokumentation von Espressif verbindet. Entwickelt für die Open-Hardware-Community.",
repo: "Repository ansehen",
missaoTitulo: "Mission",
missao:
"Den Zugang zum ESP32-Ökosystem und das Verständnis dafür erleichtern: Spezifikationen bündeln, Serien vergleichen, bei der Wahl von Chip und Board helfen, häufige Fehler erklären und Links zur offiziellen Dokumentation zentralisieren. Ziel ist es, Entwicklungszeit bei Firmware und IoT-Projekten zu sparen.",
porqueTitulo: "Warum es ESPDocs gibt",
porque:
"Informationen über den ESP32 sind oft über dichte Datenblätter, technische Referenzhandbücher (TRM) und sekundäre Repositories verstreut. ESPDocs verdichtet und strukturiert diese Daten für eine schnelle Vorabauswahl, bevor Sie tiefer in die offizielle Technik einsteigen.",
temTitulo: "Was Sie hier finden",
temLede: "Das Projekt begann als Tabelle von Serien und umfasst heute:",
ferramentas: [
["12 ESP32-Serien", "Spezifikationen, interaktive Pinbelegungen und Pins mit Nutzungseinschränkungen, vom klassischen ESP32 bis zum ESP32-P4."],
["Vergleich", "Bis zu vier Serien nebeneinander, Unterschiede hervorgehoben."],
["Intelligente Auswahl", "Sagen Sie, was das Projekt braucht, und sehen Sie, welche Chips passen."],
["Board-Katalog", "DevKits mit Pins, Filtern und Kauflinks für Ihr Land."],
["Diagnose", "Brownout, Bootloop, Watchdog und mehr: Symptome, Ursachen und ein Log-Decoder."],
["Component Registry", "42 Komponenten und Treiber aus der offiziellen Registry, mit fertigem idf_component.yml-Manifest."],
["Frameworks und SDKs", "14 Frameworks, von ESP-IDF und Arduino bis Rust und Matter, mit Codebeispielen."],
["Technisches Glossar", "Die Begriffe aus den Datenblättern, nach Kategorie erklärt."],
["Intelligente Suche", "Fragen Sie „Pin 32 esp32-s3“ oder „welcher ESP32 hat PSRAM“ und erhalten Sie die direkte Antwort mit Link zur Quelle."],
],
idiomasTitulo: "Sechs Sprachen",
idiomas:
"Die gesamte Website gibt es auf Portugiesisch, Englisch, Spanisch, Französisch, Deutsch und vereinfachtem Chinesisch: Oberfläche, Daten, Suche und Codebeispiele mit übersetzten Kommentaren.",
contribuirTitulo: "Wie Sie beitragen können",
contribuir: "Übersetzungskorrekturen, Tabellenanpassungen und neue Codebeispiele sind herzlich willkommen. Das Projekt wächst gemeinsam mit der Community.",
passos: [
"Erstellen Sie einen Fork des Repositories auf Gitea.",
"Implementieren Sie die Verbesserungen und prüfen Sie die offiziellen technischen Referenzen.",
"Eröffnen Sie einen Pull Request mit einer Beschreibung der vorgenommenen Änderungen.",
],
acessTitulo: "Barrierefreiheit",
acess:
"ESPDocs legt großen Wert auf Lesbarkeit, hohen Kontrast (WCAG-Stufe AAA), helles und dunkles Design und vollständige Tastaturnavigation. Wenn Sie auf Lese- oder Navigationsbarrieren stoßen, eröffnen Sie bitte ein Issue im Repository.",
asideLabel: "Autor und rechtlicher Hinweis",
autorCargo: "Betriebstechniker des PoP-PE beim RNP",
autorBio: [
"Full-Stack-JavaScript-Entwickler mit Spezialisierung auf Incident Response und Forensik, zwischen Code, Schaltungen und digitaler Ermittlung.",
"Studiert Informatik an der UFRPE sowie Blockchain und digitale Kryptographie an der FMU. Gründer von Ciência Embarcada und Autor freier Sicherheitswerkzeuge.",
],
destaquesTitulo: "Auszeichnungen",
destaques: [
"RNP-Innovationspreis 2026",
"1. Platz beim CyberGame von Hackers do Bem (CSBC 2025)",
"HackerOne, Stufe Signal Specialist",
"12. Platz (zivil) bei der Operação Curupira 3.0",
],
siteAutor: "Persönliche Website",
blog: "Ciência Embarcada besuchen",
avisoTitulo: "Rechtlicher Hinweis",
aviso:
"ESPDocs ist ein Aggregator und Kurator. Die referenzierten Handbücher und Repositories sind Eigentum von Espressif Systems. Konsultieren Sie bei geschäftskritischen oder kommerziellen Projekten stets die offizielle Dokumentation.",
},
"zh-CN": {
metaTitulo: "关于本项目",
metaDesc: "ESPDocs 是一个独立平台,提供六种语言,汇集 ESP32 生态的文档:系列、对比、芯片选择、开发板目录、诊断与术语表。了解本项目及其作者。",
keywords: ["ESPDocs", "ESP32 文档", "开源 ESP32 项目"],
inicio: "首页",
trilha: "关于",
tituloHero: "关于 ESPDocs",
label: "独立项目",
lede: "一个非官方平台,提供六种语言,整理 ESP32 的技术信息,帮助你选出合适的芯片,并直接链接到乐鑫官方文档。为开源硬件社区而做。",
repo: "查看代码仓库",
missaoTitulo: "使命",
missao: "让 ESP32 生态更易获取、更易理解:整理规格、对比系列、帮助选择芯片和开发板、解释常见错误,并集中官方文档链接。目标是节省固件与物联网项目的开发时间。",
porqueTitulo: "ESPDocs 为什么存在",
porque: "ESP32 的信息常常分散在冗长的数据手册、技术参考手册(TRM)和零散的代码仓库中。ESPDocs 把这些数据浓缩并结构化,便于在深入工程文档之前快速评估。",
temTitulo: "你能在这里找到什么",
temLede: "项目最初只是一张系列对照表,如今汇集了:",
ferramentas: [
["12 个 ESP32 系列", "规格、交互式引脚图,以及有使用限制的引脚,从经典 ESP32 到 ESP32-P4。"],
["系列对比", "最多四个系列并排对比,差异一目了然。"],
["智能选型", "说出项目的需求,看看哪些芯片合适。"],
["开发板目录", "DevKit 的引脚、筛选条件,以及适用于你所在国家的购买链接。"],
["故障诊断", "Brownout、bootloop、看门狗等:症状、原因和日志解码器。"],
["Component Registry", "来自官方注册表的 42 个组件和驱动,附现成的 idf_component.yml。"],
["框架与 SDK", "14 个框架,从 ESP-IDF、Arduino 到 Rust 和 Matter,并附代码示例。"],
["技术术语表", "数据手册里的术语,按类别解释。"],
["智能搜索", "问“esp32-s3 32号引脚”或“哪款 ESP32 有 PSRAM”,直接得到答案,并附来源链接。"],
],
idiomasTitulo: "六种语言",
idiomas: "整个网站提供葡萄牙语、英语、西班牙语、法语、德语和简体中文:界面、数据、搜索,以及注释已翻译的代码示例。",
contribuirTitulo: "如何参与贡献",
contribuir: "欢迎提交翻译修正、表格改进和新的代码示例。项目与社区一同成长。",
passos: ["在 Gitea 上 Fork 本仓库。", "实现改进,并核对官方技术资料。", "发起 Pull Request 并说明改动。"],
acessTitulo: "无障碍",
acess: "ESPDocs 重视可读性、高对比度(WCAG AAA 级)、浅色与深色主题和完整的键盘导航。如果你遇到任何无障碍或导航上的障碍,请在代码仓库中提交 issue。",
asideLabel: "作者与法律声明",
autorCargo: "RNP PoP-PE 运维技术员",
autorBio: [
"全栈 JavaScript 开发者,专注于事件响应与取证,穿梭于代码、电路与数字调查之间。",
"在 UFRPE 就读计算机科学,在 FMU 学习区块链与数字密码学。Ciência Embarcada 创始人,开源安全工具作者。",
],
destaquesTitulo: "荣誉",
destaques: ["2026 年 RNP 创新奖", "Hackers do Bem CyberGame 第 1 名(CSBC 2025)", "HackerOne Signal Specialist 等级", "Operação Curupira 3.0 平民组第 12 名"],
siteAutor: "个人网站",
blog: "访问 Ciência Embarcada",
avisoTitulo: "法律声明",
aviso: "ESPDocs 是一个聚合与整理平台。所引用的手册和代码仓库归乐鑫系统(Espressif Systems)所有。在关键任务或商业设计中,请始终查阅官方文档。",
},
};
export async function generateMetadata({ params }) { export async function generateMetadata({ params }) {
const { locale } = await params; const { locale } = await params;
const isEn = locale === "en"; const t = T[locale] ?? T.pt;
const isEs = locale === "es";
const isFr = locale === "fr";
const isDe = locale === "de";
const isZh = locale === "zh-CN";
return paginaMeta({ return paginaMeta({
titulo: isZh ? "关于本项目" : isDe titulo: t.metaTitulo,
? "Über das Projekt" descricao: t.metaDesc,
: isFr
? "À propos du projet"
: isEs
? "Acerca del proyecto"
: isEn
? "About the Project"
: "Sobre o projeto",
descricao: isZh ? "ESPDocs 是一个独立平台,整理 ESP32 生态的技术文档。了解本项目以及如何参与贡献。" : isDe
? "ESPDocs ist eine unabhängige Plattform, die die technische Dokumentation des ESP32-Ökosystems strukturiert. Erfahren Sie mehr über das Projekt und wie Sie beitragen können."
: isFr
? "ESPDocs est une plateforme indépendante qui organise la documentation technique de l'écosystème ESP32. Découvrez le projet et comment contribuer."
: isEs
? "ESPDocs es una plataforma independiente que organiza la documentación técnica del ecosistema ESP32. Conozca el proyecto y cómo contribuir."
: isEn
? "ESPDocs is an independent platform organizing technical documentation of the ESP32 ecosystem. Learn about the project and how to contribute."
: "O ESPDocs é uma plataforma independente que reúne a documentação do ecossistema ESP32 em português brasileiro. Saiba como o projeto nasceu e como contribuir.",
caminho: "/sobre", caminho: "/sobre",
keywords: isZh ? ["ESPDocs", "ESP32 文档", "开源 ESP32 项目"] : isDe keywords: t.keywords,
? ["ESPDocs", "ESP32 Dokumentation", "ESP32 Open-Source-Projekt", "Open Source"]
: isFr
? ["ESPDocs", "documentation ESP32", "projet open source ESP32", "open source"]
: isEs
? ["ESPDocs", "documentación ESP32", "proyecto open source ESP32", "código abierto"]
: isEn
? ["ESPDocs", "ESP32 documentation", "open source ESP32 project"]
: ["ESPDocs", "documentação ESP32 português", "projeto open source ESP32"],
locale, locale,
}); });
} }
export default async function Sobre({ params }) { export default async function Sobre({ params }) {
const { locale } = await params; const { locale } = await params;
const t = T[locale] ?? T.pt;
const isPt = locale === "pt"; const isPt = locale === "pt";
const isEn = locale === "en"; const isEn = locale === "en";
const isEs = locale === "es"; const isEs = locale === "es";
@@ -57,63 +418,26 @@ export default async function Sobre({ params }) {
const isDe = locale === "de"; const isDe = locale === "de";
const isZh = locale === "zh-CN"; const isZh = locale === "zh-CN";
const featuresPt = [ const getLinkHref = (href) => getLocalizedHref(`/${locale}${href}`, locale);
{ icon: Languages, title: "Em português", desc: "Dados técnicos organizados e apresentados em português do Brasil." }, const homePath = getLinkHref("/");
{ icon: GitCompare, title: "Comparações visuais", desc: "Tabelas e diagramas para escolher a série certa sem abrir dez datasheets." }, const sobrePath = getLinkHref("/sobre");
{ icon: Globe, title: "Acesso centralizado", desc: "Links diretos para a documentação oficial, repositórios e exemplos." },
{ icon: Code, title: "Código aberto", desc: "Contribuições são bem-vindas no Gitea." },
];
const featuresEn = [ // A lista de textos do inglês ao chinês não traz "O livro": ele só existe em pt.
{ icon: Languages, title: "Curated Content", desc: "Structured technical data presented clearly without datasheet noise." }, const ferramentas = FERRAMENTAS.filter((f) => isPt || !f.soPt).map((f, i) => ({ ...f, titulo: t.ferramentas[i][0], desc: t.ferramentas[i][1] }));
{ icon: GitCompare, title: "Visual comparisons", desc: "Tables and diagrams to select the right series without opening ten datasheets." },
{ icon: Globe, title: "Centralized access", desc: "Direct links to official documentation, repositories and examples." },
{ icon: Code, title: "Open source", desc: "Contributions are welcome on Gitea." },
];
const featuresEs = [ const nomesIdiomas = { pt: "Português", en: "English", es: "Español", fr: "Français", de: "Deutsch", "zh-CN": "简体中文" };
{ icon: Languages, title: "En español", desc: "Datos técnicos organizados y presentados de forma clara en español neutro." },
{ icon: GitCompare, title: "Comparaciones visuales", desc: "Tablas y diagramas para elegir la serie adecuada sin abrir diez hojas de datos." },
{ icon: Globe, title: "Acceso centralizado", desc: "Enlaces directos a la documentación oficial, repositorios y ejemplos." },
{ icon: Code, title: "Código abierto", desc: "Las contribuciones son bienvenidas en Gitea." },
];
const featuresFr = [
{ icon: Languages, title: "En français", desc: "Données techniques organisées et présentées clairement en français." },
{ icon: GitCompare, title: "Comparaisons visuelles", desc: "Tableaux et schémas pour choisir la bonne série sans ouvrir dix datasheets." },
{ icon: Globe, title: "Accès centralisé", desc: "Liens directs vers la documentation officielle, les dépôts et les exemples." },
{ icon: Code, title: "Open source", desc: "Les contributions sont les bienvenues sur Gitea." },
];
const featuresDe = [
{ icon: Languages, title: "Auf Deutsch", desc: "Technische Daten übersichtlich und strukturiert auf Deutsch aufbereitet." },
{ icon: GitCompare, title: "Visuelle Vergleiche", desc: "Tabellen und Diagramme zur Auswahl der richtigen Serie, ohne zehn Datenblätter zu öffnen." },
{ icon: Globe, title: "Zentraler Zugang", desc: "Direkte Links zu offizieller Dokumentation, Repositories und Beispielen." },
{ icon: Code, title: "Open Source", desc: "Beiträge sind auf Gitea herzlich willkommen." },
];
const featuresZh = [
{ icon: Languages, title: "精心整理的内容", desc: "结构化的技术数据,清晰呈现,没有数据手册的冗余。" },
{ icon: GitCompare, title: "可视化对比", desc: "用表格和图示选出合适的系列,无需翻阅十份数据手册。" },
{ icon: Globe, title: "集中入口", desc: "直达官方文档、代码仓库与示例的链接。" },
{ icon: Code, title: "开源", desc: "欢迎在 Gitea 上贡献。" },
];
const features = isZh ? featuresZh : isDe ? featuresDe : isFr ? featuresFr : isEs ? featuresEs : isEn ? featuresEn : featuresPt;
return ( return (
<div className="site-canvas min-h-screen"> <div className="site-canvas min-h-screen">
{/* Metadados E-E-A-T de autoria e organização para o Google */} {/* Metadados E-E-A-T de autoria e organização para o Google */}
<script <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd.paginaSobre(locale)) }} />
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd.paginaSobre(locale)) }}
/>
<script <script
type="application/ld+json" type="application/ld+json"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: JSON.stringify( __html: JSON.stringify(
jsonLd.trilha([ jsonLd.trilha([
{ nome: isZh ? "首页" : isDe ? "Startseite" : isFr ? "Accueil" : isEs ? "Inicio" : isPt ? "Início" : "Home", caminho: isZh ? "/zh-CN" : isDe ? "/de" : isFr ? "/fr" : isEn ? "/en" : isEs ? "/es" : "/" }, { nome: t.inicio, caminho: homePath },
{ nome: isZh ? "关于本项目" : isDe ? "Über das Projekt" : isFr ? "À propos du projet" : isEs ? "Acerca del proyecto" : isPt ? "Sobre o Projeto" : "About the Project", caminho: isZh ? "/zh-CN/about" : isDe ? "/de/ueber-uns" : isFr ? "/fr/a-propos" : isEn ? "/en/about" : isEs ? "/es/acerca" : "/sobre" }, { nome: t.metaTitulo, caminho: sobrePath },
]) ])
), ),
}} }}
@@ -126,26 +450,17 @@ export default async function Sobre({ params }) {
isEn={isEn} isEn={isEn}
isEs={isEs} isEs={isEs}
isFr={isFr} isFr={isFr}
isDe={isDe} isZh={isZh} isDe={isDe}
trail={[{ label: isZh ? "关于" : isDe ? "Über uns" : isFr ? "À propos" : isEs ? "Acerca" : isPt ? "Sobre" : "About" }]} isZh={isZh}
trail={[{ label: t.trilha }]}
icon={Info} icon={Info}
label={isZh ? "独立项目" : isDe ? "Unabhängiges Projekt" : isFr ? "Projet indépendant" : isEs ? "Proyecto independiente" : isPt ? "Projeto independente" : "Independent project"} label={t.label}
title={isZh ? "关于 ESPDocs" : isDe ? "Über ESPDocs" : isFr ? "À propos d'ESPDocs" : isEs ? "Acerca de ESPDocs" : isPt ? "Sobre o ESPDocs" : "About ESPDocs"} title={t.tituloHero}
lede={ lede={t.lede}
isZh ? "一个非官方平台,整理 ESP32 的技术信息,并直接链接到乐鑫官方文档。为开源硬件社区而做。" : isDe
? "Eine inoffizielle deutschsprachige Plattform, die technische Informationen zum ESP32 strukturiert und Sie mit der offiziellen Dokumentation von Espressif verbindet. Entwickelt für die Open-Hardware-Community."
: isFr
? "Une plateforme non officielle en français qui organise les informations techniques de l'ESP32 et vous oriente vers la documentation officielle d'Espressif. Conçue pour la communauté du matériel libre."
: isEs
? "Una plataforma no oficial, en español, que organiza la información técnica del ESP32 y le conecta con la documentación oficial de Espressif. Creada para la comunidad de hardware abierto."
: isPt
? "Uma plataforma não oficial, em português, que organiza as informações técnicas do ESP32 e leva você à documentação oficial da Espressif. Feita para a comunidade de hardware livre."
: "An unofficial platform organizing technical information about the ESP32 and linking directly to official Espressif documentation. Built for the open hardware community."
}
> >
<a href={REPOSITORIO} target="_blank" rel="noopener noreferrer" className="btn btn-primary"> <a href={REPOSITORIO} target="_blank" rel="noopener noreferrer" className="btn btn-primary">
<GiteaMark className="h-4 w-4" /> <GiteaMark className="h-4 w-4" />
{isZh ? "查看代码仓库" : isDe ? "Repository ansehen" : isFr ? "Voir le dépôt" : isEs ? "Ver el repositorio" : isPt ? "Ver o repositório" : "View repository"} {t.repo}
<ArrowUpRight className="h-4 w-4" aria-hidden="true" /> <ArrowUpRight className="h-4 w-4" aria-hidden="true" />
</a> </a>
</PageHero> </PageHero>
@@ -153,92 +468,71 @@ export default async function Sobre({ params }) {
<div className="shell section grid grid-cols-1 gap-10 pt-12 sm:pt-16 lg:grid-cols-[1fr_22rem] lg:gap-14"> <div className="shell section grid grid-cols-1 gap-10 pt-12 sm:pt-16 lg:grid-cols-[1fr_22rem] lg:gap-14">
<div className="min-w-0 max-w-3xl space-y-12"> <div className="min-w-0 max-w-3xl space-y-12">
<section aria-labelledby="missao"> <section aria-labelledby="missao">
<h2 id="missao" className="section-title">{isZh ? "使命" : isDe ? "Mission" : isFr ? "Mission" : isEs ? "Misión" : isPt ? "Missão" : "Mission"}</h2> <h2 id="missao" className="section-title">{t.missaoTitulo}</h2>
<p className="mt-4 text-base leading-relaxed text-muted"> <p className="mt-4 text-base leading-relaxed text-muted">{t.missao}</p>
{isZh ? "通过一个整理规格、对比系列、介绍框架并集中官方文档链接的界面,让 ESP32 生态更易获取、更易理解。目标是节省固件与物联网项目的开发时间。" : isDe
? "Den Zugang zum und das Verständnis für das ESP32-Ökosystem durch eine deutsche Oberfläche erleichtern, die Spezifikationen bündelt, Serien vergleicht, Frameworks vorstellt und offizielle Dokumentationslinks zentralisiert. Ziel ist es, Entwicklungszeit bei Firmware und IoT-Projekten zu sparen."
: isFr
? "Faciliter l'accès et la compréhension de l'écosystème ESP32 avec une interface en français qui organise les spécifications, compare les séries, présente les frameworks et centralise les liens vers la documentation officielle. L'objectif est de vous faire gagner du temps dans le développement de firmware et d'IoT."
: isEs
? "Facilitar el acceso y la comprensión del ecosistema ESP32 con una interfaz en español que organiza especificaciones, compara series, presenta frameworks y centraliza los enlaces a la documentación oficial. El objetivo es ahorrar tiempo en el desarrollo de firmware e IoT."
: isPt
? "Facilitar o acesso e a compreensão do ecossistema ESP32 com uma interface em português que organiza especificações, compara séries, apresenta frameworks e centraliza os links da documentação oficial. O objetivo é economizar o seu tempo no desenvolvimento de firmware e IoT."
: "Facilitate access and understanding of the ESP32 ecosystem with an interface organizing specifications, comparing series, presenting frameworks and centralizing links to official documentation. The goal is to save development time in firmware and IoT projects."}
</p>
</section> </section>
<section aria-labelledby="porque"> <section aria-labelledby="porque">
<h2 id="porque" className="section-title">{isZh ? "ESPDocs 为什么存在" : isDe ? "Warum es ESPDocs gibt" : isFr ? "Pourquoi ESPDocs existe" : isEs ? "¿Por qué existe ESPDocs?" : isPt ? "Por que o ESPDocs existe" : "Why ESPDocs exists"}</h2> <h2 id="porque" className="section-title">{t.porqueTitulo}</h2>
<p className="mt-4 text-base leading-relaxed text-muted"> <p className="mt-4 text-base leading-relaxed text-muted">{t.porque}</p>
{isZh ? "ESP32 的信息常常分散在冗长的数据手册、技术参考手册(TRM)和零散的代码仓库中。ESPDocs 把这些数据浓缩并结构化,便于在深入工程文档之前快速评估。" : isDe </section>
? "Informationen über den ESP32 sind oft über dichte Datenblätter, technische Referenzhandbücher (TRM) und sekundäre Repositories verstreut. ESPDocs verdichtet und strukturiert diese Daten für eine schnelle Vorabauswahl, bevor Sie tiefer in die offizielle Technik einsteigen."
: isFr <section aria-labelledby="tem">
? "Les informations sur l'ESP32 sont souvent dispersées entre des fiches techniques denses, des manuels de référence technique (TRM) et des dépôts secondaires. ESPDocs condense et structure ces données pour une évaluation rapide avant d'approfondir l'ingénierie officielle." <h2 id="tem" className="section-title">{t.temTitulo}</h2>
: isEs <p className="mt-4 text-base leading-relaxed text-muted">{t.temLede}</p>
? "La información sobre el ESP32 suele estar dispersa entre hojas de datos densas, manuales de referencia técnica (TRM) y repositorios secundarios. ESPDocs condensa y estructura estos datos para una evaluación rápida antes de profundizar en la ingeniería oficial."
: isPt
? "As informações sobre os ESP32 costumam estar espalhadas entre datasheets densos, manuais de referência (TRM) e repositórios secundários, tudo em inglês. O ESPDocs condensa e estrutura esses dados para a triagem rápida, antes de você aprofundar na engenharia oficial."
: "Information regarding the ESP32 is often scattered across dense datasheets, Technical Reference Manuals (TRM), and secondary repositories. ESPDocs condenses and structures this data for rapid evaluation before diving into in-depth engineering documentation."}
</p>
<ul className="mt-6 grid gap-3 sm:grid-cols-2"> <ul className="mt-6 grid gap-3 sm:grid-cols-2">
{features.map(({ icon: Icon, title, desc }) => ( {ferramentas.map(({ icon: Icon, href, titulo, desc }) => {
<li key={title} className="card flex items-start gap-4 p-5"> const conteudo = (
<span className="grid h-10 w-10 shrink-0 place-items-center rounded-full bg-accent-soft text-accent"> <>
<Icon className="h-5 w-5" aria-hidden="true" /> <span className="grid h-10 w-10 shrink-0 place-items-center rounded-full bg-accent-soft text-accent">
</span> <Icon className="h-5 w-5" aria-hidden="true" />
<div> </span>
<h3 className="font-semibold text-ink">{title}</h3> <div>
<p className="mt-1 text-sm leading-relaxed text-muted">{desc}</p> <h3 className="font-semibold text-ink">{titulo}</h3>
</div> <p className="mt-1 text-sm leading-relaxed text-muted">{desc}</p>
</div>
</>
);
return (
<li key={titulo}>
{href ? (
<Link href={getLinkHref(href)} className="card flex h-full items-start gap-4 p-5">
{conteudo}
</Link>
) : (
<div className="card flex h-full items-start gap-4 p-5">{conteudo}</div>
)}
</li>
);
})}
</ul>
</section>
<section aria-labelledby="idiomas">
<h2 id="idiomas" className="section-title">{t.idiomasTitulo}</h2>
<p className="mt-4 text-base leading-relaxed text-muted">{t.idiomas}</p>
<ul className="mt-5 flex flex-wrap gap-2">
{LANGS.map((l) => (
<li key={l}>
<Link
href={getLocalizedHref(`/${locale}/sobre`, l)}
hrefLang={l}
lang={l}
className={`btn btn-sm ${l === locale ? "btn-primary" : "btn-ghost"}`}
aria-current={l === locale ? "true" : undefined}
>
{nomesIdiomas[l]}
</Link>
</li> </li>
))} ))}
</ul> </ul>
</section> </section>
<section aria-labelledby="contribuir"> <section aria-labelledby="contribuir">
<h2 id="contribuir" className="section-title">{isZh ? "如何参与贡献" : isDe ? "Wie Sie beitragen können" : isFr ? "Comment contribuer" : isEs ? "Cómo contribuir" : isPt ? "Como contribuir" : "How to contribute"}</h2> <h2 id="contribuir" className="section-title">{t.contribuirTitulo}</h2>
<p className="mt-4 text-base leading-relaxed text-muted"> <p className="mt-4 text-base leading-relaxed text-muted">{t.contribuir}</p>
{isZh ? "欢迎提交翻译修正、表格改进和新的代码示例。项目与社区一同成长。" : isDe
? "Übersetzungskorrekturen, Tabellenanpassungen und neue Codebeispiele sind herzlich willkommen. Das Projekt wächst gemeinsam mit der Community."
: isFr
? "Les corrections de traduction, les ajustements de tableaux et les nouveaux exemples de code sont très appréciés. Le projet grandit avec la communauté."
: isEs
? "Las correcciones de traducción, ajustes en tablas y nuevos ejemplos de código son muy bienvenidos. El proyecto crece junto con la comunidad."
: isPt
? "Correções de tradução, ajustes em tabelas e novos exemplos de código são muito bem-vindos. O projeto cresce com a comunidade."
: "Translation fixes, table refinements and new code examples are welcome. The project grows with the community."}
</p>
<ol className="mt-6 space-y-3"> <ol className="mt-6 space-y-3">
{(isZh ? ["在 Gitea 上 Fork 本仓库。", "实现改进,并核对官方技术资料。", "发起 Pull Request 并说明改动。"] : isDe {t.passos.map((passo, i) => (
? [
"Erstellen Sie einen Fork des Repositories auf Gitea.",
"Implementieren Sie die Verbesserungen und prüfen Sie die offiziellen technischen Referenzen.",
"Eröffnen Sie einen Pull Request mit einer Beschreibung der vorgenommenen Änderungen.",
]
: isFr
? [
"Forkez le dépôt sur Gitea.",
"Apportez les améliorations et vérifiez les références techniques officielles.",
"Ouvrez une Pull Request décrivant les modifications apportées.",
]
: isEs
? [
"Haga un fork del repositorio en Gitea.",
"Implemente las mejoras y verifique las referencias técnicas oficiales.",
"Abra una solicitud de extracción (Pull Request) describiendo los cambios realizados.",
]
: isPt
? [
"Faça o fork do repositório no Gitea.",
"Implemente as melhorias e confira as referências técnicas oficiais.",
"Abra um Pull Request descrevendo os ajustes feitos.",
]
: [
"Fork the repository on Gitea.",
"Implement improvements and verify official technical references.",
"Open a Pull Request describing the changes.",
]
).map((passo, i) => (
<li key={passo} className="card flex items-center gap-4 px-5 py-4"> <li key={passo} className="card flex items-center gap-4 px-5 py-4">
<span className="grid h-8 w-8 shrink-0 place-items-center rounded-full bg-ink text-sm font-semibold text-canvas" aria-hidden="true"> <span className="grid h-8 w-8 shrink-0 place-items-center rounded-full bg-ink text-sm font-semibold text-canvas" aria-hidden="true">
{i + 1} {i + 1}
@@ -250,110 +544,46 @@ export default async function Sobre({ params }) {
</section> </section>
<section aria-labelledby="acessibilidade"> <section aria-labelledby="acessibilidade">
<h2 id="acessibilidade" className="section-title">{isZh ? "无障碍" : isDe ? "Barrierefreiheit" : isFr ? "Accessibilité" : isEs ? "Accesibilidad" : isPt ? "Acessibilidade" : "Accessibility"}</h2> <h2 id="acessibilidade" className="section-title">{t.acessTitulo}</h2>
<p className="mt-4 text-base leading-relaxed text-muted"> <p className="mt-4 text-base leading-relaxed text-muted">{t.acess}</p>
{isZh ? "ESPDocs 重视可读性、高对比度(WCAG AAA 级)和完整的键盘导航。如果你遇到任何无障碍或导航上的障碍,请在代码仓库中提交 issue。" : isDe
? "ESPDocs legt großen Wert auf Lesbarkeit, hohen Kontrast (WCAG-Stufe AAA) und vollständige Tastaturnavigation. Wenn Sie auf Lese- oder Navigationsbarrieren stoßen, eröffnen Sie bitte ein Issue im Repository."
: isFr
? "ESPDocs privilégie la lisibilité, un contraste élevé (niveau AAA du WCAG) et une navigation complète au clavier. Si vous rencontrez un obstacle de lecture ou de navigation, ouvrez un ticket dans le dépôt."
: isEs
? "ESPDocs prioriza la legibilidad, el alto contraste (nivel AAA de WCAG) y la navegación completa por teclado. Si encuentra alguna barrera de lectura o navegación, abra un issue en el repositorio."
: isPt
? "O ESPDocs prioriza a legibilidade, o contraste alto (nível AAA da WCAG) e a navegação completa por teclado. Se encontrar alguma barreira de leitura ou navegação, abra uma issue no repositório."
: "ESPDocs prioritizes readability, high contrast (WCAG AAA level), and full keyboard navigation. If you encounter any accessibility or navigation hurdles, please open an issue in the repository."}
</p>
</section> </section>
</div> </div>
<aside className="space-y-5 lg:sticky lg:top-28 lg:self-start" aria-label={isZh ? "作者与法律声明" : isDe ? "Autor und rechtlicher Hinweis" : isFr ? "Auteur et mentions légales" : isEs ? "Autor y aviso legal" : isPt ? "Autor e aviso legal" : "Author and legal notice"}> <aside className="space-y-5 lg:sticky lg:top-28 lg:self-start" aria-label={t.asideLabel}>
<div className="panel p-6 sm:p-7"> <div className="panel p-6 sm:p-7">
<div className="flex items-center gap-4"> <div className="flex items-center gap-4">
<span className="grid h-16 w-16 shrink-0 place-items-center rounded-2xl border border-line bg-white"> <Image src="/autor.jpg" alt="" aria-hidden="true" width={64} height={64} className="h-16 w-16 shrink-0 rounded-2xl border border-line object-cover" />
<Image src="/logo.png" alt="" aria-hidden="true" width={48} height={48} className="h-12 w-12 object-contain" />
</span>
<div> <div>
<h2 className="font-display text-lg font-semibold text-ink">Lucas Rayan Guerra</h2> <h2 className="font-display text-lg font-semibold text-ink">{SITE.autor}</h2>
<p className="text-sm text-muted">{isZh ? "Ciência Embarcada 创始人" : isDe ? "Gründer von Ciência Embarcada" : isFr ? "Créateur de Ciência Embarcada" : isEs ? "Creador de Ciência Embarcada" : isPt ? "Criador do Ciência Embarcada" : "Creator of Ciência Embarcada"}</p> <p className="text-sm text-muted">{t.autorCargo}</p>
</div> </div>
</div> </div>
<div className="mt-5 space-y-3 text-sm leading-relaxed text-muted"> <div className="mt-5 space-y-3 text-sm leading-relaxed text-muted">
{isZh ? ( {t.autorBio.map((p) => (
<> <p key={p}>{p}</p>
<p> ))}
系统开发技术员,UFRPE 计算机科学在读,区块链与密码学研究者。 </div>
</p> <h3 className="mt-5 text-sm font-semibold text-ink">{t.destaquesTitulo}</h3>
<p> <ul className="mt-2 list-disc space-y-1 pl-5 text-sm leading-relaxed text-muted">
Semine AgriTech 软件总监,并在 REC&apos;n&apos;Play 等活动中作演讲,分享硬件、物联网和网络安全方面的见解。 {t.destaques.map((d) => (
</p> <li key={d}>{d}</li>
</> ))}
) : isDe ? ( </ul>
<> <div className="mt-6 grid gap-2">
<p> <a href={SITE.autorUrl} target="_blank" rel="noopener noreferrer" className="btn btn-primary w-full">
Systementwicklungstechniker, Informatikstudent an der UFRPE und Forscher im Bereich Blockchain und Kryptographie. {t.siteAutor}
</p> <ArrowUpRight className="h-4 w-4" aria-hidden="true" />
<p> </a>
Software-Direktor bei Semine AgriTech und Referent bei Veranstaltungen wie REC&apos;n&apos;Play, der Inhalte zu Hardware, IoT und Cybersicherheit vermittelt. <a href={SITE.blog} target="_blank" rel="noopener noreferrer" className="btn btn-ghost w-full">
</p> {t.blog}
</> <ArrowUpRight className="h-4 w-4" aria-hidden="true" />
) : isFr ? ( </a>
<>
<p>
Technicien en développement de systèmes, étudiant en informatique à l'UFRPE et chercheur en blockchain et cryptographie.
</p>
<p>
Directeur logiciel chez Semine AgriTech et conférencier lors d'événements comme REC&apos;n&apos;Play, partageant des connaissances sur le matériel, l'IoT et la cybersécurité.
</p>
</>
) : isEs ? (
<>
<p>
Técnico en Desarrollo de Sistemas, estudiante de Ciencias de la Computación en la UFRPE e investigador en Blockchain y Criptografía.
</p>
<p>
Director de Software en Semine AgriTech y ponente en eventos como REC&apos;n&apos;Play, compartiendo contenido sobre hardware, IoT y ciberseguridad.
</p>
</>
) : isPt ? (
<>
<p>
Técnico em Desenvolvimento de Sistemas, estudante de Ciência da Computação na UFRPE e pesquisador de
Blockchain e Criptografia.
</p>
<p>
Diretor de Software na Semine AgriTech e palestrante em eventos como o REC&apos;n&apos;Play, compartilha
conteúdo sobre hardware, IoT e cibersegurança.
</p>
</>
) : (
<>
<p>
Systems development technician, Computer Science student at UFRPE, and researcher in Blockchain and Cryptography.
</p>
<p>
Software Director at Semine AgriTech and speaker at events like REC&apos;n&apos;Play, sharing insights on hardware, IoT, and cybersecurity.
</p>
</>
)}
</div> </div>
<a href="https://cienciaembarcada.com.br" target="_blank" rel="noopener noreferrer" className="btn btn-ghost mt-6 w-full">
{isZh ? "访问 Ciência Embarcada" : isDe ? "Ciência Embarcada besuchen" : isFr ? "Visiter Ciência Embarcada" : isEs ? "Visitar Ciência Embarcada" : isPt ? "Visitar o Ciência Embarcada" : "Visit Ciência Embarcada"}
<ArrowUpRight className="h-4 w-4" aria-hidden="true" />
</a>
</div> </div>
<div className="callout callout-warn"> <div className="callout callout-warn">
<p className="font-semibold text-ink">{isZh ? "法律声明" : isDe ? "Rechtlicher Hinweis" : isFr ? "Mentions légales" : isEs ? "Aviso legal" : isPt ? "Aviso legal" : "Legal notice"}</p> <p className="font-semibold text-ink">{t.avisoTitulo}</p>
<p className="mt-1"> <p className="mt-1">{t.aviso}</p>
{isZh ? "ESPDocs 是一个聚合与整理平台。所引用的手册和代码仓库归乐鑫系统(Espressif Systems)所有。在关键任务或商业设计中,请始终查阅官方文档。" : isDe
? "ESPDocs ist ein Aggregator und Kurator. Die referenzierten Handbücher und Repositories sind Eigentum von Espressif Systems. Konsultieren Sie bei geschäftskritischen oder kommerziellen Projekten stets die offizielle Dokumentation."
: isFr
? "ESPDocs est une plateforme d'agrégation et de synthèse. Les manuels et dépôts référencés appartiennent à Espressif Systems. Pour les projets critiques ou commerciaux, consultez systématiquement la documentation officielle."
: isEs
? "ESPDocs es un agregador y organizador. Los manuales y repositorios referenciados pertenecen a Espressif Systems. En proyectos críticos o comerciales, consulte siempre la documentación oficial."
: isPt
? "O ESPDocs é um agregador e organizador. Os manuais e repositórios referenciados pertencem à Espressif Systems. Em projetos críticos ou comerciais, consulte sempre a documentação oficial."
: "ESPDocs is an aggregator and curation platform. Referenced manuals and repositories are property of Espressif Systems. In mission-critical or commercial designs, always consult official documentation."}
</p>
</div> </div>
</aside> </aside>
</div> </div>
+1 -1
View File
@@ -16,7 +16,7 @@ export async function GET() {
const response = await sheets.spreadsheets.values.get({ const response = await sheets.spreadsheets.values.get({
spreadsheetId, spreadsheetId,
range: 'A1:Z1000', range: 'A1:AZ1000',
key: process.env.GOOGLE_SHEETS_API_KEY, key: process.env.GOOGLE_SHEETS_API_KEY,
}); });
+27
View File
@@ -644,6 +644,7 @@
font-weight: 500; font-weight: 500;
letter-spacing: 0; letter-spacing: 0;
text-transform: none; text-transform: none;
white-space: nowrap;
color: var(--muted); color: var(--muted);
text-decoration: none; text-decoration: none;
transition: color 0.2s, background-color 0.2s; transition: color 0.2s, background-color 0.2s;
@@ -752,6 +753,32 @@
from { opacity: 0; transform: translateY(16px); } from { opacity: 0; transform: translateY(16px); }
} }
/* Faixa de placas sugeridas: entra suave e desliza na direção da seta usada.
"Reduzir movimento" já zera as durações na regra global acima. */
.sugestao-faixa {
animation: sugestao-entrada 0.6s cubic-bezier(0.16, 1, 0.3, 1) both;
}
.sugestao-proxima {
animation: sugestao-proxima 0.45s cubic-bezier(0.16, 1, 0.3, 1) both;
}
.sugestao-anterior {
animation: sugestao-anterior 0.45s cubic-bezier(0.16, 1, 0.3, 1) both;
}
@keyframes sugestao-entrada {
from { opacity: 0; transform: translateY(10px); }
}
@keyframes sugestao-proxima {
from { opacity: 0; transform: translateX(20px); }
}
@keyframes sugestao-anterior {
from { opacity: 0; transform: translateX(-20px); }
}
.no-scrollbar { .no-scrollbar {
scrollbar-width: none; scrollbar-width: none;
} }
+5
View File
@@ -62,6 +62,11 @@ export default function sitemap() {
languages[LANG_MAP[l] || l] = `${SITE.url}${getLocalizedHref(`/pt${item.rota}`, l)}`; languages[LANG_MAP[l] || l] = `${SITE.url}${getLocalizedHref(`/pt${item.rota}`, l)}`;
} }
// x-default: quem não casa com nenhum idioma cai no inglês (como na raiz).
if (!item.apenasPt && ENABLED_LOCALES.includes("en")) {
languages["x-default"] = `${SITE.url}${getLocalizedHref(`/pt${item.rota}`, "en")}`;
}
entries.push({ entries.push({
url, url,
lastModified: dataRevisao, lastModified: dataRevisao,
+18 -11
View File
@@ -2,6 +2,7 @@
import { ArrowUpRight, Award, Check, CircleHelp } from "lucide-react"; import { ArrowUpRight, Award, Check, CircleHelp } from "lucide-react";
import { usePathname } from "next/navigation"; import { usePathname } from "next/navigation";
import { isLinkColumn, linkForLocale } from "@/lib/boardLinks";
const HEADER_MAP_EN = { const HEADER_MAP_EN = {
"Nome": "Name", "Nome": "Name",
@@ -105,9 +106,13 @@ export default function BoardCard({ board }) {
const isDe = pathname === "/de" || pathname.startsWith("/de/"); const isDe = pathname === "/de" || pathname.startsWith("/de/");
const isZh = pathname === "/zh-CN" || pathname.startsWith("/zh-CN/"); const isZh = pathname === "/zh-CN" || pathname.startsWith("/zh-CN/");
const mainFields = ["Nome", "Link", "Imagem", "Loja Oficial"]; const locale = isEn ? "en" : isEs ? "es" : isFr ? "fr" : isDe ? "de" : isZh ? "zh-CN" : "pt";
const link = linkForLocale(board, locale);
const imagem = board.Imagem && link ? board.Imagem.replace(/href="[^"]*"/, `href="${link}"`) : board.Imagem;
const technicalFields = Object.keys(board).filter((key) => !mainFields.includes(key) && board[key]); const mainFields = ["Nome", "Imagem", "Loja Oficial"];
const technicalFields = Object.keys(board).filter((key) => !isLinkColumn(key) && !mainFields.includes(key) && board[key]);
const valor = (campo) => board[campo]?.toString().toLowerCase().trim(); const valor = (campo) => board[campo]?.toString().toLowerCase().trim();
const recursos = technicalFields.filter((campo) => ["sim", "opcional"].includes(valor(campo))); const recursos = technicalFields.filter((campo) => ["sim", "opcional"].includes(valor(campo)));
@@ -118,7 +123,7 @@ export default function BoardCard({ board }) {
{board.Imagem && ( {board.Imagem && (
<div <div
className="flex shrink-0 justify-center border-b border-line bg-surface-2 p-4 [&_img]:h-44 [&_img]:w-auto [&_img]:max-w-full [&_img]:object-contain" className="flex shrink-0 justify-center border-b border-line bg-surface-2 p-4 [&_img]:h-44 [&_img]:w-auto [&_img]:max-w-full [&_img]:object-contain"
dangerouslySetInnerHTML={{ __html: board.Imagem }} dangerouslySetInnerHTML={{ __html: imagem }}
/> />
)} )}
@@ -167,14 +172,16 @@ export default function BoardCard({ board }) {
</div> </div>
)} )}
{board.Link && ( {link && (
<a href={board.Link} target="_blank" rel="noopener noreferrer" className="btn btn-primary mt-6 w-full"> <div className="mt-auto pt-6">
{isEn ? "View on AliExpress" : isEs ? "Ver en AliExpress" : isFr ? "Voir sur AliExpress" : isZh ? "在 AliExpress 查看" : isDe ? "Auf AliExpress ansehen" : "Ver no AliExpress"} <a href={link} target="_blank" rel="noopener noreferrer" className="btn btn-primary w-full">
<ArrowUpRight className="h-4 w-4" aria-hidden="true" /> {isEn ? "View on AliExpress" : isEs ? "Ver en AliExpress" : isFr ? "Voir sur AliExpress" : isZh ? "在 AliExpress 查看" : isDe ? "Auf AliExpress ansehen" : "Ver no AliExpress"}
<span className="sr-only"> <ArrowUpRight className="h-4 w-4" aria-hidden="true" />
{isEn ? " (opens in new tab)" : isEs ? " (abre en una pestaña nueva)" : isFr ? " (ouvre un nouvel onglet)" : isZh ? "(在新标签页打开)" : isDe ? " (öffnet in neuem Tab)" : " (abre em nova aba)"} <span className="sr-only">
</span> {isEn ? " (opens in new tab)" : isEs ? " (abre en una pestaña nueva)" : isFr ? " (ouvre un nouvel onglet)" : isZh ? "(在新标签页打开)" : isDe ? " (öffnet in neuem Tab)" : " (abre em nova aba)"}
</a> </span>
</a>
</div>
)} )}
</div> </div>
</article> </article>
+15 -13
View File
@@ -360,7 +360,7 @@ export default function Header() {
<div className="nav-pill flex h-16 items-center justify-between gap-1.5 rounded-full px-2.5 sm:gap-3 sm:px-4"> <div className="nav-pill flex h-16 items-center justify-between gap-1.5 rounded-full px-2.5 sm:gap-3 sm:px-4">
<Link <Link
href={getLinkHref("/")} href={getLinkHref("/")}
className="flex min-h-11 shrink-0 items-center gap-2.5 rounded-full pl-1 pr-2" className="flex min-h-11 min-w-11 shrink-0 items-center gap-2.5 rounded-full pl-1 pr-2"
aria-label={ aria-label={
isPt isPt
? "ESPDocs, página inicial" ? "ESPDocs, página inicial"
@@ -437,15 +437,6 @@ export default function Header() {
</div> </div>
); );
})} })}
{isPt && (
<Link href={getLinkHref("/livro")} className={`nav-link ${isActivePath(pathname, "/livro", currentLocale) ? "is-active" : ""}`} aria-current={isActivePath(pathname, "/livro", currentLocale) ? "page" : undefined}>
Livro
</Link>
)}
<Link href={getLinkHref("/sobre")} className={`nav-link ${isActivePath(pathname, "/sobre", currentLocale) ? "is-active" : ""}`} aria-current={isActivePath(pathname, "/sobre", currentLocale) ? "page" : undefined}>
{isPt ? "Sobre" : isEs ? "Acerca de" : isFr ? "À propos" : isZh ? "关于" : isDe ? "Über uns" : "About"}
</Link>
</nav> </nav>
<div className="flex items-center gap-1 sm:gap-1.5"> <div className="flex items-center gap-1 sm:gap-1.5">
@@ -455,7 +446,9 @@ export default function Header() {
</Link> </Link>
<SearchDialog /> <SearchDialog />
<LanguageSelector /> <LanguageSelector />
<ThemeToggle isPt={isPt} isEs={isEs} isFr={isFr} isDe={isDe} isZh={isZh} /> <div className="max-[389px]:hidden">
<ThemeToggle isPt={isPt} isEs={isEs} isFr={isFr} isDe={isDe} isZh={isZh} />
</div>
<button <button
ref={menuButtonRef} ref={menuButtonRef}
type="button" type="button"
@@ -523,13 +516,14 @@ export default function Header() {
ref={closeRef} ref={closeRef}
type="button" type="button"
onClick={() => setDrawerOpen(false)} onClick={() => setDrawerOpen(false)}
className="grid h-10 w-10 place-items-center rounded-full border border-line text-ink transition-colors hover:bg-surface-2" className="grid h-11 w-11 place-items-center rounded-full border border-line text-ink transition-colors hover:bg-surface-2"
aria-label={isPt ? "Fechar menu" : isEs ? "Cerrar menú" : isFr ? "Fermer le menu" : isZh ? "关闭菜单" : isDe ? "Menü schließen" : "Close menu"} aria-label={isPt ? "Fechar menu" : isEs ? "Cerrar menú" : isFr ? "Fermer le menu" : isZh ? "关闭菜单" : isDe ? "Menü schließen" : "Close menu"}
> >
<X className="h-5 w-5" aria-hidden="true" /> <X className="h-5 w-5" aria-hidden="true" />
</button> </button>
</div> </div>
<div className="min-h-0 flex-1 overflow-y-auto overscroll-contain">
{isPt && ( {isPt && (
<div className="px-4 pb-2"> <div className="px-4 pb-2">
<Link <Link
@@ -557,7 +551,7 @@ export default function Header() {
)} )}
<nav <nav
className="flex-1 overflow-y-auto px-3 py-2" className="px-3 py-2"
aria-label={isPt ? "Navegação móvel" : isEs ? "Navegación móvil" : isFr ? "Navigation mobile" : isZh ? "移动端导航" : isDe ? "Mobile Navigation" : "Mobile navigation"} aria-label={isPt ? "Navegação móvel" : isEs ? "Navegación móvil" : isFr ? "Navigation mobile" : isZh ? "移动端导航" : isDe ? "Mobile Navigation" : "Mobile navigation"}
> >
{visibleMobileLinks.map((link) => ( {visibleMobileLinks.map((link) => (
@@ -574,6 +568,14 @@ export default function Header() {
))} ))}
</nav> </nav>
<div className="flex items-center justify-between gap-3 px-6 py-2 min-[390px]:hidden">
<span className="text-sm font-medium text-ink-soft">
{isPt ? "Tema" : isEs ? "Tema" : isFr ? "Thème" : isZh ? "主题" : isDe ? "Design" : "Theme"}
</span>
<ThemeToggle isPt={isPt} isEs={isEs} isFr={isFr} isDe={isDe} isZh={isZh} />
</div>
</div>
<div className="p-4 pt-2"> <div className="p-4 pt-2">
<Link href={getLinkHref("/seletor")} onClick={() => setDrawerOpen(false)} className="btn btn-primary w-full"> <Link href={getLinkHref("/seletor")} onClick={() => setDrawerOpen(false)} className="btn btn-primary w-full">
<SlidersHorizontal className="h-4 w-4" aria-hidden="true" /> <SlidersHorizontal className="h-4 w-4" aria-hidden="true" />
+14 -14
View File
@@ -87,7 +87,7 @@ const GRUPOS_EN = [
cor: "text-accent", cor: "text-accent",
explicacao: explicacao:
"Input only pins. They cannot be configured as outputs and do not have internal pull-up or pull-down resistors. If needed, add them to your external circuit.", "Input only pins. They cannot be configured as outputs and do not have internal pull-up or pull-down resistors. If needed, add them to your external circuit.",
combina: (avisos) => /apenas de entrada|input only/i.test(avisos), combina: (avisos) => /input[- ]only/i.test(avisos),
}, },
{ {
id: "flash", id: "flash",
@@ -98,7 +98,7 @@ const GRUPOS_EN = [
"Already connected to the memory where firmware is stored and executed. Using them as general-purpose GPIO typically crashes the chip or corrupts execution. In modules with internal flash, they are not brought out to the package pins.", "Already connected to the memory where firmware is stored and executed. Using them as general-purpose GPIO typically crashes the chip or corrupts execution. In modules with internal flash, they are not brought out to the package pins.",
combina: (avisos) => combina: (avisos) =>
/(flash|psram)/i.test(avisos) && /(flash|psram)/i.test(avisos) &&
/(dedicad|utilizado pela mem|não deve ser utilizado|não é recomendado|connected to|dedicated to|should not be used|not recommended)/i.test(avisos), /(dedicated|used by|must not be used|not recommended)/i.test(avisos),
}, },
{ {
id: "strapping", id: "strapping",
@@ -109,7 +109,7 @@ const GRUPOS_EN = [
"The chip samples the logic level of these pins during reset to determine the boot mode. You can use them after booting, but external circuitry must not force the wrong level during reset, or the board will fail to boot or enter download mode unexpectedly.", "The chip samples the logic level of these pins during reset to determine the boot mode. You can use them after booting, but external circuitry must not force the wrong level during reset, or the board will fail to boot or enter download mode unexpectedly.",
combina: (avisos, cats) => combina: (avisos, cats) =>
cats.includes("Strapping") || cats.includes("Strapping") ||
/strapping|modo de boot|modo de inicialização|boot mode/i.test(avisos), /strapping|boot mode/i.test(avisos),
}, },
{ {
id: "debug", id: "debug",
@@ -118,7 +118,7 @@ const GRUPOS_EN = [
cor: "text-accent", cor: "text-accent",
explicacao: explicacao:
"These are the flashing UART and JTAG lines. They can still be used as GPIO, but reusing them removes the ability to flash and debug the board without disconnecting connected peripherals.", "These are the flashing UART and JTAG lines. They can still be used as GPIO, but reusing them removes the ability to flash and debug the board without disconnecting connected peripherals.",
combina: (avisos, cats) => /debugging|gravação/i.test(avisos) || cats.includes("JTAG"), combina: (avisos, cats) => /debugging|flashing/i.test(avisos) || cats.includes("JTAG"),
}, },
{ {
id: "usb", id: "usb",
@@ -136,7 +136,7 @@ const GRUPOS_EN = [
cor: "text-gold", cor: "text-gold",
explicacao: explicacao:
"Require a defined hardware logic level: external pull-up or RC delay circuit. Leaving them floating causes random resets or unstable boot behavior.", "Require a defined hardware logic level: external pull-up or RC delay circuit. Leaving them floating causes random resets or unstable boot behavior.",
combina: (avisos) => /flutuando|floating/i.test(avisos), combina: (avisos) => /leave this pin floating/i.test(avisos),
}, },
]; ];
@@ -220,7 +220,7 @@ const GRUPOS_FR = [
"Déjà connectées à la mémoire depuis laquelle le firmware est exécuté. Les utiliser comme GPIO standard plante généralement la puce ou corrompt l'exécution. Sur les modules avec flash interne, elles ne sont même pas reliées aux broches du boîtier.", "Déjà connectées à la mémoire depuis laquelle le firmware est exécuté. Les utiliser comme GPIO standard plante généralement la puce ou corrompt l'exécution. Sur les modules avec flash interne, elles ne sont même pas reliées aux broches du boîtier.",
combina: (avisos) => combina: (avisos) =>
/(flash|psram)/i.test(avisos) && /(flash|psram)/i.test(avisos) &&
/(dédi|mémoire|ne doit pas|déconseillé|connected to|dedicated to|should not)/i.test(avisos), /(dédi|utilisé par la mém|ne doit pas|déconseillé)/i.test(avisos),
}, },
{ {
id: "strapping", id: "strapping",
@@ -231,7 +231,7 @@ const GRUPOS_FR = [
"La puce lit l'état logique de ces broches au moment du reset pour déterminer son mode de démarrage. Vous pouvez les utiliser après le boot, mais le circuit externe ne doit pas forcer un niveau incorrect pendant le reset, sinon la carte ne démarrera pas ou entrera en mode flashage de manière inattendue.", "La puce lit l'état logique de ces broches au moment du reset pour déterminer son mode de démarrage. Vous pouvez les utiliser après le boot, mais le circuit externe ne doit pas forcer un niveau incorrect pendant le reset, sinon la carte ne démarrera pas ou entrera en mode flashage de manière inattendue.",
combina: (avisos, cats) => combina: (avisos, cats) =>
cats.includes("Strapping") || cats.includes("Strapping") ||
/strapping|mode de démarrage|démarrage|boot mode/i.test(avisos), /strapping|mode de démarrage|boot mode/i.test(avisos),
}, },
{ {
id: "debug", id: "debug",
@@ -240,7 +240,7 @@ const GRUPOS_FR = [
cor: "text-accent", cor: "text-accent",
explicacao: explicacao:
"Ce sont l'UART de programmation et les lignes JTAG. Elles restent utilisables comme GPIO, mais les réutiliser supprime la possibilité de flasher et de déboguer la carte sans déconnecter ce qui y est relié.", "Ce sont l'UART de programmation et les lignes JTAG. Elles restent utilisables comme GPIO, mais les réutiliser supprime la possibilité de flasher et de déboguer la carte sans déconnecter ce qui y est relié.",
combina: (avisos, cats) => /débogage|programmation|debugging/i.test(avisos) || cats.includes("JTAG"), combina: (avisos, cats) => /débogage|flashage|debugging/i.test(avisos) || cats.includes("JTAG"),
}, },
{ {
id: "usb", id: "usb",
@@ -258,7 +258,7 @@ const GRUPOS_FR = [
cor: "text-gold", cor: "text-gold",
explicacao: explicacao:
"Nécessitent un niveau logique matériel défini : pull-up externe ou circuit RC de temporisation. Les laisser flottantes entraîne des redémarrages aléatoires ou un démarrage instable.", "Nécessitent un niveau logique matériel défini : pull-up externe ou circuit RC de temporisation. Les laisser flottantes entraîne des redémarrages aléatoires ou un démarrage instable.",
combina: (avisos) => /flottant|floating/i.test(avisos), combina: (avisos) => /laissez pas cette broche flottante/i.test(avisos),
}, },
]; ];
@@ -281,7 +281,7 @@ const GRUPOS_DE = [
"Bereits mit dem Speicher verbunden, aus dem die Firmware ausgeführt wird. Die Verwendung als universelle GPIOs führt meist zu Abstürzen oder Speicherbeschädigungen. Bei Modulen mit internem Flash sind sie nicht nach außen geführt.", "Bereits mit dem Speicher verbunden, aus dem die Firmware ausgeführt wird. Die Verwendung als universelle GPIOs führt meist zu Abstürzen oder Speicherbeschädigungen. Bei Modulen mit internem Flash sind sie nicht nach außen geführt.",
combina: (avisos) => combina: (avisos) =>
/(flash|psram)/i.test(avisos) && /(flash|psram)/i.test(avisos) &&
/(dediziert|speicher|sollte nicht|nicht empfohlen|connected to|dedicated to|should not)/i.test(avisos), /(dediziert|belegt|darf nicht|nicht empfohlen)/i.test(avisos),
}, },
{ {
id: "strapping", id: "strapping",
@@ -301,7 +301,7 @@ const GRUPOS_DE = [
cor: "text-accent", cor: "text-accent",
explicacao: explicacao:
"Dies sind die Flash-UART- und JTAG-Leitungen. Sie können als GPIO genutzt werden, doch dadurch entfällt die Möglichkeit, das Board ohne Trennen der Peripherie zu programmieren oder zu debuggen.", "Dies sind die Flash-UART- und JTAG-Leitungen. Sie können als GPIO genutzt werden, doch dadurch entfällt die Möglichkeit, das Board ohne Trennen der Peripherie zu programmieren oder zu debuggen.",
combina: (avisos, cats) => /debugging|programmierung/i.test(avisos) || cats.includes("JTAG"), combina: (avisos, cats) => /debugging|flashen/i.test(avisos) || cats.includes("JTAG"),
}, },
{ {
id: "usb", id: "usb",
@@ -319,7 +319,7 @@ const GRUPOS_DE = [
cor: "text-gold", cor: "text-gold",
explicacao: explicacao:
"Erfordern einen definierten Hardwarepegel: externen Pull-up oder RC-Verzögerungsschaltung. Bleiben sie unbeschaltet (floating), führt dies zu sporadischen Resets oder instabilem Bootverhalten.", "Erfordern einen definierten Hardwarepegel: externen Pull-up oder RC-Verzögerungsschaltung. Bleiben sie unbeschaltet (floating), führt dies zu sporadischen Resets oder instabilem Bootverhalten.",
combina: (avisos) => /unbeschaltet|floating/i.test(avisos), combina: (avisos) => /nicht unbeschaltet( \(floating\))? lassen/i.test(avisos),
}, },
]; ];
const GRUPOS_ZH = [ const GRUPOS_ZH = [
@@ -341,7 +341,7 @@ const GRUPOS_ZH = [
"已连接到存放并执行固件的存储器。把它们当作通用 GPIO 使用,通常会使芯片崩溃或破坏程序执行。在带内置闪存的模组中,这些引脚不会引出到封装引脚上。", "已连接到存放并执行固件的存储器。把它们当作通用 GPIO 使用,通常会使芯片崩溃或破坏程序执行。在带内置闪存的模组中,这些引脚不会引出到封装引脚上。",
combina: (avisos) => combina: (avisos) =>
/(flash|psram)/i.test(avisos) && /(flash|psram)/i.test(avisos) &&
/(专用于|存储使用|不得用于|不建议|dedicated to)/i.test(avisos), /(专用|存储使用|不得用于|不建议)/i.test(avisos),
}, },
{ {
id: "strapping", id: "strapping",
@@ -379,7 +379,7 @@ const GRUPOS_ZH = [
cor: "text-gold", cor: "text-gold",
explicacao: explicacao:
"需要确定的硬件逻辑电平:外部上拉或 RC 延时电路。悬空会导致随机复位或启动不稳定。", "需要确定的硬件逻辑电平:外部上拉或 RC 延时电路。悬空会导致随机复位或启动不稳定。",
combina: (avisos) => /浮空|悬空|floating/i.test(avisos), combina: (avisos) => /请勿让该引脚浮空/i.test(avisos),
}, },
]; ];
+132
View File
@@ -0,0 +1,132 @@
"use client";
import { useEffect, useMemo, useState } from "react";
import { usePathname } from "next/navigation";
import { ArrowUpRight, ChevronLeft, ChevronRight } from "lucide-react";
import { boardsForChips, imageOf, reasonFor, weightedOrder } from "@/lib/boardSuggestions";
import { linkForLocale } from "@/lib/boardLinks";
const TEXTOS = {
pt: { titulo: "Placa sugerida", afiliado: "Link de afiliado", ver: "Ver no AliExpress", anterior: "Placa anterior", proxima: "Próxima placa", de: "de", aba: "(abre em nova aba)", regiao: "Placas sugeridas com estes chips" },
en: { titulo: "Suggested board", afiliado: "Affiliate link", ver: "View on AliExpress", anterior: "Previous board", proxima: "Next board", de: "of", aba: "(opens in new tab)", regiao: "Suggested boards with these chips" },
es: { titulo: "Placa sugerida", afiliado: "Enlace de afiliado", ver: "Ver en AliExpress", anterior: "Placa anterior", proxima: "Siguiente placa", de: "de", aba: "(abre en una pestaña nueva)", regiao: "Placas sugeridas con estos chips" },
fr: { titulo: "Carte suggérée", afiliado: "Lien d'affiliation", ver: "Voir sur AliExpress", anterior: "Carte précédente", proxima: "Carte suivante", de: "sur", aba: "(ouvre un nouvel onglet)", regiao: "Cartes suggérées avec ces puces" },
de: { titulo: "Board-Vorschlag", afiliado: "Affiliate-Link", ver: "Auf AliExpress ansehen", anterior: "Vorheriges Board", proxima: "Nächstes Board", de: "von", aba: "(öffnet in neuem Tab)", regiao: "Board-Vorschläge mit diesen Chips" },
"zh-CN": { titulo: "推荐开发板", afiliado: "推广链接", ver: "在 AliExpress 查看", anterior: "上一块开发板", proxima: "下一块开发板", de: "/", aba: "(在新标签页打开)", regiao: "搭载这些芯片的推荐开发板" },
};
function localeFrom(pathname) {
for (const loc of ["en", "es", "fr", "de", "zh-CN"]) {
if (pathname === `/${loc}` || pathname.startsWith(`/${loc}/`)) return loc;
}
return "pt";
}
// Uma só busca por visita, compartilhada entre as instâncias; falha vira "sem placas".
let promessaDePlacas;
function carregarPlacas() {
if (!promessaDePlacas) {
promessaDePlacas = fetch("/api/placas")
.then((resposta) => (resposta.ok ? resposta.json() : Promise.reject(new Error(String(resposta.status)))))
.then((json) => json.data || [])
.catch(() => {
promessaDePlacas = undefined;
return [];
});
}
return promessaDePlacas;
}
// Faixa discreta com uma placa sorteada dos chips da página. Complementa a documentação:
// fica parada, só troca quando o leitor usa as setas, e some se não houver placa.
export default function PlacasSugeridas({ chips, className = "" }) {
const pathname = usePathname() || "";
const locale = localeFrom(pathname);
const t = TEXTOS[locale];
const chipsKey = [...chips].sort().join("|");
const [placas, setPlacas] = useState(null);
const [indice, setIndice] = useState(0);
const [sentido, setSentido] = useState("entrada");
useEffect(() => {
let ativo = true;
carregarPlacas().then((dados) => ativo && setPlacas(dados));
return () => {
ativo = false;
};
}, []);
// O sorteio refaz só quando os dados ou o conjunto de chips mudam, não a cada render.
const ordem = useMemo(() => {
if (!placas) return null;
return weightedOrder(boardsForChips(placas, chipsKey ? chipsKey.split("|") : [], locale));
}, [placas, chipsKey, locale]);
useEffect(() => {
setIndice(0);
setSentido("entrada");
}, [chipsKey]);
// Enquanto carrega, reserva a altura da faixa para a página não pular quando ela aparece.
if (ordem === null) return <div aria-hidden="true" className={`min-h-[5.5rem] ${className}`} />;
if (ordem.length === 0) return null;
const placa = ordem[Math.min(indice, ordem.length - 1)];
const total = ordem.length;
const imagem = imageOf(placa);
const motivo = reasonFor(placa, locale);
const mostrarChip = chips.length > 1;
const ir = (passo) => {
setSentido(passo > 0 ? "proxima" : "anterior");
setIndice((atual) => (atual + passo + total) % total);
};
return (
<section aria-label={t.regiao} className={`sugestao-faixa card-quiet flex flex-col gap-4 p-4 md:flex-row md:items-center md:gap-5 ${className}`}>
<div
key={`${placa.Nome}-${indice}`}
className={`flex min-w-0 flex-1 items-center gap-4 ${sentido === "proxima" ? "sugestao-proxima" : sentido === "anterior" ? "sugestao-anterior" : ""}`}
>
{imagem && (
// eslint-disable-next-line @next/next/no-img-element
<img src={imagem} alt="" width={56} height={56} loading="lazy" className="h-14 w-14 shrink-0 rounded-lg bg-white object-contain" />
)}
<div className="min-w-0">
<p className="flex flex-wrap items-center gap-x-2 text-xs font-semibold text-accent">
<span>{mostrarChip ? placa["Série"] : t.titulo}</span>
<span className="font-medium text-muted">· {t.afiliado}</span>
</p>
<p className="mt-0.5 truncate font-display text-base font-semibold tracking-[-0.02em] text-ink">{placa.Nome}</p>
<p className="truncate text-sm text-muted">{motivo}</p>
</div>
</div>
<div className="flex shrink-0 flex-col gap-3 sm:flex-row sm:items-center sm:gap-2">
{total > 1 && (
<div className="flex items-center justify-between gap-1 sm:justify-start">
<button type="button" onClick={() => ir(-1)} className="btn btn-ghost btn-icon" aria-label={t.anterior}>
<ChevronLeft className="h-4 w-4" aria-hidden="true" />
</button>
<span className="min-w-[3.25rem] text-center text-xs tabular-nums text-muted">
{Math.min(indice, total - 1) + 1} {t.de} {total}
</span>
<button type="button" onClick={() => ir(1)} className="btn btn-ghost btn-icon" aria-label={t.proxima}>
<ChevronRight className="h-4 w-4" aria-hidden="true" />
</button>
</div>
)}
<a href={linkForLocale(placa, locale)} target="_blank" rel="sponsored noopener noreferrer" className="btn btn-primary btn-sm w-full sm:w-auto">
{t.ver}
<ArrowUpRight className="h-4 w-4" aria-hidden="true" />
<span className="sr-only"> {t.aba}</span>
</a>
</div>
<p className="sr-only" aria-live="polite">
{`${placa.Nome}, ${Math.min(indice, total - 1) + 1} ${t.de} ${total}`}
</p>
</section>
);
}
+11 -8
View File
@@ -88,11 +88,11 @@ const TIPOS_ZH = {
const INTELIGENTES = new Set(["resposta", "pino"]); const INTELIGENTES = new Set(["resposta", "pino"]);
const EXEMPLOS_EN = ["flash s3", "usb pins c6", "gpio0 esp32", "brownout", "LVGL", "FreeRTOS"]; const EXEMPLOS_EN = ["flash s3", "usb pins c6", "pin 32 esp32-s3", "gpio0 esp32", "brownout", "LVGL"];
const EXEMPLOS_ES = ["flash s3", "pines usb c6", "gpio0 esp32", "brownout", "LVGL", "FreeRTOS"]; const EXEMPLOS_ES = ["flash s3", "pines usb c6", "pin 32 esp32-s3", "gpio0 esp32", "brownout", "LVGL"];
const EXEMPLOS_FR = ["flash s3", "broches usb c6", "gpio0 esp32", "brownout", "LVGL", "FreeRTOS"]; const EXEMPLOS_FR = ["flash s3", "broches usb c6", "broche 32 esp32-s3", "gpio0 esp32", "brownout", "LVGL"];
const EXEMPLOS_DE = ["flash s3", "usb pins c6", "gpio0 esp32", "brownout", "LVGL", "FreeRTOS"]; const EXEMPLOS_DE = ["flash s3", "usb pins c6", "pin 32 esp32-s3", "gpio0 esp32", "brownout", "LVGL"];
const EXEMPLOS_ZH = ["s3 闪存", "c6 usb 引脚", "esp32 gpio0", "brownout", "LVGL", "FreeRTOS"]; const EXEMPLOS_ZH = ["s3 闪存", "c6 usb 引脚", "esp32-s3 32号引脚", "esp32 gpio0", "brownout", "LVGL"];
function Destaque({ texto, termos }) { function Destaque({ texto, termos }) {
if (!termos.length) return texto; if (!termos.length) return texto;
@@ -298,7 +298,7 @@ export default function SearchDialog() {
} }
} }
const entendeu = interpretacao.chips.length > 0 || interpretacao.topicos.length > 0; const entendeu = interpretacao.chips.length > 0 || interpretacao.topicos.length > 0 || (interpretacao.pinos?.length ?? 0) > 0;
return ( return (
<> <>
@@ -361,6 +361,9 @@ export default function SearchDialog() {
{interpretacao.chips.map((c) => ( {interpretacao.chips.map((c) => (
<Pilula key={c.chave} forte>{c.nome}</Pilula> <Pilula key={c.chave} forte>{c.nome}</Pilula>
))} ))}
{interpretacao.pinos?.map((p) => (
<Pilula key={p}>{p}</Pilula>
))}
{interpretacao.topicos.map((t) => ( {interpretacao.topicos.map((t) => (
<Pilula key={t.id}>{t.nome}</Pilula> <Pilula key={t.id}>{t.nome}</Pilula>
))} ))}
@@ -489,8 +492,8 @@ export default function SearchDialog() {
{item.linhas && ( {item.linhas && (
<dl className="mt-2 grid gap-x-4 gap-y-1 text-xs sm:grid-cols-[auto_1fr]"> <dl className="mt-2 grid gap-x-4 gap-y-1 text-xs sm:grid-cols-[auto_1fr]">
{item.linhas.map((l) => ( {item.linhas.map((l, i) => (
<div key={l.k} className="contents"> <div key={`${l.k}-${i}`} className="contents">
<dt className="font-semibold text-ink-soft">{l.k}</dt> <dt className="font-semibold text-ink-soft">{l.k}</dt>
<dd className="text-ink">{l.v}</dd> <dd className="text-ink">{l.v}</dd>
</div> </div>
+3 -3
View File
@@ -7,7 +7,7 @@
"HF-Antennenanschluss (Wi-Fi und Bluetooth)" "HF-Antennenanschluss (Wi-Fi und Bluetooth)"
], ],
"categorias": [ "categorias": [
"Antenne", "Antena",
"RF" "RF"
], ],
"avisos": [ "avisos": [
@@ -301,7 +301,7 @@
"UART" "UART"
], ],
"avisos": [ "avisos": [
"UART0 receive pin (Serial RX by default for flashing and monitoring)." "UART0-Empfangs-Pin (standardmäßig serieller RX zum Flashen und Überwachen)."
] ]
}, },
{ {
@@ -317,7 +317,7 @@
"UART" "UART"
], ],
"avisos": [ "avisos": [
"UART0 transmit pin (Serial TX by default for flashing and monitoring)." "UART0-Sende-Pin (standardmäßig serieller TX zum Flashen und Überwachen)."
] ]
}, },
{ {
+23 -23
View File
@@ -7,7 +7,7 @@
"Ein- und Ausgang für HF-Signale (Wi-Fi und Bluetooth) zur Antenne" "Ein- und Ausgang für HF-Signale (Wi-Fi und Bluetooth) zur Antenne"
], ],
"categorias": [ "categorias": [
"Antenne" "Antena"
], ],
"avisos": [ "avisos": [
"Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts" "Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts"
@@ -25,8 +25,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -42,8 +42,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -97,7 +97,7 @@
"avisos": [ "avisos": [
"Während des Resets ist dieser Pin als Eingang konfiguriert", "Während des Resets ist dieser Pin als Eingang konfiguriert",
"Nach dem Reset ist dieser Pin als Eingang konfiguriert", "Nach dem Reset ist dieser Pin als Eingang konfiguriert",
"This pin does not set boot mode, but connecting it with a pull-up is recommended to prevent glitches (see datasheet section 3.1)" "Dieser Pin legt den Boot-Modus nicht fest, aber der Anschluss eines Pull-ups wird empfohlen, um Störimpulse zu vermeiden (siehe Datenblatt Abschnitt 3.1)"
] ]
}, },
{ {
@@ -113,7 +113,7 @@
"avisos": [ "avisos": [
"Ein High-Pegel an diesem Pin aktiviert den Betrieb des Chips", "Ein High-Pegel an diesem Pin aktiviert den Betrieb des Chips",
"Ein Low-Pegel an diesem Pin deaktiviert den Betrieb des Chips", "Ein Low-Pegel an diesem Pin deaktiviert den Betrieb des Chips",
"Do not leave this pin floating, use an external pull-up resistor" "Diesen Pin nicht unbeschaltet lassen, externen Pull-up-Widerstand verwenden"
] ]
}, },
{ {
@@ -187,8 +187,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -292,8 +292,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -311,8 +311,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts", "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts",
"Kann nur als GPIO genutzt werden, wenn der Flash-Speicher über eine externe Quelle versorgt wird" "Kann nur als GPIO genutzt werden, wenn der Flash-Speicher über eine externe Quelle versorgt wird"
] ]
@@ -333,7 +333,7 @@
"Während des Resets ist der interne Pull-up aktiviert", "Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -352,7 +352,7 @@
"Während des Resets ist der interne Pull-up aktiviert", "Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -371,7 +371,7 @@
"Während des Resets ist der interne Pull-up aktiviert", "Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -390,7 +390,7 @@
"Während des Resets ist der interne Pull-up aktiviert", "Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -409,7 +409,7 @@
"Während des Resets ist der interne Pull-up aktiviert", "Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -428,7 +428,7 @@
"Während des Resets ist der interne Pull-up aktiviert", "Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -537,8 +537,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -554,8 +554,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
+34 -34
View File
@@ -11,8 +11,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -40,8 +40,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -85,8 +85,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -103,7 +103,7 @@
"avisos": [ "avisos": [
"Ein High-Pegel an diesem Pin aktiviert den Betrieb des Chips", "Ein High-Pegel an diesem Pin aktiviert den Betrieb des Chips",
"Ein Low-Pegel an diesem Pin deaktiviert den Betrieb des Chips", "Ein Low-Pegel an diesem Pin deaktiviert den Betrieb des Chips",
"Do not leave this pin floating, use an external pull-up resistor" "Diesen Pin nicht unbeschaltet lassen, externen Pull-up-Widerstand verwenden"
] ]
}, },
{ {
@@ -118,8 +118,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -450,8 +450,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -471,7 +471,7 @@
"Während des Resets ist der interne Pull-up aktiviert", "Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -490,7 +490,7 @@
"Während des Resets ist der interne Pull-up aktiviert", "Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -509,7 +509,7 @@
"Während des Resets ist der interne Pull-up aktiviert", "Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -528,7 +528,7 @@
"Während des Resets ist der interne Pull-up aktiviert", "Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -545,8 +545,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts", "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts",
"Kann nur als GPIO genutzt werden, wenn der externe Flash-Speicher über eine externe Quelle versorgt wird" "Kann nur als GPIO genutzt werden, wenn der externe Flash-Speicher über eine externe Quelle versorgt wird"
] ]
@@ -567,7 +567,7 @@
"Während des Resets ist der interne Pull-up aktiviert", "Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -586,7 +586,7 @@
"Während des Resets ist der interne Pull-up aktiviert", "Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -605,7 +605,7 @@
"Während des Resets ist der interne Pull-up aktiviert", "Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -717,8 +717,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -734,8 +734,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -751,8 +751,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -764,7 +764,7 @@
"HF-Antennenanschluss für 2-GHz-Band" "HF-Antennenanschluss für 2-GHz-Band"
], ],
"categorias": [ "categorias": [
"Antenne" "Antena"
], ],
"avisos": [ "avisos": [
"Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts" "Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts"
@@ -794,8 +794,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -811,8 +811,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -828,8 +828,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -853,7 +853,7 @@
"HF-Antennenanschluss für 5-GHz-Band" "HF-Antennenanschluss für 5-GHz-Band"
], ],
"categorias": [ "categorias": [
"Antenne" "Antena"
], ],
"avisos": [ "avisos": [
"Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts" "Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts"
+22 -22
View File
@@ -7,7 +7,7 @@
"HF-Antennenanschluss" "HF-Antennenanschluss"
], ],
"categorias": [ "categorias": [
"Antenne" "Antena"
], ],
"avisos": [ "avisos": [
"Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts" "Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts"
@@ -25,8 +25,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -42,8 +42,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -60,7 +60,7 @@
"avisos": [ "avisos": [
"Ein High-Pegel an diesem Pin aktiviert den Betrieb des Chips", "Ein High-Pegel an diesem Pin aktiviert den Betrieb des Chips",
"Ein Low-Pegel an diesem Pin deaktiviert den Betrieb des Chips", "Ein Low-Pegel an diesem Pin deaktiviert den Betrieb des Chips",
"Do not leave this pin floating, use an external pull-up resistor" "Diesen Pin nicht unbeschaltet lassen, externen Pull-up-Widerstand verwenden"
] ]
}, },
{ {
@@ -75,8 +75,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -380,7 +380,7 @@
"Während des Resets ist der interne Pull-up aktiviert", "Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -399,7 +399,7 @@
"Während des Resets ist der interne Pull-up aktiviert", "Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -418,7 +418,7 @@
"Während des Resets ist der interne Pull-up aktiviert", "Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -435,8 +435,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts", "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts",
"Kann nur als GPIO genutzt werden, wenn der externe Flash-Speicher über eine externe Quelle versorgt wird" "Kann nur als GPIO genutzt werden, wenn der externe Flash-Speicher über eine externe Quelle versorgt wird"
] ]
@@ -457,7 +457,7 @@
"Während des Resets ist der interne Pull-up aktiviert", "Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -476,7 +476,7 @@
"Während des Resets ist der interne Pull-up aktiviert", "Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -495,7 +495,7 @@
"Während des Resets ist der interne Pull-up aktiviert", "Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -527,8 +527,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -692,8 +692,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -737,8 +737,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
+29 -29
View File
@@ -7,11 +7,11 @@
"HF-Antennenanschluss (Wi-Fi und Bluetooth)" "HF-Antennenanschluss (Wi-Fi und Bluetooth)"
], ],
"categorias": [ "categorias": [
"Antenne", "Antena",
"RF" "RF"
], ],
"avisos": [ "avisos": [
"Dedicated 2.4 GHz RF pin. Requires 50-ohm impedance matching." "Dedizierter 2,4-GHz-HF-Pin. Erfordert eine 50-Ohm-Impedanzanpassung."
] ]
}, },
{ {
@@ -54,7 +54,7 @@
], ],
"avisos": [ "avisos": [
"Aktiv High. Auf High-Pegel ziehen, um den Chip zu starten.", "Aktiv High. Auf High-Pegel ziehen, um den Chip zu starten.",
"Do not leave this pin floating. An external RC circuit is recommended for clean reset." "Diesen Pin nicht unbeschaltet lassen. Für einen sauberen Reset wird eine externe RC-Beschaltung empfohlen."
] ]
}, },
{ {
@@ -84,7 +84,7 @@
"Clock" "Clock"
], ],
"avisos": [ "avisos": [
"Low-power multifunction pin. Can connect to external 32 kHz crystal (Input P)." "Multifunktions-Pin mit niedrigem Stromverbrauch. Kann an einen externen 32-kHz-Quarz angeschlossen werden (Eingang P)."
] ]
}, },
{ {
@@ -102,7 +102,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Multifunction pin. External 32 kHz crystal connection (Output N) and ADC1 Channel 0 analog input." "Multifunktions-Pin. Anschluss des externen 32-kHz-Quarzes (Ausgang N) und analoger Eingang ADC1 Kanal 0."
] ]
}, },
{ {
@@ -134,7 +134,7 @@
], ],
"avisos": [ "avisos": [
"Multifunktionspin: JTAG MTMS, ADC1 Kanal 1 und Strapping-Pin für SDIO-Taktflankensteuerung.", "Multifunktionspin: JTAG MTMS, ADC1 Kanal 1 und Strapping-Pin für SDIO-Taktflankensteuerung.",
"Floating by default during reset." "Während des Resets standardmäßig unbeschaltet."
] ]
}, },
{ {
@@ -154,7 +154,7 @@
], ],
"avisos": [ "avisos": [
"Multifunktionspin: JTAG MTDI, ADC1 Kanal 2 und Strapping-Pin für SDIO-Taktflankensteuerung.", "Multifunktionspin: JTAG MTDI, ADC1 Kanal 2 und Strapping-Pin für SDIO-Taktflankensteuerung.",
"Floating by default during reset." "Während des Resets standardmäßig unbeschaltet."
] ]
}, },
{ {
@@ -172,7 +172,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Multifunction pin: JTAG MTCK and ADC1 Channel 3 analog input." "Multifunktions-Pin: JTAG MTCK und analoger Eingang ADC1 Kanal 3."
] ]
}, },
{ {
@@ -188,7 +188,7 @@
"JTAG" "JTAG"
], ],
"avisos": [ "avisos": [
"Multifunction pin: JTAG MTDO." "Multifunktions-Pin: JTAG MTDO."
] ]
}, },
{ {
@@ -206,7 +206,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"High-speed multifunction pin: SDIO Command or SPI2 Chip Select 0." "Hochgeschwindigkeits-Multifunktions-Pin: SDIO Command oder SPI2 Chip Select 0."
] ]
}, },
{ {
@@ -224,7 +224,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"High-speed multifunction pin: SDIO Clock or SPI2 Clock." "Hochgeschwindigkeits-Multifunktions-Pin: SDIO Clock oder SPI2 Clock."
] ]
}, },
{ {
@@ -242,7 +242,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"High-speed multifunction pin: SDIO Data 0 or SPI2 MOSI (FSPID)." "Hochgeschwindigkeits-Multifunktions-Pin: SDIO Data 0 oder SPI2 MOSI (FSPID)."
] ]
}, },
{ {
@@ -260,7 +260,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"High-speed pin: SDIO Data 1 or SPI2 MISO (FSPIQ)." "Hochgeschwindigkeits-Pin: SDIO Data 1 oder SPI2 MISO (FSPIQ)."
] ]
}, },
{ {
@@ -278,7 +278,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"High-speed pin: SDIO Data 2 or SPI2 Write Protect." "Hochgeschwindigkeits-Pin: SDIO Data 2 oder SPI2 Write Protect."
] ]
}, },
{ {
@@ -296,7 +296,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"High-speed pin: SDIO Data 3 or SPI2 Hold." "Hochgeschwindigkeits-Pin: SDIO Data 3 oder SPI2 Hold."
] ]
}, },
{ {
@@ -312,7 +312,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Dedicated Chip Select 1 pin for SPI Flash/PSRAM memory interface." "Dedizierter Chip-Select-1-Pin für die SPI-Flash/PSRAM-Speicherschnittstelle."
] ]
}, },
{ {
@@ -328,7 +328,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Dedicated Chip Select 0 pin for SPI Flash memory interface." "Dedizierter Chip-Select-0-Pin für die SPI-Flash-Speicherschnittstelle."
] ]
}, },
{ {
@@ -358,7 +358,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Data Q (MISO) pin for SPI flash memory interface." "Data-Q-Pin (MISO) der SPI-Flash-Speicherschnittstelle."
] ]
}, },
{ {
@@ -374,7 +374,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Write Protect pin for SPI flash memory interface." "Write-Protect-Pin der SPI-Flash-Speicherschnittstelle."
] ]
}, },
{ {
@@ -389,7 +389,7 @@
], ],
"avisos": [ "avisos": [
"Ausgangsspannung per Software konfigurierbar gemäß Flash-Spezifikation (üblicherweise 3.3V oder 1.8V).", "Ausgangsspannung per Software konfigurierbar gemäß Flash-Spezifikation (üblicherweise 3.3V oder 1.8V).",
"Must not be used as a general high-current power source." "Darf nicht als allgemeine Stromquelle für hohe Ströme verwendet werden."
] ]
}, },
{ {
@@ -405,7 +405,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Hold control pin for SPI flash memory interface." "Hold-Steuerpin der SPI-Flash-Speicherschnittstelle."
] ]
}, },
{ {
@@ -421,7 +421,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Clock signal pin for SPI flash memory interface." "Taktsignal-Pin der SPI-Flash-Speicherschnittstelle."
] ]
}, },
{ {
@@ -437,7 +437,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Data D (MOSI) pin for SPI flash memory interface." "Data-D-Pin (MOSI) der SPI-Flash-Speicherschnittstelle."
] ]
}, },
{ {
@@ -453,7 +453,7 @@
"USB" "USB"
], ],
"avisos": [ "avisos": [
"Negative signal pin of integrated USB Serial/JTAG transceiver." "Negativer Signal-Pin des integrierten USB-Serial/JTAG-Transceivers."
] ]
}, },
{ {
@@ -469,7 +469,7 @@
"USB" "USB"
], ],
"avisos": [ "avisos": [
"Positive signal pin of integrated USB Serial/JTAG transceiver.", "Positiver Signal-Pin des integrierten USB-Serial/JTAG-Transceivers.",
"Verfügt über integrierten Pull-up-Widerstand, der beim USB-Start standardmäßig aktiv ist." "Verfügt über integrierten Pull-up-Widerstand, der beim USB-Start standardmäßig aktiv ist."
] ]
}, },
@@ -497,8 +497,8 @@
"Strapping" "Strapping"
], ],
"avisos": [ "avisos": [
"Strapping pin for boot mode selection and ROM log printing control.", "Strapping-Pin für die Auswahl des Boot-Modus und die Steuerung der ROM-Log-Ausgabe.",
"Floating by default during reset. High level (1) enables boot log printing." "Während des Resets standardmäßig unbeschaltet. Hoher Pegel (1) aktiviert die Ausgabe des Boot-Logs."
] ]
}, },
{ {
@@ -513,7 +513,7 @@
"Strapping" "Strapping"
], ],
"avisos": [ "avisos": [
"Primary Strapping pin for boot mode selection.", "Primärer Strapping-Pin für die Auswahl des Boot-Modus.",
"Mit integriertem schwachen Pull-up ausgestattet. High-Pegel (1) beim Reset aktiviert SPI-Boot (Flash). Low-Pegel (0) erzwingt den Download-Modus." "Mit integriertem schwachen Pull-up ausgestattet. High-Pegel (1) beim Reset aktiviert SPI-Boot (Flash). Low-Pegel (0) erzwingt den Download-Modus."
] ]
}, },
@@ -573,7 +573,7 @@
"Strapping" "Strapping"
], ],
"avisos": [ "avisos": [
"Strapping pin for JTAG signal source selection (early boot).", "Strapping-Pin für die Auswahl der JTAG-Signalquelle (früher Boot).",
"Keine internen Pull-Widerstände beim Reset. Muss bei Verwendung extern stabil gehalten werden." "Keine internen Pull-Widerstände beim Reset. Muss bei Verwendung extern stabil gehalten werden."
] ]
}, },
+20 -20
View File
@@ -11,8 +11,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -28,8 +28,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -161,8 +161,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -280,7 +280,7 @@
"avisos": [ "avisos": [
"Ein High-Pegel an diesem Pin aktiviert den Betrieb des Chips", "Ein High-Pegel an diesem Pin aktiviert den Betrieb des Chips",
"Ein Low-Pegel an diesem Pin deaktiviert den Betrieb des Chips", "Ein Low-Pegel an diesem Pin deaktiviert den Betrieb des Chips",
"Do not leave this pin floating, use an external pull-up resistor" "Diesen Pin nicht unbeschaltet lassen, externen Pull-up-Widerstand verwenden"
] ]
}, },
{ {
@@ -295,8 +295,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -312,8 +312,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -329,8 +329,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -453,8 +453,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -498,8 +498,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -515,8 +515,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -528,7 +528,7 @@
"HF-Antennenanschluss" "HF-Antennenanschluss"
], ],
"categorias": [ "categorias": [
"Antenne" "Antena"
], ],
"avisos": [ "avisos": [
"Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts" "Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts"
+61 -61
View File
@@ -164,8 +164,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
] ]
}, },
@@ -359,9 +359,9 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 1.8V oder 3.3V", "Empfohlene Spannung: 1.8V oder 3.3V",
"Minimum Recommended Voltage: 1.65V or 3.0V", "Empfohlene Mindestspannung: 1.65V oder 3.0V",
"Maximum Recommended Voltage: 1.95V or 3.6V", "Empfohlene Höchstspannung: 1.95V oder 3.6V",
"Voltage level must match the flash memory model used in the device (see pin 30)", "Der Spannungspegel muss zum im Gerät verwendeten Flash-Speichermodell passen (siehe Pin 30)",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
] ]
}, },
@@ -435,8 +435,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 1.1V", "Empfohlene Spannung: 1.1V",
"Minimum Recommended Voltage: 0.99V", "Empfohlene Mindestspannung: 0.99V",
"Maximum Recommended Voltage: 1.3V", "Empfohlene Höchstspannung: 1.3V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
] ]
}, },
@@ -452,7 +452,7 @@
], ],
"avisos": [ "avisos": [
"Dediziert für externen Flash-Speicher", "Dediziert für externen Flash-Speicher",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -467,7 +467,7 @@
], ],
"avisos": [ "avisos": [
"Dediziert für externen Flash-Speicher", "Dediziert für externen Flash-Speicher",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -482,7 +482,7 @@
], ],
"avisos": [ "avisos": [
"Dediziert für externen Flash-Speicher", "Dediziert für externen Flash-Speicher",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -497,9 +497,9 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 1.8V oder 3.3V", "Empfohlene Spannung: 1.8V oder 3.3V",
"Minimum Recommended Voltage: 1.65V or 3.0V", "Empfohlene Mindestspannung: 1.65V oder 3.0V",
"Maximum Recommended Voltage: 1.95V or 3.6V", "Empfohlene Höchstspannung: 1.95V oder 3.6V",
"Voltage level must match the flash memory model used in the device", "Der Spannungspegel muss zum im Gerät verwendeten Flash-Speichermodell passen",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
] ]
}, },
@@ -515,7 +515,7 @@
], ],
"avisos": [ "avisos": [
"Dediziert für externen Flash-Speicher", "Dediziert für externen Flash-Speicher",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -530,7 +530,7 @@
], ],
"avisos": [ "avisos": [
"Dediziert für externen Flash-Speicher", "Dediziert für externen Flash-Speicher",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -545,7 +545,7 @@
], ],
"avisos": [ "avisos": [
"Dediziert für externen Flash-Speicher", "Dediziert für externen Flash-Speicher",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -560,7 +560,7 @@
], ],
"avisos": [ "avisos": [
"Dieser Pin muss mit einem externen 4.02-kΩ-Widerstand verbunden werden, um die Funktion der MIPI-DSI-Schnittstelle sicherzustellen", "Dieser Pin muss mit einem externen 4.02-kΩ-Widerstand verbunden werden, um die Funktion der MIPI-DSI-Schnittstelle sicherzustellen",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -575,7 +575,7 @@
], ],
"avisos": [ "avisos": [
"Dieser Pin ist für die positive Datenleitung 1 der MIPI-DSI-Schnittstelle dediziert", "Dieser Pin ist für die positive Datenleitung 1 der MIPI-DSI-Schnittstelle dediziert",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -590,7 +590,7 @@
], ],
"avisos": [ "avisos": [
"Dieser Pin ist für die negative Datenleitung 1 der MIPI-DSI-Schnittstelle dediziert", "Dieser Pin ist für die negative Datenleitung 1 der MIPI-DSI-Schnittstelle dediziert",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -605,7 +605,7 @@
], ],
"avisos": [ "avisos": [
"Dieser Pin ist für die negative Taktleitung der MIPI-DSI-Schnittstelle dediziert", "Dieser Pin ist für die negative Taktleitung der MIPI-DSI-Schnittstelle dediziert",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -620,7 +620,7 @@
], ],
"avisos": [ "avisos": [
"Dieser Pin ist für die positive Taktleitung der MIPI-DSI-Schnittstelle dediziert", "Dieser Pin ist für die positive Taktleitung der MIPI-DSI-Schnittstelle dediziert",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -635,7 +635,7 @@
], ],
"avisos": [ "avisos": [
"Dieser Pin ist für die positive Datenleitung 0 der MIPI-DSI-Schnittstelle dediziert", "Dieser Pin ist für die positive Datenleitung 0 der MIPI-DSI-Schnittstelle dediziert",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -650,7 +650,7 @@
], ],
"avisos": [ "avisos": [
"Dieser Pin ist für die negative Datenleitung 0 der MIPI-DSI-Schnittstelle dediziert", "Dieser Pin ist für die negative Datenleitung 0 der MIPI-DSI-Schnittstelle dediziert",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -665,8 +665,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 2.5V", "Empfohlene Spannung: 2.5V",
"Minimum Recommended Voltage: 2.25V", "Empfohlene Mindestspannung: 2.25V",
"Maximum Recommended Voltage: 2.75V", "Empfohlene Höchstspannung: 2.75V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
] ]
}, },
@@ -682,7 +682,7 @@
], ],
"avisos": [ "avisos": [
"Dieser Pin ist für die negative Datenleitung 0 der MIPI-CSI-Schnittstelle dediziert", "Dieser Pin ist für die negative Datenleitung 0 der MIPI-CSI-Schnittstelle dediziert",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -697,7 +697,7 @@
], ],
"avisos": [ "avisos": [
"Dieser Pin ist für die positive Datenleitung 0 der MIPI-CSI-Schnittstelle dediziert", "Dieser Pin ist für die positive Datenleitung 0 der MIPI-CSI-Schnittstelle dediziert",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -712,7 +712,7 @@
], ],
"avisos": [ "avisos": [
"Dieser Pin ist für die positive Taktleitung der MIPI-CSI-Schnittstelle dediziert", "Dieser Pin ist für die positive Taktleitung der MIPI-CSI-Schnittstelle dediziert",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -727,7 +727,7 @@
], ],
"avisos": [ "avisos": [
"Dieser Pin ist für die negative Taktleitung der MIPI-CSI-Schnittstelle dediziert", "Dieser Pin ist für die negative Taktleitung der MIPI-CSI-Schnittstelle dediziert",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -742,7 +742,7 @@
], ],
"avisos": [ "avisos": [
"Dieser Pin ist für die negative Datenleitung 1 der MIPI-CSI-Schnittstelle dediziert", "Dieser Pin ist für die negative Datenleitung 1 der MIPI-CSI-Schnittstelle dediziert",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -757,7 +757,7 @@
], ],
"avisos": [ "avisos": [
"Dieser Pin ist für die positive Datenleitung 1 der MIPI-CSI-Schnittstelle dediziert", "Dieser Pin ist für die positive Datenleitung 1 der MIPI-CSI-Schnittstelle dediziert",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -772,7 +772,7 @@
], ],
"avisos": [ "avisos": [
"Dieser Pin muss mit einem externen 4.02-kΩ-Widerstand verbunden werden, um die Funktion der MIPI-CSI-Schnittstelle sicherzustellen", "Dieser Pin muss mit einem externen 4.02-kΩ-Widerstand verbunden werden, um die Funktion der MIPI-CSI-Schnittstelle sicherzustellen",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -786,8 +786,8 @@
"USB" "USB"
], ],
"avisos": [ "avisos": [
"Dedicated to the negative data line of the USB OTG interface", "Dediziert für die negative Datenleitung der USB-OTG-Schnittstelle",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -801,8 +801,8 @@
"USB" "USB"
], ],
"avisos": [ "avisos": [
"Dedicated to the positive data line of the USB OTG interface", "Dediziert für die positive Datenleitung der USB-OTG-Schnittstelle",
"Must not be used for other functions" "Darf nicht für andere Funktionen verwendet werden"
] ]
}, },
{ {
@@ -817,8 +817,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.97V", "Empfohlene Mindestspannung: 2.97V",
"Maximum Recommended Voltage: 3.63V", "Empfohlene Höchstspannung: 3.63V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
] ]
}, },
@@ -866,7 +866,7 @@
], ],
"categorias": [], "categorias": [],
"avisos": [ "avisos": [
"Must not be used" "Darf nicht verwendet werden"
] ]
}, },
{ {
@@ -941,8 +941,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 1.65V", "Empfohlene Spannung: 1.65V",
"Minimum Recommended Voltage: 1.8V", "Empfohlene Mindestspannung: 1.8V",
"Maximum Recommended Voltage: 1.95V", "Empfohlene Höchstspannung: 1.95V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
] ]
}, },
@@ -990,9 +990,9 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 1.8V oder 3.3V", "Empfohlene Spannung: 1.8V oder 3.3V",
"Minimum Recommended Voltage: 1.65V or 3.0V", "Empfohlene Mindestspannung: 1.65V oder 3.0V",
"Maximum Recommended Voltage: 1.95V or 3.6V", "Empfohlene Höchstspannung: 1.95V oder 3.6V",
"Voltage level must match the flash memory model used in the device (see pin 30)", "Der Spannungspegel muss zum im Gerät verwendeten Flash-Speichermodell passen (siehe Pin 30)",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
] ]
}, },
@@ -1084,8 +1084,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 1.65V", "Empfohlene Spannung: 1.65V",
"Minimum Recommended Voltage: 1.8V", "Empfohlene Mindestspannung: 1.8V",
"Maximum Recommended Voltage: 1.95V", "Empfohlene Höchstspannung: 1.95V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
] ]
}, },
@@ -1237,8 +1237,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 1.1V", "Empfohlene Spannung: 1.1V",
"Minimum Recommended Voltage: 0.99V", "Empfohlene Mindestspannung: 0.99V",
"Maximum Recommended Voltage: 1.3V", "Empfohlene Höchstspannung: 1.3V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
] ]
}, },
@@ -1377,9 +1377,9 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 1.8V oder 3.3V", "Empfohlene Spannung: 1.8V oder 3.3V",
"Minimum Recommended Voltage: 1.65V or 3.0V", "Empfohlene Mindestspannung: 1.65V oder 3.0V",
"Maximum Recommended Voltage: 1.95V or 3.6V", "Empfohlene Höchstspannung: 1.95V oder 3.6V",
"Voltage level must match the flash memory model used in the device (see pin 30)", "Der Spannungspegel muss zum im Gerät verwendeten Flash-Speichermodell passen (siehe Pin 30)",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
] ]
}, },
@@ -1475,8 +1475,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 1.1V", "Empfohlene Spannung: 1.1V",
"Minimum Recommended Voltage: 0.99V", "Empfohlene Mindestspannung: 0.99V",
"Maximum Recommended Voltage: 1.3V", "Empfohlene Höchstspannung: 1.3V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
] ]
}, },
@@ -1558,9 +1558,9 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 1.8V oder 3.3V", "Empfohlene Spannung: 1.8V oder 3.3V",
"Minimum Recommended Voltage: 1.65V or 3.0V", "Empfohlene Mindestspannung: 1.65V oder 3.0V",
"Maximum Recommended Voltage: 1.95V or 3.6V", "Empfohlene Höchstspannung: 1.95V oder 3.6V",
"Voltage level must match the flash memory model used in the device (see pin 30)", "Der Spannungspegel muss zum im Gerät verwendeten Flash-Speichermodell passen (siehe Pin 30)",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
] ]
}, },
@@ -1638,8 +1638,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.0V", "Empfohlene Spannung: 3.0V",
"Minimum Recommended Voltage: 3.3V", "Empfohlene Mindestspannung: 3.3V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
] ]
}, },
@@ -1655,8 +1655,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 2.5V", "Empfohlene Spannung: 2.5V",
"Minimum Recommended Voltage: 3.3V", "Empfohlene Mindestspannung: 3.3V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
] ]
}, },
@@ -1673,7 +1673,7 @@
"avisos": [ "avisos": [
"Ein High-Pegel an diesem Pin aktiviert den Betrieb des Chips", "Ein High-Pegel an diesem Pin aktiviert den Betrieb des Chips",
"Ein Low-Pegel an diesem Pin deaktiviert den Betrieb des Chips", "Ein Low-Pegel an diesem Pin deaktiviert den Betrieb des Chips",
"Do not leave this pin floating, use an external pull-up resistor" "Diesen Pin nicht unbeschaltet lassen, externen Pull-up-Widerstand verwenden"
] ]
}, },
{ {
+27 -27
View File
@@ -11,8 +11,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.8V", "Empfohlene Mindestspannung: 2.8V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.3 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.3 des Datenblatts"
] ]
}, },
@@ -24,7 +24,7 @@
"Ein- und Ausgang für HF-Signale (Wi-Fi) zur Antenne" "Ein- und Ausgang für HF-Signale (Wi-Fi) zur Antenne"
], ],
"categorias": [ "categorias": [
"Antenne" "Antena"
], ],
"avisos": [] "avisos": []
}, },
@@ -40,8 +40,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.8V", "Empfohlene Mindestspannung: 2.8V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.3 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.3 des Datenblatts"
] ]
}, },
@@ -57,8 +57,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.8V", "Empfohlene Mindestspannung: 2.8V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.3 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.3 des Datenblatts"
] ]
}, },
@@ -384,8 +384,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.8V", "Empfohlene Mindestspannung: 2.8V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -534,8 +534,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.3 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.3 des Datenblatts"
] ]
}, },
@@ -569,7 +569,7 @@
"Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -584,8 +584,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 1.8V", "Empfohlene Mindestspannung: 1.8V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.3 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.3 des Datenblatts"
] ]
}, },
@@ -605,7 +605,7 @@
"Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -624,7 +624,7 @@
"Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -643,7 +643,7 @@
"Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -662,7 +662,7 @@
"Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -681,7 +681,7 @@
"Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -700,7 +700,7 @@
"Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -859,8 +859,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.8V", "Empfohlene Mindestspannung: 2.8V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.3 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.3 des Datenblatts"
] ]
}, },
@@ -969,8 +969,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.8V", "Empfohlene Mindestspannung: 2.8V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.3 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.3 des Datenblatts"
] ]
}, },
@@ -1014,8 +1014,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.8V", "Empfohlene Mindestspannung: 2.8V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.3 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.3 des Datenblatts"
] ]
}, },
@@ -1051,7 +1051,7 @@
"avisos": [ "avisos": [
"Ein High-Pegel an diesem Pin aktiviert den Betrieb des Chips", "Ein High-Pegel an diesem Pin aktiviert den Betrieb des Chips",
"Ein Low-Pegel an diesem Pin deaktiviert den Betrieb des Chips", "Ein Low-Pegel an diesem Pin deaktiviert den Betrieb des Chips",
"Do not leave this pin floating, use an external pull-up resistor" "Diesen Pin nicht unbeschaltet lassen, externen Pull-up-Widerstand verwenden"
] ]
}, },
{ {
+23 -23
View File
@@ -7,7 +7,7 @@
"Ein- und Ausgang für HF-Signale (Wi-Fi und Bluetooth) zur Antenne" "Ein- und Ausgang für HF-Signale (Wi-Fi und Bluetooth) zur Antenne"
], ],
"categorias": [ "categorias": [
"Antenne" "Antena"
], ],
"avisos": [ "avisos": [
"Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts" "Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts"
@@ -25,8 +25,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -42,8 +42,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -60,7 +60,7 @@
"avisos": [ "avisos": [
"Ein High-Pegel an diesem Pin aktiviert den Betrieb des Chips", "Ein High-Pegel an diesem Pin aktiviert den Betrieb des Chips",
"Ein Low-Pegel an diesem Pin deaktiviert den Betrieb des Chips", "Ein Low-Pegel an diesem Pin deaktiviert den Betrieb des Chips",
"Do not leave this pin floating, use an external pull-up resistor" "Diesen Pin nicht unbeschaltet lassen, externen Pull-up-Widerstand verwenden"
] ]
}, },
{ {
@@ -405,8 +405,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -572,7 +572,7 @@
"Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -587,8 +587,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 1.8V", "Empfohlene Mindestspannung: 1.8V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -608,7 +608,7 @@
"Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -627,7 +627,7 @@
"Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -646,7 +646,7 @@
"Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -665,7 +665,7 @@
"Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -684,7 +684,7 @@
"Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -703,7 +703,7 @@
"Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Während des Resets ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert", "Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"Vom SPI-Flash-Speicher belegt", "Vom SPI-Flash-Speicher belegt",
"Not recommended to use this pin as GPIO" "Nicht empfohlen, diesen Pin als GPIO zu verwenden"
] ]
}, },
{ {
@@ -908,8 +908,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -1063,8 +1063,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -1080,8 +1080,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V", "Empfohlene Mindestspannung: 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
+35 -35
View File
@@ -7,11 +7,11 @@
"HF-Antennenanschluss (Wi-Fi und Bluetooth)" "HF-Antennenanschluss (Wi-Fi und Bluetooth)"
], ],
"categorias": [ "categorias": [
"Antenne", "Antena",
"RF" "RF"
], ],
"avisos": [ "avisos": [
"Dedicated 2.4 GHz RF pin. Requires 50-ohm impedance matching." "Dedizierter 2,4-GHz-HF-Pin. Erfordert eine 50-Ohm-Impedanzanpassung."
] ]
}, },
{ {
@@ -54,7 +54,7 @@
], ],
"avisos": [ "avisos": [
"Aktiv High. Auf High-Pegel ziehen, um den Chip zu starten.", "Aktiv High. Auf High-Pegel ziehen, um den Chip zu starten.",
"Do not leave this pin floating. An external RC delay circuit is recommended for stable boot." "Diesen Pin nicht unbeschaltet lassen. Für einen stabilen Start wird ein externes RC-Verzögerungsglied empfohlen."
] ]
}, },
{ {
@@ -70,7 +70,7 @@
"Clock" "Clock"
], ],
"avisos": [ "avisos": [
"Low-power clock pin. Can be connected to external 32.768 kHz crystal (Pin N)." "Takt-Pin mit niedrigem Stromverbrauch. Kann mit einem externen 32,768-kHz-Quarz verbunden werden (Pin N)."
] ]
}, },
{ {
@@ -88,7 +88,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Multifunction pin. External 32.768 kHz crystal (Pin P) and ADC1 Channel 0 analog input." "Multifunktions-Pin. Externer 32,768-kHz-Quarz (Pin P) und analoger Eingang ADC1 Kanal 0."
] ]
}, },
{ {
@@ -104,7 +104,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC1 Channel 1." "Analoger Eingangs-Pin ADC1 Kanal 1."
] ]
}, },
{ {
@@ -120,7 +120,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC1 Channel 2." "Analoger Eingangs-Pin ADC1 Kanal 2."
] ]
}, },
{ {
@@ -136,7 +136,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC1 Channel 3." "Analoger Eingangs-Pin ADC1 Kanal 3."
] ]
}, },
{ {
@@ -152,7 +152,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC1 Channel 4." "Analoger Eingangs-Pin ADC1 Kanal 4."
] ]
}, },
{ {
@@ -182,7 +182,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC1 Channel 5." "Analoger Eingangs-Pin ADC1 Kanal 5."
] ]
}, },
{ {
@@ -198,7 +198,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC1 Channel 6." "Analoger Eingangs-Pin ADC1 Kanal 6."
] ]
}, },
{ {
@@ -214,7 +214,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC1 Channel 7." "Analoger Eingangs-Pin ADC1 Kanal 7."
] ]
}, },
{ {
@@ -230,7 +230,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC1 Channel 8." "Analoger Eingangs-Pin ADC1 Kanal 8."
] ]
}, },
{ {
@@ -246,7 +246,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC1 Channel 9." "Analoger Eingangs-Pin ADC1 Kanal 9."
] ]
}, },
{ {
@@ -262,7 +262,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC1 Channel 10." "Analoger Eingangs-Pin ADC1 Kanal 10."
] ]
}, },
{ {
@@ -276,7 +276,7 @@
"Touch" "Touch"
], ],
"avisos": [ "avisos": [
"Dedicated analog pin for capacitive touch stabilization." "Dedizierter Analog-Pin zur Stabilisierung der kapazitiven Berührungserkennung."
] ]
}, },
{ {
@@ -292,7 +292,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC2 Channel 0." "Analoger Eingangs-Pin ADC2 Kanal 0."
] ]
}, },
{ {
@@ -308,7 +308,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC2 Channel 1." "Analoger Eingangs-Pin ADC2 Kanal 1."
] ]
}, },
{ {
@@ -324,7 +324,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC2 Channel 2." "Analoger Eingangs-Pin ADC2 Kanal 2."
] ]
}, },
{ {
@@ -340,7 +340,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC2 Channel 3." "Analoger Eingangs-Pin ADC2 Kanal 3."
] ]
}, },
{ {
@@ -356,7 +356,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC2 Channel 4." "Analoger Eingangs-Pin ADC2 Kanal 4."
] ]
}, },
{ {
@@ -372,7 +372,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC2 Channel 5." "Analoger Eingangs-Pin ADC2 Kanal 5."
] ]
}, },
{ {
@@ -388,7 +388,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC2 Channel 6." "Analoger Eingangs-Pin ADC2 Kanal 6."
] ]
}, },
{ {
@@ -404,7 +404,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC2 Channel 7." "Analoger Eingangs-Pin ADC2 Kanal 7."
] ]
}, },
{ {
@@ -420,7 +420,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"High-speed SDIO interface pin (Data 0) or SPI2 MOSI." "Pin der Hochgeschwindigkeits-SDIO-Schnittstelle (Data 0) oder SPI2 MOSI."
] ]
}, },
{ {
@@ -436,7 +436,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"High-speed SDIO interface pin (Data 1) or SPI2 MISO." "Pin der Hochgeschwindigkeits-SDIO-Schnittstelle (Data 1) oder SPI2 MISO."
] ]
}, },
{ {
@@ -452,7 +452,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"High-speed SDIO interface pin (Data 2) or SPI2 Write Protect." "Pin der Hochgeschwindigkeits-SDIO-Schnittstelle (Data 2) oder SPI2 Write Protect."
] ]
}, },
{ {
@@ -466,7 +466,7 @@
"Power" "Power"
], ],
"avisos": [ "avisos": [
"Generated by internal LDO to power integrated PSRAM. Do not connect to external power circuits." "Vom internen LDO zur Versorgung des integrierten PSRAM erzeugt. Nicht mit externen Versorgungsschaltungen verbinden."
] ]
}, },
{ {
@@ -482,7 +482,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"High-speed SDIO interface pin (Data 3) or SPI2 Hold." "Pin der Hochgeschwindigkeits-SDIO-Schnittstelle (Data 3) oder SPI2 Hold."
] ]
}, },
{ {
@@ -608,7 +608,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Dedicated Hold for external or internal SPI Flash." "Dediziertes Hold für externen oder internen SPI-Flash."
] ]
}, },
{ {
@@ -692,7 +692,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Multifunction pin: GPIO33 and ADC2 Channel 8." "Multifunktions-Pin: GPIO33 und ADC2 Kanal 8."
] ]
}, },
{ {
@@ -708,7 +708,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Multifunction pin: GPIO34 and ADC2 Channel 9." "Multifunktions-Pin: GPIO34 und ADC2 Kanal 9."
] ]
}, },
{ {
@@ -927,7 +927,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Dedicated analog pin for precision ADC calibration." "Dedizierter Analog-Pin zur präzisen ADC-Kalibrierung."
] ]
}, },
{ {
@@ -1090,7 +1090,7 @@
"Strapping" "Strapping"
], ],
"avisos": [ "avisos": [
"Boot Strapping pin (paired with GPIO61).", "Boot-Strapping-Pin (gepaart mit GPIO61).",
"Standardmäßig mit aktivem internen Pull-up ausgestattet." "Standardmäßig mit aktivem internen Pull-up ausgestattet."
] ]
}, },
@@ -1106,7 +1106,7 @@
"Strapping" "Strapping"
], ],
"avisos": [ "avisos": [
"Primary Strapping pin for boot selection.", "Primärer Strapping-Pin für die Boot-Auswahl.",
"Standardmäßig mit aktivem internen Pull-up ausgestattet. High-Pegel (1) beim Reset aktiviert SPI-Boot. Low-Pegel (0) erzwingt Download-Modus." "Standardmäßig mit aktivem internen Pull-up ausgestattet. High-Pegel (1) beim Reset aktiviert SPI-Boot. Low-Pegel (0) erzwingt Download-Modus."
] ]
}, },
+30 -30
View File
@@ -11,10 +11,10 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V", "Empfohlene Mindestspannung: 2.3V oder 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V", "Für Chips mit integriertem Flash oder PSRAM beträgt die empfohlene Mindestspannung 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V", "Für Chips ohne integrierten Flash oder PSRAM beträgt die empfohlene Mindestspannung 2.3V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -26,7 +26,7 @@
"Eingang des rauscharmen Verstärkers (LNA) für Wi-Fi- und Bluetooth-Empfänger" "Eingang des rauscharmen Verstärkers (LNA) für Wi-Fi- und Bluetooth-Empfänger"
], ],
"categorias": [ "categorias": [
"Antenne" "Antena"
], ],
"avisos": [ "avisos": [
"Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts" "Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts"
@@ -44,10 +44,10 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V", "Empfohlene Mindestspannung: 2.3V oder 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V", "Für Chips mit integriertem Flash oder PSRAM beträgt die empfohlene Mindestspannung 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V", "Für Chips ohne integrierten Flash oder PSRAM beträgt die empfohlene Mindestspannung 2.3V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -63,10 +63,10 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V", "Empfohlene Mindestspannung: 2.3V oder 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V", "Für Chips mit integriertem Flash oder PSRAM beträgt die empfohlene Mindestspannung 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V", "Für Chips ohne integrierten Flash oder PSRAM beträgt die empfohlene Mindestspannung 2.3V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -155,7 +155,7 @@
"avisos": [ "avisos": [
"Ein High-Pegel an diesem Pin aktiviert den Betrieb des Chips", "Ein High-Pegel an diesem Pin aktiviert den Betrieb des Chips",
"Ein Low-Pegel an diesem Pin deaktiviert den Betrieb des Chips", "Ein Low-Pegel an diesem Pin deaktiviert den Betrieb des Chips",
"Do not leave this pin floating, use an external pull-up resistor", "Diesen Pin nicht unbeschaltet lassen, externen Pull-up-Widerstand verwenden",
"Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts" "Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts"
] ]
}, },
@@ -370,10 +370,10 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V", "Empfohlene Mindestspannung: 2.3V oder 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V", "Für Chips mit integriertem Flash oder PSRAM beträgt die empfohlene Mindestspannung 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V", "Für Chips ohne integrierten Flash oder PSRAM beträgt die empfohlene Mindestspannung 2.3V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -569,8 +569,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V", "Empfohlene Mindestspannung: 2.3V oder 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Dieser Pin ist mit dem Ausgang des internen LDO verbunden", "Dieser Pin ist mit dem Ausgang des internen LDO verbunden",
"Bei direkter Verbindung mit VDD3P3_RTC wird der interne LDO automatisch deaktiviert", "Bei direkter Verbindung mit VDD3P3_RTC wird der interne LDO automatisch deaktiviert",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
@@ -802,8 +802,8 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 1.8V", "Empfohlene Mindestspannung: 1.8V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -919,10 +919,10 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V", "Empfohlene Mindestspannung: 2.3V oder 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V", "Für Chips mit integriertem Flash oder PSRAM beträgt die empfohlene Mindestspannung 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V", "Für Chips ohne integrierten Flash oder PSRAM beträgt die empfohlene Mindestspannung 2.3V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
@@ -966,10 +966,10 @@
], ],
"avisos": [ "avisos": [
"Empfohlene Spannung: 3.3V", "Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V", "Empfohlene Mindestspannung: 2.3V oder 3.0V",
"Maximum Recommended Voltage: 3.6V", "Empfohlene Höchstspannung: 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V", "Für Chips mit integriertem Flash oder PSRAM beträgt die empfohlene Mindestspannung 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V", "Für Chips ohne integrierten Flash oder PSRAM beträgt die empfohlene Mindestspannung 2.3V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts" "Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
] ]
}, },
+30 -30
View File
@@ -4,7 +4,7 @@
"icone": "🔷", "icone": "🔷",
"descricao": "Der Pionier der Reihe mit Xtensa-Dual-Core, Wi-Fi 4 und klassischem Bluetooth/BLE. Empfohlen für klassische Audioprojekte und etablierte IoT-Gateways.", "descricao": "Der Pionier der Reihe mit Xtensa-Dual-Core, Wi-Fi 4 und klassischem Bluetooth/BLE. Empfohlen für klassische Audioprojekte und etablierte IoT-Gateways.",
"arquitetura": "32-Bit-Xtensa®-LX6-Dual-Core", "arquitetura": "32-Bit-Xtensa®-LX6-Dual-Core",
"nucleos": "1 (Single-core) ou 2 (Dual-core)", "nucleos": "1 (Single-Core) oder 2 (Dual-Core)",
"frequencia": "Bis zu 240 MHz", "frequencia": "Bis zu 240 MHz",
"coprocessador_ulp": "Ja", "coprocessador_ulp": "Ja",
"seguranca": { "seguranca": {
@@ -25,13 +25,13 @@
"bluetooth": "Bluetooth 4.2 BR/EDR (Clássico) und Bluetooth LE (dual mode)", "bluetooth": "Bluetooth 4.2 BR/EDR (Clássico) und Bluetooth LE (dual mode)",
"ethernet": "Ja (Ethernet-MAC integriert)", "ethernet": "Ja (Ethernet-MAC integriert)",
"memoria_sram": "520 KB", "memoria_sram": "520 KB",
"memoria_sram_rtc": "16 KB (dividida em RTC FAST e RTC SLOW)", "memoria_sram_rtc": "16 KB (aufgeteilt in RTC FAST und RTC SLOW)",
"memoria_rom": "448 KB (für Boot- und Core-Funktionen)", "memoria_rom": "448 KB (für Boot- und Core-Funktionen)",
"flash_externa": "Bis zu 16 MB über QSPI", "flash_externa": "Bis zu 16 MB über QSPI",
"psram_externa": "Bis zu 8 MB über QSPI (in spezifischen Modulen wie WROVER)", "psram_externa": "Bis zu 8 MB über QSPI (in spezifischen Modulen wie WROVER)",
"gpio": "34", "gpio": "34",
"adc": "2x SAR-ADC mit 12 Bit, bis zu 18 Kanäle", "adc": "2x SAR-ADC mit 12 Bit, bis zu 18 Kanäle",
"dac": "2x DAC de 8 bits", "dac": "2x 8-Bit-DAC",
"touch": "10 kapazitive Kanäle", "touch": "10 kapazitive Kanäle",
"uart": "3", "uart": "3",
"spi": "4 (SPI, HSPI, VSPI - 2 für Flash/PSRAM nutzbar)", "spi": "4 (SPI, HSPI, VSPI - 2 für Flash/PSRAM nutzbar)",
@@ -57,7 +57,7 @@
"esp_idf_minimo": "Seit Beginn (v3.x und früher)", "esp_idf_minimo": "Seit Beginn (v3.x und früher)",
"arduino_core": "Ja (147 definições de placa no core oficial)", "arduino_core": "Ja (147 definições de placa no core oficial)",
"encapsulamento": "QFN48 (6×6 mm) und QFN48 (5×5 mm)", "encapsulamento": "QFN48 (6×6 mm) und QFN48 (5×5 mm)",
"modulos": "ESP32-MINI-1, ESP32-PICO-MINI-02, ESP32-PICO-V3, ESP32-PICO-V3-02 e mais 11", "modulos": "ESP32-MINI-1, ESP32-PICO-MINI-02, ESP32-PICO-V3, ESP32-PICO-V3-02 und 11 weitere",
"datasheet": "https://documentation.espressif.com/esp32_datasheet_en.html", "datasheet": "https://documentation.espressif.com/esp32_datasheet_en.html",
"manual_tecnico": "https://documentation.espressif.com/esp32_technical_reference_manual_en.html", "manual_tecnico": "https://documentation.espressif.com/esp32_technical_reference_manual_en.html",
"guia_de_programacao": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html", "guia_de_programacao": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html",
@@ -73,7 +73,7 @@
"frequencia": "Bis zu 240 MHz", "frequencia": "Bis zu 240 MHz",
"coprocessador_ulp": "Ja (RISC-V)", "coprocessador_ulp": "Ja (RISC-V)",
"seguranca": { "seguranca": {
"aes": "AES-128/192/256 com GCM", "aes": "AES-128/192/256 mit GCM",
"sha": "SHA-1/224/256/384/512", "sha": "SHA-1/224/256/384/512",
"rsa": "Ja (RSA/MPI bis zu 4096 bits)", "rsa": "Ja (RSA/MPI bis zu 4096 bits)",
"ecc": "Nein", "ecc": "Nein",
@@ -95,7 +95,7 @@
"psram_externa": "Bis zu 1 GB über QSPI/Octal SPI", "psram_externa": "Bis zu 1 GB über QSPI/Octal SPI",
"gpio": "43", "gpio": "43",
"adc": "2x SAR-ADC, bis zu 20 Kanäle: 13-Bit-Ausgabe (0–8191, einzigartig in der Familie), effektive Auflösung von 12 Bit ab Revision v1.0 (Erratum ADC-112)", "adc": "2x SAR-ADC, bis zu 20 Kanäle: 13-Bit-Ausgabe (0–8191, einzigartig in der Familie), effektive Auflösung von 12 Bit ab Revision v1.0 (Erratum ADC-112)",
"dac": "2x DAC de 8 bits", "dac": "2x 8-Bit-DAC",
"touch": "14 kapazitive Kanäle", "touch": "14 kapazitive Kanäle",
"uart": "2", "uart": "2",
"spi": "4 (SPI0/1 für Flash, SPI2/3 für allgemeine Zwecke)", "spi": "4 (SPI0/1 für Flash, SPI2/3 für allgemeine Zwecke)",
@@ -118,7 +118,7 @@
"esp_idf_minimo": "v4.2", "esp_idf_minimo": "v4.2",
"arduino_core": "Ja (26 definições de placa no core oficial)", "arduino_core": "Ja (26 definições de placa no core oficial)",
"encapsulamento": "QFN56 (7×7 mm)", "encapsulamento": "QFN56 (7×7 mm)",
"modulos": "ESP32-S2-MINI-1, ESP32-S2-MINI-2, ESP32-S2-SOLO, ESP32-S2-SOLO-2 e mais 4", "modulos": "ESP32-S2-MINI-1, ESP32-S2-MINI-2, ESP32-S2-SOLO, ESP32-S2-SOLO-2 und 4 weitere",
"datasheet": "https://documentation.espressif.com/esp32-s2_datasheet_en.html", "datasheet": "https://documentation.espressif.com/esp32-s2_datasheet_en.html",
"manual_tecnico": "https://documentation.espressif.com/esp32-s2_technical_reference_manual_en.html", "manual_tecnico": "https://documentation.espressif.com/esp32-s2_technical_reference_manual_en.html",
"guia_de_programacao": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html", "guia_de_programacao": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html",
@@ -192,13 +192,13 @@
"nome_completo": "ESP32-S31", "nome_completo": "ESP32-S31",
"icone": "🌀", "icone": "🌀",
"descricao": "Fortschrittlicher SoC, optimiert für generative KI und Vision-Edge-Verarbeitung, der hochfrequente Xtensa-Dual-Cores mit modernster Hardware-Sicherheit verbindet.", "descricao": "Fortschrittlicher SoC, optimiert für generative KI und Vision-Edge-Verarbeitung, der hochfrequente Xtensa-Dual-Cores mit modernster Hardware-Sicherheit verbindet.",
"arquitetura": "RISC-V dual-core de 32 bits (HP) + RISC-V single-core (LP)", "arquitetura": "32-Bit-RISC-V Dual-Core (HP) + RISC-V Single-Core (LP)",
"nucleos": "2 (Dual-core HP) + 1 (Single-core LP)", "nucleos": "2 (Dual-core HP) + 1 (Single-core LP)",
"frequencia": "Bis zu 320 MHz", "frequencia": "Bis zu 320 MHz",
"coprocessador_ulp": "Ja (RISC-V, LP CPU de 40 MHz)", "coprocessador_ulp": "Ja (RISC-V, LP CPU de 40 MHz)",
"aceleradores_ia": "Sim (Custom AI and DSP extension XespV)", "aceleradores_ia": "Sim (Custom AI and DSP extension XespV)",
"seguranca": { "seguranca": {
"aes": "AES-128/256 com GCM", "aes": "AES-128/256 mit GCM",
"sha": "SHA-1/224/256/384/512", "sha": "SHA-1/224/256/384/512",
"rsa": "Ja (RSA/MPI bis zu 4096 bits)", "rsa": "Ja (RSA/MPI bis zu 4096 bits)",
"ecc": "Ja (P-192, P-256, P-384)", "ecc": "Ja (P-192, P-256, P-384)",
@@ -222,20 +222,20 @@
"psram_externa": "16 MB oder 32 MB Octal-DDR, nur im Gehäuse integriert (NRV16, NRV32)", "psram_externa": "16 MB oder 32 MB Octal-DDR, nur im Gehäuse integriert (NRV16, NRV32)",
"gpio": "60", "gpio": "60",
"adc": "2x SAR-ADC mit 12 Bit, bis zu 16 Kanäle", "adc": "2x SAR-ADC mit 12 Bit, bis zu 16 Kanäle",
"dac": "Ja (2x DAC de 10 bits e 2x DAC de 12 bits)", "dac": "Ja (2x 10-Bit-DAC und 2x 12-Bit-DAC)",
"touch": "14 kapazitive Kanäle", "touch": "14 kapazitive Kanäle",
"uart": "5 (4 UART + 1 LP UART)", "uart": "5 (4 UART + 1 LP UART)",
"spi": "7 (6 SPI + 1 LP SPI)", "spi": "7 (6 SPI + 1 LP SPI)",
"i2c": "3 (2 I2C + 1 LP I2C)", "i2c": "3 (2 I2C + 1 LP I2C)",
"i2s": "2", "i2s": "2",
"pwm": "LED-PWM (bis zu 8 Kanäle), Motor-PWM (MCPWM)", "pwm": "LED-PWM (bis zu 8 Kanäle), Motor-PWM (MCPWM)",
"usb": "1 (USB 2.0 High-Speed OTG e USB Serial/JTAG)", "usb": "1 (USB 2.0 High-Speed OTG und USB Serial/JTAG)",
"can": "Ja (CAN FD Controller)", "can": "Ja (CAN FD Controller)",
"sensor_temperatura": "1 (interno)", "sensor_temperatura": "1 (interno)",
"consumo_energia": { "consumo_energia": {
"active": "Konfigurierbarer, leistungsoptimierter Hochleistungsbetrieb", "active": "Konfigurierbarer, leistungsoptimierter Hochleistungsbetrieb",
"light_sleep": "0.1-0.8 mA", "light_sleep": "0.1-0.8 mA",
"deep_sleep": "Baixo consumo com LP CPU ativa" "deep_sleep": "Niedriger Verbrauch bei aktiver LP-CPU"
}, },
"temperatura_operacao": "-40°C a 85°C", "temperatura_operacao": "-40°C a 85°C",
"temperatura_armazenamento": "-40°C a 150°C", "temperatura_armazenamento": "-40°C a 150°C",
@@ -255,7 +255,7 @@
"nome_completo": "ESP32-C2 (ESP8684)", "nome_completo": "ESP32-C2 (ESP8684)",
"icone": "🌱", "icone": "🌱",
"descricao": "Kompakter und kostengünstiger RISC-V-Chip für einfache Sensoren und den direkten Ersatz des ESP8266 in volumenstarken Massenproduktionen.", "descricao": "Kompakter und kostengünstiger RISC-V-Chip für einfache Sensoren und den direkten Ersatz des ESP8266 in volumenstarken Massenproduktionen.",
"arquitetura": "RISC-V single-core de 32 bits", "arquitetura": "32-Bit-RISC-V Single-Core",
"nucleos": "1 (Single-core)", "nucleos": "1 (Single-core)",
"frequencia": "Bis zu 120 MHz", "frequencia": "Bis zu 120 MHz",
"seguranca": { "seguranca": {
@@ -269,7 +269,7 @@
"key_manager": "Nein", "key_manager": "Nein",
"rng": "Ja (TRNG Hardware-TRNG)", "rng": "Ja (TRNG Hardware-TRNG)",
"criptografia_flash": "XTS-AES-128", "criptografia_flash": "XTS-AES-128",
"secure_boot": "V2 (ECDSA P-192 ou P-256)", "secure_boot": "V2 (ECDSA P-192 oder P-256)",
"protecao_dpa": "Nein" "protecao_dpa": "Nein"
}, },
"wifi": "IEEE 802.11 b/g/n (2.4 GHz, bis zu 72.2 Mbps)", "wifi": "IEEE 802.11 b/g/n (2.4 GHz, bis zu 72.2 Mbps)",
@@ -300,7 +300,7 @@
"esp_idf_minimo": "v5.0", "esp_idf_minimo": "v5.0",
"arduino_core": "Ja (1 definições de placa no core oficial)", "arduino_core": "Ja (1 definições de placa no core oficial)",
"encapsulamento": "QFN24 (4×4 mm)", "encapsulamento": "QFN24 (4×4 mm)",
"modulos": "ESP8684-MINI-1, ESP8684-WROOM-01C, ESP8684-WROOM-02C, ESP8684-WROOM-02UC e mais 5", "modulos": "ESP8684-MINI-1, ESP8684-WROOM-01C, ESP8684-WROOM-02C, ESP8684-WROOM-02UC und 5 weitere",
"datasheet": "https://documentation.espressif.com/esp32-c2_datasheet_en.html", "datasheet": "https://documentation.espressif.com/esp32-c2_datasheet_en.html",
"manual_tecnico": "https://documentation.espressif.com/esp32-c2_technical_reference_manual_en.html", "manual_tecnico": "https://documentation.espressif.com/esp32-c2_technical_reference_manual_en.html",
"guia_de_programacao": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c2/get-started/index.html", "guia_de_programacao": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c2/get-started/index.html",
@@ -311,7 +311,7 @@
"nome_completo": "ESP32-C3", "nome_completo": "ESP32-C3",
"icone": "💎", "icone": "💎",
"descricao": "Kostengünstiger RISC-V-Single-Core, anschlusskompatibel zum ESP8266. Bietet Wi-Fi 4 und Bluetooth 5 (BLE) für kompakte vernetzte Geräte.", "descricao": "Kostengünstiger RISC-V-Single-Core, anschlusskompatibel zum ESP8266. Bietet Wi-Fi 4 und Bluetooth 5 (BLE) für kompakte vernetzte Geräte.",
"arquitetura": "RISC-V single-core de 32 bits", "arquitetura": "32-Bit-RISC-V Single-Core",
"nucleos": "1 (Single-core)", "nucleos": "1 (Single-core)",
"frequencia": "Bis zu 160 MHz", "frequencia": "Bis zu 160 MHz",
"seguranca": { "seguranca": {
@@ -370,7 +370,7 @@
"nome_completo": "ESP32-C5", "nome_completo": "ESP32-C5",
"icone": "📶", "icone": "📶",
"descricao": "Erster Dualband-SoC (2,4 GHz und 5 GHz) der C-Serie mit RISC-V-Architektur. Konzipiert für Industrieumgebungen mit hoher Kanalauslastung im 2,4-GHz-Band.", "descricao": "Erster Dualband-SoC (2,4 GHz und 5 GHz) der C-Serie mit RISC-V-Architektur. Konzipiert für Industrieumgebungen mit hoher Kanalauslastung im 2,4-GHz-Band.",
"arquitetura": "RISC-V single-core de 32 bits (HP) + RISC-V single-core (LP)", "arquitetura": "32-Bit-RISC-V Single-Core (HP) + RISC-V Single-Core (LP)",
"nucleos": "1 (Single-core HP) + 1 (Single-core LP)", "nucleos": "1 (Single-core HP) + 1 (Single-core LP)",
"frequencia": "Bis zu 240 MHz", "frequencia": "Bis zu 240 MHz",
"coprocessador_ulp": "Ja (RISC-V, LP CPU de 48 MHz)", "coprocessador_ulp": "Ja (RISC-V, LP CPU de 48 MHz)",
@@ -385,7 +385,7 @@
"key_manager": "Ja", "key_manager": "Ja",
"rng": "Ja (TRNG Hardware-TRNG)", "rng": "Ja (TRNG Hardware-TRNG)",
"criptografia_flash": "XTS-AES-128/256", "criptografia_flash": "XTS-AES-128/256",
"secure_boot": "V2 (RSA-3072 ou ECDSA P-256/P-384)", "secure_boot": "V2 (RSA-3072 oder ECDSA P-256/P-384)",
"protecao_dpa": "Ja" "protecao_dpa": "Ja"
}, },
"wifi": "Wi-Fi 6 (802.11ax) Dualband 2.4 GHz e 5 GHz", "wifi": "Wi-Fi 6 (802.11ax) Dualband 2.4 GHz e 5 GHz",
@@ -396,7 +396,7 @@
"memoria_sram_rtc": "16 KB", "memoria_sram_rtc": "16 KB",
"memoria_rom": "320 KB", "memoria_rom": "320 KB",
"flash_externa": "Bis zu 16 MB über QSPI", "flash_externa": "Bis zu 16 MB über QSPI",
"psram_externa": "Ja, via SPI (controlador de flash/PSRAM com cache)", "psram_externa": "Ja, über SPI (Flash/PSRAM-Controller mit Cache)",
"gpio": "29", "gpio": "29",
"adc": "1x SAR-ADC mit 12 Bit, bis zu 6 Kanäle", "adc": "1x SAR-ADC mit 12 Bit, bis zu 6 Kanäle",
"dac": "Nein", "dac": "Nein",
@@ -425,14 +425,14 @@
"guia_de_programacao": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c5/get-started/index.html", "guia_de_programacao": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c5/get-started/index.html",
"placa": "/placas/esp32-c5.png", "placa": "/placas/esp32-c5.png",
"cor": "#6f42c1", "cor": "#6f42c1",
"sdio": "1 (SDIO Slave, a partir da revisão v1.0)", "sdio": "1 (SDIO Slave, ab Revision v1.0)",
"can": "2 (CAN FD)" "can": "2 (CAN FD)"
}, },
"ESP32-C6": { "ESP32-C6": {
"nome_completo": "ESP32-C6", "nome_completo": "ESP32-C6",
"icone": "🌐", "icone": "🌐",
"descricao": "Moderner RISC-V-SoC mit Wi-Fi 6, Bluetooth 5 (LE) und integriertem IEEE-802.15.4-Funk. Ideal für stromsparende Smart-Home-Knoten nach Matter- und Thread-Standard.", "descricao": "Moderner RISC-V-SoC mit Wi-Fi 6, Bluetooth 5 (LE) und integriertem IEEE-802.15.4-Funk. Ideal für stromsparende Smart-Home-Knoten nach Matter- und Thread-Standard.",
"arquitetura": "RISC-V single-core de 32 bits (HP) + RISC-V single-core (LP)", "arquitetura": "32-Bit-RISC-V Single-Core (HP) + RISC-V Single-Core (LP)",
"nucleos": "1 (Single-core HP) + 1 (Single-core LP)", "nucleos": "1 (Single-core HP) + 1 (Single-core LP)",
"frequencia": "Bis zu 160 MHz", "frequencia": "Bis zu 160 MHz",
"coprocessador_ulp": "Ja (RISC-V, LP CPU de 20 MHz)", "coprocessador_ulp": "Ja (RISC-V, LP CPU de 20 MHz)",
@@ -447,7 +447,7 @@
"key_manager": "Nein", "key_manager": "Nein",
"rng": "Ja (TRNG Hardware-TRNG)", "rng": "Ja (TRNG Hardware-TRNG)",
"criptografia_flash": "XTS-AES-128", "criptografia_flash": "XTS-AES-128",
"secure_boot": "V2 (RSA-3072 ou ECDSA)", "secure_boot": "V2 (RSA-3072 oder ECDSA)",
"protecao_dpa": "Ja" "protecao_dpa": "Ja"
}, },
"wifi": "Wi-Fi 6 (802.11ax) 2.4 GHz", "wifi": "Wi-Fi 6 (802.11ax) 2.4 GHz",
@@ -493,7 +493,7 @@
"nome_completo": "ESP32-C61", "nome_completo": "ESP32-C61",
"icone": "🛰️", "icone": "🛰️",
"descricao": "Kostengünstige Variante des C6, optimiert für Wi-Fi 6- und BLE-Endknoten ohne 802.15.4-Funk, ideal für großflächig vernetzte Sensoren.", "descricao": "Kostengünstige Variante des C6, optimiert für Wi-Fi 6- und BLE-Endknoten ohne 802.15.4-Funk, ideal für großflächig vernetzte Sensoren.",
"arquitetura": "RISC-V single-core de 32 bits", "arquitetura": "32-Bit-RISC-V Single-Core",
"nucleos": "1 (Single-core)", "nucleos": "1 (Single-core)",
"frequencia": "Bis zu 160 MHz", "frequencia": "Bis zu 160 MHz",
"seguranca": { "seguranca": {
@@ -553,13 +553,13 @@
"nome_completo": "ESP32-P4", "nome_completo": "ESP32-P4",
"icone": "⚡", "icone": "⚡",
"descricao": "Hochleistungs-Mikrocontroller ohne integriertes Funkmodul mit 400-MHz-RISC-V-Dual-Core, MIPI-CSI/DSI-Schnittstellen und erweiterter Sicherheit für anspruchsvolle HMIs und Gateways.", "descricao": "Hochleistungs-Mikrocontroller ohne integriertes Funkmodul mit 400-MHz-RISC-V-Dual-Core, MIPI-CSI/DSI-Schnittstellen und erweiterter Sicherheit für anspruchsvolle HMIs und Gateways.",
"arquitetura": "RISC-V de 32 bits dual-core de alto desempenho (HP) + single-core de baixo consumo (LP)", "arquitetura": "32-Bit-RISC-V Dual-Core mit hoher Leistung (HP) + Single-Core mit niedrigem Verbrauch (LP)",
"nucleos": "2 (Dual-core HP) + 1 (Single-core LP)", "nucleos": "2 (Dual-core HP) + 1 (Single-core LP)",
"frequencia": "Bis zu 400 MHz (HP, Revision v3.x; 360 MHz bei v1.x); LP bis zu 40 MHz", "frequencia": "Bis zu 400 MHz (HP, Revision v3.x; 360 MHz bei v1.x); LP bis zu 40 MHz",
"coprocessador_ulp": "Ja (RISC-V, LP CPU de 40 MHz)", "coprocessador_ulp": "Ja (RISC-V, LP CPU de 40 MHz)",
"aceleradores_ia": "Sim (Vector Instructions, aceleradores de IA)", "aceleradores_ia": "Sim (Vector Instructions, aceleradores de IA)",
"seguranca": { "seguranca": {
"aes": "AES-128/256 com GCM", "aes": "AES-128/256 mit GCM",
"sha": "SHA-1/224/256/384/512", "sha": "SHA-1/224/256/384/512",
"rsa": "Ja (RSA/MPI bis zu 4096 bits)", "rsa": "Ja (RSA/MPI bis zu 4096 bits)",
"ecc": "Ja (P-192, P-256, P-384)", "ecc": "Ja (P-192, P-256, P-384)",
@@ -569,7 +569,7 @@
"key_manager": "Ja", "key_manager": "Ja",
"rng": "Ja (TRNG Hardware-TRNG)", "rng": "Ja (TRNG Hardware-TRNG)",
"criptografia_flash": "XTS-AES-128/256", "criptografia_flash": "XTS-AES-128/256",
"secure_boot": "V2 (RSA-3072 ou ECDSA)", "secure_boot": "V2 (RSA-3072 oder ECDSA)",
"protecao_dpa": "Nein" "protecao_dpa": "Nein"
}, },
"wifi": "Nein", "wifi": "Nein",
@@ -618,7 +618,7 @@
"nome_completo": "ESP32-H2", "nome_completo": "ESP32-H2",
"icone": "🔋", "icone": "🔋",
"descricao": "Ultra-Low-Power-Chip ohne Wi-Fi, ausgelegt für Zigbee 3.0, Thread 1.3 und Matter über 802.15.4 sowie Bluetooth 5.4 LE. Perfekt für batteriebetriebene Sensoren.", "descricao": "Ultra-Low-Power-Chip ohne Wi-Fi, ausgelegt für Zigbee 3.0, Thread 1.3 und Matter über 802.15.4 sowie Bluetooth 5.4 LE. Perfekt für batteriebetriebene Sensoren.",
"arquitetura": "RISC-V single-core de 32 bits", "arquitetura": "32-Bit-RISC-V Single-Core",
"nucleos": "1 (Single-core)", "nucleos": "1 (Single-core)",
"frequencia": "Bis zu 96 MHz", "frequencia": "Bis zu 96 MHz",
"seguranca": { "seguranca": {
@@ -632,7 +632,7 @@
"key_manager": "Nein", "key_manager": "Nein",
"rng": "Ja (TRNG Hardware-TRNG)", "rng": "Ja (TRNG Hardware-TRNG)",
"criptografia_flash": "XTS-AES-128", "criptografia_flash": "XTS-AES-128",
"secure_boot": "V2 (RSA-3072 ou ECDSA)", "secure_boot": "V2 (RSA-3072 oder ECDSA)",
"protecao_dpa": "Ja" "protecao_dpa": "Ja"
}, },
"wifi": "Nein", "wifi": "Nein",
@@ -640,7 +640,7 @@
"zigbee_thread": "IEEE 802.15.4 (Zigbee 3.0, Thread 1.4)", "zigbee_thread": "IEEE 802.15.4 (Zigbee 3.0, Thread 1.4)",
"matter": "Ja", "matter": "Ja",
"memoria_sram": "320 KB", "memoria_sram": "320 KB",
"memoria_sram_rtc": "4 KB (LP Memory)", "memoria_sram_rtc": "4 KB (LP-Speicher)",
"memoria_rom": "128 KB", "memoria_rom": "128 KB",
"flash_externa": "Bis zu 16 MB über QSPI", "flash_externa": "Bis zu 16 MB über QSPI",
"psram_externa": "Nein", "psram_externa": "Nein",
@@ -678,7 +678,7 @@
"icone": "🛡️", "icone": "🛡️",
"descricao": "Weiterentwicklung der 802.15.4-Reihe mit RISC-V-Dual-Core, Bluetooth 5.4 und erweiterter Funkreichweite, optimiert für Thread-Border-Router und Gateways.", "descricao": "Weiterentwicklung der 802.15.4-Reihe mit RISC-V-Dual-Core, Bluetooth 5.4 und erweiterter Funkreichweite, optimiert für Thread-Border-Router und Gateways.",
"status_documentacao": "Vorläufige Dokumentation: Espressif hat noch kein Datenblatt oder technisches Handbuch für den ESP32-H4 veröffentlicht. Die folgenden Daten stammen aus der offiziellen Produktankündigung und den Hardwaredefinitionen (soc_caps) von ESP-IDF und können sich bis zur Veröffentlichung ändern.", "status_documentacao": "Vorläufige Dokumentation: Espressif hat noch kein Datenblatt oder technisches Handbuch für den ESP32-H4 veröffentlicht. Die folgenden Daten stammen aus der offiziellen Produktankündigung und den Hardwaredefinitionen (soc_caps) von ESP-IDF und können sich bis zur Veröffentlichung ändern.",
"arquitetura": "RISC-V dual-core de 32 bits", "arquitetura": "32-Bit-RISC-V Dual-Core",
"nucleos": "2 (Dual-core)", "nucleos": "2 (Dual-core)",
"frequencia": "Bis zu 96 MHz", "frequencia": "Bis zu 96 MHz",
"seguranca": { "seguranca": {
+4 -4
View File
@@ -7,7 +7,7 @@
"RF antenna connection (Wi-Fi and Bluetooth)" "RF antenna connection (Wi-Fi and Bluetooth)"
], ],
"categorias": [ "categorias": [
"Antenna", "Antena",
"RF" "RF"
], ],
"avisos": [ "avisos": [
@@ -19,7 +19,7 @@
"nome": "VDDA3P3", "nome": "VDDA3P3",
"tipo": "power", "tipo": "power",
"funcoes": [ "funcoes": [
"Analog power supply de 3.3V" "Analog power supply (3.3V)"
], ],
"categorias": [ "categorias": [
"Power" "Power"
@@ -34,7 +34,7 @@
"nome": "VDDA3P3", "nome": "VDDA3P3",
"tipo": "power", "tipo": "power",
"funcoes": [ "funcoes": [
"Analog power supply de 3.3V" "Analog power supply (3.3V)"
], ],
"categorias": [ "categorias": [
"Power" "Power"
@@ -300,7 +300,7 @@
"nome": "VDD3P3_CPU", "nome": "VDD3P3_CPU",
"tipo": "power", "tipo": "power",
"funcoes": [ "funcoes": [
"Digital power supply da CPU e IOs correspondentes (3.3V)" "Digital power supply for the CPU and corresponding I/Os (3.3V)"
], ],
"categorias": [ "categorias": [
"Power" "Power"
+1 -1
View File
@@ -7,7 +7,7 @@
"RF signals input/output (Wi-Fi and Bluetooth) to antenna" "RF signals input/output (Wi-Fi and Bluetooth) to antenna"
], ],
"categorias": [ "categorias": [
"Antenna" "Antena"
], ],
"avisos": [ "avisos": [
"Refer to datasheet section 2.4 for more details on analog pins" "Refer to datasheet section 2.4 for more details on analog pins"
+2 -2
View File
@@ -848,7 +848,7 @@
"RF antenna connection for 2 GHz band" "RF antenna connection for 2 GHz band"
], ],
"categorias": [ "categorias": [
"Antenna" "Antena"
], ],
"avisos": [ "avisos": [
"Refer to datasheet section 2.4 for more details on analog pins" "Refer to datasheet section 2.4 for more details on analog pins"
@@ -935,7 +935,7 @@
"RF antenna connection for 5 GHz band" "RF antenna connection for 5 GHz band"
], ],
"categorias": [ "categorias": [
"Antenna" "Antena"
], ],
"avisos": [ "avisos": [
"Refer to datasheet section 2.4 for more details on analog pins" "Refer to datasheet section 2.4 for more details on analog pins"
+1 -1
View File
@@ -7,7 +7,7 @@
"RF antenna connection" "RF antenna connection"
], ],
"categorias": [ "categorias": [
"Antenna" "Antena"
], ],
"avisos": [ "avisos": [
"Refer to datasheet section 2.4 for more details on analog pins" "Refer to datasheet section 2.4 for more details on analog pins"
+1 -1
View File
@@ -7,7 +7,7 @@
"RF antenna connection (Wi-Fi and Bluetooth)" "RF antenna connection (Wi-Fi and Bluetooth)"
], ],
"categorias": [ "categorias": [
"Antenna", "Antena",
"RF" "RF"
], ],
"avisos": [ "avisos": [
+1 -1
View File
@@ -583,7 +583,7 @@
"RF antenna connection" "RF antenna connection"
], ],
"categorias": [ "categorias": [
"Antenna" "Antena"
], ],
"avisos": [ "avisos": [
"Refer to datasheet section 2.4 for more details on analog pins" "Refer to datasheet section 2.4 for more details on analog pins"
+1 -1
View File
@@ -24,7 +24,7 @@
"RF signal input/output (Wi-Fi) to antenna" "RF signal input/output (Wi-Fi) to antenna"
], ],
"categorias": [ "categorias": [
"Antenna" "Antena"
] ]
}, },
{ {
+1 -1
View File
@@ -7,7 +7,7 @@
"RF signals input/output (Wi-Fi and Bluetooth) to antenna" "RF signals input/output (Wi-Fi and Bluetooth) to antenna"
], ],
"categorias": [ "categorias": [
"Antenna" "Antena"
], ],
"avisos": [ "avisos": [
"Refer to datasheet section 2.4 for more details on analog pins" "Refer to datasheet section 2.4 for more details on analog pins"
+1 -1
View File
@@ -7,7 +7,7 @@
"RF antenna connection (Wi-Fi and Bluetooth)" "RF antenna connection (Wi-Fi and Bluetooth)"
], ],
"categorias": [ "categorias": [
"Antenna", "Antena",
"RF" "RF"
], ],
"avisos": [ "avisos": [
+3 -3
View File
@@ -29,7 +29,7 @@
"Low-noise amplifier (LNA) input for Wi-Fi and Bluetooth receiver" "Low-noise amplifier (LNA) input for Wi-Fi and Bluetooth receiver"
], ],
"categorias": [ "categorias": [
"Antenna" "Antena"
], ],
"avisos": [ "avisos": [
"Refer to datasheet section 2.4 for more details on analog pins" "Refer to datasheet section 2.4 for more details on analog pins"
@@ -1090,7 +1090,7 @@
"VDDA" "VDDA"
], ],
"funcoes": [ "funcoes": [
"Capacitor de filtro" "Filter capacitor"
], ],
"categorias": [ "categorias": [
"Power" "Power"
@@ -1108,7 +1108,7 @@
"VDDA" "VDDA"
], ],
"funcoes": [ "funcoes": [
"Capacitor de filtro" "Filter capacitor"
], ],
"categorias": [ "categorias": [
"Power" "Power"
+2 -2
View File
@@ -187,7 +187,7 @@
"nome": "VDD3P3_RTC", "nome": "VDD3P3_RTC",
"tipo": "power", "tipo": "power",
"funcoes": [ "funcoes": [
"Alimentación del dominio RTC e I/Os de bajo consumo" "Alimentación del dominio RTC y I/Os de bajo consumo"
], ],
"categorias": [ "categorias": [
"Power" "Power"
@@ -300,7 +300,7 @@
"nome": "VDD3P3_CPU", "nome": "VDD3P3_CPU",
"tipo": "power", "tipo": "power",
"funcoes": [ "funcoes": [
"Alimentación digital de la CPU e I/Os correspondientes (3.3V)" "Alimentación digital de la CPU y I/Os correspondientes (3.3V)"
], ],
"categorias": [ "categorias": [
"Power" "Power"
+9 -9
View File
@@ -68,7 +68,7 @@
"Power" "Power"
], ],
"avisos": [ "avisos": [
"Tensión recomendada: 3.3V. Alimenta a parte digital de baixo consumo e pinos associados." "Tensión recomendada: 3.3V. Alimenta la parte digital de bajo consumo y los pines asociados."
] ]
}, },
{ {
@@ -189,7 +189,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Pin multifuncional: JTAG MTCK e entrada analógica ADC1 Canal 3." "Pin multifuncional: JTAG MTCK y entrada analógica ADC1 Canal 3."
] ]
}, },
{ {
@@ -229,7 +229,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Pin multifuncional de alta velocidade: SDIO Comando ou SPI2 Chip Select 0." "Pin multifuncional de alta velocidad: SDIO Command o SPI2 Chip Select 0."
] ]
}, },
{ {
@@ -250,7 +250,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Pin multifuncional de alta velocidade: SDIO Clock ou SPI2 Clock." "Pin multifuncional de alta velocidad: SDIO Clock o SPI2 Clock."
] ]
}, },
{ {
@@ -271,7 +271,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Pin multifuncional de alta velocidade: SDIO Dados 0 ou SPI2 MOSI (FSPID)." "Pin multifuncional de alta velocidad: SDIO Data 0 o SPI2 MOSI (FSPID)."
] ]
}, },
{ {
@@ -292,7 +292,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Pin de alta velocidade: SDIO Dados 1 ou SPI2 MISO (FSPIQ)." "Pin de alta velocidad: SDIO Data 1 o SPI2 MISO (FSPIQ)."
] ]
}, },
{ {
@@ -313,7 +313,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Pin de alta velocidade: SDIO Dados 2 ou SPI2 Write Protect." "Pin de alta velocidad: SDIO Data 2 o SPI2 Write Protect."
] ]
}, },
{ {
@@ -334,7 +334,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Pin de alta velocidade: SDIO Dados 3 ou SPI2 Hold." "Pin de alta velocidad: SDIO Data 3 o SPI2 Hold."
] ]
}, },
{ {
@@ -436,7 +436,7 @@
"nome": "VDD_SPI", "nome": "VDD_SPI",
"tipo": "power", "tipo": "power",
"funcoes": [ "funcoes": [
"Tensión de salida LDO gerada a partir de VDDPST2 para lalimentar a flash e PSRAM" "Tensión de salida del LDO generada a partir de VDDPST2 para alimentar la flash y la PSRAM"
], ],
"categorias": [ "categorias": [
"Power" "Power"
+1 -1
View File
@@ -583,7 +583,7 @@
"nome": "VDD3P3_RTC_IO", "nome": "VDD3P3_RTC_IO",
"tipo": "power", "tipo": "power",
"funcoes": [ "funcoes": [
"Entrada de alimentación del dominio de bajo consumo (RTC) e parte do dominio digital" "Entrada de alimentación del dominio de bajo consumo (RTC) y parte del dominio digital"
], ],
"categorias": [ "categorias": [
"Power" "Power"
+1 -1
View File
@@ -441,7 +441,7 @@
"nome": "VDD3P3_RTC", "nome": "VDD3P3_RTC",
"tipo": "power", "tipo": "power",
"funcoes": [ "funcoes": [
"Entrada de alimentación del dominio de bajo consumo (RTC) e parte do dominio digital" "Entrada de alimentación del dominio de bajo consumo (RTC) y parte del dominio digital"
], ],
"categorias": [ "categorias": [
"Power" "Power"
+4 -4
View File
@@ -520,7 +520,7 @@
"avisos": [ "avisos": [
"Durante el reinicio, este pin estará configurado como entrada con el pull-down interno activado", "Durante el reinicio, este pin estará configurado como entrada con el pull-down interno activado",
"Tras el reinicio, este pin estará configurado como entrada con el pull-down interno activado", "Tras el reinicio, este pin estará configurado como entrada con el pull-down interno activado",
"La função I2C_SCL está disponible en el modo de bajo consumo (RTC)", "La función I2C_SCL está disponible en el modo de bajo consumo (RTC)",
"Utilizado para controlar el modo de arranque del chip (consulte la sección 3.1 de la hoja de datos para más detalles)" "Utilizado para controlar el modo de arranque del chip (consulte la sección 3.1 de la hoja de datos para más detalles)"
] ]
}, },
@@ -588,7 +588,7 @@
"avisos": [ "avisos": [
"Durante el reinicio, este pin estará configurado como entrada con el pull-down interno activado", "Durante el reinicio, este pin estará configurado como entrada con el pull-down interno activado",
"Tras el reinicio, este pin estará configurado como entrada con el pull-down interno activado", "Tras el reinicio, este pin estará configurado como entrada con el pull-down interno activado",
"La função I2C_SCL está disponible en el modo de bajo consumo (RTC)" "La función I2C_SCL está disponible en el modo de bajo consumo (RTC)"
] ]
}, },
{ {
@@ -1090,7 +1090,7 @@
"VDDA" "VDDA"
], ],
"funcoes": [ "funcoes": [
"Capacitor de filtro" "Condensador de filtro"
], ],
"categorias": [ "categorias": [
"Power" "Power"
@@ -1108,7 +1108,7 @@
"VDDA" "VDDA"
], ],
"funcoes": [ "funcoes": [
"Capacitor de filtro" "Condensador de filtro"
], ],
"categorias": [ "categorias": [
"Power" "Power"
+5 -5
View File
@@ -73,7 +73,7 @@
"frequencia": "Hasta 240 MHz", "frequencia": "Hasta 240 MHz",
"coprocessador_ulp": "Sí (RISC-V ULP coprocessor)", "coprocessador_ulp": "Sí (RISC-V ULP coprocessor)",
"seguranca": { "seguranca": {
"aes": "AES-128/192/256 com GCM", "aes": "AES-128/192/256 con GCM",
"sha": "SHA-1/224/256/384/512", "sha": "SHA-1/224/256/384/512",
"rsa": "Sí (RSA-3072/4096)", "rsa": "Sí (RSA-3072/4096)",
"ecc": "No", "ecc": "No",
@@ -204,7 +204,7 @@
"coprocessador_ulp": "Sí (RISC-V ULP de ultra bajo consumo)", "coprocessador_ulp": "Sí (RISC-V ULP de ultra bajo consumo)",
"aceleradores_ia": "Sí (extensiones vectoriales avanzadas para TinyML, reconocimiento de voz y visión)", "aceleradores_ia": "Sí (extensiones vectoriales avanzadas para TinyML, reconocimiento de voz y visión)",
"seguranca": { "seguranca": {
"aes": "AES-128/256 com GCM", "aes": "AES-128/256 con GCM",
"sha": "SHA-1/224/256/384/512", "sha": "SHA-1/224/256/384/512",
"rsa": "Sí (RSA-3072/4096)", "rsa": "Sí (RSA-3072/4096)",
"ecc": "Sí (ECC HW)", "ecc": "Sí (ECC HW)",
@@ -241,7 +241,7 @@
"consumo_energia": { "consumo_energia": {
"active": "Consumo optimizado de alto rendimiento configurable", "active": "Consumo optimizado de alto rendimiento configurable",
"light_sleep": "0.1-0.8 mA", "light_sleep": "0.1-0.8 mA",
"deep_sleep": "Baixo consumo com LP CPU ativa" "deep_sleep": "Bajo consumo con LP CPU activa"
}, },
"temperatura_operacao": "-40°C a 85°C", "temperatura_operacao": "-40°C a 85°C",
"temperatura_armazenamento": "-40°C a 150°C", "temperatura_armazenamento": "-40°C a 150°C",
@@ -446,7 +446,7 @@
"guia_de_programacao": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c5/get-started/index.html", "guia_de_programacao": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c5/get-started/index.html",
"placa": "/placas/esp32-c5.png", "placa": "/placas/esp32-c5.png",
"cor": "#6f42c1", "cor": "#6f42c1",
"sdio": "1 (SDIO Slave, a partir da revisão v1.0)", "sdio": "1 (SDIO Slave, a partir de la revisión v1.0)",
"can": "2 (CAN FD)", "can": "2 (CAN FD)",
"ethernet": "No", "ethernet": "No",
"ethernet_mac": "No", "ethernet_mac": "No",
@@ -591,7 +591,7 @@
"coprocessador_ulp": "Sí (RISC-V LP core de bajo consumo)", "coprocessador_ulp": "Sí (RISC-V LP core de bajo consumo)",
"aceleradores_ia": "Sí (extensiones vectoriales completas para IA, DSP y códecs de video)", "aceleradores_ia": "Sí (extensiones vectoriales completas para IA, DSP y códecs de video)",
"seguranca": { "seguranca": {
"aes": "AES-128/256 com GCM", "aes": "AES-128/256 con GCM",
"sha": "SHA-1/224/256/384/512", "sha": "SHA-1/224/256/384/512",
"rsa": "Sí (RSA-3072/4096)", "rsa": "Sí (RSA-3072/4096)",
"ecc": "Sí (ECC HW)", "ecc": "Sí (ECC HW)",
+3 -3
View File
@@ -7,7 +7,7 @@
"Connexion de l'antenne RF (Wi-Fi et Bluetooth)" "Connexion de l'antenne RF (Wi-Fi et Bluetooth)"
], ],
"categorias": [ "categorias": [
"Antenne", "Antena",
"RF" "RF"
], ],
"avisos": [ "avisos": [
@@ -301,7 +301,7 @@
"UART" "UART"
], ],
"avisos": [ "avisos": [
"UART0 receive pin (Serial RX by default for flashing and monitoring)." "Broche de réception UART0 (RX série par défaut pour le flashage et la surveillance)."
] ]
}, },
{ {
@@ -317,7 +317,7 @@
"UART" "UART"
], ],
"avisos": [ "avisos": [
"UART0 transmit pin (Serial TX by default for flashing and monitoring)." "Broche d'émission UART0 (TX série par défaut pour le flashage et la surveillance)."
] ]
}, },
{ {
+23 -23
View File
@@ -7,7 +7,7 @@
"Entrée et sortie des signaux RF (Wi-Fi et Bluetooth) vers l'antenne" "Entrée et sortie des signaux RF (Wi-Fi et Bluetooth) vers l'antenne"
], ],
"categorias": [ "categorias": [
"Antenne" "Antena"
], ],
"avisos": [ "avisos": [
"Consultez la section 2.4 de la fiche technique pour plus de détails sur les broches analogiques" "Consultez la section 2.4 de la fiche technique pour plus de détails sur les broches analogiques"
@@ -25,8 +25,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -42,8 +42,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -97,7 +97,7 @@
"avisos": [ "avisos": [
"Pendant la réinitialisation, cette broche est configurée en entrée", "Pendant la réinitialisation, cette broche est configurée en entrée",
"Après la réinitialisation, cette broche sera configurée en entrée", "Après la réinitialisation, cette broche sera configurée en entrée",
"This pin does not set boot mode, but connecting it with a pull-up is recommended to prevent glitches (see datasheet section 3.1)" "Cette broche ne définit pas le mode de démarrage, mais il est recommandé de la relier à un pull-up pour éviter les parasites (voir la section 3.1 de la fiche technique)"
] ]
}, },
{ {
@@ -113,7 +113,7 @@
"avisos": [ "avisos": [
"Porter cette broche au niveau haut active le fonctionnement de la puce", "Porter cette broche au niveau haut active le fonctionnement de la puce",
"Porter cette broche au niveau bas désactive le fonctionnement de la puce", "Porter cette broche au niveau bas désactive le fonctionnement de la puce",
"Do not leave this pin floating, use an external pull-up resistor" "Ne laissez pas cette broche flottante ; utilisez une résistance de pull-up externe"
] ]
}, },
{ {
@@ -187,8 +187,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -292,8 +292,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -311,8 +311,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce", "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce",
"Ne peut être utilisée comme GPIO que si la mémoire flash est alimentée par une source externe" "Ne peut être utilisée comme GPIO que si la mémoire flash est alimentée par une source externe"
] ]
@@ -333,7 +333,7 @@
"Pendant la réinitialisation, cette broche a son pull-up interne activé", "Pendant la réinitialisation, cette broche a son pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -352,7 +352,7 @@
"Pendant la réinitialisation, cette broche a son pull-up interne activé", "Pendant la réinitialisation, cette broche a son pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -371,7 +371,7 @@
"Pendant la réinitialisation, cette broche a son pull-up interne activé", "Pendant la réinitialisation, cette broche a son pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -390,7 +390,7 @@
"Pendant la réinitialisation, cette broche a son pull-up interne activé", "Pendant la réinitialisation, cette broche a son pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -409,7 +409,7 @@
"Pendant la réinitialisation, cette broche a son pull-up interne activé", "Pendant la réinitialisation, cette broche a son pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -428,7 +428,7 @@
"Pendant la réinitialisation, cette broche a son pull-up interne activé", "Pendant la réinitialisation, cette broche a son pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -537,8 +537,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -554,8 +554,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
+34 -34
View File
@@ -11,8 +11,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -40,8 +40,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -85,8 +85,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -103,7 +103,7 @@
"avisos": [ "avisos": [
"Porter cette broche au niveau haut active le fonctionnement de la puce", "Porter cette broche au niveau haut active le fonctionnement de la puce",
"Porter cette broche au niveau bas désactive le fonctionnement de la puce", "Porter cette broche au niveau bas désactive le fonctionnement de la puce",
"Do not leave this pin floating, use an external pull-up resistor" "Ne laissez pas cette broche flottante ; utilisez une résistance de pull-up externe"
] ]
}, },
{ {
@@ -118,8 +118,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -450,8 +450,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -471,7 +471,7 @@
"Pendant la réinitialisation, cette broche a son pull-up interne activé", "Pendant la réinitialisation, cette broche a son pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -490,7 +490,7 @@
"Pendant la réinitialisation, cette broche a son pull-up interne activé", "Pendant la réinitialisation, cette broche a son pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -509,7 +509,7 @@
"Pendant la réinitialisation, cette broche a son pull-up interne activé", "Pendant la réinitialisation, cette broche a son pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -528,7 +528,7 @@
"Pendant la réinitialisation, cette broche a son pull-up interne activé", "Pendant la réinitialisation, cette broche a son pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -545,8 +545,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce", "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce",
"Ne peut être utilisée comme GPIO que si la mémoire flash externe est alimentée par une source externe" "Ne peut être utilisée comme GPIO que si la mémoire flash externe est alimentée par une source externe"
] ]
@@ -567,7 +567,7 @@
"Pendant la réinitialisation, cette broche a son pull-up interne activé", "Pendant la réinitialisation, cette broche a son pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -586,7 +586,7 @@
"Pendant la réinitialisation, cette broche a son pull-up interne activé", "Pendant la réinitialisation, cette broche a son pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -605,7 +605,7 @@
"Pendant la réinitialisation, cette broche a son pull-up interne activé", "Pendant la réinitialisation, cette broche a son pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -717,8 +717,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -734,8 +734,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -751,8 +751,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -764,7 +764,7 @@
"Connexion de l'antenne RF pour la bande 2 GHz" "Connexion de l'antenne RF pour la bande 2 GHz"
], ],
"categorias": [ "categorias": [
"Antenne" "Antena"
], ],
"avisos": [ "avisos": [
"Consultez la section 2.4 de la fiche technique pour plus de détails sur les broches analogiques" "Consultez la section 2.4 de la fiche technique pour plus de détails sur les broches analogiques"
@@ -794,8 +794,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -811,8 +811,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -828,8 +828,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -853,7 +853,7 @@
"Connexion de l'antenne RF pour la bande 5 GHz" "Connexion de l'antenne RF pour la bande 5 GHz"
], ],
"categorias": [ "categorias": [
"Antenne" "Antena"
], ],
"avisos": [ "avisos": [
"Consultez la section 2.4 de la fiche technique pour plus de détails sur les broches analogiques" "Consultez la section 2.4 de la fiche technique pour plus de détails sur les broches analogiques"
+22 -22
View File
@@ -7,7 +7,7 @@
"Connexion de l'antenne RF" "Connexion de l'antenne RF"
], ],
"categorias": [ "categorias": [
"Antenne" "Antena"
], ],
"avisos": [ "avisos": [
"Consultez la section 2.4 de la fiche technique pour plus de détails sur les broches analogiques" "Consultez la section 2.4 de la fiche technique pour plus de détails sur les broches analogiques"
@@ -25,8 +25,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -42,8 +42,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -60,7 +60,7 @@
"avisos": [ "avisos": [
"Porter cette broche au niveau haut active le fonctionnement de la puce", "Porter cette broche au niveau haut active le fonctionnement de la puce",
"Porter cette broche au niveau bas désactive le fonctionnement de la puce", "Porter cette broche au niveau bas désactive le fonctionnement de la puce",
"Do not leave this pin floating, use an external pull-up resistor" "Ne laissez pas cette broche flottante ; utilisez une résistance de pull-up externe"
] ]
}, },
{ {
@@ -75,8 +75,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -380,7 +380,7 @@
"Pendant la réinitialisation, cette broche a son pull-up interne activé", "Pendant la réinitialisation, cette broche a son pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -399,7 +399,7 @@
"Pendant la réinitialisation, cette broche a son pull-up interne activé", "Pendant la réinitialisation, cette broche a son pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -418,7 +418,7 @@
"Pendant la réinitialisation, cette broche a son pull-up interne activé", "Pendant la réinitialisation, cette broche a son pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -435,8 +435,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce", "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce",
"Ne peut être utilisée comme GPIO que si la mémoire flash externe est alimentée par une source externe" "Ne peut être utilisée comme GPIO que si la mémoire flash externe est alimentée par une source externe"
] ]
@@ -457,7 +457,7 @@
"Pendant la réinitialisation, cette broche a son pull-up interne activé", "Pendant la réinitialisation, cette broche a son pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -476,7 +476,7 @@
"Pendant la réinitialisation, cette broche a son pull-up interne activé", "Pendant la réinitialisation, cette broche a son pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -495,7 +495,7 @@
"Pendant la réinitialisation, cette broche a son pull-up interne activé", "Pendant la réinitialisation, cette broche a son pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -527,8 +527,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -692,8 +692,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -737,8 +737,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
+29 -29
View File
@@ -7,11 +7,11 @@
"Connexion de l'antenne RF (Wi-Fi et Bluetooth)" "Connexion de l'antenne RF (Wi-Fi et Bluetooth)"
], ],
"categorias": [ "categorias": [
"Antenne", "Antena",
"RF" "RF"
], ],
"avisos": [ "avisos": [
"Dedicated 2.4 GHz RF pin. Requires 50-ohm impedance matching." "Broche RF 2,4 GHz dédiée. Nécessite une adaptation d'impédance de 50 ohms."
] ]
}, },
{ {
@@ -54,7 +54,7 @@
], ],
"avisos": [ "avisos": [
"Actif à l'état haut. Tirez au niveau haut pour initialiser la puce.", "Actif à l'état haut. Tirez au niveau haut pour initialiser la puce.",
"Do not leave this pin floating. An external RC circuit is recommended for clean reset." "Ne laissez pas cette broche flottante. Un circuit RC externe est recommandé pour un reset propre."
] ]
}, },
{ {
@@ -84,7 +84,7 @@
"Clock" "Clock"
], ],
"avisos": [ "avisos": [
"Low-power multifunction pin. Can connect to external 32 kHz crystal (Input P)." "Broche multifonction basse consommation. Peut être reliée à un quartz externe de 32 kHz (entrée P)."
] ]
}, },
{ {
@@ -102,7 +102,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Multifunction pin. External 32 kHz crystal connection (Output N) and ADC1 Channel 0 analog input." "Broche multifonction. Connexion du quartz externe de 32 kHz (sortie N) et entrée analogique ADC1 canal 0."
] ]
}, },
{ {
@@ -134,7 +134,7 @@
], ],
"avisos": [ "avisos": [
"Broche multifonction : JTAG MTMS, ADC1 Canal 1 et broche de strapping pour le contrôle du front d'horloge SDIO.", "Broche multifonction : JTAG MTMS, ADC1 Canal 1 et broche de strapping pour le contrôle du front d'horloge SDIO.",
"Floating by default during reset." "Flottante par défaut pendant le reset."
] ]
}, },
{ {
@@ -154,7 +154,7 @@
], ],
"avisos": [ "avisos": [
"Broche multifonction : JTAG MTDI, ADC1 Canal 2 et broche de strapping pour le contrôle du front d'horloge SDIO.", "Broche multifonction : JTAG MTDI, ADC1 Canal 2 et broche de strapping pour le contrôle du front d'horloge SDIO.",
"Floating by default during reset." "Flottante par défaut pendant le reset."
] ]
}, },
{ {
@@ -172,7 +172,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Multifunction pin: JTAG MTCK and ADC1 Channel 3 analog input." "Broche multifonction : JTAG MTCK et entrée analogique ADC1 canal 3."
] ]
}, },
{ {
@@ -188,7 +188,7 @@
"JTAG" "JTAG"
], ],
"avisos": [ "avisos": [
"Multifunction pin: JTAG MTDO." "Broche multifonction : JTAG MTDO."
] ]
}, },
{ {
@@ -206,7 +206,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"High-speed multifunction pin: SDIO Command or SPI2 Chip Select 0." "Broche multifonction haut débit : SDIO Command ou SPI2 Chip Select 0."
] ]
}, },
{ {
@@ -224,7 +224,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"High-speed multifunction pin: SDIO Clock or SPI2 Clock." "Broche multifonction haut débit : SDIO Clock ou SPI2 Clock."
] ]
}, },
{ {
@@ -242,7 +242,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"High-speed multifunction pin: SDIO Data 0 or SPI2 MOSI (FSPID)." "Broche multifonction haut débit : SDIO Data 0 ou SPI2 MOSI (FSPID)."
] ]
}, },
{ {
@@ -260,7 +260,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"High-speed pin: SDIO Data 1 or SPI2 MISO (FSPIQ)." "Broche haut débit : SDIO Data 1 ou SPI2 MISO (FSPIQ)."
] ]
}, },
{ {
@@ -278,7 +278,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"High-speed pin: SDIO Data 2 or SPI2 Write Protect." "Broche haut débit : SDIO Data 2 ou SPI2 Write Protect."
] ]
}, },
{ {
@@ -296,7 +296,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"High-speed pin: SDIO Data 3 or SPI2 Hold." "Broche haut débit : SDIO Data 3 ou SPI2 Hold."
] ]
}, },
{ {
@@ -312,7 +312,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Dedicated Chip Select 1 pin for SPI Flash/PSRAM memory interface." "Broche Chip Select 1 dédiée à l'interface mémoire SPI Flash/PSRAM."
] ]
}, },
{ {
@@ -328,7 +328,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Dedicated Chip Select 0 pin for SPI Flash memory interface." "Broche Chip Select 0 dédiée à l'interface mémoire SPI Flash."
] ]
}, },
{ {
@@ -358,7 +358,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Data Q (MISO) pin for SPI flash memory interface." "Broche Data Q (MISO) de l'interface mémoire flash SPI."
] ]
}, },
{ {
@@ -374,7 +374,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Write Protect pin for SPI flash memory interface." "Broche Write Protect de l'interface mémoire flash SPI."
] ]
}, },
{ {
@@ -389,7 +389,7 @@
], ],
"avisos": [ "avisos": [
"Tension de sortie configurable par logiciel selon les spécifications de la flash interne/externe (habituellement 3.3V ou 1.8V).", "Tension de sortie configurable par logiciel selon les spécifications de la flash interne/externe (habituellement 3.3V ou 1.8V).",
"Must not be used as a general high-current power source." "Ne doit pas servir de source d'alimentation générale à fort courant."
] ]
}, },
{ {
@@ -405,7 +405,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Hold control pin for SPI flash memory interface." "Broche de contrôle Hold de l'interface mémoire flash SPI."
] ]
}, },
{ {
@@ -421,7 +421,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Clock signal pin for SPI flash memory interface." "Broche du signal d'horloge de l'interface mémoire flash SPI."
] ]
}, },
{ {
@@ -437,7 +437,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Data D (MOSI) pin for SPI flash memory interface." "Broche Data D (MOSI) de l'interface mémoire flash SPI."
] ]
}, },
{ {
@@ -453,7 +453,7 @@
"USB" "USB"
], ],
"avisos": [ "avisos": [
"Negative signal pin of integrated USB Serial/JTAG transceiver." "Broche de signal négatif de l'émetteur-récepteur USB Serial/JTAG intégré."
] ]
}, },
{ {
@@ -469,7 +469,7 @@
"USB" "USB"
], ],
"avisos": [ "avisos": [
"Positive signal pin of integrated USB Serial/JTAG transceiver.", "Broche de signal positif de l'émetteur-récepteur USB Serial/JTAG intégré.",
"Possède une résistance de pull-up intégrée activée par défaut à l'initialisation de l'USB." "Possède une résistance de pull-up intégrée activée par défaut à l'initialisation de l'USB."
] ]
}, },
@@ -497,8 +497,8 @@
"Strapping" "Strapping"
], ],
"avisos": [ "avisos": [
"Strapping pin for boot mode selection and ROM log printing control.", "Broche de strapping pour la sélection du mode de démarrage et le contrôle de l'affichage du journal ROM.",
"Floating by default during reset. High level (1) enables boot log printing." "Flottante par défaut pendant le reset. Le niveau haut (1) active l'affichage du journal de démarrage."
] ]
}, },
{ {
@@ -513,7 +513,7 @@
"Strapping" "Strapping"
], ],
"avisos": [ "avisos": [
"Primary Strapping pin for boot mode selection.", "Broche de strapping principale pour la sélection du mode de démarrage.",
"Équipé d'un pull-up faible intégré. Niveau haut (1) au reset active le boot SPI (chargement depuis la flash). Niveau bas (0) force le mode téléchargement (Download)." "Équipé d'un pull-up faible intégré. Niveau haut (1) au reset active le boot SPI (chargement depuis la flash). Niveau bas (0) force le mode téléchargement (Download)."
] ]
}, },
@@ -573,7 +573,7 @@
"Strapping" "Strapping"
], ],
"avisos": [ "avisos": [
"Strapping pin for JTAG signal source selection (early boot).", "Broche de strapping pour la sélection de la source du signal JTAG (démarrage précoce).",
"Sans résistances de tirage (pull) internes au reset. Doit être maintenue stable par circuit externe si utilisée." "Sans résistances de tirage (pull) internes au reset. Doit être maintenue stable par circuit externe si utilisée."
] ]
}, },
+20 -20
View File
@@ -11,8 +11,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -28,8 +28,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -161,8 +161,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -280,7 +280,7 @@
"avisos": [ "avisos": [
"Porter cette broche au niveau haut active le fonctionnement de la puce", "Porter cette broche au niveau haut active le fonctionnement de la puce",
"Porter cette broche au niveau bas désactive le fonctionnement de la puce", "Porter cette broche au niveau bas désactive le fonctionnement de la puce",
"Do not leave this pin floating, use an external pull-up resistor" "Ne laissez pas cette broche flottante ; utilisez une résistance de pull-up externe"
] ]
}, },
{ {
@@ -295,8 +295,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -312,8 +312,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -329,8 +329,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -453,8 +453,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -498,8 +498,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -515,8 +515,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -528,7 +528,7 @@
"Connexion de l'antenne RF" "Connexion de l'antenne RF"
], ],
"categorias": [ "categorias": [
"Antenne" "Antena"
], ],
"avisos": [ "avisos": [
"Consultez la section 2.4 de la fiche technique pour plus de détails sur les broches analogiques" "Consultez la section 2.4 de la fiche technique pour plus de détails sur les broches analogiques"
+61 -61
View File
@@ -164,8 +164,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -359,9 +359,9 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 1.8V ou 3.3V", "Tension recommandée : 1.8V ou 3.3V",
"Minimum Recommended Voltage: 1.65V or 3.0V", "Tension minimale recommandée : 1.65V ou 3.0V",
"Maximum Recommended Voltage: 1.95V or 3.6V", "Tension maximale recommandée : 1.95V ou 3.6V",
"Voltage level must match the flash memory model used in the device (see pin 30)", "Le niveau de tension doit correspondre au modèle de mémoire flash utilisé dans l'appareil (voir la broche 30)",
"Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -435,8 +435,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 1.1V", "Tension recommandée : 1.1V",
"Minimum Recommended Voltage: 0.99V", "Tension minimale recommandée : 0.99V",
"Maximum Recommended Voltage: 1.3V", "Tension maximale recommandée : 1.3V",
"Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -452,7 +452,7 @@
], ],
"avisos": [ "avisos": [
"Dédié à la mémoire flash externe", "Dédié à la mémoire flash externe",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -467,7 +467,7 @@
], ],
"avisos": [ "avisos": [
"Dédié à la mémoire flash externe", "Dédié à la mémoire flash externe",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -482,7 +482,7 @@
], ],
"avisos": [ "avisos": [
"Dédié à la mémoire flash externe", "Dédié à la mémoire flash externe",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -497,9 +497,9 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 1.8V ou 3.3V", "Tension recommandée : 1.8V ou 3.3V",
"Minimum Recommended Voltage: 1.65V or 3.0V", "Tension minimale recommandée : 1.65V ou 3.0V",
"Maximum Recommended Voltage: 1.95V or 3.6V", "Tension maximale recommandée : 1.95V ou 3.6V",
"Voltage level must match the flash memory model used in the device", "Le niveau de tension doit correspondre au modèle de mémoire flash utilisé dans l'appareil",
"Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -515,7 +515,7 @@
], ],
"avisos": [ "avisos": [
"Dédié à la mémoire flash externe", "Dédié à la mémoire flash externe",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -530,7 +530,7 @@
], ],
"avisos": [ "avisos": [
"Dédié à la mémoire flash externe", "Dédié à la mémoire flash externe",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -545,7 +545,7 @@
], ],
"avisos": [ "avisos": [
"Dédié à la mémoire flash externe", "Dédié à la mémoire flash externe",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -560,7 +560,7 @@
], ],
"avisos": [ "avisos": [
"Cette broche doit être reliée à une résistance externe de 4.02 kΩ pour assurer le bon fonctionnement de l'interface MIPI DSI", "Cette broche doit être reliée à une résistance externe de 4.02 kΩ pour assurer le bon fonctionnement de l'interface MIPI DSI",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -575,7 +575,7 @@
], ],
"avisos": [ "avisos": [
"Cette broche est dédiée à la ligne de données 1 positive de l'interface MIPI DSI", "Cette broche est dédiée à la ligne de données 1 positive de l'interface MIPI DSI",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -590,7 +590,7 @@
], ],
"avisos": [ "avisos": [
"Cette broche est dédiée à la ligne de données 1 négative de l'interface MIPI DSI", "Cette broche est dédiée à la ligne de données 1 négative de l'interface MIPI DSI",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -605,7 +605,7 @@
], ],
"avisos": [ "avisos": [
"Cette broche est dédiée à la ligne d'horloge négative de l'interface MIPI DSI", "Cette broche est dédiée à la ligne d'horloge négative de l'interface MIPI DSI",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -620,7 +620,7 @@
], ],
"avisos": [ "avisos": [
"Cette broche est dédiée à la ligne d'horloge positive de l'interface MIPI DSI", "Cette broche est dédiée à la ligne d'horloge positive de l'interface MIPI DSI",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -635,7 +635,7 @@
], ],
"avisos": [ "avisos": [
"Cette broche est dédiée à la ligne de données 0 positive de l'interface MIPI DSI", "Cette broche est dédiée à la ligne de données 0 positive de l'interface MIPI DSI",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -650,7 +650,7 @@
], ],
"avisos": [ "avisos": [
"Cette broche est dédiée à la ligne de données 0 négative de l'interface MIPI DSI", "Cette broche est dédiée à la ligne de données 0 négative de l'interface MIPI DSI",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -665,8 +665,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 2.5V", "Tension recommandée : 2.5V",
"Minimum Recommended Voltage: 2.25V", "Tension minimale recommandée : 2.25V",
"Maximum Recommended Voltage: 2.75V", "Tension maximale recommandée : 2.75V",
"Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -682,7 +682,7 @@
], ],
"avisos": [ "avisos": [
"Cette broche est dédiée à la ligne de données 0 négative de l'interface MIPI CSI", "Cette broche est dédiée à la ligne de données 0 négative de l'interface MIPI CSI",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -697,7 +697,7 @@
], ],
"avisos": [ "avisos": [
"Cette broche est dédiée à la ligne de données 0 positive de l'interface MIPI CSI", "Cette broche est dédiée à la ligne de données 0 positive de l'interface MIPI CSI",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -712,7 +712,7 @@
], ],
"avisos": [ "avisos": [
"Cette broche est dédiée à la ligne d'horloge positive de l'interface MIPI CSI", "Cette broche est dédiée à la ligne d'horloge positive de l'interface MIPI CSI",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -727,7 +727,7 @@
], ],
"avisos": [ "avisos": [
"Cette broche est dédiée à la ligne d'horloge négative de l'interface MIPI CSI", "Cette broche est dédiée à la ligne d'horloge négative de l'interface MIPI CSI",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -742,7 +742,7 @@
], ],
"avisos": [ "avisos": [
"Cette broche est dédiée à la ligne de données 1 négative de l'interface MIPI CSI", "Cette broche est dédiée à la ligne de données 1 négative de l'interface MIPI CSI",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -757,7 +757,7 @@
], ],
"avisos": [ "avisos": [
"Cette broche est dédiée à la ligne de données 1 positive de l'interface MIPI CSI", "Cette broche est dédiée à la ligne de données 1 positive de l'interface MIPI CSI",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -772,7 +772,7 @@
], ],
"avisos": [ "avisos": [
"Cette broche doit être reliée à une résistance externe de 4.02 kΩ pour assurer le bon fonctionnement de l'interface MIPI CSI", "Cette broche doit être reliée à une résistance externe de 4.02 kΩ pour assurer le bon fonctionnement de l'interface MIPI CSI",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -786,8 +786,8 @@
"USB" "USB"
], ],
"avisos": [ "avisos": [
"Dedicated to the negative data line of the USB OTG interface", "Dédiée à la ligne de données négative de l'interface USB OTG",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -801,8 +801,8 @@
"USB" "USB"
], ],
"avisos": [ "avisos": [
"Dedicated to the positive data line of the USB OTG interface", "Dédiée à la ligne de données positive de l'interface USB OTG",
"Must not be used for other functions" "Ne doit pas être utilisée pour d'autres fonctions"
] ]
}, },
{ {
@@ -817,8 +817,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.97V", "Tension minimale recommandée : 2.97V",
"Maximum Recommended Voltage: 3.63V", "Tension maximale recommandée : 3.63V",
"Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -866,7 +866,7 @@
], ],
"categorias": [], "categorias": [],
"avisos": [ "avisos": [
"Must not be used" "Ne doit pas être utilisée"
] ]
}, },
{ {
@@ -941,8 +941,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 1.65V", "Tension recommandée : 1.65V",
"Minimum Recommended Voltage: 1.8V", "Tension minimale recommandée : 1.8V",
"Maximum Recommended Voltage: 1.95V", "Tension maximale recommandée : 1.95V",
"Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -990,9 +990,9 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 1.8V ou 3.3V", "Tension recommandée : 1.8V ou 3.3V",
"Minimum Recommended Voltage: 1.65V or 3.0V", "Tension minimale recommandée : 1.65V ou 3.0V",
"Maximum Recommended Voltage: 1.95V or 3.6V", "Tension maximale recommandée : 1.95V ou 3.6V",
"Voltage level must match the flash memory model used in the device (see pin 30)", "Le niveau de tension doit correspondre au modèle de mémoire flash utilisé dans l'appareil (voir la broche 30)",
"Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -1084,8 +1084,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 1.65V", "Tension recommandée : 1.65V",
"Minimum Recommended Voltage: 1.8V", "Tension minimale recommandée : 1.8V",
"Maximum Recommended Voltage: 1.95V", "Tension maximale recommandée : 1.95V",
"Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -1237,8 +1237,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 1.1V", "Tension recommandée : 1.1V",
"Minimum Recommended Voltage: 0.99V", "Tension minimale recommandée : 0.99V",
"Maximum Recommended Voltage: 1.3V", "Tension maximale recommandée : 1.3V",
"Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -1377,9 +1377,9 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 1.8V ou 3.3V", "Tension recommandée : 1.8V ou 3.3V",
"Minimum Recommended Voltage: 1.65V or 3.0V", "Tension minimale recommandée : 1.65V ou 3.0V",
"Maximum Recommended Voltage: 1.95V or 3.6V", "Tension maximale recommandée : 1.95V ou 3.6V",
"Voltage level must match the flash memory model used in the device (see pin 30)", "Le niveau de tension doit correspondre au modèle de mémoire flash utilisé dans l'appareil (voir la broche 30)",
"Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -1475,8 +1475,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 1.1V", "Tension recommandée : 1.1V",
"Minimum Recommended Voltage: 0.99V", "Tension minimale recommandée : 0.99V",
"Maximum Recommended Voltage: 1.3V", "Tension maximale recommandée : 1.3V",
"Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -1558,9 +1558,9 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 1.8V ou 3.3V", "Tension recommandée : 1.8V ou 3.3V",
"Minimum Recommended Voltage: 1.65V or 3.0V", "Tension minimale recommandée : 1.65V ou 3.0V",
"Maximum Recommended Voltage: 1.95V or 3.6V", "Tension maximale recommandée : 1.95V ou 3.6V",
"Voltage level must match the flash memory model used in the device (see pin 30)", "Le niveau de tension doit correspondre au modèle de mémoire flash utilisé dans l'appareil (voir la broche 30)",
"Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -1638,8 +1638,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.0V", "Tension recommandée : 3.0V",
"Minimum Recommended Voltage: 3.3V", "Tension minimale recommandée : 3.3V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -1655,8 +1655,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 2.5V", "Tension recommandée : 2.5V",
"Minimum Recommended Voltage: 3.3V", "Tension minimale recommandée : 3.3V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.6 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -1673,7 +1673,7 @@
"avisos": [ "avisos": [
"Porter cette broche au niveau haut active le fonctionnement de la puce", "Porter cette broche au niveau haut active le fonctionnement de la puce",
"Porter cette broche au niveau bas désactive le fonctionnement de la puce", "Porter cette broche au niveau bas désactive le fonctionnement de la puce",
"Do not leave this pin floating, use an external pull-up resistor" "Ne laissez pas cette broche flottante ; utilisez une résistance de pull-up externe"
] ]
}, },
{ {
+27 -27
View File
@@ -11,8 +11,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.8V", "Tension minimale recommandée : 2.8V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.3 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.3 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -24,7 +24,7 @@
"Entrée et sortie des signaux RF (Wi-Fi) vers l'antenne" "Entrée et sortie des signaux RF (Wi-Fi) vers l'antenne"
], ],
"categorias": [ "categorias": [
"Antenne" "Antena"
], ],
"avisos": [] "avisos": []
}, },
@@ -40,8 +40,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.8V", "Tension minimale recommandée : 2.8V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.3 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.3 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -57,8 +57,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.8V", "Tension minimale recommandée : 2.8V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.3 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.3 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -384,8 +384,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.8V", "Tension minimale recommandée : 2.8V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -534,8 +534,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.3 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.3 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -569,7 +569,7 @@
"Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé", "Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -584,8 +584,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 1.8V", "Tension minimale recommandée : 1.8V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.3 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.3 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -605,7 +605,7 @@
"Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé", "Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -624,7 +624,7 @@
"Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé", "Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -643,7 +643,7 @@
"Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé", "Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -662,7 +662,7 @@
"Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé", "Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -681,7 +681,7 @@
"Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé", "Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -700,7 +700,7 @@
"Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé", "Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -859,8 +859,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.8V", "Tension minimale recommandée : 2.8V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.3 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.3 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -969,8 +969,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.8V", "Tension minimale recommandée : 2.8V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.3 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.3 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -1014,8 +1014,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.8V", "Tension minimale recommandée : 2.8V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.3 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.3 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -1051,7 +1051,7 @@
"avisos": [ "avisos": [
"Porter cette broche au niveau haut active le fonctionnement de la puce", "Porter cette broche au niveau haut active le fonctionnement de la puce",
"Porter cette broche au niveau bas désactive le fonctionnement de la puce", "Porter cette broche au niveau bas désactive le fonctionnement de la puce",
"Do not leave this pin floating, use an external pull-up resistor" "Ne laissez pas cette broche flottante ; utilisez une résistance de pull-up externe"
] ]
}, },
{ {
+23 -23
View File
@@ -7,7 +7,7 @@
"Entrée et sortie des signaux RF (Wi-Fi et Bluetooth) vers l'antenne" "Entrée et sortie des signaux RF (Wi-Fi et Bluetooth) vers l'antenne"
], ],
"categorias": [ "categorias": [
"Antenne" "Antena"
], ],
"avisos": [ "avisos": [
"Consultez la section 2.4 de la fiche technique pour plus de détails sur les broches analogiques" "Consultez la section 2.4 de la fiche technique pour plus de détails sur les broches analogiques"
@@ -25,8 +25,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -42,8 +42,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -60,7 +60,7 @@
"avisos": [ "avisos": [
"Porter cette broche au niveau haut active le fonctionnement de la puce", "Porter cette broche au niveau haut active le fonctionnement de la puce",
"Porter cette broche au niveau bas désactive le fonctionnement de la puce", "Porter cette broche au niveau bas désactive le fonctionnement de la puce",
"Do not leave this pin floating, use an external pull-up resistor" "Ne laissez pas cette broche flottante ; utilisez une résistance de pull-up externe"
] ]
}, },
{ {
@@ -405,8 +405,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -572,7 +572,7 @@
"Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé", "Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -587,8 +587,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 1.8V", "Tension minimale recommandée : 1.8V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -608,7 +608,7 @@
"Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé", "Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -627,7 +627,7 @@
"Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé", "Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -646,7 +646,7 @@
"Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé", "Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -665,7 +665,7 @@
"Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé", "Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -684,7 +684,7 @@
"Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé", "Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -703,7 +703,7 @@
"Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé", "Pendant la réinitialisation, cette broche est configurée en entrée avec pull-up interne activé",
"Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé", "Après la réinitialisation, cette broche sera configurée en entrée avec pull-up interne activé",
"Utilisé par la mémoire flash SPI", "Utilisé par la mémoire flash SPI",
"Not recommended to use this pin as GPIO" "Déconseillé d'utiliser cette broche comme GPIO"
] ]
}, },
{ {
@@ -908,8 +908,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -1063,8 +1063,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -1080,8 +1080,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V", "Tension minimale recommandée : 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
+35 -35
View File
@@ -7,11 +7,11 @@
"Connexion de l'antenne RF (Wi-Fi et Bluetooth)" "Connexion de l'antenne RF (Wi-Fi et Bluetooth)"
], ],
"categorias": [ "categorias": [
"Antenne", "Antena",
"RF" "RF"
], ],
"avisos": [ "avisos": [
"Dedicated 2.4 GHz RF pin. Requires 50-ohm impedance matching." "Broche RF 2,4 GHz dédiée. Nécessite une adaptation d'impédance de 50 ohms."
] ]
}, },
{ {
@@ -54,7 +54,7 @@
], ],
"avisos": [ "avisos": [
"Actif à l'état haut. Tirez au niveau haut pour initialiser la puce.", "Actif à l'état haut. Tirez au niveau haut pour initialiser la puce.",
"Do not leave this pin floating. An external RC delay circuit is recommended for stable boot." "Ne laissez pas cette broche flottante. Un circuit de délai RC externe est recommandé pour un démarrage stable."
] ]
}, },
{ {
@@ -70,7 +70,7 @@
"Clock" "Clock"
], ],
"avisos": [ "avisos": [
"Low-power clock pin. Can be connected to external 32.768 kHz crystal (Pin N)." "Broche d'horloge basse consommation. Peut être reliée à un quartz externe de 32,768 kHz (broche N)."
] ]
}, },
{ {
@@ -88,7 +88,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Multifunction pin. External 32.768 kHz crystal (Pin P) and ADC1 Channel 0 analog input." "Broche multifonction. Quartz externe de 32,768 kHz (broche P) et entrée analogique ADC1 canal 0."
] ]
}, },
{ {
@@ -104,7 +104,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC1 Channel 1." "Broche d'entrée analogique ADC1 canal 1."
] ]
}, },
{ {
@@ -120,7 +120,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC1 Channel 2." "Broche d'entrée analogique ADC1 canal 2."
] ]
}, },
{ {
@@ -136,7 +136,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC1 Channel 3." "Broche d'entrée analogique ADC1 canal 3."
] ]
}, },
{ {
@@ -152,7 +152,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC1 Channel 4." "Broche d'entrée analogique ADC1 canal 4."
] ]
}, },
{ {
@@ -182,7 +182,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC1 Channel 5." "Broche d'entrée analogique ADC1 canal 5."
] ]
}, },
{ {
@@ -198,7 +198,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC1 Channel 6." "Broche d'entrée analogique ADC1 canal 6."
] ]
}, },
{ {
@@ -214,7 +214,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC1 Channel 7." "Broche d'entrée analogique ADC1 canal 7."
] ]
}, },
{ {
@@ -230,7 +230,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC1 Channel 8." "Broche d'entrée analogique ADC1 canal 8."
] ]
}, },
{ {
@@ -246,7 +246,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC1 Channel 9." "Broche d'entrée analogique ADC1 canal 9."
] ]
}, },
{ {
@@ -262,7 +262,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC1 Channel 10." "Broche d'entrée analogique ADC1 canal 10."
] ]
}, },
{ {
@@ -276,7 +276,7 @@
"Touch" "Touch"
], ],
"avisos": [ "avisos": [
"Dedicated analog pin for capacitive touch stabilization." "Broche analogique dédiée à la stabilisation du toucher capacitif."
] ]
}, },
{ {
@@ -292,7 +292,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC2 Channel 0." "Broche d'entrée analogique ADC2 canal 0."
] ]
}, },
{ {
@@ -308,7 +308,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC2 Channel 1." "Broche d'entrée analogique ADC2 canal 1."
] ]
}, },
{ {
@@ -324,7 +324,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC2 Channel 2." "Broche d'entrée analogique ADC2 canal 2."
] ]
}, },
{ {
@@ -340,7 +340,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC2 Channel 3." "Broche d'entrée analogique ADC2 canal 3."
] ]
}, },
{ {
@@ -356,7 +356,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC2 Channel 4." "Broche d'entrée analogique ADC2 canal 4."
] ]
}, },
{ {
@@ -372,7 +372,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC2 Channel 5." "Broche d'entrée analogique ADC2 canal 5."
] ]
}, },
{ {
@@ -388,7 +388,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC2 Channel 6." "Broche d'entrée analogique ADC2 canal 6."
] ]
}, },
{ {
@@ -404,7 +404,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Analog input pin ADC2 Channel 7." "Broche d'entrée analogique ADC2 canal 7."
] ]
}, },
{ {
@@ -420,7 +420,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"High-speed SDIO interface pin (Data 0) or SPI2 MOSI." "Broche de l'interface SDIO haut débit (Data 0) ou SPI2 MOSI."
] ]
}, },
{ {
@@ -436,7 +436,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"High-speed SDIO interface pin (Data 1) or SPI2 MISO." "Broche de l'interface SDIO haut débit (Data 1) ou SPI2 MISO."
] ]
}, },
{ {
@@ -452,7 +452,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"High-speed SDIO interface pin (Data 2) or SPI2 Write Protect." "Broche de l'interface SDIO haut débit (Data 2) ou SPI2 Write Protect."
] ]
}, },
{ {
@@ -466,7 +466,7 @@
"Power" "Power"
], ],
"avisos": [ "avisos": [
"Generated by internal LDO to power integrated PSRAM. Do not connect to external power circuits." "Générée par le LDO interne pour alimenter la PSRAM intégrée. Ne pas relier à des circuits d'alimentation externes."
] ]
}, },
{ {
@@ -482,7 +482,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"High-speed SDIO interface pin (Data 3) or SPI2 Hold." "Broche de l'interface SDIO haut débit (Data 3) ou SPI2 Hold."
] ]
}, },
{ {
@@ -608,7 +608,7 @@
"SPI" "SPI"
], ],
"avisos": [ "avisos": [
"Dedicated Hold for external or internal SPI Flash." "Hold dédié à la flash SPI externe ou interne."
] ]
}, },
{ {
@@ -692,7 +692,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Multifunction pin: GPIO33 and ADC2 Channel 8." "Broche multifonction : GPIO33 et ADC2 canal 8."
] ]
}, },
{ {
@@ -708,7 +708,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Multifunction pin: GPIO34 and ADC2 Channel 9." "Broche multifonction : GPIO34 et ADC2 canal 9."
] ]
}, },
{ {
@@ -927,7 +927,7 @@
"ADC" "ADC"
], ],
"avisos": [ "avisos": [
"Dedicated analog pin for precision ADC calibration." "Broche analogique dédiée à l'étalonnage précis de l'ADC."
] ]
}, },
{ {
@@ -1090,7 +1090,7 @@
"Strapping" "Strapping"
], ],
"avisos": [ "avisos": [
"Boot Strapping pin (paired with GPIO61).", "Broche de strapping de démarrage (associée à GPIO61).",
"Équipé d'un pull-up interne actif par défaut." "Équipé d'un pull-up interne actif par défaut."
] ]
}, },
@@ -1106,7 +1106,7 @@
"Strapping" "Strapping"
], ],
"avisos": [ "avisos": [
"Primary Strapping pin for boot selection.", "Broche de strapping principale pour la sélection du démarrage.",
"Équipé d'un pull-up interne actif par défaut. Niveau haut (1) au reset active le boot SPI. Niveau bas (0) force le mode téléchargement (Download)." "Équipé d'un pull-up interne actif par défaut. Niveau haut (1) au reset active le boot SPI. Niveau bas (0) force le mode téléchargement (Download)."
] ]
}, },
+30 -30
View File
@@ -11,10 +11,10 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V", "Tension minimale recommandée : 2.3V ou 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V", "Pour les puces avec Flash ou PSRAM intégrée, la tension minimale recommandée est de 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V", "Pour les puces sans Flash ni PSRAM intégrée, la tension minimale recommandée est de 2.3V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -26,7 +26,7 @@
"Entrée de l'amplificateur faible bruit (LNA) pour le récepteur Wi-Fi et Bluetooth" "Entrée de l'amplificateur faible bruit (LNA) pour le récepteur Wi-Fi et Bluetooth"
], ],
"categorias": [ "categorias": [
"Antenne" "Antena"
], ],
"avisos": [ "avisos": [
"Consultez la section 2.4 de la fiche technique pour plus de détails sur les broches analogiques" "Consultez la section 2.4 de la fiche technique pour plus de détails sur les broches analogiques"
@@ -44,10 +44,10 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V", "Tension minimale recommandée : 2.3V ou 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V", "Pour les puces avec Flash ou PSRAM intégrée, la tension minimale recommandée est de 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V", "Pour les puces sans Flash ni PSRAM intégrée, la tension minimale recommandée est de 2.3V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -63,10 +63,10 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V", "Tension minimale recommandée : 2.3V ou 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V", "Pour les puces avec Flash ou PSRAM intégrée, la tension minimale recommandée est de 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V", "Pour les puces sans Flash ni PSRAM intégrée, la tension minimale recommandée est de 2.3V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -155,7 +155,7 @@
"avisos": [ "avisos": [
"Porter cette broche au niveau haut active le fonctionnement de la puce", "Porter cette broche au niveau haut active le fonctionnement de la puce",
"Porter cette broche au niveau bas désactive le fonctionnement de la puce", "Porter cette broche au niveau bas désactive le fonctionnement de la puce",
"Do not leave this pin floating, use an external pull-up resistor", "Ne laissez pas cette broche flottante ; utilisez une résistance de pull-up externe",
"Consultez la section 2.4 de la fiche technique pour plus de détails sur les broches analogiques" "Consultez la section 2.4 de la fiche technique pour plus de détails sur les broches analogiques"
] ]
}, },
@@ -370,10 +370,10 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V", "Tension minimale recommandée : 2.3V ou 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V", "Pour les puces avec Flash ou PSRAM intégrée, la tension minimale recommandée est de 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V", "Pour les puces sans Flash ni PSRAM intégrée, la tension minimale recommandée est de 2.3V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -569,8 +569,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V", "Tension minimale recommandée : 2.3V ou 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Cette broche est connectée à la sortie du LDO interne", "Cette broche est connectée à la sortie du LDO interne",
"En cas de connexion directe à VDD3P3_RTC, le LDO interne sera automatiquement désactivé", "En cas de connexion directe à VDD3P3_RTC, le LDO interne sera automatiquement désactivé",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
@@ -802,8 +802,8 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 1.8V", "Tension minimale recommandée : 1.8V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -919,10 +919,10 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V", "Tension minimale recommandée : 2.3V ou 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V", "Pour les puces avec Flash ou PSRAM intégrée, la tension minimale recommandée est de 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V", "Pour les puces sans Flash ni PSRAM intégrée, la tension minimale recommandée est de 2.3V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
@@ -966,10 +966,10 @@
], ],
"avisos": [ "avisos": [
"Tension recommandée : 3.3V", "Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V", "Tension minimale recommandée : 2.3V ou 3.0V",
"Maximum Recommended Voltage: 3.6V", "Tension maximale recommandée : 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V", "Pour les puces avec Flash ou PSRAM intégrée, la tension minimale recommandée est de 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V", "Pour les puces sans Flash ni PSRAM intégrée, la tension minimale recommandée est de 2.3V",
"Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce" "Consultez la section 2.5 de la fiche technique pour plus de détails sur l'alimentation de la puce"
] ]
}, },
+20 -20
View File
@@ -25,13 +25,13 @@
"bluetooth": "Bluetooth 4.2 BR/EDR (Clássico) et Bluetooth LE (dual mode)", "bluetooth": "Bluetooth 4.2 BR/EDR (Clássico) et Bluetooth LE (dual mode)",
"ethernet": "Oui (Ethernet MAC intégré)", "ethernet": "Oui (Ethernet MAC intégré)",
"memoria_sram": "520 KB", "memoria_sram": "520 KB",
"memoria_sram_rtc": "16 KB (dividida em RTC FAST e RTC SLOW)", "memoria_sram_rtc": "16 KB (répartis entre RTC FAST et RTC SLOW)",
"memoria_rom": "448 KB (pour le démarrage et les fonctions du noyau)", "memoria_rom": "448 KB (pour le démarrage et les fonctions du noyau)",
"flash_externa": "Jusqu'à 16 MB via QSPI", "flash_externa": "Jusqu'à 16 MB via QSPI",
"psram_externa": "Jusqu'à 8 MB via QSPI (dans des modules spécifiques comme WROVER)", "psram_externa": "Jusqu'à 8 MB via QSPI (dans des modules spécifiques comme WROVER)",
"gpio": "34", "gpio": "34",
"adc": "2x ADC SAR 12 bits, jusqu'à 18 canaux", "adc": "2x ADC SAR 12 bits, jusqu'à 18 canaux",
"dac": "2x DAC de 8 bits", "dac": "2x DAC 8 bits",
"touch": "10 canaux capacitifs", "touch": "10 canaux capacitifs",
"uart": "3", "uart": "3",
"spi": "4 (SPI, HSPI, VSPI - 2 utilisables pour Flash/PSRAM)", "spi": "4 (SPI, HSPI, VSPI - 2 utilisables pour Flash/PSRAM)",
@@ -57,7 +57,7 @@
"esp_idf_minimo": "Depuis le début (v3.x et versions antérieures)", "esp_idf_minimo": "Depuis le début (v3.x et versions antérieures)",
"arduino_core": "Oui (147 definições de placa no core oficial)", "arduino_core": "Oui (147 definições de placa no core oficial)",
"encapsulamento": "QFN48 (6×6 mm) et QFN48 (5×5 mm)", "encapsulamento": "QFN48 (6×6 mm) et QFN48 (5×5 mm)",
"modulos": "ESP32-MINI-1, ESP32-PICO-MINI-02, ESP32-PICO-V3, ESP32-PICO-V3-02 e mais 11", "modulos": "ESP32-MINI-1, ESP32-PICO-MINI-02, ESP32-PICO-V3, ESP32-PICO-V3-02 et 11 autres",
"datasheet": "https://documentation.espressif.com/esp32_datasheet_en.html", "datasheet": "https://documentation.espressif.com/esp32_datasheet_en.html",
"manual_tecnico": "https://documentation.espressif.com/esp32_technical_reference_manual_en.html", "manual_tecnico": "https://documentation.espressif.com/esp32_technical_reference_manual_en.html",
"guia_de_programacao": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html", "guia_de_programacao": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html",
@@ -73,7 +73,7 @@
"frequencia": "Jusqu'à 240 MHz", "frequencia": "Jusqu'à 240 MHz",
"coprocessador_ulp": "Oui (RISC-V)", "coprocessador_ulp": "Oui (RISC-V)",
"seguranca": { "seguranca": {
"aes": "AES-128/192/256 com GCM", "aes": "AES-128/192/256 avec GCM",
"sha": "SHA-1/224/256/384/512", "sha": "SHA-1/224/256/384/512",
"rsa": "Oui (RSA/MPI jusqu'à 4096 bits)", "rsa": "Oui (RSA/MPI jusqu'à 4096 bits)",
"ecc": "Nonn", "ecc": "Nonn",
@@ -95,7 +95,7 @@
"psram_externa": "Jusqu'à 1 GB via QSPI/Octal SPI", "psram_externa": "Jusqu'à 1 GB via QSPI/Octal SPI",
"gpio": "43", "gpio": "43",
"adc": "2x ADC SAR, jusqu'à 20 canaux : sortie 13 bits (0–8191, unique dans la famille), résolution effective de 12 bits à partir de la révision v1.0 (erratum ADC-112)", "adc": "2x ADC SAR, jusqu'à 20 canaux : sortie 13 bits (0–8191, unique dans la famille), résolution effective de 12 bits à partir de la révision v1.0 (erratum ADC-112)",
"dac": "2x DAC de 8 bits", "dac": "2x DAC 8 bits",
"touch": "14 canaux capacitifs", "touch": "14 canaux capacitifs",
"uart": "2", "uart": "2",
"spi": "4 (SPI0/1 pour la Flash, SPI2/3 pour usage général)", "spi": "4 (SPI0/1 pour la Flash, SPI2/3 pour usage général)",
@@ -118,7 +118,7 @@
"esp_idf_minimo": "v4.2", "esp_idf_minimo": "v4.2",
"arduino_core": "Oui (26 definições de placa no core oficial)", "arduino_core": "Oui (26 definições de placa no core oficial)",
"encapsulamento": "QFN56 (7×7 mm)", "encapsulamento": "QFN56 (7×7 mm)",
"modulos": "ESP32-S2-MINI-1, ESP32-S2-MINI-2, ESP32-S2-SOLO, ESP32-S2-SOLO-2 e mais 4", "modulos": "ESP32-S2-MINI-1, ESP32-S2-MINI-2, ESP32-S2-SOLO, ESP32-S2-SOLO-2 et 4 autres",
"datasheet": "https://documentation.espressif.com/esp32-s2_datasheet_en.html", "datasheet": "https://documentation.espressif.com/esp32-s2_datasheet_en.html",
"manual_tecnico": "https://documentation.espressif.com/esp32-s2_technical_reference_manual_en.html", "manual_tecnico": "https://documentation.espressif.com/esp32-s2_technical_reference_manual_en.html",
"guia_de_programacao": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html", "guia_de_programacao": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html",
@@ -193,12 +193,12 @@
"icone": "🌀", "icone": "🌀",
"descricao": "SoC avancé optimisé pour le traitement d'IA générative et de vision sur l'edge, combinant double cœur Xtensa haute fréquence et sécurité matérielle de nouvelle génération.", "descricao": "SoC avancé optimisé pour le traitement d'IA générative et de vision sur l'edge, combinant double cœur Xtensa haute fréquence et sécurité matérielle de nouvelle génération.",
"arquitetura": "RISC-V bicœur 32 bits (HP) + RISC-V monocœur (LP)", "arquitetura": "RISC-V bicœur 32 bits (HP) + RISC-V monocœur (LP)",
"nucleos": "2 (Dual-core HP) + 1 (Single-core LP)", "nucleos": "2 (double cœur HP) + 1 (simple cœur LP)",
"frequencia": "Jusqu'à 320 MHz", "frequencia": "Jusqu'à 320 MHz",
"coprocessador_ulp": "Oui (RISC-V, LP CPU de 40 MHz)", "coprocessador_ulp": "Oui (RISC-V, LP CPU de 40 MHz)",
"aceleradores_ia": "Sim (Custom AI and DSP extension XespV)", "aceleradores_ia": "Sim (Custom AI and DSP extension XespV)",
"seguranca": { "seguranca": {
"aes": "AES-128/256 com GCM", "aes": "AES-128/256 avec GCM",
"sha": "SHA-1/224/256/384/512", "sha": "SHA-1/224/256/384/512",
"rsa": "Oui (RSA/MPI jusqu'à 4096 bits)", "rsa": "Oui (RSA/MPI jusqu'à 4096 bits)",
"ecc": "Oui (P-192, P-256, P-384)", "ecc": "Oui (P-192, P-256, P-384)",
@@ -222,20 +222,20 @@
"psram_externa": "16 MB ou 32 MB octal DDR, uniquement dans le boîtier (NRV16, NRV32)", "psram_externa": "16 MB ou 32 MB octal DDR, uniquement dans le boîtier (NRV16, NRV32)",
"gpio": "60", "gpio": "60",
"adc": "2x ADC SAR 12 bits, jusqu'à 16 canaux", "adc": "2x ADC SAR 12 bits, jusqu'à 16 canaux",
"dac": "Oui (2x DAC de 10 bits e 2x DAC de 12 bits)", "dac": "Oui (2x DAC 10 bits et 2x DAC 12 bits)",
"touch": "14 canaux capacitifs", "touch": "14 canaux capacitifs",
"uart": "5 (4 UART + 1 LP UART)", "uart": "5 (4 UART + 1 LP UART)",
"spi": "7 (6 SPI + 1 LP SPI)", "spi": "7 (6 SPI + 1 LP SPI)",
"i2c": "3 (2 I2C + 1 LP I2C)", "i2c": "3 (2 I2C + 1 LP I2C)",
"i2s": "2", "i2s": "2",
"pwm": "LED PWM (jusqu'à 8 canaux), Motor PWM (MCPWM)", "pwm": "LED PWM (jusqu'à 8 canaux), Motor PWM (MCPWM)",
"usb": "1 (USB 2.0 High-Speed OTG e USB Serial/JTAG)", "usb": "1 (USB 2.0 High-Speed OTG et USB Serial/JTAG)",
"can": "Oui (CAN FD Controller)", "can": "Oui (CAN FD Controller)",
"sensor_temperatura": "1 (interno)", "sensor_temperatura": "1 (interno)",
"consumo_energia": { "consumo_energia": {
"active": "Consommation optimisée haute performance configurable", "active": "Consommation optimisée haute performance configurable",
"light_sleep": "0.1-0.8 mA", "light_sleep": "0.1-0.8 mA",
"deep_sleep": "Baixo consumo com LP CPU ativa" "deep_sleep": "Basse consommation avec LP CPU active"
}, },
"temperatura_operacao": "-40°C a 85°C", "temperatura_operacao": "-40°C a 85°C",
"temperatura_armazenamento": "-40°C a 150°C", "temperatura_armazenamento": "-40°C a 150°C",
@@ -300,7 +300,7 @@
"esp_idf_minimo": "v5.0", "esp_idf_minimo": "v5.0",
"arduino_core": "Oui (1 definições de placa no core oficial)", "arduino_core": "Oui (1 definições de placa no core oficial)",
"encapsulamento": "QFN24 (4×4 mm)", "encapsulamento": "QFN24 (4×4 mm)",
"modulos": "ESP8684-MINI-1, ESP8684-WROOM-01C, ESP8684-WROOM-02C, ESP8684-WROOM-02UC e mais 5", "modulos": "ESP8684-MINI-1, ESP8684-WROOM-01C, ESP8684-WROOM-02C, ESP8684-WROOM-02UC et 5 autres",
"datasheet": "https://documentation.espressif.com/esp32-c2_datasheet_en.html", "datasheet": "https://documentation.espressif.com/esp32-c2_datasheet_en.html",
"manual_tecnico": "https://documentation.espressif.com/esp32-c2_technical_reference_manual_en.html", "manual_tecnico": "https://documentation.espressif.com/esp32-c2_technical_reference_manual_en.html",
"guia_de_programacao": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c2/get-started/index.html", "guia_de_programacao": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c2/get-started/index.html",
@@ -371,7 +371,7 @@
"icone": "📶", "icone": "📶",
"descricao": "Premier SoC double bande (2,4 GHz et 5 GHz) de la série C avec architecture RISC-V. Conçu pour les environnements industriels avec saturation radio en 2,4 GHz.", "descricao": "Premier SoC double bande (2,4 GHz et 5 GHz) de la série C avec architecture RISC-V. Conçu pour les environnements industriels avec saturation radio en 2,4 GHz.",
"arquitetura": "RISC-V monocœur 32 bits (HP) + RISC-V monocœur (LP)", "arquitetura": "RISC-V monocœur 32 bits (HP) + RISC-V monocœur (LP)",
"nucleos": "1 (Single-core HP) + 1 (Single-core LP)", "nucleos": "1 (simple cœur HP) + 1 (simple cœur LP)",
"frequencia": "Jusqu'à 240 MHz", "frequencia": "Jusqu'à 240 MHz",
"coprocessador_ulp": "Oui (RISC-V, LP CPU de 48 MHz)", "coprocessador_ulp": "Oui (RISC-V, LP CPU de 48 MHz)",
"seguranca": { "seguranca": {
@@ -396,7 +396,7 @@
"memoria_sram_rtc": "16 KB", "memoria_sram_rtc": "16 KB",
"memoria_rom": "320 KB", "memoria_rom": "320 KB",
"flash_externa": "Jusqu'à 16 MB via QSPI", "flash_externa": "Jusqu'à 16 MB via QSPI",
"psram_externa": "Oui, via SPI (controlador de flash/PSRAM com cache)", "psram_externa": "Oui, via SPI (contrôleur flash/PSRAM avec cache)",
"gpio": "29", "gpio": "29",
"adc": "1x ADC SAR 12 bits, jusqu'à 6 canaux", "adc": "1x ADC SAR 12 bits, jusqu'à 6 canaux",
"dac": "Nonn", "dac": "Nonn",
@@ -425,7 +425,7 @@
"guia_de_programacao": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c5/get-started/index.html", "guia_de_programacao": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c5/get-started/index.html",
"placa": "/placas/esp32-c5.png", "placa": "/placas/esp32-c5.png",
"cor": "#6f42c1", "cor": "#6f42c1",
"sdio": "1 (SDIO Slave, a partir da revisão v1.0)", "sdio": "1 (SDIO Slave, à partir de la révision v1.0)",
"can": "2 (CAN FD)" "can": "2 (CAN FD)"
}, },
"ESP32-C6": { "ESP32-C6": {
@@ -433,7 +433,7 @@
"icone": "🌐", "icone": "🌐",
"descricao": "SoC RISC-V moderne avec Wi-Fi 6, Bluetooth 5 (LE) et radio IEEE 802.15.4 intégrée. Idéal pour les appareils connectés basse consommation conformes à Matter et Thread.", "descricao": "SoC RISC-V moderne avec Wi-Fi 6, Bluetooth 5 (LE) et radio IEEE 802.15.4 intégrée. Idéal pour les appareils connectés basse consommation conformes à Matter et Thread.",
"arquitetura": "RISC-V monocœur 32 bits (HP) + RISC-V monocœur (LP)", "arquitetura": "RISC-V monocœur 32 bits (HP) + RISC-V monocœur (LP)",
"nucleos": "1 (Single-core HP) + 1 (Single-core LP)", "nucleos": "1 (simple cœur HP) + 1 (simple cœur LP)",
"frequencia": "Jusqu'à 160 MHz", "frequencia": "Jusqu'à 160 MHz",
"coprocessador_ulp": "Oui (RISC-V, LP CPU de 20 MHz)", "coprocessador_ulp": "Oui (RISC-V, LP CPU de 20 MHz)",
"seguranca": { "seguranca": {
@@ -553,13 +553,13 @@
"nome_completo": "ESP32-P4", "nome_completo": "ESP32-P4",
"icone": "⚡", "icone": "⚡",
"descricao": "Microcontrôleur haute performance sans radio intégrée, doté d'un double cœur RISC-V à 400 MHz, d'interfaces vidéo MIPI-CSI/DSI et d'une sécurité renforcée pour les écrans complexes et les passerelles.", "descricao": "Microcontrôleur haute performance sans radio intégrée, doté d'un double cœur RISC-V à 400 MHz, d'interfaces vidéo MIPI-CSI/DSI et d'une sécurité renforcée pour les écrans complexes et les passerelles.",
"arquitetura": "RISC-V 32 bits bicœur de alto desempenho (HP) + monocœur de baixo consumo (LP)", "arquitetura": "RISC-V 32 bits bicœur haute performance (HP) + monocœur basse consommation (LP)",
"nucleos": "2 (Dual-core HP) + 1 (Single-core LP)", "nucleos": "2 (double cœur HP) + 1 (simple cœur LP)",
"frequencia": "Jusqu'à 400 MHz (HP, révision v3.x ; 360 MHz en v1.x) ; LP jusqu'à 40 MHz", "frequencia": "Jusqu'à 400 MHz (HP, révision v3.x ; 360 MHz en v1.x) ; LP jusqu'à 40 MHz",
"coprocessador_ulp": "Oui (RISC-V, LP CPU de 40 MHz)", "coprocessador_ulp": "Oui (RISC-V, LP CPU de 40 MHz)",
"aceleradores_ia": "Sim (Vector Instructions, aceleradores de IA)", "aceleradores_ia": "Sim (Vector Instructions, aceleradores de IA)",
"seguranca": { "seguranca": {
"aes": "AES-128/256 com GCM", "aes": "AES-128/256 avec GCM",
"sha": "SHA-1/224/256/384/512", "sha": "SHA-1/224/256/384/512",
"rsa": "Oui (RSA/MPI jusqu'à 4096 bits)", "rsa": "Oui (RSA/MPI jusqu'à 4096 bits)",
"ecc": "Oui (P-192, P-256, P-384)", "ecc": "Oui (P-192, P-256, P-384)",
@@ -640,7 +640,7 @@
"zigbee_thread": "IEEE 802.15.4 (Zigbee 3.0, Thread 1.4)", "zigbee_thread": "IEEE 802.15.4 (Zigbee 3.0, Thread 1.4)",
"matter": "Oui", "matter": "Oui",
"memoria_sram": "320 KB", "memoria_sram": "320 KB",
"memoria_sram_rtc": "4 KB (LP Memory)", "memoria_sram_rtc": "4 KB (mémoire LP)",
"memoria_rom": "128 KB", "memoria_rom": "128 KB",
"flash_externa": "Jusqu'à 16 MB via QSPI", "flash_externa": "Jusqu'à 16 MB via QSPI",
"psram_externa": "Nonn", "psram_externa": "Nonn",
+420 -305
View File
@@ -1,307 +1,422 @@
[ [
{ {
"numero": "1", "numero": "1",
"nome": "ANT", "nome": "ANT",
"tipo": "analog", "tipo": "analog",
"funcoes": ["RF 天线连接(Wi-Fi 和 Bluetooth)"], "funcoes": [
"categorias": ["天线", "射频"], "RF 天线连接(Wi-Fi 和 Bluetooth)"
"avisos": ["专用 RF 引脚。避免长走线或未做 50 欧姆阻抗匹配。"] ],
}, "categorias": [
{ "Antena",
"numero": "2", "RF"
"nome": "VDDA3P3", ],
"tipo": "power", "avisos": [
"funcoes": ["3.3V 模拟电源"], "专用 RF 引脚。避免长走线或未做 50 欧姆阻抗匹配。"
"categorias": ["电源"], ]
"avisos": [ },
"建议电压:3.3V(3.0V 至 3.6V)", {
"为芯片的模拟和 RF 电路供电" "numero": "2",
] "nome": "VDDA3P3",
}, "tipo": "power",
{ "funcoes": [
"numero": "3", "3.3V 模拟电源"
"nome": "VDDA3P3", ],
"tipo": "power", "categorias": [
"funcoes": ["3.3V 模拟电源"], "Power"
"categorias": ["电源"], ],
"avisos": [ "avisos": [
"建议电压:3.3V(3.0V 至 3.6V)", "建议电压:3.3V(3.0V 至 3.6V)",
"为芯片的模拟和 RF 电路供电" "为芯片的模拟和 RF 电路供电"
] ]
}, },
{ {
"numero": "4", "numero": "3",
"nome": "GPIO0", "nome": "VDDA3P3",
"tipo": "io", "tipo": "power",
"alimentacao": ["VDD3P3_RTC"], "funcoes": [
"funcoes": [ "3.3V 模拟电源"
"GPIO0", ],
"ADC1_CH0" "categorias": [
], "Power"
"categorias": [ ],
"GPIO", "avisos": [
"ADC" "建议电压:3.3V(3.0V 至 3.6V)",
], "为芯片的模拟和 RF 电路供电"
"avisos": ["ADC1 通道 0 模拟输入引脚"] ]
}, },
{ {
"numero": "5", "numero": "4",
"nome": "GPIO1", "nome": "GPIO0",
"tipo": "io", "tipo": "io",
"alimentacao": ["VDD3P3_RTC"], "alimentacao": [
"funcoes": [ "VDD3P3_RTC"
"GPIO1", ],
"ADC1_CH1" "funcoes": [
], "GPIO0",
"categorias": [ "ADC1_CH0"
"GPIO", ],
"ADC" "categorias": [
], "GPIO",
"avisos": ["ADC1 通道 1 模拟输入引脚"] "ADC"
}, ],
{ "avisos": [
"numero": "6", "ADC1 通道 0 模拟输入引脚"
"nome": "GPIO2", ]
"tipo": "io", },
"alimentacao": ["VDD3P3_RTC"], {
"funcoes": [ "numero": "5",
"GPIO2", "nome": "GPIO1",
"ADC1_CH2", "tipo": "io",
"FSPIQ" "alimentacao": [
], "VDD3P3_RTC"
"categorias": [ ],
"GPIO", "funcoes": [
"ADC", "GPIO1",
"SPI" "ADC1_CH1"
], ],
"avisos": ["启动时默认映射为 SPI MISO(FSPIQ)功能"] "categorias": [
}, "GPIO",
{ "ADC"
"numero": "7", ],
"nome": "CHIP_EN", "avisos": [
"tipo": "analog", "ADC1 通道 1 模拟输入引脚"
"funcoes": ["使能芯片(上电/复位)"], ]
"categorias": ["电源"], },
"avisos": [ {
"高电平有效。拉高以启动芯片。", "numero": "6",
"请勿让该引脚浮空。请使用外部 RC 延迟电路以实现稳定启动。" "nome": "GPIO2",
] "tipo": "io",
}, "alimentacao": [
{ "VDD3P3_RTC"
"numero": "8", ],
"nome": "GPIO3", "funcoes": [
"tipo": "io", "GPIO2",
"alimentacao": ["VDD3P3_RTC"], "ADC1_CH2",
"funcoes": [ "FSPIQ"
"GPIO3", ],
"ADC1_CH3" "categorias": [
], "GPIO",
"categorias": [ "ADC",
"GPIO", "SPI"
"ADC" ],
], "avisos": [
"avisos": ["ADC1 通道 3 模拟输入引脚"] "Flash 初始化时默认映射为 SPI MISO(FSPIQ)功能"
}, ]
{ },
"numero": "9", {
"nome": "GPIO4", "numero": "7",
"tipo": "io", "nome": "CHIP_EN",
"alimentacao": ["VDD3P3_RTC"], "tipo": "analog",
"funcoes": [ "funcoes": [
"GPIO4", "使能芯片(上电/复位)"
"MTMS", ],
"FSPIQ", "categorias": [
"ADC1_CH4" "Power"
], ],
"categorias": [ "avisos": [
"GPIO", "高电平有效。拉高以启动芯片。",
"JTAG", "请勿让该引脚浮空。请使用外部 RC 延迟电路以实现稳定启动。"
"SPI", ]
"ADC" },
], {
"avisos": [ "numero": "8",
"多功能引脚:JTAG MTMS、SPI2 MISO 和 ADC1 通道 4。", "nome": "GPIO3",
"可与其他 JTAG 引脚配合用于 JTAG 调试。" "tipo": "io",
] "alimentacao": [
}, "VDD3P3_RTC"
{ ],
"numero": "10", "funcoes": [
"nome": "GPIO5", "GPIO3",
"tipo": "io", "ADC1_CH3"
"alimentacao": ["VDD3P3_RTC"], ],
"funcoes": [ "categorias": [
"GPIO5", "GPIO",
"MTDI", "ADC"
"FSPIWP" ],
], "avisos": [
"categorias": [ "ADC1 通道 3 模拟输入引脚"
"GPIO", ]
"JTAG", },
"SPI" {
], "numero": "9",
"avisos": ["多功能引脚:JTAG MTDI 和 SPI2 Write Protect(FSPIWP)。"] "nome": "GPIO4",
}, "tipo": "io",
{ "alimentacao": [
"numero": "11", "VDD3P3_RTC"
"nome": "VDD3P3_RTC", ],
"tipo": "power", "funcoes": [
"funcoes": ["RTC 域和低功耗 IO 的电源"], "GPIO4",
"categorias": ["电源"], "MTMS",
"avisos": ["建议电压:3.3V"] "FSPIQ",
}, "ADC1_CH4"
{ ],
"numero": "12", "categorias": [
"nome": "GPIO6", "GPIO",
"tipo": "io", "JTAG",
"alimentacao": ["VDD3P3_RTC"], "SPI",
"funcoes": [ "ADC"
"GPIO6", ],
"MTCK", "avisos": [
"FSPICLK" "多功能引脚:JTAG MTMS、SPI2 MISO 和 ADC1 通道 4。",
], "可与其他 JTAG 引脚配合用于 JTAG 调试。"
"categorias": [ ]
"GPIO", },
"JTAG", {
"SPI" "numero": "10",
], "nome": "GPIO5",
"avisos": ["多功能引脚:JTAG MTCK 和 SPI2 Clock(FSPICLK)。"] "tipo": "io",
}, "alimentacao": [
{ "VDD3P3_RTC"
"numero": "13", ],
"nome": "GPIO7", "funcoes": [
"tipo": "io", "GPIO5",
"alimentacao": ["VDD3P3_RTC"], "MTDI",
"funcoes": [ "FSPIWP"
"GPIO7", ],
"MTDO", "categorias": [
"FSPID" "GPIO",
], "JTAG",
"categorias": [ "SPI"
"GPIO", ],
"JTAG", "avisos": [
"SPI" "多功能引脚:JTAG MTDI 和 SPI2 Write Protect(FSPIWP)。"
], ]
"avisos": ["多功能引脚:JTAG MTDO 和 SPI2 MOSI(FSPID)。"] },
}, {
{ "numero": "11",
"numero": "14", "nome": "VDD3P3_RTC",
"nome": "GPIO8", "tipo": "power",
"tipo": "io", "funcoes": [
"alimentacao": ["VDD3P3_CPU"], "RTC 域和低功耗 IO 的电源"
"funcoes": ["GPIO8"], ],
"categorias": ["GPIO", "启动配置"], "categorias": [
"avisos": [ "Power"
"用于启动控制的 Strapping 引脚。", ],
"与 GPIO9 配合选择 SoC 启动模式(若 GPIO9=0,复位期间必须为 1 才能进入 Joint Download Boot)。" "avisos": [
] "建议电压:3.3V"
}, ]
{ },
"numero": "15", {
"nome": "GPIO9", "numero": "12",
"tipo": "io", "nome": "GPIO6",
"alimentacao": ["VDD3P3_CPU"], "tipo": "io",
"funcoes": ["GPIO9"], "alimentacao": [
"categorias": ["GPIO", "启动配置"], "VDD3P3_RTC"
"avisos": [ ],
"主 Strapping 引脚。复位时高电平(1)启用 SPI Boot(默认通过弱上拉)。", "funcoes": [
"复位时低电平(0)使芯片进入 UART/SPI 下载模式。" "GPIO6",
] "MTCK",
}, "FSPICLK"
{ ],
"numero": "16", "categorias": [
"nome": "GPIO10", "GPIO",
"tipo": "io", "JTAG",
"alimentacao": ["VDD3P3_CPU"], "SPI"
"funcoes": [ ],
"GPIO10", "avisos": [
"FSPICS0" "多功能引脚:JTAG MTCK 和 SPI2 Clock(FSPICLK)。"
], ]
"categorias": [ },
"GPIO", {
"SPI" "numero": "13",
], "nome": "GPIO7",
"avisos": ["多功能引脚:SPI2 Chip Select 0(FSPICS0)。"] "tipo": "io",
}, "alimentacao": [
{ "VDD3P3_RTC"
"numero": "17", ],
"nome": "VDD3P3_CPU", "funcoes": [
"tipo": "power", "GPIO7",
"funcoes": ["CPU 及相应 IO 的数字电源(3.3V)"], "MTDO",
"categorias": ["电源"], "FSPID"
"avisos": ["建议电压:3.3V"] ],
}, "categorias": [
{ "GPIO",
"numero": "18", "JTAG",
"nome": "GPIO18", "SPI"
"tipo": "io", ],
"alimentacao": ["VDD3P3_CPU"], "avisos": [
"funcoes": ["GPIO18"], "多功能引脚:JTAG MTDO 和 SPI2 MOSI(FSPID)。"
"categorias": ["GPIO"] ]
}, },
{ {
"numero": "19", "numero": "14",
"nome": "GPIO19", "nome": "GPIO8",
"tipo": "io", "tipo": "io",
"alimentacao": ["VDD3P3_CPU"], "alimentacao": [
"funcoes": [ "VDD3P3_CPU"
"GPIO19", ],
"U0RXD" "funcoes": [
], "GPIO8"
"categorias": [ ],
"GPIO", "categorias": [
"UART" "GPIO",
], "Strapping"
"avisos": ["UART0 接收引脚(默认用于烧录和监视的 Serial RX)。"] ],
}, "avisos": [
{ "用于启动控制的 Strapping 引脚。",
"numero": "20", "与 GPIO9 配合选择 SoC 启动模式(若 GPIO9=0,复位期间必须为 1 才能进入 Joint Download Boot)。"
"nome": "GPIO20", ]
"tipo": "io", },
"alimentacao": ["VDD3P3_CPU"], {
"funcoes": [ "numero": "15",
"GPIO20", "nome": "GPIO9",
"U0TXD" "tipo": "io",
], "alimentacao": [
"categorias": [ "VDD3P3_CPU"
"GPIO", ],
"UART" "funcoes": [
], "GPIO9"
"avisos": ["UART0 发送引脚(默认用于烧录和监视的 Serial TX)。"] ],
}, "categorias": [
{ "GPIO",
"numero": "21", "Strapping"
"nome": "VDDA", ],
"tipo": "power", "avisos": [
"funcoes": ["3.3V 模拟输入电源"], "主 Strapping 引脚。复位时高电平(1)启用 SPI Boot(默认通过弱上拉)。",
"categorias": ["电源"] "复位时低电平(0)使芯片进入 UART/SPI 下载模式。"
}, ]
{ },
"numero": "22", {
"nome": "XTAL_N", "numero": "16",
"tipo": "analog", "nome": "GPIO10",
"funcoes": ["外部晶振连接(输出)"], "tipo": "io",
"categorias": ["时钟"] "alimentacao": [
}, "VDD3P3_CPU"
{ ],
"numero": "23", "funcoes": [
"nome": "XTAL_P", "GPIO10",
"tipo": "analog", "FSPICS0"
"funcoes": ["外部晶振连接(输入)"], ],
"categorias": ["时钟"] "categorias": [
}, "GPIO",
{ "SPI"
"numero": "24", ],
"nome": "VDDA", "avisos": [
"tipo": "power", "多功能引脚:SPI2 Chip Select 0(FSPICS0)。"
"funcoes": ["3.3V 模拟输入电源"], ]
"categorias": ["电源"] },
}, {
{ "numero": "17",
"numero": "25", "nome": "VDD3P3_CPU",
"nome": "GND", "tipo": "power",
"tipo": "power", "funcoes": [
"funcoes": ["中心接地焊盘(Exposed Pad)"], "CPU 及相应 IO 的数字电源(3.3V)"
"categorias": ["电源"], ],
"avisos": ["应正确焊接至 PCB 接地平面(GND),以实现稳定性能和散热。"] "categorias": [
} "Power"
],
"avisos": [
"建议电压:3.3V"
]
},
{
"numero": "18",
"nome": "GPIO18",
"tipo": "io",
"alimentacao": [
"VDD3P3_CPU"
],
"funcoes": [
"GPIO18"
],
"categorias": [
"GPIO"
]
},
{
"numero": "19",
"nome": "GPIO19",
"tipo": "io",
"alimentacao": [
"VDD3P3_CPU"
],
"funcoes": [
"GPIO19",
"U0RXD"
],
"categorias": [
"GPIO",
"UART"
],
"avisos": [
"UART0 接收引脚(默认用于烧录和监视的 Serial RX)。"
]
},
{
"numero": "20",
"nome": "GPIO20",
"tipo": "io",
"alimentacao": [
"VDD3P3_CPU"
],
"funcoes": [
"GPIO20",
"U0TXD"
],
"categorias": [
"GPIO",
"UART"
],
"avisos": [
"UART0 发送引脚(默认用于烧录和监视的 Serial TX)。"
]
},
{
"numero": "21",
"nome": "VDDA",
"tipo": "power",
"funcoes": [
"3.3V 模拟输入电源"
],
"categorias": [
"Power"
]
},
{
"numero": "22",
"nome": "XTAL_N",
"tipo": "analog",
"funcoes": [
"外部晶振连接(输出)"
],
"categorias": [
"Clock"
]
},
{
"numero": "23",
"nome": "XTAL_P",
"tipo": "analog",
"funcoes": [
"外部晶振连接(输入)"
],
"categorias": [
"Clock"
]
},
{
"numero": "24",
"nome": "VDDA",
"tipo": "power",
"funcoes": [
"3.3V 模拟输入电源"
],
"categorias": [
"Power"
]
},
{
"numero": "25",
"nome": "GND",
"tipo": "power",
"funcoes": [
"中心接地焊盘(Exposed Pad)"
],
"categorias": [
"Power"
],
"avisos": [
"应正确焊接至 PCB 接地平面(GND),以实现稳定性能和散热。"
]
}
] ]
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+12
View File
@@ -0,0 +1,12 @@
// Colunas de link da planilha: "Link" é o padrão (Brasil) e "Link_<locale>" o link
// de afiliado gerado para o país de envio daquele idioma.
export const LINK_COLUMN_PREFIX = "Link_";
export function isLinkColumn(coluna) {
return coluna === "Link" || coluna.startsWith(LINK_COLUMN_PREFIX);
}
export function linkForLocale(board, locale) {
const especifico = locale && locale !== "pt" ? board[`${LINK_COLUMN_PREFIX}${locale}`] : "";
return (especifico || board.Link || "").trim();
}
+78
View File
@@ -0,0 +1,78 @@
// Lógica da faixa de placas sugeridas (components/PlacasSugeridas.jsx): quais placas entram,
// em que ordem sorteada e o texto curto de motivo. Sem React, para ficar fácil de testar.
import { linkForLocale } from "@/lib/boardLinks";
// Placa de loja oficial entra no sorteio com este peso; as demais valem 1.
export const PESO_OFICIAL = 3;
export function boardsForChips(boards, chips, locale) {
const alvo = new Set(chips);
return boards.filter((board) => alvo.has(board["Série"]) && linkForLocale(board, locale));
}
// Sorteio ponderado sem reposição (Efraimidis-Spirakis): quanto maior o peso, maior a chance
// de ficar no começo, e todas as placas aparecem uma vez na ordem final.
export function weightedOrder(boards, random = Math.random) {
return boards
.map((board) => {
const peso = board["Loja Oficial"]?.trim() === "Sim" ? PESO_OFICIAL : 1;
return { board, chave: Math.pow(random(), 1 / peso) };
})
.sort((a, b) => b.chave - a.chave)
.map(({ board }) => board);
}
export function imageOf(board) {
const src = board.Imagem?.match(/<img[^>]*\ssrc="([^"]+)"/i)?.[1];
if (!src) return null;
return src.startsWith("//") ? `https:${src}` : src;
}
// Recursos que viram o texto de motivo, do mais característico para o mais comum.
const FEATURES = [
{ columns: ["Display Touch"], key: "touch" },
{ columns: ["Display"], key: "display" },
{ columns: ["Câmera"], key: "camera" },
{ columns: ["LoRa"], key: "lora" },
{ columns: ["GPS"], key: "gps" },
{ columns: ["GSM (3G/4G)"], key: "gsm" },
{ columns: ["Conector Ethernet"], key: "ethernet" },
{ columns: ["RS485"], key: "rs485" },
{ columns: ["Radiofrequência"], key: "rf" },
{ columns: ["Infravermelho"], key: "ir" },
{ columns: ["Bateria Interna"], key: "battery" },
{ columns: ["Conector p/ Bateria"], key: "batteryConnector" },
{ columns: ["Conector p/ Painel Solar"], key: "solar" },
{ columns: ["Wi-Fi 5GHz"], key: "wifi5" },
{ columns: ["Suporte a Matter"], key: "matter" },
];
const LABELS = {
pt: { touch: "tela touch", display: "tela", camera: "câmera", lora: "LoRa", gps: "GPS", gsm: "4G/GSM", ethernet: "Ethernet", rs485: "RS485", rf: "rádio sub-GHz", ir: "infravermelho", battery: "bateria", batteryConnector: "conector de bateria", solar: "entrada solar", wifi5: "Wi-Fi 5 GHz", matter: "Matter", optional: "opcional", basic: "placa de desenvolvimento essencial" },
en: { touch: "touchscreen", display: "display", camera: "camera", lora: "LoRa", gps: "GPS", gsm: "4G/GSM", ethernet: "Ethernet", rs485: "RS485", rf: "sub-GHz radio", ir: "infrared", battery: "battery", batteryConnector: "battery connector", solar: "solar input", wifi5: "5 GHz Wi-Fi", matter: "Matter", optional: "optional", basic: "essential development board" },
es: { touch: "pantalla táctil", display: "pantalla", camera: "cámara", lora: "LoRa", gps: "GPS", gsm: "4G/GSM", ethernet: "Ethernet", rs485: "RS485", rf: "radio sub-GHz", ir: "infrarrojos", battery: "batería", batteryConnector: "conector de batería", solar: "entrada solar", wifi5: "Wi-Fi de 5 GHz", matter: "Matter", optional: "opcional", basic: "placa de desarrollo esencial" },
fr: { touch: "écran tactile", display: "écran", camera: "caméra", lora: "LoRa", gps: "GPS", gsm: "4G/GSM", ethernet: "Ethernet", rs485: "RS485", rf: "radio sub-GHz", ir: "infrarouge", battery: "batterie", batteryConnector: "connecteur de batterie", solar: "entrée solaire", wifi5: "Wi-Fi 5 GHz", matter: "Matter", optional: "optionnel", basic: "carte de développement essentielle" },
de: { touch: "Touchscreen", display: "Display", camera: "Kamera", lora: "LoRa", gps: "GPS", gsm: "4G/GSM", ethernet: "Ethernet", rs485: "RS485", rf: "Sub-GHz-Funk", ir: "Infrarot", battery: "Akku", batteryConnector: "Akkuanschluss", solar: "Solareingang", wifi5: "5-GHz-WLAN", matter: "Matter", optional: "optional", basic: "Entwicklungsboard für den Einstieg" },
"zh-CN": { touch: "触摸屏", display: "显示屏", camera: "摄像头", lora: "LoRa", gps: "GPS", gsm: "4G/GSM", ethernet: "以太网", rs485: "RS485", rf: "Sub-GHz 无线电", ir: "红外", battery: "内置电池", batteryConnector: "电池接口", solar: "太阳能输入", wifi5: "5 GHz Wi-Fi", matter: "Matter", optional: "可选", basic: "基础开发板" },
};
// "tela touch, câmera e LoRa": até três recursos, do mais característico para o mais comum.
// Quando há touch, a tela comum não entra à parte (já está implícita).
export function reasonFor(board, locale) {
const rotulos = LABELS[locale] || LABELS.pt;
const temTouch = ["Sim", "Opcional"].includes(board["Display Touch"]?.trim());
const itens = [];
for (const { columns, key } of FEATURES) {
if (key === "display" && temTouch) continue;
const valor = board[columns[0]]?.trim();
if (valor !== "Sim" && valor !== "Opcional") continue;
const texto = valor === "Opcional" ? `${rotulos[key]} (${rotulos.optional})` : rotulos[key];
itens.push(texto);
if (itens.length === 3) break;
}
if (itens.length === 0) return rotulos.basic;
if (locale === "zh-CN") return itens.join("、");
if (itens.length === 1) return itens[0];
const conector = { pt: "e", en: "and", es: "y", fr: "et", de: "und" }[locale] || "e";
return `${itens.slice(0, -1).join(", ")} ${conector} ${itens[itens.length - 1]}`;
}
+2 -2
View File
@@ -23,8 +23,8 @@ export const normalizar = (s = "") =>
* "fraco": nur in bestimmten Betriebsmodi betroffen (z. B. 8-Leitungs-/Octal-SPI). * "fraco": nur in bestimmten Betriebsmodi betroffen (z. B. 8-Leitungs-/Octal-SPI).
*/ */
const nivelMemoria = (palavra) => (p) => { const nivelMemoria = (palavra) => (p) => {
const citam = p._avs.filter((a) => a.includes(palavra) && !/^fuer chips (mit|ohne)/i.test(a)); const citam = p._avs.filter((a) => new RegExp(`\\b${palavra}(?![a-z])`).test(a) && !/^fu(e)?r chips (mit|ohne)/i.test(a));
if (citam.some((a) => /(belegt|dediziert|verbunden)/i.test(a) && !/ausser/i.test(a))) return "forte"; if (citam.some((a) => /(belegt|dediziert|verbunden|verwendeten)/i.test(a) && !/(ausser|außer)/i.test(a))) return "forte";
if (p._fn.some((f) => /versorgung|stromversorgung/i.test(f) && f.includes(palavra))) return "forte"; if (p._fn.some((f) => /versorgung|stromversorgung/i.test(f) && f.includes(palavra))) return "forte";
if (citam.length) return "fraco"; if (citam.length) return "fraco";
return null; return null;
+4 -4
View File
@@ -20,9 +20,9 @@ export const normalizar = (s = "") =>
* Avisos genéricos de tensão mínima ("para chips com flash integrada...") não contam. * Avisos genéricos de tensão mínima ("para chips com flash integrada...") não contam.
*/ */
const nivelMemoria = (palavra) => (p) => { const nivelMemoria = (palavra) => (p) => {
const citam = p._avs.filter((a) => a.includes(palavra) && !/^para chips (com|sem)/.test(a)); const citam = p._avs.filter((a) => new RegExp(`\\b${palavra}(?![a-z])`).test(a) && !/^for chips (with|without)/.test(a));
if (citam.some((a) => /(utilizad|dedicad|conectad)/.test(a) && !/a menos que/.test(a))) return "forte"; if (citam.some((a) => /(used by|used in|dedicated|connected)/.test(a) && !/unless/.test(a))) return "forte";
if (p._fn.some((f) => /alimentacao/.test(f) && f.includes(palavra))) return "forte"; if (p._fn.some((f) => /(power output|power input|supply)/.test(f) && f.includes(palavra))) return "forte";
if (citam.length) return "fraco"; if (citam.length) return "fraco";
return null; return null;
}; };
@@ -43,7 +43,7 @@ export const TOPICOS = [
{ id: "zigbee", nome: "Zigbee/Thread", termos: ["zigbee", "thread", "802.15.4", "ieee 802.15.4"], pinoRotulo: "" }, { id: "zigbee", nome: "Zigbee/Thread", termos: ["zigbee", "thread", "802.15.4", "ieee 802.15.4"], pinoRotulo: "" },
{ id: "matter", nome: "Matter", termos: ["matter", "casa inteligente", "smart home"], pinoRotulo: "" }, { id: "matter", nome: "Matter", termos: ["matter", "casa inteligente", "smart home"], pinoRotulo: "" },
{ id: "ethernet", nome: "Ethernet", termos: ["ethernet", "rmii", "cabo de rede", "lan"], pinoCats: ["Ethernet"], pinoRotulo: "Ethernet pins" }, { id: "ethernet", nome: "Ethernet", termos: ["ethernet", "rmii", "cabo de rede", "lan"], pinoCats: ["Ethernet"], pinoRotulo: "Ethernet pins" },
{ id: "can", nome: "CAN / TWAI", termos: ["can", "twai", "can bus", "canbus", "can fd"], pinoRe: /twai|\bcan\b/, pinoRotulo: "CAN/TWAI pins" }, { id: "can", nome: "CAN / TWAI", termos: ["can", "twai", "can bus", "canbus", "can fd"], pinoRe: /twai|\bcan\b(?! (be|connect|also|only))/, pinoRotulo: "CAN/TWAI pins" },
{ id: "usb", nome: "USB", termos: ["usb", "otg", "usb serial", "usb otg", "hid", "cdc"], pinoCats: ["USB"], pinoRotulo: "USB pins" }, { id: "usb", nome: "USB", termos: ["usb", "otg", "usb serial", "usb otg", "hid", "cdc"], pinoCats: ["USB"], pinoRotulo: "USB pins" },
{ id: "jtag", nome: "JTAG / Debug", termos: ["jtag", "debug", "depuracao", "depurar", "openocd", "gdb"], pinoCats: ["JTAG"], pinoRotulo: "JTAG pins" }, { id: "jtag", nome: "JTAG / Debug", termos: ["jtag", "debug", "depuracao", "depurar", "openocd", "gdb"], pinoCats: ["JTAG"], pinoRotulo: "JTAG pins" },
{ id: "adc", nome: "ADC", termos: ["adc", "analogico", "entrada analogica", "conversor analogico", "analogread", "saradc", "analog"], pinoCats: ["ADC"], pinoRotulo: "with ADC" }, { id: "adc", nome: "ADC", termos: ["adc", "analogico", "entrada analogica", "conversor analogico", "analogread", "saradc", "analog"], pinoCats: ["ADC"], pinoRotulo: "with ADC" },
+1 -1
View File
@@ -19,7 +19,7 @@ export const normalizar = (s = "") =>
* "fraco": solo se ve afectado en ciertos modos (ej.: SPI de 8 líneas/octal). * "fraco": solo se ve afectado en ciertos modos (ej.: SPI de 8 líneas/octal).
*/ */
const nivelMemoria = (palabra) => (p) => { const nivelMemoria = (palabra) => (p) => {
const citam = p._avs.filter((a) => a.includes(palabra) && !/^para chips (con|sin|com|sem)/i.test(a)); const citam = p._avs.filter((a) => new RegExp(`\\b${palabra}(?![a-z])`).test(a) && !/^para chips (con|sin|com|sem)/i.test(a));
if (citam.some((a) => /(utilizad|dedicad|conectad)/i.test(a) && !/a menos que/i.test(a))) return "forte"; if (citam.some((a) => /(utilizad|dedicad|conectad)/i.test(a) && !/a menos que/i.test(a))) return "forte";
if (p._fn.some((f) => /alimentacion|alimentacao/i.test(f) && f.includes(palabra))) return "forte"; if (p._fn.some((f) => /alimentacion|alimentacao/i.test(f) && f.includes(palabra))) return "forte";
if (citam.length) return "fraco"; if (citam.length) return "fraco";
+1 -1
View File
@@ -22,7 +22,7 @@ export const normalizar = (s = "") =>
* "fraco": seulement affectée dans certains modes (ex. : SPI octal 8 lignes). * "fraco": seulement affectée dans certains modes (ex. : SPI octal 8 lignes).
*/ */
const nivelMemoria = (palavra) => (p) => { const nivelMemoria = (palavra) => (p) => {
const citam = p._avs.filter((a) => a.includes(palavra) && !/^pour les puces (avec|sans)/i.test(a)); const citam = p._avs.filter((a) => new RegExp(`\\b${palavra}(?![a-z])`).test(a) && !/^pour les puces (avec|sans)/i.test(a));
if (citam.some((a) => /(utilise|dedie|connecte)/i.test(a) && !/sauf si/i.test(a))) return "forte"; if (citam.some((a) => /(utilise|dedie|connecte)/i.test(a) && !/sauf si/i.test(a))) return "forte";
if (p._fn.some((f) => /alimentation/i.test(f) && f.includes(palavra))) return "forte"; if (p._fn.some((f) => /alimentation/i.test(f) && f.includes(palavra))) return "forte";
if (citam.length) return "fraco"; if (citam.length) return "fraco";
+3 -3
View File
@@ -20,9 +20,9 @@ export const normalizar = (s = "") =>
* Avisos genéricos de tensão mínima ("para chips com flash integrada...") não contam. * Avisos genéricos de tensão mínima ("para chips com flash integrada...") não contam.
*/ */
const nivelMemoria = (palavra) => (p) => { const nivelMemoria = (palavra) => (p) => {
const citam = p._avs.filter((a) => a.includes(palavra) && !/^对于集成/.test(a)); const citam = p._avs.filter((a) => a.includes(palavra) && !/^对于(未)?集成/.test(a));
if (citam.some((a) => /(存储使用|专用于|连接到|用于存储)/.test(a) && !/除非/.test(a))) return "forte"; if (citam.some((a) => /(存储使用|专用|连接到|用于存储|所用)/.test(a) && !/除非/.test(a))) return "forte";
if (p._fn.some((f) => /(供电|alimentacao|vdd)/.test(f) && f.includes(palavra))) return "forte"; if (p._fn.some((f) => /电源/.test(f) && f.includes(palavra))) return "forte";
if (citam.length) return "fraco"; if (citam.length) return "fraco";
return null; return null;
}; };
+60 -6
View File
@@ -16,7 +16,7 @@ const STOP = new Set([
"para", "pra", "pro", "com", "sem", "que", "qual", "quais", "como", "e", "ou", "ver", "sobre", "eh", "para", "pra", "pro", "com", "sem", "que", "qual", "quais", "como", "e", "ou", "ver", "sobre", "eh",
"preciso", "quero", "onde", "fica", "ficam", "esta", "estao", "meu", "minha", "usar", "uso", "preciso", "quero", "onde", "fica", "ficam", "esta", "estao", "meu", "minha", "usar", "uso",
]); ]);
const INTENCAO_PINOS = new Set(["pino", "pinos", "pinagem", "pinout", "pin", "pins", "gpios"]); const INTENCAO_PINOS = new Set(["pino", "pinos", "pinagem", "pinout", "pin", "pins", "gpios", "pines", "broche", "broches", "brochage", "pinbelegung"]);
const INTENCAO_DADOS = new Set([ const INTENCAO_DADOS = new Set([
"dados", "especificacao", "especificacoes", "spec", "specs", "informacao", "informacoes", "info", "dados", "especificacao", "especificacoes", "spec", "specs", "informacao", "informacoes", "info",
"quanto", "quantos", "quantas", "capacidade", "limite", "limites", "tem", "possui", "suporta", "quanto", "quantos", "quantas", "capacidade", "limite", "limites", "tem", "possui", "suporta",
@@ -137,9 +137,17 @@ function casarTermo(termo, livres) {
return null; return null;
} }
// "pino 32", "pin 32", "broche 32", "引脚 32", "32号引脚": número do pino físico do diagrama.
const PINO_FISICO = /\b(?:pino|pinos|pin|pins|pines|broche|broches)\s*(?:n[ºo°.]?\s*|numero\s*|number\s*|nummer\s*)?(\d{1,3})\b(?![.,]\d)/g;
const PINO_FISICO_ZH = /第?(\d{1,3})\s*(?:号|脚)?\s*(?:引脚|管脚|针脚)|(?:引脚|管脚|针脚)\s*第?(\d{1,3})(?![.,\d])/g;
export function interpretar(indice, consulta) { export function interpretar(indice, consulta) {
const bruto = normalizar(consulta) const pinNums = [];
const semPinos = normalizar(consulta)
.replace(/gpio\s*-?\s*(\d+)/g, "gpio$1") .replace(/gpio\s*-?\s*(\d+)/g, "gpio$1")
.replace(PINO_FISICO, (_, n) => (pinNums.push(n), " "))
.replace(PINO_FISICO_ZH, (_, a, b) => (pinNums.push(a ?? b), " "));
const bruto = semPinos
.replace(/([\u3400-\u9fff])([a-z0-9])/g, "$1 $2") .replace(/([\u3400-\u9fff])([a-z0-9])/g, "$1 $2")
.replace(/([a-z0-9])([\u3400-\u9fff])/g, "$1 $2") .replace(/([a-z0-9])([\u3400-\u9fff])/g, "$1 $2")
.replace(/[^a-z0-9.+\-_ \u3400-\u9fff]/g, " "); .replace(/[^a-z0-9.+\-_ \u3400-\u9fff]/g, " ");
@@ -231,7 +239,7 @@ export function interpretar(indice, consulta) {
cjkUsados.forEach((i) => usados.add(i)); cjkUsados.forEach((i) => usados.add(i));
const restantes = tokens.filter((_, i) => !usados.has(i)).flatMap((t) => (CJK.test(t) ? segmentar(t) : [t])); const restantes = tokens.filter((_, i) => !usados.has(i)).flatMap((t) => (CJK.test(t) ? segmentar(t) : [t]));
return { tokens, chips, topicos, gpios, funcoes, restantes, querPinos, querDados }; return { tokens, chips, topicos, gpios, funcoes, restantes, querPinos, querDados, pinNums: [...new Set(pinNums)].slice(0, 3) };
} }
const rotuloPino = (p) => { const rotuloPino = (p) => {
@@ -253,6 +261,27 @@ function pinosDoTopico(serie, topico) {
return { forte, fraco }; return { forte, fraco };
} }
const corta = (s, max = 110) => (s.length > max ? `${s.slice(0, max - 1).trimEnd()}…` : s);
/** Cartão com tudo o que o diagrama diz sobre um pino (nome, funções, categorias, avisos). */
function cartaoPino(I, chave, serie, p, titulo) {
const T = I.t;
const linhas = [
{ k: T.kPino, v: String(p.n) },
{ k: T.kNome, v: rotuloPino(p) },
];
if (p.f?.length) linhas.push({ k: T.kFuncoes, v: corta(p.f.join(" · ")) });
if (p.c?.length) linhas.push({ k: T.kCategorias, v: p.c.join(", ") });
(p.a ?? []).slice(0, 3).forEach((a) => linhas.push({ k: T.kAviso, v: corta(a) }));
return {
tipo: "resposta",
titulo,
descricao: T.pinoDesc,
linhas,
href: hrefPinos(I, chave, [p], fmt(T.motivoPino, { pino: rotuloPino(p) })),
};
}
const hrefPinos = (I, chave, pinos, motivo) => const hrefPinos = (I, chave, pinos, motivo) =>
`${I.rotas.series}/${chave}?pinos=${pinos.map((p) => p.n).join(",")}&motivo=${encodeURIComponent(motivo)}#connections`; `${I.rotas.series}/${chave}?pinos=${pinos.map((p) => p.n).join(",")}&motivo=${encodeURIComponent(motivo)}#connections`;
@@ -307,7 +336,19 @@ function respostas(indice, it) {
(it.querPinos ? [cartaoPinos, cartaoSpec] : [cartaoSpec, cartaoPinos]).filter(Boolean).forEach((c) => saida.push(c)); (it.querPinos ? [cartaoPinos, cartaoSpec] : [cartaoSpec, cartaoPinos]).filter(Boolean).forEach((c) => saida.push(c));
} }
if (!it.topicos.length && !it.gpios.length && !it.funcoes.length) { // "pino 32 s3": o pino físico 32 do diagrama e, se for outro, o GPIO32.
for (const n of it.pinNums) {
const fisico = serie.pinos.find((p) => String(p.n) === n);
const gpio = (indice.porFuncao.get(`gpio${n}`) ?? []).find((a) => a.chave === chave)?.pino;
if (fisico) saida.push(cartaoPino(I, chave, serie, fisico, fmt(T.pinoFisico, { n, serie: serie.nome })));
if (gpio && gpio !== fisico) saida.push(cartaoPino(I, chave, serie, gpio, fmt(T.pinoNo, { pino: rotuloPino(gpio), serie: serie.nome })));
if (!fisico && !gpio) {
const max = Math.max(0, ...serie.pinos.map((p) => Number(p.n) || 0));
saida.push({ tipo: "pino", titulo: fmt(T.pinoInexistente, { n, serie: serie.nome }), descricao: fmt(T.pinoInexistenteDesc, { max }), href: `${I.rotas.series}/${chave}#connections` });
}
}
if (!it.topicos.length && !it.gpios.length && !it.funcoes.length && !it.pinNums.length) {
if (it.querPinos && serie.pinos.length) { if (it.querPinos && serie.pinos.length) {
saida.push({ saida.push({
tipo: "pino", tipo: "pino",
@@ -337,6 +378,18 @@ function respostas(indice, it) {
} }
} }
// Pino físico sem chip: o que há nele em cada série.
if (!alvos.length) {
for (const n of it.pinNums) {
const linhas = [];
for (const chave of indice.chaves) {
const p = indice.series[chave].pinos.find((x) => String(x.n) === n);
if (p) linhas.push({ k: indice.series[chave].nome, v: corta(rotuloPino(p), 46) });
}
if (linhas.length) saida.push({ tipo: "resposta", titulo: fmt(T.pinoEmCada, { n }), descricao: fmt(T.pinoEmCadaDesc, { n }), linhas, href: I.rotas.series });
}
}
// GPIO26 e nomes de função: "gpio26 s3", "mtck" // GPIO26 e nomes de função: "gpio26 s3", "mtck"
const buscas = [...it.gpios, ...it.funcoes]; const buscas = [...it.gpios, ...it.funcoes];
for (const termo of buscas) { for (const termo of buscas) {
@@ -387,6 +440,7 @@ export function buscar(indice, consulta) {
const interpretacao = { const interpretacao = {
chips: it.chips.map((c) => ({ chave: c, nome: indice.series[c]?.nome ?? c })), chips: it.chips.map((c) => ({ chave: c, nome: indice.series[c]?.nome ?? c })),
topicos: it.topicos.map((t) => ({ id: t.id, nome: indice.topicosLoc?.[t.id]?.nome ?? t.nome })), topicos: it.topicos.map((t) => ({ id: t.id, nome: indice.topicosLoc?.[t.id]?.nome ?? t.nome })),
pinos: it.pinNums.map((n) => fmt((BUSCA_I18N[indice.locale] ?? BUSCA_I18N.pt).t.chipPino, { n })),
}; };
const smart = respostas(indice, it).map((r, i) => ({ id: `r${i}`, keywords: "", ...r })); const smart = respostas(indice, it).map((r, i) => ({ id: `r${i}`, keywords: "", ...r }));
@@ -436,11 +490,11 @@ export function buscar(indice, consulta) {
const sugestoes = []; const sugestoes = [];
if (it.topicos.length && !it.chips.length) { if (it.topicos.length && !it.chips.length) {
for (const c of indice.chaves.slice(0, 12)) sugestoes.push({ rotulo: indice.series[c].nome, anexar: c }); for (const c of indice.chaves.slice(0, 12)) sugestoes.push({ rotulo: indice.series[c].nome, anexar: c });
} else if (it.chips.length && !it.topicos.length && !it.gpios.length) { } else if (it.chips.length && !it.topicos.length && !it.gpios.length && !it.pinNums.length) {
for (const nome of EXEMPLOS_TOPICOS) sugestoes.push({ rotulo: nome, anexar: nome }); for (const nome of EXEMPLOS_TOPICOS) sugestoes.push({ rotulo: nome, anexar: nome });
} }
return { resultados: [...smart, ...texto], interpretacao, sugestoes, totalRespostas: smart.length }; return { resultados: [...smart, ...texto], interpretacao, sugestoes, totalRespostas: smart.length };
} }
export const EXEMPLOS_DE_BUSCA = ["flash s3", "pinos usb c6", "deep sleep p4", "gpio0 esp32", "secure boot c3", "psram"]; export const EXEMPLOS_DE_BUSCA = ["flash s3", "pinos usb c6", "pino 32 esp32-s3", "gpio0 esp32", "secure boot c3", "psram"];
+72
View File
@@ -29,6 +29,18 @@ export const BUSCA_I18N = {
compDesc: "Comparativo rápido · adicione o chip na busca para detalhar", compDesc: "Comparativo rápido · adicione o chip na busca para detalhar",
pinoNo: "{pino} no {serie}", pinoNo: "{pino} no {serie}",
motivoPino: "Pino {pino}", motivoPino: "Pino {pino}",
pinoFisico: "Pino físico {n} do {serie}",
pinoDesc: "Dados do pino no diagrama",
kPino: "Pino",
kNome: "Nome",
kFuncoes: "Funções",
kCategorias: "Categorias",
kAviso: "Aviso",
pinoInexistente: "O {serie} não tem o pino {n}",
pinoInexistenteDesc: "Os pinos vão de 1 a {max} · abre o diagrama",
pinoEmCada: "Pino {n} em cada série",
pinoEmCadaDesc: "O que há no pino físico {n} de cada chip",
chipPino: "Pino {n}",
}, },
}, },
en: { en: {
@@ -51,6 +63,18 @@ export const BUSCA_I18N = {
compDesc: "Quick comparison · add the chip to your search for details", compDesc: "Quick comparison · add the chip to your search for details",
pinoNo: "{pino} on the {serie}", pinoNo: "{pino} on the {serie}",
motivoPino: "Pin {pino}", motivoPino: "Pin {pino}",
pinoFisico: "Physical pin {n} on the {serie}",
pinoDesc: "Pin data from the diagram",
kPino: "Pin",
kNome: "Name",
kFuncoes: "Functions",
kCategorias: "Categories",
kAviso: "Warning",
pinoInexistente: "The {serie} has no pin {n}",
pinoInexistenteDesc: "Pins run from 1 to {max} · opens the diagram",
pinoEmCada: "Pin {n} across all series",
pinoEmCadaDesc: "What sits on physical pin {n} of each chip",
chipPino: "Pin {n}",
}, },
}, },
es: { es: {
@@ -73,6 +97,18 @@ export const BUSCA_I18N = {
compDesc: "Comparativa rápida · añade el chip a la búsqueda para ver el detalle", compDesc: "Comparativa rápida · añade el chip a la búsqueda para ver el detalle",
pinoNo: "{pino} en el {serie}", pinoNo: "{pino} en el {serie}",
motivoPino: "Pin {pino}", motivoPino: "Pin {pino}",
pinoFisico: "Pin físico {n} del {serie}",
pinoDesc: "Datos del pin en el diagrama",
kPino: "Pin",
kNome: "Nombre",
kFuncoes: "Funciones",
kCategorias: "Categorías",
kAviso: "Aviso",
pinoInexistente: "El {serie} no tiene el pin {n}",
pinoInexistenteDesc: "Los pines van del 1 al {max} · abre el diagrama",
pinoEmCada: "Pin {n} en cada serie",
pinoEmCadaDesc: "Qué hay en el pin físico {n} de cada chip",
chipPino: "Pin {n}",
}, },
}, },
fr: { fr: {
@@ -95,6 +131,18 @@ export const BUSCA_I18N = {
compDesc: "Comparatif rapide · ajoutez la puce à la recherche pour détailler", compDesc: "Comparatif rapide · ajoutez la puce à la recherche pour détailler",
pinoNo: "{pino} sur le {serie}", pinoNo: "{pino} sur le {serie}",
motivoPino: "Broche {pino}", motivoPino: "Broche {pino}",
pinoFisico: "Broche physique {n} du {serie}",
pinoDesc: "Données de la broche dans le schéma",
kPino: "Broche",
kNome: "Nom",
kFuncoes: "Fonctions",
kCategorias: "Catégories",
kAviso: "Avertissement",
pinoInexistente: "Le {serie} n'a pas de broche {n}",
pinoInexistenteDesc: "Les broches vont de 1 à {max} · ouvre le schéma",
pinoEmCada: "Broche {n} dans chaque série",
pinoEmCadaDesc: "Ce qui se trouve sur la broche physique {n} de chaque puce",
chipPino: "Broche {n}",
}, },
}, },
de: { de: {
@@ -117,6 +165,18 @@ export const BUSCA_I18N = {
compDesc: "Schnellvergleich · fügen Sie den Chip zur Suche hinzu, um Details zu sehen", compDesc: "Schnellvergleich · fügen Sie den Chip zur Suche hinzu, um Details zu sehen",
pinoNo: "{pino} beim {serie}", pinoNo: "{pino} beim {serie}",
motivoPino: "Pin {pino}", motivoPino: "Pin {pino}",
pinoFisico: "Physischer Pin {n} des {serie}",
pinoDesc: "Pin-Daten aus dem Diagramm",
kPino: "Pin",
kNome: "Name",
kFuncoes: "Funktionen",
kCategorias: "Kategorien",
kAviso: "Hinweis",
pinoInexistente: "Der {serie} hat keinen Pin {n}",
pinoInexistenteDesc: "Die Pins reichen von 1 bis {max} · öffnet das Diagramm",
pinoEmCada: "Pin {n} in jeder Serie",
pinoEmCadaDesc: "Was an physischem Pin {n} jedes Chips liegt",
chipPino: "Pin {n}",
}, },
}, },
"zh-CN": { "zh-CN": {
@@ -139,6 +199,18 @@ export const BUSCA_I18N = {
compDesc: "快速对比 · 在搜索中加上芯片可查看详情", compDesc: "快速对比 · 在搜索中加上芯片可查看详情",
pinoNo: "{serie} 的 {pino}", pinoNo: "{serie} 的 {pino}",
motivoPino: "引脚 {pino}", motivoPino: "引脚 {pino}",
pinoFisico: "{serie} 的物理引脚 {n}",
pinoDesc: "图中的引脚数据",
kPino: "引脚",
kNome: "名称",
kFuncoes: "功能",
kCategorias: "类别",
kAviso: "警告",
pinoInexistente: "{serie} 没有引脚 {n}",
pinoInexistenteDesc: "引脚编号为 1 到 {max} · 打开引脚图",
pinoEmCada: "各系列的引脚 {n}",
pinoEmCadaDesc: "各芯片物理引脚 {n} 上的内容",
chipPino: "引脚 {n}",
}, },
}, },
}; };
+2
View File
@@ -482,6 +482,8 @@ export const jsonLd = {
name: SITE.autor, name: SITE.autor,
url: SITE.autorUrl, url: SITE.autorUrl,
email: SITE.autorEmail, email: SITE.autorEmail,
jobTitle: "Operations Technician",
worksFor: { "@type": "Organization", name: "RNP (Rede Nacional de Ensino e Pesquisa)", url: "https://www.rnp.br" },
sameAs: [ sameAs: [
SITE.autorLinkedin, SITE.autorLinkedin,
SITE.repositorio, SITE.repositorio,
+9
View File
@@ -65,6 +65,15 @@ export default function middleware(request) {
return NextResponse.next(); return NextResponse.next();
} }
// Material das formações: /formacoes e /formacoes/N mostram a página de
// entrada gerada em public/formacoes. Sem isto a rota cairia na regra de
// URL antiga e iria para /pt/formacoes, que não existe.
if (/^\/formacoes(\/\d+)?\/?$/.test(pathname)) {
const url = request.nextUrl.clone();
url.pathname = `${pathname.replace(/\/$/, "")}/index.html`;
return NextResponse.rewrite(url);
}
// 1. Raiz: negociação de idioma (307) considerando apenas idiomas ATIVOS // 1. Raiz: negociação de idioma (307) considerando apenas idiomas ATIVOS
if (pathname === "/") { if (pathname === "/") {
const targetLocale = resolveRootLocale(request); const targetLocale = resolveRootLocale(request);
+4 -2
View File
@@ -9,10 +9,12 @@
"lint": "eslint", "lint": "eslint",
"audit": "node scripts/auditar-paginas.mjs", "audit": "node scripts/auditar-paginas.mjs",
"check:i18n": "node scripts/check-i18n.mjs", "check:i18n": "node scripts/check-i18n.mjs",
"check": "npm run lint && npm run auditar-temas && npm run audit && npm run check:i18n", "check": "npm run lint && npm run auditar-temas && npm run audit && npm run check:i18n && npm run check:pinos",
"favicons": "node scripts/generate-favicons.mjs", "favicons": "node scripts/generate-favicons.mjs",
"auditar-temas": "node scripts/auditar-temas.mjs", "auditar-temas": "node scripts/auditar-temas.mjs",
"slides-pdf": "node scripts/slides-pdf.mjs" "slides-pdf": "node scripts/slides-pdf.mjs",
"formacoes-viewer": "node scripts/formacoes-viewer.mjs",
"check:pinos": "NODE_NO_WARNINGS=1 node scripts/verifica-pinos-restricoes.mjs && NODE_NO_WARNINGS=1 node scripts/verifica-pinos-busca.mjs"
}, },
"dependencies": { "dependencies": {
"googleapis": "^165.0.0", "googleapis": "^165.0.0",
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large. Load diff
+40
View File
@@ -0,0 +1,40 @@
{
"modulo": 1,
"titulo": ["Conhecendo a", "família ESP32"],
"subtitulo": "Do silício à bancada: como esses microcontroladores funcionam por dentro, o que cada uma das doze séries faz e não faz, e como escolher o chip certo. Termina com um DHT11 lendo temperatura e umidade num ESP32-S3.",
"descricao": "Slides, apostila e arquivos do módulo 1 da formação em ESP32 da LASER: arquitetura, as doze séries da família e uma prática com DHT11 e ESP32-S3.",
"fichas": [["Duração", "3 horas"], ["Formato", "presencial"], ["Placa", "ESP32-S3-DevKitC-1"], ["Prática", "DHT11 + monitor serial"]],
"pratica": {
"titulo": "Prática na bancada",
"texto": "Esquema de ligação do DHT11 ao ESP32-S3, com o arquivo editável do Fritzing para montar ou adaptar.",
"imagem": "pratica.png",
"meta": "Fritzing · capítulo 9 da apostila",
"acoes": [["Ver esquema", "pratica.png", false], ["Baixar .fzz", "pratica.fzz", true]]
},
"grupos": [
{ "titulo": "Material de aula", "arquivos": [
{ "arquivo": "slide.html", "tipo": "slides", "descricao": "Os slides da formação. Abrem no navegador, em tela cheia, prontos para projetar.", "abrir": true },
{ "arquivo": "apostila.html", "tipo": "apostila", "descricao": "A apostila completa, paginada em A4 no próprio navegador, com glossário e capítulos extras.", "abrir": true }
]},
{ "titulo": "Para baixar e imprimir", "arquivos": [
{ "arquivo": "LASER-ESP32-Modulo-1-Slides.pdf", "tipo": "pdf", "descricao": "Os slides em PDF 16:9, um slide por página.", "abrir": true, "baixar": true },
{ "arquivo": "LASER-ESP32-Modulo-1-Apostila.pdf", "tipo": "pdf", "descricao": "A apostila em PDF A4, pronta para imprimir.", "abrir": true, "baixar": true }
]},
{ "titulo": "Prática", "arquivos": [
{ "arquivo": "pratica.fzz", "tipo": "fritzing", "descricao": "Montagem do DHT11 com o ESP32-S3, editável no Fritzing.", "baixar": true },
{ "arquivo": "pratica.png", "tipo": "imagem", "descricao": "O mesmo esquema em imagem, para consultar sem instalar nada.", "abrir": true }
]},
{ "titulo": "Imagens", "arquivos": [
{ "arquivo": "esp32-s3-blocos.png", "tipo": "imagem", "descricao": "Diagrama de blocos do ESP32-S3, usado no capítulo 2.", "abrir": true }
]}
],
"guias": [
{ "titulo": "Montando a prática", "itens": [
"Ligue o <b>VCC</b> do DHT11 ao <b>3V3</b>, o <b>DATA</b> ao <b>GPIO12</b> e o <b>GND</b> ao <b>GND</b>.",
"Coloque o resistor de <b>10 kΩ</b> entre DATA e 3V3: é o pull-up da linha de dados.",
"Instale a <b>DHT sensor library</b>, da Adafruit, na IDE do Arduino.",
"Na porta <b>USB</b> da placa, ative <i>USB CDC On Boot</i>; na porta <b>UART</b>, desative."
]},
{ "titulo": "Abrindo o arquivo do Fritzing", "texto": "O <code>pratica.fzz</code> abre no <a href=\"https://fritzing.org\">Fritzing</a>, onde dá para trocar o pino, mover os fios e exportar o esquema em imagem ou PDF." }
]
}
File diff suppressed because it is too large. Load diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

+1 -1
View File
@@ -2073,7 +2073,7 @@ Temperatura: 26.1 C | Umidade: 62.0 %</code></pre>
<h1>Obrigado.<strong>Perguntas?</strong></h1> <h1>Obrigado.<strong>Perguntas?</strong></h1>
<p class="capa-sub"> <p class="capa-sub">
A apostila completa deste módulo, com o glossário, os capítulos que não couberam no tempo A apostila completa deste módulo, com o glossário, os capítulos que não couberam no tempo
e o arquivo do Fritzing, está em <strong>index.html</strong>, na mesma pasta. e o arquivo do Fritzing, está em <strong>espdocs.cienciaembarcada.com.br/formacoes/1</strong>.
</p> </p>
<div class="capa-autor"> <div class="capa-autor">
<strong>Lucas Rayan Guerra</strong> <strong>Lucas Rayan Guerra</strong>
Binary file not shown.
Binary file not shown.
+800
View File
@@ -0,0 +1,800 @@
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<title>LASER · Formação em ESP32 · Módulo 2: Estação de Temperatura e Umidade</title>
<meta name="author" content="Lucas Rayan Guerra">
<meta name="description" content="Apostila do módulo 2 da formação em ESP32 da LASER: DHT22, LCD 16x2 I2C e ESP32-S3, simulados no Wokwi com o framework Arduino.">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600;700;800&family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;600&display=swap" rel="stylesheet">
<link rel="icon" type="image/svg+xml" href="../../marca/espdocs-marca.svg">
<link rel="stylesheet" href="../assets/apostila.css">
</head>
<body>
<p class="aviso-carregando">Paginando a apostila…</p>
<!-- ══════════════════════════════ CAPA ══════════════════════════════ -->
<section class="pagina-capa">
<div class="capa">
<img class="capa-curvas" src="../assets/capa-curvas.svg" alt="">
<div class="capa-marca">
<img src="../assets/laser-escuro.svg" alt="LASER">
<span>Liga Acadêmica de Sistemas Embarcados<br>Centro de Informática · UFPE</span>
</div>
<div class="capa-selo">Formação em ESP32 · Módulo 2</div>
<h1 class="capa-titulo">Estação de<br><strong>temperatura e umidade</strong></h1>
<p class="capa-sub">
Um DHT22, um display LCD 16x2 e um ESP32-S3, primeiro no simulador Wokwi e depois na
bancada. Dois protocolos de comunicação, um programa curto e os cuidados elétricos que
fazem o circuito funcionar fora da tela também.
</p>
<div class="capa-rodape">
<div>
<strong>Lucas Rayan Guerra</strong>
Ciência Embarcada · ESPDocs
linkedin.com/in/lucasrguerra
</div>
<div style="text-align:right">
<strong>Material de apoio</strong>
Formação presencial · uso livre para fins educacionais
</div>
</div>
</div>
</section>
<!-- ══════════════════════════ APRESENTAÇÃO ══════════════════════════ -->
<section class="capitulo" id="apresentacao">
<div class="capitulo-abertura">
<div>
<h2>Apresentação</h2>
<p class="subtitulo">O que vamos construir, o que você precisa e como usar esta apostila.</p>
</div>
</div>
<p>
No módulo 1 lemos um sensor e imprimimos o resultado no monitor serial, que só existe
enquanto há um computador ligado à placa. Neste módulo o projeto ganha <strong>uma tela
própria</strong>: um display LCD de 16 colunas por 2 linhas mostra a temperatura e a
umidade medidas por um <strong>DHT22</strong>, e o conjunto passa a funcionar sozinho,
ligado em qualquer carregador USB.
</p>
<p>
Toda a formação acontece no <strong>Wokwi</strong>, um simulador de microcontroladores que
roda no navegador. Ele compila o mesmo código que você gravaria na placa, simula o ESP32-S3,
o sensor e o display, e deixa você mudar a temperatura com um controle deslizante. Assim
cada pessoa monta e testa o circuito sem precisar de componentes, e quem quiser repetir em
casa com peças de verdade encontra no capítulo 7 o que muda fora do simulador.
</p>
<h3>O que você vai levar deste módulo</h3>
<ul>
<li>Montar e simular um projeto completo de ESP32 no Wokwi, do zero.</li>
<li>Entender como o DHT22 transmite uma medição por um único fio.</li>
<li>Entender o barramento I2C: dois fios, endereços e resistores de pull-up.</li>
<li>Escrever no LCD 16x2, inclusive com um caractere que você mesmo desenha.</li>
<li>Saber o que precisa mudar para o mesmo circuito funcionar na bancada.</li>
</ul>
<h3>Pré-requisitos</h3>
<p>
Ter acompanhado o módulo 1 ajuda, mas não é obrigatório. Basta saber o que são
<code>setup()</code> e <code>loop()</code> num programa Arduino. Para a simulação você
precisa só de um navegador atualizado; não é preciso instalar nada nem criar conta.
</p>
<h3>Os arquivos deste módulo</h3>
<p>
Tudo o que aparece nesta apostila foi compilado e executado no Wokwi, e os arquivos estão
na mesma pasta da formação:
</p>
<table>
<thead><tr><th style="width:34%">Arquivo</th><th>Conteúdo</th></tr></thead>
<tbody>
<tr><td class="destaque"><a href="wokwi/sketch.ino">sketch.ino</a></td><td>O programa da estação</td></tr>
<tr><td class="destaque"><a href="wokwi/diagram.json">diagram.json</a></td><td>O circuito: peças, posições e fios</td></tr>
<tr><td class="destaque"><a href="wokwi/libraries.txt">libraries.txt</a></td><td>As bibliotecas que o Wokwi deve instalar</td></tr>
<tr><td class="destaque"><a href="wokwi/scanner-i2c.ino">scanner-i2c.ino</a></td><td>Programa de diagnóstico do barramento I2C</td></tr>
<tr><td class="destaque"><a href="modulo-2-wokwi.zip">modulo-2-wokwi.zip</a></td><td>Os quatro arquivos acima num só pacote</td></tr>
<tr><td class="destaque"><a href="LASER-ESP32-Modulo-2-Apostila.pdf">Apostila em PDF</a></td><td>Esta apostila, pronta para imprimir</td></tr>
<tr><td class="destaque"><a href="LASER-ESP32-Modulo-2-Slides.pdf">Slides em PDF</a></td><td>Os slides da formação, em 16:9</td></tr>
</tbody>
</table>
<div class="grupo">
<p class="junto">Ao longo do texto você encontra quatro tipos de caixa:</p>
<div class="caixa dica"><div class="caixa-titulo">Dica</div><p>Atalho, boa prática ou recomendação que economiza tempo.</p></div>
<div class="caixa atencao"><div class="caixa-titulo">Atenção</div><p>Ponto que costuma causar problema se passar despercebido.</p></div>
<div class="caixa erro"><div class="caixa-titulo">Erro comum</div><p>Armadilha concreta, com o sintoma que ela produz e como escapar.</p></div>
<div class="caixa curiosidade"><div class="caixa-titulo">Curiosidade</div><p>Contexto ou detalhe técnico que ajuda a fixar o conceito.</p></div>
</div>
</section>
<!-- ═════════════════════════════ SUMÁRIO ═════════════════════════════ -->
<section class="capitulo">
<div class="capitulo-abertura">
<div>
<h2>Sumário</h2>
<p class="subtitulo">Oito capítulos, da peça solta ao circuito funcionando.</p>
</div>
</div>
<nav class="sumario">
<a href="#cap1"><span class="num">1</span><span class="txt">O projeto</span><span class="pontos"></span></a>
<a href="#cap2"><span class="num">2</span><span class="txt">O sensor DHT22</span><span class="pontos"></span></a>
<a href="#cap3"><span class="num">3</span><span class="txt">O display LCD 16x2 e o barramento I2C</span><span class="pontos"></span></a>
<a href="#cap4"><span class="num">4</span><span class="txt">O simulador Wokwi</span><span class="pontos"></span></a>
<a href="#cap5"><span class="num">5</span><span class="txt">Montagem</span><span class="pontos"></span></a>
<a href="#cap6"><span class="num">6</span><span class="txt">O programa</span><span class="pontos"></span></a>
<a href="#cap7"><span class="num">7</span><span class="txt">Da simulação para a bancada</span><span class="pontos"></span></a>
<a href="#cap8"><span class="num">8</span><span class="txt">Problemas comuns e desafios</span><span class="pontos"></span></a>
</nav>
</section>
<!-- ═══════════════════════════ CAPÍTULO 1 ═══════════════════════════ -->
<section class="capitulo" id="cap1">
<div class="capitulo-abertura">
<div class="capitulo-numero">1</div>
<div>
<h2>O projeto</h2>
<p class="subtitulo">Três peças, dois protocolos e uma tela que mostra o ambiente.</p>
</div>
</div>
<p>
A estação é composta por três peças. O <strong>DHT22</strong> mede temperatura e umidade
relativa do ar. O <strong>ESP32-S3</strong> pede uma medição a cada dois segundos, formata
os números e os envia ao <strong>LCD 16x2</strong>, que os mantém na tela até a próxima
atualização.
</p>
<figure>
<img src="circuito-wokwi.png" alt="Circuito completo no simulador Wokwi: o DHT22 à esquerda, a placa ESP32-S3-DevKitC-1 ao centro, três resistores no alto ligados ao 3V3 e o LCD 16x2 embaixo mostrando Temp: 26.5°C e Umid: 62.0 %." style="max-height:120mm">
<figcaption>
O circuito deste módulo rodando no Wokwi. O display mostra a leitura que o DHT22 simulado
está informando: 26,5 °C e 62 % de umidade.
</figcaption>
</figure>
<p>
Cada peça conversa com o ESP32 de um jeito diferente, e é isso que torna o projeto bom para
aprender. O DHT22 usa um <strong>protocolo próprio de um fio</strong>, em que o valor de
cada bit está na duração de um pulso. O LCD usa o <strong>I2C</strong>, um barramento
padronizado de dois fios em que cada dispositivo tem um endereço. Quem entende esses dois
protocolos já entende a maior parte dos sensores e módulos baratos do mercado.
</p>
<h3>Lista de material</h3>
<p>No Wokwi as peças já existem. Para montar em bancada você vai precisar de:</p>
<table>
<thead><tr><th style="width:44%">Item</th><th style="width:10%">Qtd.</th><th>Observação</th></tr></thead>
<tbody>
<tr><td class="destaque">ESP32-S3-DevKitC-1</td><td>1</td><td>Qualquer variante de memória serve</td></tr>
<tr><td class="destaque">Sensor DHT22 (AM2302)</td><td>1</td><td>O componente branco de 4 pinos</td></tr>
<tr><td class="destaque">Display LCD 16x2 com módulo I2C</td><td>1</td><td>A plaquinha PCF8574 vem soldada atrás</td></tr>
<tr><td class="destaque">Conversor de nível I2C (BSS138)</td><td>1</td><td>Explicado no capítulo 7</td></tr>
<tr><td class="destaque">Resistor de 10 kΩ</td><td>1</td><td>Pull-up do DHT22 (marrom, preto, laranja)</td></tr>
<tr><td class="destaque">Resistor de 4,7 kΩ</td><td>2</td><td>Pull-ups do I2C (amarelo, violeta, vermelho)</td></tr>
<tr><td class="destaque">Protoboard, jumpers e cabo USB de dados</td><td>—</td><td>Cabo só de carga não grava a placa</td></tr>
</tbody>
</table>
</section>
<!-- ═══════════════════════════ CAPÍTULO 2 ═══════════════════════════ -->
<section class="capitulo" id="cap2">
<div class="capitulo-abertura">
<div class="capitulo-numero">2</div>
<div>
<h2>O sensor DHT22</h2>
<p class="subtitulo">Dois sensores numa caixinha e um protocolo de um fio só.</p>
</div>
</div>
<p>
Dentro do DHT22 existem dois elementos de medição e um pequeno microcontrolador. A umidade
é medida por um <strong>sensor capacitivo</strong>: um material que absorve vapor d'água
e, com isso, muda a capacitância. A temperatura vem de um <strong>termistor</strong>, um
resistor cujo valor varia com o calor. O microcontrolador interno lê os dois, aplica a
calibração gravada de fábrica e entrega os números já prontos, em formato digital.
</p>
<h3>DHT22 ou DHT11</h3>
<p>No módulo 1 usamos o DHT11. O DHT22 tem a mesma pinagem e o mesmo protocolo, mas mede melhor:</p>
<table>
<thead><tr><th style="width:34%">Característica</th><th style="width:33%">DHT11</th><th>DHT22</th></tr></thead>
<tbody>
<tr><td class="destaque">Faixa de temperatura</td><td>0 a 50 °C</td><td class="sim">−40 a 80 °C</td></tr>
<tr><td class="destaque">Precisão de temperatura</td><td>±2 °C</td><td class="sim">±0,5 °C</td></tr>
<tr><td class="destaque">Faixa de umidade</td><td>20 a 90 %</td><td class="sim">0 a 100 %</td></tr>
<tr><td class="destaque">Precisão de umidade</td><td>±5 %</td><td class="sim">±2 a 5 %</td></tr>
<tr><td class="destaque">Resolução</td><td>1 °C e 1 %</td><td class="sim">0,1 °C e 0,1 %</td></tr>
<tr><td class="destaque">Intervalo mínimo entre leituras</td><td class="sim">1 s</td><td>2 s</td></tr>
<tr><td class="destaque">Alimentação</td><td>3,3 a 5 V</td><td>3,3 a 6 V</td></tr>
</tbody>
<caption>Valores típicos dos datasheets da Aosong. Confira sempre o do seu fornecedor.</caption>
</table>
<p>
O preço é a única desvantagem real do DHT22, e o intervalo de dois segundos entre leituras
raramente importa: temperatura e umidade de um ambiente não mudam mais rápido do que isso.
</p>
<h3>Os quatro pinos</h3>
<table>
<thead><tr><th style="width:16%">Pino</th><th style="width:22%">Nome</th><th>Ligação</th></tr></thead>
<tbody>
<tr><td class="destaque">1</td><td>VCC</td><td>3V3 do ESP32</td></tr>
<tr><td class="destaque">2</td><td>DATA</td><td>GPIO12, com pull-up de 10 kΩ para o 3V3</td></tr>
<tr><td class="destaque">3</td><td>NC</td><td>Não conectado</td></tr>
<tr><td class="destaque">4</td><td>GND</td><td>GND do ESP32</td></tr>
</tbody>
<caption>Pinos contados da esquerda para a direita, com a grade do sensor virada para você.</caption>
</table>
<h3>Como uma medição atravessa um único fio</h3>
<p>
O ESP32 e o sensor dividem o mesmo fio de dados, e por isso nenhum dos dois "força" nível
alto: os dois apenas puxam a linha para o terra quando precisam de um zero e a soltam no
resto do tempo. Quem traz a linha de volta para o nível alto é o resistor de
<strong>pull-up</strong>. Uma leitura acontece assim:
</p>
<div class="passo">
<div class="passo-num">1</div>
<div><h3>O ESP32 pede a medição</h3><p>Puxa a linha para baixo por cerca de 1 ms e depois a solta.</p></div>
</div>
<div class="passo">
<div class="passo-num">2</div>
<div><h3>O sensor confirma</h3><p>Responde com 80 µs em nível baixo seguidos de 80 µs em nível alto.</p></div>
</div>
<div class="passo">
<div class="passo-num">3</div>
<div>
<h3>Chegam 40 bits</h3>
<p>
Cada bit começa com 50 µs em baixo. Depois vem um pulso alto: se ele dura cerca de
26 µs é um <strong>0</strong>; se dura cerca de 70 µs é um <strong>1</strong>.
São 16 bits de umidade, 16 de temperatura e 8 de verificação.
</p>
</div>
</div>
<figure>
<svg class="diagrama" viewBox="0 0 640 150" role="img" aria-label="Diagrama de tempo: pedido do ESP32, resposta do sensor, um bit 0 com pulso alto curto e um bit 1 com pulso alto longo.">
<g stroke="#9aa9b3" stroke-width="0.8" stroke-dasharray="2 3" fill="none">
<line x1="50" y1="40" x2="630" y2="40"/><line x1="50" y1="100" x2="630" y2="100"/>
</g>
<text x="44" y="43" font-size="9" text-anchor="end" fill="#5b6b75" font-family="JetBrains Mono, monospace">alto</text>
<text x="44" y="103" font-size="9" text-anchor="end" fill="#5b6b75" font-family="JetBrains Mono, monospace">baixo</text>
<polyline fill="none" stroke="#003049" stroke-width="2.2" stroke-linejoin="round"
points="50,40 70,40 70,100 170,100 170,40 205,40 205,100 255,100 255,40 305,40 305,100 345,100 345,40 375,40 375,100 415,100 415,40 500,40 500,100 540,100 540,40 630,40"/>
<g font-family="JetBrains Mono, monospace" font-size="9.5" fill="#D62828" text-anchor="middle">
<text x="120" y="30">~1 ms</text><text x="280" y="30">80 µs</text><text x="360" y="30">26 µs</text><text x="457" y="30">70 µs</text>
</g>
<g font-family="Inter, sans-serif" font-size="10" fill="#1d2b33" text-anchor="middle">
<text x="120" y="125">ESP32 pede</text><text x="255" y="125">sensor confirma</text><text x="360" y="125">bit 0</text><text x="477" y="125">bit 1</text><text x="595" y="125" fill="#5b6b75">…40 bits</text>
</g>
</svg>
<figcaption>
O valor de cada bit está na <strong>largura</strong> do pulso alto. Sem o pull-up a
linha sobe devagar demais, os tempos saem errados e a leitura falha.
</figcaption>
</figure>
<div class="caixa atencao">
<div class="caixa-titulo">Sensor solto ou módulo em plaquinha</div>
<p>
O DHT22 também é vendido soldado numa plaquinha de três pinos, que já traz o resistor de
pull-up. Se o seu for assim, o resistor externo de 10 kΩ é dispensável. O sensor solto,
de quatro pinos, <strong>precisa</strong> dele.
</p>
</div>
</section>
<!-- ═══════════════════════════ CAPÍTULO 3 ═══════════════════════════ -->
<section class="capitulo" id="cap3">
<div class="capitulo-abertura">
<div class="capitulo-numero">3</div>
<div>
<h2>O display LCD 16x2 e o barramento I2C</h2>
<p class="subtitulo">Trinta e dois caracteres, quatro fios e um endereço.</p>
</div>
</div>
<p>
O LCD 16x2 mostra duas linhas de dezesseis caracteres. Cada caractere é uma matriz de
<strong>5 por 8 pontos</strong>, e o controlador do display, o HD44780 ou um compatível,
já sabe desenhar letras, números e símbolos comuns. Ele também guarda até
<strong>oito caracteres personalizados</strong>, que você desenha ponto a ponto. É assim
que este projeto mostra o símbolo de grau.
</p>
<p>
Sozinho, o display precisa de pelo menos seis fios de dados e controle. Por isso ele quase
sempre vem com uma plaquinha soldada atrás, baseada no chip <strong>PCF8574</strong>, que
converte esses sinais para o barramento <strong>I2C</strong>: com ela, bastam quatro fios
para alimentar e controlar o display. A plaquinha também tem um <strong>trimpot</strong>
para ajustar o contraste.
</p>
<h3>Como o I2C funciona</h3>
<p>
O I2C usa dois fios: <strong>SDA</strong>, por onde passam os dados, e
<strong>SCL</strong>, o relógio que marca o ritmo da conversa. O ESP32 é o
<em>controlador</em>: é sempre ele quem inicia a comunicação. Os outros dispositivos são
<em>alvos</em>, e cada um tem um endereço de 7 bits. Vários dispositivos podem dividir os
mesmos dois fios, porque só responde quem tiver o endereço chamado.
</p>
<table>
<thead><tr><th style="width:30%">Plaquinha</th><th style="width:22%">Endereço</th><th>Como saber</th></tr></thead>
<tbody>
<tr><td class="destaque">PCF8574 ou PCF8574T</td><td class="mono">0x27</td><td>A mais comum, e a usada no Wokwi</td></tr>
<tr><td class="destaque">PCF8574A</td><td class="mono">0x3F</td><td>Mesma placa, outro chip</td></tr>
</tbody>
<caption>Na dúvida, o programa de scanner do capítulo 7 descobre o endereço por você.</caption>
</table>
<p>
Assim como no DHT22, as linhas do I2C são de <strong>dreno aberto</strong>: os
dispositivos só puxam para baixo, e são resistores de pull-up que trazem SDA e SCL de volta
ao nível alto. Valores entre 2,2 kΩ e 10 kΩ funcionam na velocidade padrão; aqui usamos
4,7 kΩ, o valor mais comum.
</p>
<div class="caixa erro">
<div class="caixa-titulo">O display liga mas não mostra nada</div>
<p>
Com o contraste no mínimo, a tela acende e parece vazia; com ele no máximo, aparecem
só retângulos cheios. Antes de desconfiar do código, gire o trimpot azul atrás do
display com uma chave de fenda até os caracteres aparecerem. No Wokwi isso não
existe, porque o contraste simulado já vem ajustado.
</p>
</div>
</section>
<!-- ═══════════════════════════ CAPÍTULO 4 ═══════════════════════════ -->
<section class="capitulo" id="cap4">
<div class="capitulo-abertura">
<div class="capitulo-numero">4</div>
<div>
<h2>O simulador Wokwi</h2>
<p class="subtitulo">Um laboratório de eletrônica que abre no navegador.</p>
</div>
</div>
<p>
O Wokwi simula o processador do ESP32-S3 instrução por instrução e simula também cada peça
ligada a ele. O programa é compilado com o mesmo <strong>núcleo Arduino da Espressif</strong>
que você instalaria na IDE, então o código que funciona aqui é o mesmo que vai para a placa.
</p>
<h3>Os três arquivos de um projeto</h3>
<table>
<thead><tr><th style="width:28%">Arquivo</th><th>Para que serve</th></tr></thead>
<tbody>
<tr><td class="destaque">sketch.ino</td><td>O programa, exatamente como na IDE do Arduino.</td></tr>
<tr><td class="destaque">diagram.json</td><td>As peças, a posição de cada uma, os fios e as propriedades, como a temperatura inicial do DHT22.</td></tr>
<tr><td class="destaque">libraries.txt</td><td>Uma biblioteca por linha. O Wokwi baixa todas antes de compilar.</td></tr>
</tbody>
</table>
<h3>Abrindo o projeto deste módulo</h3>
<div class="passo">
<div class="passo-num">1</div>
<div><h3>Crie um projeto vazio</h3><p>Acesse <strong>wokwi.com/projects/new/esp32-s3</strong>. Não é preciso criar conta para simular.</p></div>
</div>
<div class="passo">
<div class="passo-num">2</div>
<div><h3>Substitua o programa e o circuito</h3><p>Cole o conteúdo de <code>sketch.ino</code> na aba de mesmo nome e o de <code>diagram.json</code> na aba <em>diagram.json</em>, apagando o que já estava lá.</p></div>
</div>
<div class="passo">
<div class="passo-num">3</div>
<div><h3>Adicione as bibliotecas</h3><p>Abra a aba <em>Library Manager</em>, clique em <strong>+</strong> e adicione <strong>DHT sensor library</strong> e <strong>LiquidCrystal I2C</strong>. O Wokwi cria o <code>libraries.txt</code> sozinho.</p></div>
</div>
<div class="passo">
<div class="passo-num">4</div>
<div><h3>Simule</h3><p>Clique no botão verde. A primeira compilação leva alguns segundos; depois o display acende e o monitor serial aparece embaixo.</p></div>
</div>
<div class="caixa dica">
<div class="caixa-titulo">Mude o clima com um clique</div>
<p>
Com a simulação rodando, clique no DHT22: aparecem dois controles deslizantes, um de
temperatura e outro de umidade. Mova-os e veja o display acompanhar na leitura seguinte.
É o jeito mais rápido de testar o que o programa faz com valores extremos.
</p>
</div>
<div class="caixa atencao">
<div class="caixa-titulo">Salvar exige conta</div>
<p>
Sem login a simulação funciona normalmente, mas o projeto se perde ao fechar a aba. Para
guardar o seu trabalho, entre com uma conta gratuita e clique em <strong>Save</strong>,
ou mantenha os três arquivos no seu computador.
</p>
</div>
</section>
<!-- ═══════════════════════════ CAPÍTULO 5 ═══════════════════════════ -->
<section class="capitulo" id="cap5">
<div class="capitulo-abertura">
<div class="capitulo-numero">5</div>
<div>
<h2>Montagem</h2>
<p class="subtitulo">Nove ligações e três resistores.</p>
</div>
</div>
<p>
Todos os pinos usados ficam na <strong>coluna esquerda</strong> da placa, o que deixa a
fiação curta e sem cruzamentos. As cores seguem uma convenção que vale a pena adotar
também na bancada: vermelho para alimentação, preto para terra, e uma cor por sinal.
</p>
<table>
<thead><tr><th style="width:38%">De</th><th style="width:22%">Para</th><th>Cor e função</th></tr></thead>
<tbody>
<tr><td class="destaque">DHT22 VCC</td><td>3V3</td><td>Vermelho · alimentação</td></tr>
<tr><td class="destaque">DHT22 DATA</td><td>GPIO12</td><td>Amarelo · dados do sensor</td></tr>
<tr><td class="destaque">DHT22 GND</td><td>GND</td><td>Preto · terra</td></tr>
<tr><td class="destaque">Resistor 10 kΩ</td><td>GPIO12 ↔ 3V3</td><td>Pull-up do DHT22</td></tr>
<tr><td class="destaque">LCD VCC</td><td>5V</td><td>Vermelho · o display precisa de 5 V</td></tr>
<tr><td class="destaque">LCD GND</td><td>GND</td><td>Preto · terra</td></tr>
<tr><td class="destaque">LCD SDA</td><td>GPIO8</td><td>Azul · dados do I2C</td></tr>
<tr><td class="destaque">LCD SCL</td><td>GPIO9</td><td>Roxo · relógio do I2C</td></tr>
<tr><td class="destaque">2 resistores de 4,7 kΩ</td><td>GPIO8 e GPIO9 ↔ 3V3</td><td>Pull-ups do I2C</td></tr>
</tbody>
<caption>GPIO8 e GPIO9 são os pinos I2C padrão do ESP32-S3 no núcleo Arduino.</caption>
</table>
<figure>
<img src="circuito-wokwi.png" alt="Fiação no Wokwi: um barramento vermelho de 3V3 no alto alimenta o DHT22 e os três resistores; do resistor de 10 kΩ desce um fio amarelo até o GPIO12, e dos dois resistores de 4,7 kΩ descem os fios azul e roxo até o GPIO8 e o GPIO9, que seguem para o SDA e o SCL do LCD." style="max-height:92mm">
<figcaption>
O fio vermelho no alto funciona como um barramento de 3V3: dele saem a alimentação do
DHT22 e o lado de cima dos três resistores. O lado de baixo de cada resistor encontra a
linha de sinal correspondente.
</figcaption>
</figure>
<div class="caixa curiosidade">
<div class="caixa-titulo">Por que pull-up para 3V3, e não para 5V</div>
<p>
Os pinos do ESP32-S3 trabalham em 3,3 V e <strong>não toleram 5 V</strong>. Um resistor
de pull-up define a tensão de repouso da linha, então ligá-lo ao 5V colocaria 5 V
direto no GPIO. O display é alimentado em 5 V, mas as linhas de sinal precisam ficar
em 3,3 V. Na bancada isso exige um cuidado a mais, explicado no capítulo 7.
</p>
</div>
</section>
<!-- ═══════════════════════════ CAPÍTULO 6 ═══════════════════════════ -->
<section class="capitulo" id="cap6">
<div class="capitulo-abertura">
<div class="capitulo-numero">6</div>
<div>
<h2>O programa</h2>
<p class="subtitulo">Um programa curto, lido em três partes.</p>
</div>
</div>
<p>
O programa é lido aqui em três partes, exatamente como foi compilado e executado no Wokwi.
O arquivo completo, pronto para colar, está em <a href="wokwi/sketch.ino">wokwi/sketch.ino</a>.
</p>
<h3>1. Configuração</h3>
<pre class="miudo"><code><span class="c-pre">#include</span> <span class="c-str">&lt;Wire.h&gt;</span>
<span class="c-pre">#include</span> <span class="c-str">&lt;DHT.h&gt;</span>
<span class="c-pre">#include</span> &lt;LiquidCrystal_I2C.h&gt;
<span class="c-pre">#define</span> PINO_DHT <span class="c-num">12</span> <span class="c-com">// fio amarelo</span>
<span class="c-pre">#define</span> TIPO_DHT DHT22
<span class="c-pre">#define</span> PINO_SDA <span class="c-num">8</span> <span class="c-com">// I2C padrão do ESP32-S3</span>
<span class="c-pre">#define</span> PINO_SCL <span class="c-num">9</span>
DHT <span class="c-fun">dht</span>(PINO_DHT, TIPO_DHT);
LiquidCrystal_I2C <span class="c-fun">lcd</span>(<span class="c-num">0x27</span>, <span class="c-num">16</span>, <span class="c-num">2</span>); <span class="c-com">// endereço, colunas, linhas</span>
<span class="c-com">// Símbolo de grau: 8 linhas de 5 pixels</span>
<span class="c-key">byte</span> grau[<span class="c-num">8</span>] = { <span class="c-num">0b01100</span>, <span class="c-num">0b10010</span>, <span class="c-num">0b10010</span>, <span class="c-num">0b01100</span>, <span class="c-num">0</span>, <span class="c-num">0</span>, <span class="c-num">0</span>, <span class="c-num">0</span> };</code></pre>
<p>
As três bibliotecas cuidam do trabalho pesado: <code>Wire</code> é o I2C do ESP32,
<code>DHT</code> fala o protocolo do sensor e <code>LiquidCrystal_I2C</code> traduz
comandos como "escreva na linha 2" para o que a plaquinha PCF8574 entende. Os
<code>#define</code> reúnem no topo tudo o que depende da montagem: se você mudar um fio de
pino, só precisa mudar uma linha.
</p>
<p>
O vetor <code>grau</code> desenha o símbolo de grau. Cada número é uma linha do caractere,
e cada bit <code>1</code> acende um dos cinco pontos daquela linha:
</p>
<figure>
<svg class="diagrama" viewBox="0 0 640 150" role="img" aria-label="Grade de 5 por 8 pontos mostrando o desenho do símbolo de grau, com o valor binário de cada linha ao lado.">
<g font-family="JetBrains Mono, monospace" font-size="11" fill="#1d2b33">
<text x="250" y="26">0b01100</text><text x="250" y="42">0b10010</text><text x="250" y="58">0b10010</text><text x="250" y="74">0b01100</text>
<text x="250" y="90" fill="#9aa9b3">0</text><text x="250" y="106" fill="#9aa9b3">0</text><text x="250" y="122" fill="#9aa9b3">0</text><text x="250" y="138" fill="#9aa9b3">0</text>
</g>
<g fill="#003049">
<rect x="177" y="14" width="14" height="14"/><rect x="193" y="14" width="14" height="14"/>
<rect x="161" y="30" width="14" height="14"/><rect x="209" y="30" width="14" height="14"/>
<rect x="161" y="46" width="14" height="14"/><rect x="209" y="46" width="14" height="14"/>
<rect x="177" y="62" width="14" height="14"/><rect x="193" y="62" width="14" height="14"/>
</g>
<g fill="none" stroke="#c9d3d9" stroke-width="0.8">
<rect x="160" y="13" width="80" height="128"/>
<path d="M176 13V141M192 13V141M208 13V141M224 13V141M160 29H240M160 45H240M160 61H240M160 77H240M160 93H240M160 109H240M160 125H240"/>
</g>
<rect x="330" y="40" width="180" height="50" rx="6" fill="#7fae1a"/><text x="420" y="74" font-family="JetBrains Mono, monospace" font-size="26" fill="#1d2b0a" text-anchor="middle">26.5°C</text>
<text x="420" y="108" font-family="Inter, sans-serif" font-size="10" fill="#5b6b75" text-anchor="middle">o que aparece no display</text>
</svg>
<figcaption>
<code>lcd.createChar(0, grau)</code> guarda o desenho na posição 0 da memória do display,
e <code>lcd.write(0)</code> o imprime como qualquer outro caractere.
</figcaption>
</figure>
<h3>2. setup()</h3>
<pre class="miudo"><code><span class="c-key">void</span> <span class="c-fun">setup</span>() {
Serial.<span class="c-fun">begin</span>(<span class="c-num">115200</span>);
Wire.<span class="c-fun">begin</span>(PINO_SDA, PINO_SCL);
dht.<span class="c-fun">begin</span>();
lcd.<span class="c-fun">init</span>();
lcd.<span class="c-fun">backlight</span>();
lcd.<span class="c-fun">createChar</span>(<span class="c-num">0</span>, grau);
lcd.<span class="c-fun">setCursor</span>(<span class="c-num">0</span>, <span class="c-num">0</span>);
lcd.<span class="c-fun">print</span>(<span class="c-str">"LASER ESP32-S3"</span>);
lcd.<span class="c-fun">setCursor</span>(<span class="c-num">0</span>, <span class="c-num">1</span>);
lcd.<span class="c-fun">print</span>(<span class="c-str">"Iniciando..."</span>);
<span class="c-fun">delay</span>(<span class="c-num">2000</span>); <span class="c-com">// o DHT22 precisa de ~2 s para a primeira leitura</span>
lcd.<span class="c-fun">clear</span>();
}</code></pre>
<p>
<code>Wire.begin(8, 9)</code> inicia o I2C nos pinos da montagem. Em seguida o display é
inicializado, a luz de fundo é ligada e o caractere de grau é registrado. A mensagem
"Iniciando..." não é só enfeite: ela cobre os <strong>dois segundos</strong> que o DHT22
precisa depois de ligado para entregar a primeira medição válida.
</p>
<h3>3. loop()</h3>
<pre class="miudo"><code><span class="c-key">void</span> <span class="c-fun">loop</span>() {
<span class="c-key">float</span> umidade = dht.<span class="c-fun">readHumidity</span>();
<span class="c-key">float</span> temperatura = dht.<span class="c-fun">readTemperature</span>();
<span class="c-key">if</span> (<span class="c-fun">isnan</span>(umidade) || <span class="c-fun">isnan</span>(temperatura)) {
lcd.<span class="c-fun">setCursor</span>(<span class="c-num">0</span>, <span class="c-num">0</span>);
lcd.<span class="c-fun">print</span>(<span class="c-str">"Falha no sensor "</span>);
Serial.<span class="c-fun">println</span>(<span class="c-str">"Falha na leitura do DHT22"</span>);
} <span class="c-key">else</span> {
lcd.<span class="c-fun">setCursor</span>(<span class="c-num">0</span>, <span class="c-num">0</span>);
lcd.<span class="c-fun">print</span>(<span class="c-str">"Temp: "</span>);
lcd.<span class="c-fun">print</span>(temperatura, <span class="c-num">1</span>);
lcd.<span class="c-fun">write</span>(<span class="c-num">0</span>); <span class="c-com">// o caractere de grau criado acima</span>
lcd.<span class="c-fun">print</span>(<span class="c-str">"C "</span>);
lcd.<span class="c-fun">setCursor</span>(<span class="c-num">0</span>, <span class="c-num">1</span>);
lcd.<span class="c-fun">print</span>(<span class="c-str">"Umid: "</span>);
lcd.<span class="c-fun">print</span>(umidade, <span class="c-num">1</span>);
lcd.<span class="c-fun">print</span>(<span class="c-str">" % "</span>);
Serial.<span class="c-fun">printf</span>(<span class="c-str">"Temperatura: %.1f C | Umidade: %.1f %%\n"</span>, temperatura, umidade);
}
<span class="c-fun">delay</span>(<span class="c-num">2000</span>); <span class="c-com">// o DHT22 aceita no máximo uma leitura a cada 2 s</span>
}</code></pre>
<p>
A cada volta, o programa lê umidade e temperatura. Se qualquer uma vier como
<code>NaN</code>, a sigla de <em>not a number</em> com que a biblioteca avisa que a leitura
falhou, o display mostra "Falha no sensor". Caso contrário, os valores são escritos com
uma casa decimal. O <code>delay(2000)</code> respeita o intervalo mínimo do DHT22.
</p>
<div class="caixa erro">
<div class="caixa-titulo">Restos de texto na tela</div>
<p>
O LCD só sobrescreve as posições em que você escreve; o resto continua como estava.
Se a temperatura cair de "26.5" para "-5.2" e depois para "8.0", o texto fica mais
curto e sobram caracteres da leitura anterior. Os espaços em <code>"C "</code> e
<code>" % "</code> existem para apagar essas sobras. Chamar <code>lcd.clear()</code> a
cada leitura também resolveria, mas faz a tela piscar.
</p>
</div>
<h3>Os três testes feitos no Wokwi</h3>
<table>
<thead><tr><th style="width:36%">Situação</th><th>O que o display mostrou</th></tr></thead>
<tbody>
<tr><td class="destaque">Sala, 26,5 °C e 62 %</td><td><img src="lcd-funcionando.png" alt="LCD mostrando Temp: 26.5°C e Umid: 62.0 %" style="height:24mm"></td></tr>
<tr><td class="destaque">Frio, −5,2 °C e 88,4 %</td><td><img src="lcd-frio.png" alt="LCD mostrando Temp: -5.2°C e Umid: 88.4 %" style="height:24mm"></td></tr>
<tr><td class="destaque">Fio de dados desconectado</td><td><img src="lcd-falha.png" alt="LCD mostrando Falha no sensor" style="height:24mm"></td></tr>
</tbody>
<caption>O terceiro teste confirma que o programa detecta a falha em vez de mostrar números inventados.</caption>
</table>
</section>
<!-- ═══════════════════════════ CAPÍTULO 7 ═══════════════════════════ -->
<section class="capitulo" id="cap7">
<div class="capitulo-abertura">
<div class="capitulo-numero">7</div>
<div>
<h2>Da simulação para a bancada</h2>
<p class="subtitulo">O que o Wokwi perdoa e o hardware de verdade não.</p>
</div>
</div>
<p>
O simulador é ideal para aprender e testar a lógica, mas ele modela os componentes como
peças perfeitas. Na bancada, três detalhes fazem diferença.
</p>
<h3>1. Os pull-ups escondidos na plaquinha I2C</h3>
<p>
Quase toda plaquinha PCF8574 vendida no Brasil já traz <strong>resistores de pull-up
ligados ao VCC dela</strong>. Com o display alimentado em 5 V, esses resistores puxam SDA e
SCL para 5 V. Somar os nossos 4,7 kΩ para 3V3 não resolve: os dois resistores formam um
divisor, e a linha fica em torno de 4 V, ainda acima do que o ESP32-S3 suporta.
</p>
<p>Há duas saídas corretas:</p>
<table>
<thead><tr><th style="width:32%">Solução</th><th>Como fazer</th></tr></thead>
<tbody>
<tr>
<td class="destaque">Conversor de nível (recomendado)</td>
<td>Um módulo bidirecional com BSS138, de quatro canais. O lado <strong>LV</strong> vai no 3V3 e nos GPIO8/9; o lado <strong>HV</strong> vai no 5V e no SDA/SCL do display. O módulo já tem pull-ups dos dois lados, então os 4,7 kΩ externos saem do circuito.</td>
</tr>
<tr>
<td class="destaque">Remover os pull-ups da plaquinha</td>
<td>Dessoldar os dois resistores ligados a SDA e SCL na plaquinha e manter os 4,7 kΩ para 3V3, exatamente como no Wokwi. O PCF8574 reconhece 3,3 V como nível alto mesmo alimentado em 5 V.</td>
</tr>
</tbody>
</table>
<div class="caixa dica">
<div class="caixa-titulo">Como saber se a sua plaquinha tem pull-ups</div>
<p>
Com tudo desligado, meça com o multímetro a resistência entre o pino <strong>SDA</strong>
e o <strong>VCC</strong> da plaquinha. Algo entre 2 kΩ e 10 kΩ indica um pull-up. Se não
houver continuidade, ela não tem, e os 4,7 kΩ para 3V3 bastam.
</p>
</div>
<div class="caixa atencao">
<div class="caixa-titulo">"Mas eu liguei direto e funcionou"</div>
<p>
É comum funcionar: o resistor limita a corrente e o ESP32 tem diodos de proteção que
desviam o excesso. Funcionar não é o mesmo que estar dentro da especificação. A Espressif
não garante os pinos acima de 3,6 V, e um circuito fora da especificação pode falhar
com o tempo ou em outra placa. Em projeto que vai ficar ligado, use o conversor.
</p>
</div>
<h3>2. Descubra o endereço do display</h3>
<p>
Se o display acende mas não mostra nada mesmo com o contraste ajustado, o endereço pode
ser <code>0x3F</code> em vez de <code>0x27</code>. Este programa varre o barramento e
imprime o endereço de cada dispositivo que responder. No Wokwi ele encontra o display em
<code>0x27</code>:
</p>
<pre class="miudo"><code><span class="c-com">// Scanner I2C: lista o endereço de cada dispositivo no barramento.</span>
<span class="c-com">// Use antes do programa principal se o LCD não mostrar nada.</span>
<span class="c-pre">#include</span> <span class="c-str">&lt;Wire.h&gt;</span>
<span class="c-key">void</span> <span class="c-fun">setup</span>() {
Serial.<span class="c-fun">begin</span>(<span class="c-num">115200</span>);
Wire.<span class="c-fun">begin</span>(<span class="c-num">8</span>, <span class="c-num">9</span>); <span class="c-com">// SDA, SCL</span>
<span class="c-fun">delay</span>(<span class="c-num">500</span>);
Serial.<span class="c-fun">println</span>(<span class="c-str">"Procurando dispositivos I2C..."</span>);
<span class="c-key">int</span> encontrados = <span class="c-num">0</span>;
<span class="c-key">for</span> (<span class="c-key">byte</span> endereco = <span class="c-num">1</span>; endereco &lt; <span class="c-num">127</span>; endereco++) {
Wire.<span class="c-fun">beginTransmission</span>(endereco);
<span class="c-key">if</span> (Wire.<span class="c-fun">endTransmission</span>() == <span class="c-num">0</span>) {
Serial.<span class="c-fun">printf</span>(<span class="c-str">"Dispositivo em 0x%02X\n"</span>, endereco);
encontrados++;
}
}
<span class="c-key">if</span> (encontrados == <span class="c-num">0</span>) Serial.<span class="c-fun">println</span>(<span class="c-str">"Nenhum dispositivo. Confira SDA, SCL e alimentacao."</span>);
}
<span class="c-key">void</span> <span class="c-fun">loop</span>() {}</code></pre>
<pre><code>Procurando dispositivos I2C...
Dispositivo em 0x27</code></pre>
<h3>3. Gravando na placa</h3>
<p>
Na IDE do Arduino, instale o suporte ao ESP32 e as bibliotecas <strong>DHT sensor
library</strong> (aceitando a dependência <strong>Adafruit Unified Sensor</strong>) e
<strong>LiquidCrystal I2C</strong>, de Frank de Brabander. Selecione a placa
<strong>ESP32S3 Dev Module</strong> e lembre do detalhe do módulo 1: na porta marcada
<strong>USB</strong>, a opção <em>USB CDC On Boot</em> precisa estar em
<strong>Enabled</strong> para o monitor serial funcionar; na porta <strong>UART</strong>,
em <strong>Disabled</strong>.
</p>
</section>
<!-- ═══════════════════════════ CAPÍTULO 8 ═══════════════════════════ -->
<section class="capitulo" id="cap8">
<div class="capitulo-abertura">
<div class="capitulo-numero">8</div>
<div>
<h2>Problemas comuns e desafios</h2>
<p class="subtitulo">O que fazer quando não funciona, e para onde ir quando funcionar.</p>
</div>
</div>
<table>
<thead><tr><th style="width:34%">Sintoma</th><th>Causa provável</th></tr></thead>
<tbody>
<tr><td class="destaque">"Falha no sensor" o tempo todo</td><td>Fio de dados fora do GPIO12, falta do pull-up de 10 kΩ ou VCC e GND invertidos.</td></tr>
<tr><td class="destaque">Display aceso e sem texto</td><td>Contraste desajustado, endereço errado ou SDA e SCL trocados.</td></tr>
<tr><td class="destaque">Retângulos cheios na linha de cima</td><td>O display recebeu energia mas não foi inicializado: o I2C não está chegando.</td></tr>
<tr><td class="destaque">Display apagado</td><td>Falta o 5V no VCC do display ou o <code>lcd.backlight()</code>.</td></tr>
<tr><td class="destaque">Caracteres estranhos no fim da linha</td><td>Sobras da leitura anterior; veja a caixa "Restos de texto na tela".</td></tr>
<tr><td class="destaque">Erro de compilação com <code>DHT.h</code></td><td>Biblioteca não instalada, ou instalada sem a Adafruit Unified Sensor.</td></tr>
</tbody>
</table>
<h3>Desafios</h3>
<div class="passo">
<div class="passo-num">1</div>
<div><h3>Mínima e máxima</h3><p>Guarde a menor e a maior temperatura desde que a placa ligou e alterne a segunda linha entre a umidade e esses dois valores.</p></div>
</div>
<div class="passo">
<div class="passo-num">2</div>
<div><h3>Alerta de calor</h3><p>Ligue um LED, ou use o LED RGB que já existe no GPIO38 da placa, quando a temperatura passar de 30 °C. Faça a luz de fundo do display piscar junto.</p></div>
</div>
<div class="passo">
<div class="passo-num">3</div>
<div><h3>Sensação térmica</h3><p>A biblioteca DHT tem a função <code>computeHeatIndex()</code>. Mostre o índice de calor no lugar da umidade quando o ar estiver quente e úmido.</p></div>
</div>
<div class="passo">
<div class="passo-num">4</div>
<div><h3>Sem <code>delay()</code></h3><p>Reescreva o <code>loop()</code> usando <code>millis()</code>, para que o programa possa fazer outras coisas, como ler um botão, entre uma leitura e outra.</p></div>
</div>
<div class="caixa dica">
<div class="caixa-titulo">Próximo módulo</div>
<p>
A estação já mede e mostra. O passo natural é publicar esses dados: o ESP32-S3 tem
Wi-Fi, e com poucas linhas a mais a mesma leitura pode ir para uma página web ou para
um servidor MQTT.
</p>
</div>
<div class="caixa dica">
<div class="caixa-titulo">Dúvidas, correções e contato</div>
<p>
Correções e sugestões são bem-vindas e ajudam as próximas turmas. Fale direto com o
autor por <a href="mailto:contato@lucasrguerra.dev.br">contato@lucasrguerra.dev.br</a>
ou pelo LinkedIn, em
<a href="https://linkedin.com/in/lucasrguerra">linkedin.com/in/lucasrguerra</a>.
</p>
</div>
<p style="margin-top:12mm;padding-top:4mm;border-top:0.8pt solid var(--linha);font-size:8.5pt;color:var(--tinta-3);text-align:center">
LASER · Liga Acadêmica de Sistemas Embarcados · Centro de Informática · UFPE<br>
Formação em ESP32 · Módulo 2: Estação de Temperatura e Umidade
</p>
</section>
<script>
window.PagedConfig = {
before: () => document.querySelector(".aviso-carregando")?.remove(),
};
</script>
<script src="../assets/paged.polyfill.js"></script>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

+51
View File
@@ -0,0 +1,51 @@
{
"modulo": 2,
"titulo": ["Estação de", "temperatura e umidade"],
"subtitulo": "Um DHT22, um display LCD 16x2 e um ESP32-S3, simulados no Wokwi com o framework Arduino. Dois protocolos de comunicação, um programa curto e os cuidados elétricos que fazem o circuito funcionar também fora da tela.",
"descricao": "Slides, apostila, código e projeto do Wokwi do módulo 2 da formação em ESP32 da LASER: DHT22, LCD 16x2 I2C e ESP32-S3.",
"fichas": [["Duração", "2 horas"], ["Formato", "presencial"], ["Simulador", "Wokwi"], ["Framework", "Arduino"]],
"pratica": {
"titulo": "Projeto no Wokwi",
"texto": "O circuito e o código desta formação, testados no simulador: leitura normal, temperatura negativa e sensor desconectado.",
"imagem": "circuito-wokwi.png",
"meta": "4 arquivos · simule sem instalar nada",
"acoes": [["Baixar o projeto", "modulo-2-wokwi.zip", true], ["Abrir o Wokwi", "https://wokwi.com/projects/new/esp32-s3", false]]
},
"grupos": [
{ "titulo": "Material de aula", "arquivos": [
{ "arquivo": "slide.html", "tipo": "slides", "descricao": "Os slides da formação. Abrem no navegador, em tela cheia, prontos para projetar.", "abrir": true },
{ "arquivo": "apostila.html", "tipo": "apostila", "descricao": "A apostila completa, paginada em A4 no próprio navegador, com o passo a passo e o código comentado.", "abrir": true }
]},
{ "titulo": "Para baixar e imprimir", "arquivos": [
{ "arquivo": "LASER-ESP32-Modulo-2-Slides.pdf", "tipo": "pdf", "descricao": "Os slides em PDF 16:9, um slide por página.", "abrir": true, "baixar": true },
{ "arquivo": "LASER-ESP32-Modulo-2-Apostila.pdf", "tipo": "pdf", "descricao": "A apostila em PDF A4, pronta para imprimir.", "abrir": true, "baixar": true }
]},
{ "titulo": "Projeto do Wokwi", "arquivos": [
{ "arquivo": "modulo-2-wokwi.zip", "tipo": "zip", "descricao": "Os quatro arquivos abaixo num só pacote.", "baixar": true },
{ "arquivo": "wokwi/sketch.ino", "tipo": "codigo", "descricao": "O programa da estação: lê o DHT22 e escreve no LCD a cada 2 segundos.", "abrir": true, "baixar": true },
{ "arquivo": "wokwi/diagram.json", "tipo": "codigo", "descricao": "O circuito: peças, posições, fios e os três resistores de pull-up.", "abrir": true, "baixar": true },
{ "arquivo": "wokwi/libraries.txt", "tipo": "codigo", "descricao": "As bibliotecas que o Wokwi instala antes de compilar.", "abrir": true, "baixar": true },
{ "arquivo": "wokwi/scanner-i2c.ino", "tipo": "codigo", "descricao": "Diagnóstico: lista o endereço de cada dispositivo no barramento I2C.", "abrir": true, "baixar": true }
]},
{ "titulo": "Imagens da simulação", "arquivos": [
{ "arquivo": "circuito-wokwi.png", "tipo": "imagem", "descricao": "O circuito completo rodando no Wokwi.", "abrir": true },
{ "arquivo": "lcd-funcionando.png", "tipo": "imagem", "descricao": "Teste 1: leitura normal, 26,5 °C e 62 %.", "abrir": true },
{ "arquivo": "lcd-frio.png", "tipo": "imagem", "descricao": "Teste 2: temperatura negativa, −5,2 °C e 88,4 %.", "abrir": true },
{ "arquivo": "lcd-falha.png", "tipo": "imagem", "descricao": "Teste 3: fio de dados desconectado, erro detectado.", "abrir": true }
]}
],
"guias": [
{ "titulo": "Rodando no Wokwi", "itens": [
"Abra <a href=\"https://wokwi.com/projects/new/esp32-s3\">wokwi.com/projects/new/esp32-s3</a>. Não precisa de conta.",
"Cole o <code>sketch.ino</code> e o <code>diagram.json</code> nas abas de mesmo nome.",
"Em <i>Library Manager</i>, adicione <b>DHT sensor library</b> e <b>LiquidCrystal I2C</b>.",
"Clique no botão verde. Com a simulação rodando, clique no DHT22 para mudar temperatura e umidade."
]},
{ "titulo": "Montando na bancada", "itens": [
"Pull-up de <b>10 kΩ</b> no DATA do DHT22 e de <b>4,7 kΩ</b> no SDA e no SCL, todos para o <b>3V3</b>.",
"A plaquinha I2C do LCD costuma trazer pull-ups para 5 V: use um <b>conversor de nível BSS138</b> ou retire esses resistores.",
"Tela vazia? Gire o trimpot de contraste e rode o <code>scanner-i2c.ino</code> para conferir o endereço.",
"Os detalhes estão no capítulo 7 da apostila."
]}
]
}
+572
View File
@@ -0,0 +1,572 @@
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>LASER · Formação em ESP32 · Módulo 2: Estação de temperatura e umidade</title>
<meta name="description" content="Slides, apostila, código e projeto do Wokwi do módulo 2 da formação em ESP32 da LASER: DHT22, LCD 16x2 I2C e ESP32-S3.">
<meta name="author" content="Lucas Rayan Guerra">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600;700;800&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;600&display=swap" rel="stylesheet">
<link rel="icon" type="image/svg+xml" href="/marca/espdocs-marca.svg">
<link rel="stylesheet" href="/formacoes/assets/viewer.css">
</head>
<body>
<!-- Gerado por scripts/formacoes-viewer.mjs a partir do formacao.json. Não edite à mão. -->
<header class="topo">
<div class="envoltorio">
<a href="/formacoes"><img src="/formacoes/assets/laser.svg" alt="LASER"></a>
<span class="topo-liga">Liga Acadêmica de Sistemas Embarcados<br>Centro de Informática · UFPE</span>
<nav><a href="#arquivos">Arquivos</a><a href="#como-usar">Como usar</a><a href="/formacoes">Formações</a></nav>
</div>
</header>
<main>
<section class="abertura">
<div class="envoltorio">
<div>
<div class="selo">Formação em ESP32 · Módulo 2</div>
<h1>Estação de<strong>temperatura e umidade</strong></h1>
<p class="abertura-sub">Um DHT22, um display LCD 16x2 e um ESP32-S3, simulados no Wokwi com o framework Arduino. Dois protocolos de comunicação, um programa curto e os cuidados elétricos que fazem o circuito funcionar também fora da tela.</p>
<ul class="fichas"><li>Duração: <b>2 horas</b></li><li>Formato: <b>presencial</b></li><li>Simulador: <b>Wokwi</b></li><li>Framework: <b>Arduino</b></li></ul>
<div class="acoes">
<a class="botao primario" href="/formacoes/2/slide.html"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 5v14l11-7z"/></svg>Apresentar os slides</a>
<a class="botao" href="/formacoes/2/apostila.html"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 6c-2-1.5-5-2-8-1.5v14c3-.5 6 0 8 1.5 2-1.5 5-2 8-1.5v-14c-3-.5-6 0-8 1.5zM12 6v14"/></svg>Ler a apostila</a>
<a class="botao" href="#baixar"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 4v12M6 10l6 6 6-6M5 20h14"/></svg>Baixar em PDF</a>
</div>
</div>
<div class="previas">
<a class="p-apostila" href="/formacoes/2/apostila.html" aria-label="Abrir a apostila"><img src="/formacoes/2/previa-apostila.jpg" alt="Capa da apostila do módulo 2" width="640" height="905"></a>
<a class="p-slides" href="/formacoes/2/slide.html" aria-label="Abrir os slides"><img src="/formacoes/2/previa-slides.jpg" alt="Capa dos slides do módulo 2" width="960" height="540"></a>
</div>
</div>
</section>
<hr class="feixe">
<section class="bloco" id="baixar">
<div class="envoltorio">
<p class="rotulo">Comece por aqui</p>
<h2>Três formas de usar este material</h2>
<p class="bloco-sub">Para apresentar, para estudar e para pôr a mão no circuito. Os PDFs são a versão final, para quem só quer o material pronto.</p>
<div class="portas">
<article class="porta">
<a class="porta-imagem" href="/formacoes/2/slide.html"><img src="/formacoes/2/previa-slides.jpg" alt="" loading="lazy"></a>
<div class="porta-corpo">
<h3>Slides</h3>
<p>31 slides para projetar direto do navegador, com navegação por teclado e panorama.</p>
<div class="porta-meta">PDF · 31 págs · 1,6 MB</div>
<div class="acoes">
<a class="botao pequeno primario" href="/formacoes/2/slide.html"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 5v14l11-7z"/></svg>Apresentar</a>
<a class="botao pequeno" href="/formacoes/2/LASER-ESP32-Modulo-2-Slides.pdf" download><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 4v12M6 10l6 6 6-6M5 20h14"/></svg>PDF</a>
</div>
</div>
</article>
<article class="porta">
<a class="porta-imagem" href="/formacoes/2/apostila.html"><img src="/formacoes/2/previa-apostila.jpg" alt="" loading="lazy"></a>
<div class="porta-corpo">
<h3>Apostila</h3>
<p>O conteúdo completo, com explicações, tabelas e o código comentado, paginado em A4.</p>
<div class="porta-meta">PDF · 20 págs · 761 KB</div>
<div class="acoes">
<a class="botao pequeno primario" href="/formacoes/2/apostila.html"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 6c-2-1.5-5-2-8-1.5v14c3-.5 6 0 8 1.5 2-1.5 5-2 8-1.5v-14c-3-.5-6 0-8 1.5zM12 6v14"/></svg>Ler</a>
<a class="botao pequeno" href="/formacoes/2/LASER-ESP32-Modulo-2-Apostila.pdf" download><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 4v12M6 10l6 6 6-6M5 20h14"/></svg>PDF</a>
</div>
</div>
</article>
<article class="porta">
<a class="porta-imagem clara" href="/formacoes/2/circuito-wokwi.png" target="_blank" rel="noopener"><img src="/formacoes/2/circuito-wokwi.png" alt="" loading="lazy"></a>
<div class="porta-corpo">
<h3>Projeto no Wokwi</h3>
<p>O circuito e o código desta formação, testados no simulador: leitura normal, temperatura negativa e sensor desconectado.</p>
<div class="porta-meta">4 arquivos · simule sem instalar nada</div>
<div class="acoes"><a class="botao pequeno primario" href="/formacoes/2/modulo-2-wokwi.zip" download><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 4v12M6 10l6 6 6-6M5 20h14"/></svg>Baixar o projeto</a><a class="botao pequeno" href="https://wokwi.com/projects/new/esp32-s3" rel="noopener"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>Abrir o Wokwi</a></div>
</div>
</article>
</div>
</div>
</section>
<section class="bloco" id="roteiro">
<div class="envoltorio">
<p class="rotulo">Roteiro da aula</p>
<h2>6 partes, 31 slides</h2>
<p class="bloco-sub">Cada parte abre os slides direto no ponto em que ela começa.</p>
<ol class="roteiro">
<li><a href="/formacoes/2/slide.html#4"><b>1</b><span>O DHT22<small>slide 4 · 5 slides</small></span></a></li>
<li><a href="/formacoes/2/slide.html#9"><b>2</b><span>LCD e I2C<small>slide 9 · 5 slides</small></span></a></li>
<li><a href="/formacoes/2/slide.html#14"><b>3</b><span>Wokwi<small>slide 14 · 3 slides</small></span></a></li>
<li><a href="/formacoes/2/slide.html#17"><b>4</b><span>Montagem<small>slide 17 · 2 slides</small></span></a></li>
<li><a href="/formacoes/2/slide.html#19"><b>5</b><span>O programa<small>slide 19 · 7 slides</small></span></a></li>
<li><a href="/formacoes/2/slide.html#26"><b>6</b><span>Para a bancada<small>slide 26 · 6 slides</small></span></a></li>
</ol>
</div>
</section>
<section class="bloco" id="arquivos">
<div class="envoltorio">
<p class="rotulo">Todos os arquivos</p>
<h2>O que tem nesta formação</h2>
<p class="bloco-sub">Tudo o que foi usado na aula, com o que é cada arquivo e para que serve.</p>
<div class="grupo-arquivos">
<h3>Material de aula</h3>
<ul class="arquivos">
<li class="arquivo">
<div class="icone "><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 5h18v12H3z"/><path d="M8 21h8M12 17v4"/></svg></div>
<div>
<div class="arquivo-nome">slide.html</div>
<div class="arquivo-desc">Os slides da formação. Abrem no navegador, em tela cheia, prontos para projetar.</div>
</div>
<div class="arquivo-tam">72 KB</div>
<div class="arquivo-acoes"><a href="/formacoes/2/slide.html">Abrir</a></div>
</li>
<li class="arquivo">
<div class="icone "><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 4.5A1.5 1.5 0 0 1 5.5 3H20v16H5.5A1.5 1.5 0 0 0 4 20.5z"/><path d="M4 20.5A1.5 1.5 0 0 0 5.5 22H20"/></svg></div>
<div>
<div class="arquivo-nome">apostila.html</div>
<div class="arquivo-desc">A apostila completa, paginada em A4 no próprio navegador, com o passo a passo e o código comentado.</div>
</div>
<div class="arquivo-tam">43 KB</div>
<div class="arquivo-acoes"><a href="/formacoes/2/apostila.html">Abrir</a></div>
</li>
</ul>
</div>
<div class="grupo-arquivos">
<h3>Para baixar e imprimir</h3>
<ul class="arquivos">
<li class="arquivo">
<div class="icone pdf"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 3H6v18h12V7z"/><path d="M14 3v4h4"/><path d="M9 13h6M9 17h4"/></svg></div>
<div>
<div class="arquivo-nome">LASER-ESP32-Modulo-2-Slides.pdf</div>
<div class="arquivo-desc">Os slides em PDF 16:9, um slide por página.</div>
</div>
<div class="arquivo-tam">31 págs · 1,6 MB</div>
<div class="arquivo-acoes"><a href="/formacoes/2/LASER-ESP32-Modulo-2-Slides.pdf" target="_blank" rel="noopener">Abrir</a><a href="/formacoes/2/LASER-ESP32-Modulo-2-Slides.pdf" download>Baixar</a></div>
</li>
<li class="arquivo">
<div class="icone pdf"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 3H6v18h12V7z"/><path d="M14 3v4h4"/><path d="M9 13h6M9 17h4"/></svg></div>
<div>
<div class="arquivo-nome">LASER-ESP32-Modulo-2-Apostila.pdf</div>
<div class="arquivo-desc">A apostila em PDF A4, pronta para imprimir.</div>
</div>
<div class="arquivo-tam">20 págs · 761 KB</div>
<div class="arquivo-acoes"><a href="/formacoes/2/LASER-ESP32-Modulo-2-Apostila.pdf" target="_blank" rel="noopener">Abrir</a><a href="/formacoes/2/LASER-ESP32-Modulo-2-Apostila.pdf" download>Baixar</a></div>
</li>
</ul>
</div>
<div class="grupo-arquivos">
<h3>Projeto do Wokwi</h3>
<ul class="arquivos">
<li class="arquivo">
<div class="icone codigo"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 3H6v18h12V7z"/><path d="M14 3v4h4"/><path d="M11 6h1M11 9h1M11 12h1M10.5 15h2v3h-2z"/></svg></div>
<div>
<div class="arquivo-nome">modulo-2-wokwi.zip</div>
<div class="arquivo-desc">Os quatro arquivos abaixo num só pacote.</div>
</div>
<div class="arquivo-tam">2 KB</div>
<div class="arquivo-acoes"><a href="/formacoes/2/modulo-2-wokwi.zip" download>Baixar</a></div>
</li>
<li class="arquivo">
<div class="icone codigo"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m8 8-4 4 4 4M16 8l4 4-4 4M13.5 5l-3 14"/></svg></div>
<div>
<div class="arquivo-nome">sketch.ino</div>
<div class="arquivo-desc">O programa da estação: lê o DHT22 e escreve no LCD a cada 2 segundos.</div>
<details class="codigo-fonte"><summary>Ver código</summary><pre><code>// Formação em ESP32 · LASER · Módulo 2
// Estação de temperatura e umidade: DHT22 + LCD 16x2 I2C + ESP32-S3
#include &lt;Wire.h&gt;
#include &lt;DHT.h&gt;
#include &lt;LiquidCrystal_I2C.h&gt;
#define PINO_DHT 12 // fio amarelo
#define TIPO_DHT DHT22
#define PINO_SDA 8 // I2C padrão do ESP32-S3
#define PINO_SCL 9
DHT dht(PINO_DHT, TIPO_DHT);
LiquidCrystal_I2C lcd(0x27, 16, 2); // endereço, colunas, linhas
// Símbolo de grau: 8 linhas de 5 pixels
byte grau[8] = { 0b01100, 0b10010, 0b10010, 0b01100, 0, 0, 0, 0 };
void setup() {
Serial.begin(115200);
Wire.begin(PINO_SDA, PINO_SCL);
dht.begin();
lcd.init();
lcd.backlight();
lcd.createChar(0, grau);
lcd.setCursor(0, 0);
lcd.print(&quot;LASER ESP32-S3&quot;);
lcd.setCursor(0, 1);
lcd.print(&quot;Iniciando...&quot;);
delay(2000); // o DHT22 precisa de ~2 s para a primeira leitura
lcd.clear();
}
void loop() {
float umidade = dht.readHumidity();
float temperatura = dht.readTemperature();
if (isnan(umidade) || isnan(temperatura)) {
lcd.setCursor(0, 0);
lcd.print(&quot;Falha no sensor &quot;);
Serial.println(&quot;Falha na leitura do DHT22&quot;);
} else {
lcd.setCursor(0, 0);
lcd.print(&quot;Temp: &quot;);
lcd.print(temperatura, 1);
lcd.write(0); // o caractere de grau criado acima
lcd.print(&quot;C &quot;);
lcd.setCursor(0, 1);
lcd.print(&quot;Umid: &quot;);
lcd.print(umidade, 1);
lcd.print(&quot; % &quot;);
Serial.printf(&quot;Temperatura: %.1f C | Umidade: %.1f %%\n&quot;, temperatura, umidade);
}
delay(2000); // o DHT22 aceita no máximo uma leitura a cada 2 s
}</code></pre></details>
</div>
<div class="arquivo-tam">2 KB</div>
<div class="arquivo-acoes"><a href="/formacoes/2/wokwi/sketch.ino" download>Baixar</a></div>
</li>
<li class="arquivo">
<div class="icone codigo"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m8 8-4 4 4 4M16 8l4 4-4 4M13.5 5l-3 14"/></svg></div>
<div>
<div class="arquivo-nome">diagram.json</div>
<div class="arquivo-desc">O circuito: peças, posições, fios e os três resistores de pull-up.</div>
<details class="codigo-fonte"><summary>Ver código</summary><pre><code>{
&quot;version&quot;: 1,
&quot;author&quot;: &quot;Lucas Rayan Guerra&quot;,
&quot;editor&quot;: &quot;wokwi&quot;,
&quot;parts&quot;: [
{
&quot;type&quot;: &quot;board-esp32-s3-devkitc-1&quot;,
&quot;id&quot;: &quot;esp&quot;,
&quot;top&quot;: 0,
&quot;left&quot;: 0,
&quot;attrs&quot;: {}
},
{
&quot;type&quot;: &quot;wokwi-dht22&quot;,
&quot;id&quot;: &quot;dht&quot;,
&quot;top&quot;: 15,
&quot;left&quot;: -250,
&quot;attrs&quot;: {
&quot;temperature&quot;: &quot;26.5&quot;,
&quot;humidity&quot;: &quot;62&quot;
}
},
{
&quot;type&quot;: &quot;wokwi-lcd1602&quot;,
&quot;id&quot;: &quot;lcd&quot;,
&quot;top&quot;: 320,
&quot;left&quot;: -60,
&quot;attrs&quot;: {
&quot;pins&quot;: &quot;i2c&quot;
}
},
{
&quot;type&quot;: &quot;wokwi-resistor&quot;,
&quot;id&quot;: &quot;r_dht&quot;,
&quot;top&quot;: 9,
&quot;left&quot;: -173,
&quot;rotate&quot;: 90,
&quot;attrs&quot;: {
&quot;value&quot;: &quot;10000&quot;
}
},
{
&quot;type&quot;: &quot;wokwi-resistor&quot;,
&quot;id&quot;: &quot;r_sda&quot;,
&quot;top&quot;: 9,
&quot;left&quot;: -83,
&quot;rotate&quot;: 90,
&quot;attrs&quot;: {
&quot;value&quot;: &quot;4700&quot;
}
},
{
&quot;type&quot;: &quot;wokwi-resistor&quot;,
&quot;id&quot;: &quot;r_scl&quot;,
&quot;top&quot;: 9,
&quot;left&quot;: -63,
&quot;rotate&quot;: 90,
&quot;attrs&quot;: {
&quot;value&quot;: &quot;4700&quot;
}
}
],
&quot;connections&quot;: [
[
&quot;esp:TX&quot;,
&quot;$serialMonitor:RX&quot;,
&quot;&quot;,
[]
],
[
&quot;esp:RX&quot;,
&quot;$serialMonitor:TX&quot;,
&quot;&quot;,
[]
],
[
&quot;lcd:VCC&quot;,
&quot;esp:5V&quot;,
&quot;red&quot;,
[
&quot;h-20&quot;,
&quot;v-100&quot;
]
],
[
&quot;lcd:GND&quot;,
&quot;esp:GND.1&quot;,
&quot;black&quot;,
[
&quot;h-30&quot;,
&quot;v-90&quot;
]
],
[
&quot;lcd:SDA&quot;,
&quot;esp:8&quot;,
&quot;blue&quot;,
[
&quot;h-40&quot;,
&quot;v-200&quot;
]
],
[
&quot;lcd:SCL&quot;,
&quot;esp:9&quot;,
&quot;purple&quot;,
[
&quot;h-50&quot;,
&quot;v-170&quot;
]
],
[
&quot;dht:VCC&quot;,
&quot;r_dht:1&quot;,
&quot;red&quot;,
[
&quot;v12&quot;,
&quot;h-25&quot;,
&quot;v-159&quot;,
&quot;h100&quot;
]
],
[
&quot;dht:SDA&quot;,
&quot;esp:12&quot;,
&quot;gold&quot;,
[
&quot;v77&quot;
]
],
[
&quot;dht:GND&quot;,
&quot;esp:GND.1&quot;,
&quot;black&quot;,
[
&quot;v118&quot;
]
],
[
&quot;r_dht:1&quot;,
&quot;esp:3V3.1&quot;,
&quot;red&quot;,
[]
],
[
&quot;r_dht:2&quot;,
&quot;esp:12&quot;,
&quot;gold&quot;,
[
&quot;v181&quot;
]
],
[
&quot;r_sda:1&quot;,
&quot;esp:3V3.1&quot;,
&quot;red&quot;,
[]
],
[
&quot;r_sda:2&quot;,
&quot;esp:8&quot;,
&quot;blue&quot;,
[
&quot;v124&quot;
]
],
[
&quot;r_scl:1&quot;,
&quot;esp:3V3.1&quot;,
&quot;red&quot;,
[]
],
[
&quot;r_scl:2&quot;,
&quot;esp:9&quot;,
&quot;purple&quot;,
[
&quot;v152&quot;
]
]
],
&quot;dependencies&quot;: {}
}</code></pre></details>
</div>
<div class="arquivo-tam">2 KB</div>
<div class="arquivo-acoes"><a href="/formacoes/2/wokwi/diagram.json" download>Baixar</a></div>
</li>
<li class="arquivo">
<div class="icone codigo"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m8 8-4 4 4 4M16 8l4 4-4 4M13.5 5l-3 14"/></svg></div>
<div>
<div class="arquivo-nome">libraries.txt</div>
<div class="arquivo-desc">As bibliotecas que o Wokwi instala antes de compilar.</div>
<details class="codigo-fonte"><summary>Ver código</summary><pre><code>DHT sensor library
Adafruit Unified Sensor
LiquidCrystal I2C</code></pre></details>
</div>
<div class="arquivo-tam">61 B</div>
<div class="arquivo-acoes"><a href="/formacoes/2/wokwi/libraries.txt" download>Baixar</a></div>
</li>
<li class="arquivo">
<div class="icone codigo"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m8 8-4 4 4 4M16 8l4 4-4 4M13.5 5l-3 14"/></svg></div>
<div>
<div class="arquivo-nome">scanner-i2c.ino</div>
<div class="arquivo-desc">Diagnóstico: lista o endereço de cada dispositivo no barramento I2C.</div>
<details class="codigo-fonte"><summary>Ver código</summary><pre><code>// Scanner I2C: lista o endereço de cada dispositivo no barramento.
// Use antes do programa principal se o LCD não mostrar nada.
#include &lt;Wire.h&gt;
void setup() {
Serial.begin(115200);
Wire.begin(8, 9); // SDA, SCL
delay(500);
Serial.println(&quot;Procurando dispositivos I2C...&quot;);
int encontrados = 0;
for (byte endereco = 1; endereco &lt; 127; endereco++) {
Wire.beginTransmission(endereco);
if (Wire.endTransmission() == 0) {
Serial.printf(&quot;Dispositivo em 0x%02X\n&quot;, endereco);
encontrados++;
}
}
if (encontrados == 0) Serial.println(&quot;Nenhum dispositivo. Confira SDA, SCL e alimentacao.&quot;);
}
void loop() {}</code></pre></details>
</div>
<div class="arquivo-tam">664 B</div>
<div class="arquivo-acoes"><a href="/formacoes/2/wokwi/scanner-i2c.ino" download>Baixar</a></div>
</li>
</ul>
</div>
<div class="grupo-arquivos">
<h3>Imagens da simulação</h3>
<ul class="arquivos">
<li class="arquivo">
<div class="icone imagem"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="4" width="18" height="16" rx="2"/><circle cx="9" cy="10" r="2"/><path d="m21 17-5-5-9 8"/></svg></div>
<div>
<div class="arquivo-nome">circuito-wokwi.png</div>
<div class="arquivo-desc">O circuito completo rodando no Wokwi.</div>
</div>
<div class="arquivo-tam">44 KB</div>
<div class="arquivo-acoes"><a href="/formacoes/2/circuito-wokwi.png" target="_blank" rel="noopener">Abrir</a></div>
</li>
<li class="arquivo">
<div class="icone imagem"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="4" width="18" height="16" rx="2"/><circle cx="9" cy="10" r="2"/><path d="m21 17-5-5-9 8"/></svg></div>
<div>
<div class="arquivo-nome">lcd-funcionando.png</div>
<div class="arquivo-desc">Teste 1: leitura normal, 26,5 °C e 62 %.</div>
</div>
<div class="arquivo-tam">8 KB</div>
<div class="arquivo-acoes"><a href="/formacoes/2/lcd-funcionando.png" target="_blank" rel="noopener">Abrir</a></div>
</li>
<li class="arquivo">
<div class="icone imagem"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="4" width="18" height="16" rx="2"/><circle cx="9" cy="10" r="2"/><path d="m21 17-5-5-9 8"/></svg></div>
<div>
<div class="arquivo-nome">lcd-frio.png</div>
<div class="arquivo-desc">Teste 2: temperatura negativa, −5,2 °C e 88,4 %.</div>
</div>
<div class="arquivo-tam">8 KB</div>
<div class="arquivo-acoes"><a href="/formacoes/2/lcd-frio.png" target="_blank" rel="noopener">Abrir</a></div>
</li>
<li class="arquivo">
<div class="icone imagem"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="4" width="18" height="16" rx="2"/><circle cx="9" cy="10" r="2"/><path d="m21 17-5-5-9 8"/></svg></div>
<div>
<div class="arquivo-nome">lcd-falha.png</div>
<div class="arquivo-desc">Teste 3: fio de dados desconectado, erro detectado.</div>
</div>
<div class="arquivo-tam">7 KB</div>
<div class="arquivo-acoes"><a href="/formacoes/2/lcd-falha.png" target="_blank" rel="noopener">Abrir</a></div>
</li>
</ul>
</div>
</div>
</section>
<section class="bloco" id="como-usar">
<div class="envoltorio">
<p class="rotulo">Como usar</p>
<h2>Passo a passo</h2>
<div class="guias">
<div class="guia">
<h3>Apresentando os slides</h3>
<p>Abra <a href="/formacoes/2/slide.html">slide.html</a> no navegador. O palco é 16:9 e se ajusta a qualquer tela ou projetor.</p>
<dl class="atalhos">
<dt><kbd>→</kbd><kbd>←</kbd></dt><dd>avançar e voltar (ou clique nas metades da tela)</dd>
<dt><kbd>F</kbd></dt><dd>tela cheia</dd>
<dt><kbd>O</kbd></dt><dd>panorama com todos os slides</dd>
<dt><kbd>B</kbd></dt><dd>tela preta, para pausar a projeção</dd>
</dl>
</div>
<div class="guia">
<h3>Lendo e imprimindo a apostila</h3>
<p>A <a href="/formacoes/2/apostila.html">versão online</a> se pagina em A4 sozinha ao abrir, o que leva alguns segundos.</p>
<p>Para papel, prefira o <a href="/formacoes/2/LASER-ESP32-Modulo-2-Apostila.pdf" download>PDF pronto</a>: ele já sai com margens, cores e quebras de página certas, sem configurar a impressora.</p>
</div>
<div class="guia">
<h3>Rodando no Wokwi</h3>
<ol><li>Abra <a href="https://wokwi.com/projects/new/esp32-s3">wokwi.com/projects/new/esp32-s3</a>. Não precisa de conta.</li><li>Cole o <code>sketch.ino</code> e o <code>diagram.json</code> nas abas de mesmo nome.</li><li>Em <i>Library Manager</i>, adicione <b>DHT sensor library</b> e <b>LiquidCrystal I2C</b>.</li><li>Clique no botão verde. Com a simulação rodando, clique no DHT22 para mudar temperatura e umidade.</li></ol>
</div>
<div class="guia">
<h3>Montando na bancada</h3>
<ol><li>Pull-up de <b>10 kΩ</b> no DATA do DHT22 e de <b>4,7 kΩ</b> no SDA e no SCL, todos para o <b>3V3</b>.</li><li>A plaquinha I2C do LCD costuma trazer pull-ups para 5 V: use um <b>conversor de nível BSS138</b> ou retire esses resistores.</li><li>Tela vazia? Gire o trimpot de contraste e rode o <code>scanner-i2c.ino</code> para conferir o endereço.</li><li>Os detalhes estão no capítulo 7 da apostila.</li></ol>
</div>
</div>
</div>
</section>
</main>
<footer class="rodape">
<div class="envoltorio">
<span><strong>LASER</strong> · Liga Acadêmica de Sistemas Embarcados · CIn · UFPE</span>
<span>Material de <strong>Lucas Rayan Guerra</strong> · uso livre para fins educacionais · <a href="mailto:contato@lucasrguerra.dev.br">contato@lucasrguerra.dev.br</a></span>
</div>
</footer>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Loaded 100 of 118 files, more files were not shown because too many files have changed in this diff. Show more