13 Commits
Author SHA1 Message Date
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
115 changed files with 18940 additions and 11566 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
# 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).
on:
push:
@@ -52,6 +54,8 @@ jobs:
# O único runner é arm64 e o servidor de destino (Oracle) também, então a
# imagem é construída nativamente, sem emulação.
runs-on: ubuntu-24.04-arm
outputs:
mudou: ${{ steps.depois.outputs.mudou }}
steps:
- uses: actions/checkout@v4
@@ -69,6 +73,13 @@ jobs:
username: ${{ gitea.actor }}
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
id: meta
uses: docker/metadata-action@v6
@@ -101,6 +112,15 @@ jobs:
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 }}"
- 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
# de publicar a imagem, com as notas da seção do CHANGELOG.md.
release:
@@ -127,3 +147,38 @@ jobs:
'{tag_name:$tag, name:$name, body:$body, prerelease:$pre}' > release.json
curl -fsS -X POST "$API/releases" -H "Authorization: token $TOKEN" \
-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
.superset/
# mockups do brainstorming
.superpowers/
+92 -1
View File
@@ -6,6 +6,95 @@ Tudo o que muda de relevante no ESPDocs está aqui. O formato segue o
## [Não lançado]
### 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
- A apostila de cada formação passou de `index.html` para `apostila.html`; o `index.html`
agora é a página de entrada.
### Corrigido
- 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
### Adicionado
@@ -226,7 +315,9 @@ 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
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.7.0...HEAD
[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.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
+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 . .
# 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
WORKDIR /app
+3 -2
View File
@@ -6,6 +6,7 @@ import Header from "@/components/Header";
import Footer from "@/components/Footer";
import PageHero from "@/components/PageHero";
import BoardCard from "@/components/BoardCard";
import { isLinkColumn } from "@/lib/boardLinks";
import { AlertTriangle, RefreshCw, Search, ShoppingCart, SlidersHorizontal } from "lucide-react";
const HEADER_MAP_EN = {
@@ -184,7 +185,7 @@ export default function PlacasPage() {
const generateFilterOptions = (data, headers) => {
const options = {};
const filterableColumns = headers.filter((h) => !excludedColumns.includes(h));
const filterableColumns = headers.filter((h) => !excludedColumns.includes(h) && !isLinkColumn(h));
filterableColumns.forEach((column) => {
const uniqueValues = new Set();
@@ -265,7 +266,7 @@ export default function PlacasPage() {
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 = (
<PageHero
+5
View File
@@ -2,6 +2,7 @@
import Header from "@/components/Header";
import Footer from "@/components/Footer";
import PlacasSugeridas from "@/components/PlacasSugeridas";
import PageHero from "@/components/PageHero";
import { useEffect, useState, useMemo, Fragment } from "react";
import { usePathname } from "next/navigation";
@@ -740,6 +741,10 @@ export default function Comparacao() {
</div>
</section>
<div className="shell mt-8">
<PlacasSugeridas chips={selectedSeries} />
</div>
<section className="shell section" aria-labelledby="docs-titulo">
<h2 id="docs-titulo" className="section-title">
{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",
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.",
caminho: "/pt/livro",
caminho: "/livro",
keywords: [
"livro ESP32",
"Microcontroladores ESP32",
+5 -1
View File
@@ -4,6 +4,7 @@ import { useState, useMemo } from "react";
import { usePathname } from "next/navigation";
import Header from "@/components/Header";
import Footer from "@/components/Footer";
import PlacasSugeridas from "@/components/PlacasSugeridas";
import Link from "next/link";
import { getLocalizedHref } from "@/i18n/links";
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 总线)"));
}
} 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;
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")) {
@@ -2554,6 +2555,8 @@ export default function Seletor() {
</div>
</div>
<PlacasSugeridas chips={topThree.map((rec) => rec.key)} className="mt-10" />
{otherRecommendations.length > 0 && (
<div className="mt-10">
<h3 className="font-display text-xl font-semibold tracking-[-0.03em] text-ink">
@@ -2714,6 +2717,7 @@ export default function Seletor() {
</button>
</div>
)}
{filteredChips.length > 0 && <PlacasSugeridas chips={filteredChips.map(([chave]) => chave)} className="mt-6" />}
</section>
)}
+2
View File
@@ -13,6 +13,7 @@ import seriesDataDe from "@/data/de/series.json";
import seriesDataZh from "@/data/zh-CN/series.json";
import ConnectionsDiagram from "@/components/ConnectionsDiagram";
import SeriesTabMenu from "@/components/SeriesTabMenu";
import PlacasSugeridas from "@/components/PlacasSugeridas";
import PinRestrictions from "@/components/PinRestrictions";
import { getLocalizedHref } from "@/i18n/links";
import {
@@ -843,6 +844,7 @@ export default async function SerieDetail({ params }) {
<div className="shell mt-10">
<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} />
</div>
+1 -1
View File
@@ -16,7 +16,7 @@ export async function GET() {
const response = await sheets.spreadsheets.values.get({
spreadsheetId,
range: 'A1:Z1000',
range: 'A1:AZ1000',
key: process.env.GOOGLE_SHEETS_API_KEY,
});
+27
View File
@@ -644,6 +644,7 @@
font-weight: 500;
letter-spacing: 0;
text-transform: none;
white-space: nowrap;
color: var(--muted);
text-decoration: none;
transition: color 0.2s, background-color 0.2s;
@@ -752,6 +753,32 @@
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 {
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)}`;
}
// 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({
url,
lastModified: dataRevisao,
+18 -11
View File
@@ -2,6 +2,7 @@
import { ArrowUpRight, Award, Check, CircleHelp } from "lucide-react";
import { usePathname } from "next/navigation";
import { isLinkColumn, linkForLocale } from "@/lib/boardLinks";
const HEADER_MAP_EN = {
"Nome": "Name",
@@ -105,9 +106,13 @@ export default function BoardCard({ board }) {
const isDe = pathname === "/de" || pathname.startsWith("/de/");
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 recursos = technicalFields.filter((campo) => ["sim", "opcional"].includes(valor(campo)));
@@ -118,7 +123,7 @@ export default function BoardCard({ board }) {
{board.Imagem && (
<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"
dangerouslySetInnerHTML={{ __html: board.Imagem }}
dangerouslySetInnerHTML={{ __html: imagem }}
/>
)}
@@ -167,14 +172,16 @@ export default function BoardCard({ board }) {
</div>
)}
{board.Link && (
<a href={board.Link} target="_blank" rel="noopener noreferrer" className="btn btn-primary mt-6 w-full">
{isEn ? "View on AliExpress" : isEs ? "Ver en AliExpress" : isFr ? "Voir sur AliExpress" : isZh ? "在 AliExpress 查看" : isDe ? "Auf AliExpress ansehen" : "Ver no AliExpress"}
<ArrowUpRight className="h-4 w-4" aria-hidden="true" />
<span className="sr-only">
{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>
</a>
{link && (
<div className="mt-auto pt-6">
<a href={link} target="_blank" rel="noopener noreferrer" className="btn btn-primary w-full">
{isEn ? "View on AliExpress" : isEs ? "Ver en AliExpress" : isFr ? "Voir sur AliExpress" : isZh ? "在 AliExpress 查看" : isDe ? "Auf AliExpress ansehen" : "Ver no AliExpress"}
<ArrowUpRight className="h-4 w-4" aria-hidden="true" />
<span className="sr-only">
{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>
</a>
</div>
)}
</div>
</article>
+15 -9
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">
<Link
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={
isPt
? "ESPDocs, página inicial"
@@ -438,11 +438,6 @@ export default function Header() {
);
})}
{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>
@@ -455,7 +450,9 @@ export default function Header() {
</Link>
<SearchDialog />
<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
ref={menuButtonRef}
type="button"
@@ -523,13 +520,14 @@ export default function Header() {
ref={closeRef}
type="button"
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"}
>
<X className="h-5 w-5" aria-hidden="true" />
</button>
</div>
<div className="min-h-0 flex-1 overflow-y-auto overscroll-contain">
{isPt && (
<div className="px-4 pb-2">
<Link
@@ -557,7 +555,7 @@ export default function Header() {
)}
<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"}
>
{visibleMobileLinks.map((link) => (
@@ -574,6 +572,14 @@ export default function Header() {
))}
</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">
<Link href={getLinkHref("/seletor")} onClick={() => setDrawerOpen(false)} className="btn btn-primary w-full">
<SlidersHorizontal className="h-4 w-4" aria-hidden="true" />
+14 -14
View File
@@ -87,7 +87,7 @@ const GRUPOS_EN = [
cor: "text-accent",
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.",
combina: (avisos) => /apenas de entrada|input only/i.test(avisos),
combina: (avisos) => /input[- ]only/i.test(avisos),
},
{
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.",
combina: (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",
@@ -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.",
combina: (avisos, cats) =>
cats.includes("Strapping") ||
/strapping|modo de boot|modo de inicialização|boot mode/i.test(avisos),
/strapping|boot mode/i.test(avisos),
},
{
id: "debug",
@@ -118,7 +118,7 @@ const GRUPOS_EN = [
cor: "text-accent",
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.",
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",
@@ -136,7 +136,7 @@ const GRUPOS_EN = [
cor: "text-gold",
explicacao:
"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.",
combina: (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",
@@ -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.",
combina: (avisos, cats) =>
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",
@@ -240,7 +240,7 @@ const GRUPOS_FR = [
cor: "text-accent",
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é.",
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",
@@ -258,7 +258,7 @@ const GRUPOS_FR = [
cor: "text-gold",
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.",
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.",
combina: (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",
@@ -301,7 +301,7 @@ const GRUPOS_DE = [
cor: "text-accent",
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.",
combina: (avisos, cats) => /debugging|programmierung/i.test(avisos) || cats.includes("JTAG"),
combina: (avisos, cats) => /debugging|flashen/i.test(avisos) || cats.includes("JTAG"),
},
{
id: "usb",
@@ -319,7 +319,7 @@ const GRUPOS_DE = [
cor: "text-gold",
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.",
combina: (avisos) => /unbeschaltet|floating/i.test(avisos),
combina: (avisos) => /nicht unbeschaltet( \(floating\))? lassen/i.test(avisos),
},
];
const GRUPOS_ZH = [
@@ -341,7 +341,7 @@ const GRUPOS_ZH = [
"已连接到存放并执行固件的存储器。把它们当作通用 GPIO 使用,通常会使芯片崩溃或破坏程序执行。在带内置闪存的模组中,这些引脚不会引出到封装引脚上。",
combina: (avisos) =>
/(flash|psram)/i.test(avisos) &&
/(专用于|存储使用|不得用于|不建议|dedicated to)/i.test(avisos),
/(专用|存储使用|不得用于|不建议)/i.test(avisos),
},
{
id: "strapping",
@@ -379,7 +379,7 @@ const GRUPOS_ZH = [
cor: "text-gold",
explicacao:
"需要确定的硬件逻辑电平:外部上拉或 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 EXEMPLOS_EN = ["flash s3", "usb pins c6", "gpio0 esp32", "brownout", "LVGL", "FreeRTOS"];
const EXEMPLOS_ES = ["flash s3", "pines usb c6", "gpio0 esp32", "brownout", "LVGL", "FreeRTOS"];
const EXEMPLOS_FR = ["flash s3", "broches usb c6", "gpio0 esp32", "brownout", "LVGL", "FreeRTOS"];
const EXEMPLOS_DE = ["flash s3", "usb pins c6", "gpio0 esp32", "brownout", "LVGL", "FreeRTOS"];
const EXEMPLOS_ZH = ["s3 闪存", "c6 usb 引脚", "esp32 gpio0", "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", "pin 32 esp32-s3", "gpio0 esp32", "brownout", "LVGL"];
const EXEMPLOS_FR = ["flash s3", "broches usb c6", "broche 32 esp32-s3", "gpio0 esp32", "brownout", "LVGL"];
const EXEMPLOS_DE = ["flash s3", "usb pins c6", "pin 32 esp32-s3", "gpio0 esp32", "brownout", "LVGL"];
const EXEMPLOS_ZH = ["s3 闪存", "c6 usb 引脚", "esp32-s3 32号引脚", "esp32 gpio0", "brownout", "LVGL"];
function Destaque({ texto, termos }) {
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 (
<>
@@ -361,6 +361,9 @@ export default function SearchDialog() {
{interpretacao.chips.map((c) => (
<Pilula key={c.chave} forte>{c.nome}</Pilula>
))}
{interpretacao.pinos?.map((p) => (
<Pilula key={p}>{p}</Pilula>
))}
{interpretacao.topicos.map((t) => (
<Pilula key={t.id}>{t.nome}</Pilula>
))}
@@ -489,8 +492,8 @@ export default function SearchDialog() {
{item.linhas && (
<dl className="mt-2 grid gap-x-4 gap-y-1 text-xs sm:grid-cols-[auto_1fr]">
{item.linhas.map((l) => (
<div key={l.k} className="contents">
{item.linhas.map((l, i) => (
<div key={`${l.k}-${i}`} className="contents">
<dt className="font-semibold text-ink-soft">{l.k}</dt>
<dd className="text-ink">{l.v}</dd>
</div>
+3 -3
View File
@@ -7,7 +7,7 @@
"HF-Antennenanschluss (Wi-Fi und Bluetooth)"
],
"categorias": [
"Antenne",
"Antena",
"RF"
],
"avisos": [
@@ -301,7 +301,7 @@
"UART"
],
"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"
],
"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"
],
"categorias": [
"Antenne"
"Antena"
],
"avisos": [
"Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts"
@@ -25,8 +25,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -42,8 +42,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -97,7 +97,7 @@
"avisos": [
"Während des Resets 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": [
"Ein High-Pegel an diesem Pin aktiviert 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": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -292,8 +292,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -311,8 +311,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"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"
]
@@ -333,7 +333,7 @@
"Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -554,8 +554,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
+34 -34
View File
@@ -11,8 +11,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -40,8 +40,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -85,8 +85,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -103,7 +103,7 @@
"avisos": [
"Ein High-Pegel an diesem Pin aktiviert 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": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -450,8 +450,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"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"
]
@@ -567,7 +567,7 @@
"Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -734,8 +734,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -751,8 +751,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"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"
],
"categorias": [
"Antenne"
"Antena"
],
"avisos": [
"Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts"
@@ -794,8 +794,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -811,8 +811,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -828,8 +828,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"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"
],
"categorias": [
"Antenne"
"Antena"
],
"avisos": [
"Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts"
+22 -22
View File
@@ -7,7 +7,7 @@
"HF-Antennenanschluss"
],
"categorias": [
"Antenne"
"Antena"
],
"avisos": [
"Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts"
@@ -25,8 +25,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -42,8 +42,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -60,7 +60,7 @@
"avisos": [
"Ein High-Pegel an diesem Pin aktiviert 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": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"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"
]
@@ -457,7 +457,7 @@
"Während des Resets ist der interne Pull-up aktiviert",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -692,8 +692,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -737,8 +737,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"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)"
],
"categorias": [
"Antenne",
"Antena",
"RF"
],
"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": [
"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"
],
"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"
],
"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": [
"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": [
"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"
],
"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"
],
"avisos": [
"Multifunction pin: JTAG MTDO."
"Multifunktions-Pin: JTAG MTDO."
]
},
{
@@ -206,7 +206,7 @@
"SPI"
],
"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"
],
"avisos": [
"High-speed multifunction pin: SDIO Clock or SPI2 Clock."
"Hochgeschwindigkeits-Multifunktions-Pin: SDIO Clock oder SPI2 Clock."
]
},
{
@@ -242,7 +242,7 @@
"SPI"
],
"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"
],
"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"
],
"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"
],
"avisos": [
"High-speed pin: SDIO Data 3 or SPI2 Hold."
"Hochgeschwindigkeits-Pin: SDIO Data 3 oder SPI2 Hold."
]
},
{
@@ -312,7 +312,7 @@
"SPI"
],
"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"
],
"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"
],
"avisos": [
"Data Q (MISO) pin for SPI flash memory interface."
"Data-Q-Pin (MISO) der SPI-Flash-Speicherschnittstelle."
]
},
{
@@ -374,7 +374,7 @@
"SPI"
],
"avisos": [
"Write Protect pin for SPI flash memory interface."
"Write-Protect-Pin der SPI-Flash-Speicherschnittstelle."
]
},
{
@@ -389,7 +389,7 @@
],
"avisos": [
"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"
],
"avisos": [
"Hold control pin for SPI flash memory interface."
"Hold-Steuerpin der SPI-Flash-Speicherschnittstelle."
]
},
{
@@ -421,7 +421,7 @@
"SPI"
],
"avisos": [
"Clock signal pin for SPI flash memory interface."
"Taktsignal-Pin der SPI-Flash-Speicherschnittstelle."
]
},
{
@@ -437,7 +437,7 @@
"SPI"
],
"avisos": [
"Data D (MOSI) pin for SPI flash memory interface."
"Data-D-Pin (MOSI) der SPI-Flash-Speicherschnittstelle."
]
},
{
@@ -453,7 +453,7 @@
"USB"
],
"avisos": [
"Negative signal pin of integrated USB Serial/JTAG transceiver."
"Negativer Signal-Pin des integrierten USB-Serial/JTAG-Transceivers."
]
},
{
@@ -469,7 +469,7 @@
"USB"
],
"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."
]
},
@@ -497,8 +497,8 @@
"Strapping"
],
"avisos": [
"Strapping pin for boot mode selection and ROM log printing control.",
"Floating by default during reset. High level (1) enables boot log printing."
"Strapping-Pin für die Auswahl des Boot-Modus und die Steuerung der ROM-Log-Ausgabe.",
"Während des Resets standardmäßig unbeschaltet. Hoher Pegel (1) aktiviert die Ausgabe des Boot-Logs."
]
},
{
@@ -513,7 +513,7 @@
"Strapping"
],
"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."
]
},
@@ -573,7 +573,7 @@
"Strapping"
],
"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."
]
},
+20 -20
View File
@@ -11,8 +11,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -28,8 +28,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -161,8 +161,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -280,7 +280,7 @@
"avisos": [
"Ein High-Pegel an diesem Pin aktiviert 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": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -312,8 +312,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -329,8 +329,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -453,8 +453,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -498,8 +498,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -515,8 +515,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -528,7 +528,7 @@
"HF-Antennenanschluss"
],
"categorias": [
"Antenne"
"Antena"
],
"avisos": [
"Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts"
+61 -61
View File
@@ -164,8 +164,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
]
},
@@ -359,9 +359,9 @@
],
"avisos": [
"Empfohlene Spannung: 1.8V oder 3.3V",
"Minimum Recommended Voltage: 1.65V or 3.0V",
"Maximum Recommended Voltage: 1.95V or 3.6V",
"Voltage level must match the flash memory model used in the device (see pin 30)",
"Empfohlene Mindestspannung: 1.65V oder 3.0V",
"Empfohlene Höchstspannung: 1.95V oder 3.6V",
"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"
]
},
@@ -435,8 +435,8 @@
],
"avisos": [
"Empfohlene Spannung: 1.1V",
"Minimum Recommended Voltage: 0.99V",
"Maximum Recommended Voltage: 1.3V",
"Empfohlene Mindestspannung: 0.99V",
"Empfohlene Höchstspannung: 1.3V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
]
},
@@ -452,7 +452,7 @@
],
"avisos": [
"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": [
"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": [
"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": [
"Empfohlene Spannung: 1.8V oder 3.3V",
"Minimum Recommended Voltage: 1.65V or 3.0V",
"Maximum Recommended Voltage: 1.95V or 3.6V",
"Voltage level must match the flash memory model used in the device",
"Empfohlene Mindestspannung: 1.65V oder 3.0V",
"Empfohlene Höchstspannung: 1.95V oder 3.6V",
"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"
]
},
@@ -515,7 +515,7 @@
],
"avisos": [
"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": [
"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": [
"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": [
"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": [
"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": [
"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": [
"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": [
"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": [
"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": [
"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": [
"Empfohlene Spannung: 2.5V",
"Minimum Recommended Voltage: 2.25V",
"Maximum Recommended Voltage: 2.75V",
"Empfohlene Mindestspannung: 2.25V",
"Empfohlene Höchstspannung: 2.75V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
]
},
@@ -682,7 +682,7 @@
],
"avisos": [
"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": [
"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": [
"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": [
"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": [
"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": [
"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": [
"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"
],
"avisos": [
"Dedicated to the negative data line of the USB OTG interface",
"Must not be used for other functions"
"Dediziert für die negative Datenleitung der USB-OTG-Schnittstelle",
"Darf nicht für andere Funktionen verwendet werden"
]
},
{
@@ -801,8 +801,8 @@
"USB"
],
"avisos": [
"Dedicated to the positive data line of the USB OTG interface",
"Must not be used for other functions"
"Dediziert für die positive Datenleitung der USB-OTG-Schnittstelle",
"Darf nicht für andere Funktionen verwendet werden"
]
},
{
@@ -817,8 +817,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.97V",
"Maximum Recommended Voltage: 3.63V",
"Empfohlene Mindestspannung: 2.97V",
"Empfohlene Höchstspannung: 3.63V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
]
},
@@ -866,7 +866,7 @@
],
"categorias": [],
"avisos": [
"Must not be used"
"Darf nicht verwendet werden"
]
},
{
@@ -941,8 +941,8 @@
],
"avisos": [
"Empfohlene Spannung: 1.65V",
"Minimum Recommended Voltage: 1.8V",
"Maximum Recommended Voltage: 1.95V",
"Empfohlene Mindestspannung: 1.8V",
"Empfohlene Höchstspannung: 1.95V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
]
},
@@ -990,9 +990,9 @@
],
"avisos": [
"Empfohlene Spannung: 1.8V oder 3.3V",
"Minimum Recommended Voltage: 1.65V or 3.0V",
"Maximum Recommended Voltage: 1.95V or 3.6V",
"Voltage level must match the flash memory model used in the device (see pin 30)",
"Empfohlene Mindestspannung: 1.65V oder 3.0V",
"Empfohlene Höchstspannung: 1.95V oder 3.6V",
"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"
]
},
@@ -1084,8 +1084,8 @@
],
"avisos": [
"Empfohlene Spannung: 1.65V",
"Minimum Recommended Voltage: 1.8V",
"Maximum Recommended Voltage: 1.95V",
"Empfohlene Mindestspannung: 1.8V",
"Empfohlene Höchstspannung: 1.95V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
]
},
@@ -1237,8 +1237,8 @@
],
"avisos": [
"Empfohlene Spannung: 1.1V",
"Minimum Recommended Voltage: 0.99V",
"Maximum Recommended Voltage: 1.3V",
"Empfohlene Mindestspannung: 0.99V",
"Empfohlene Höchstspannung: 1.3V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
]
},
@@ -1377,9 +1377,9 @@
],
"avisos": [
"Empfohlene Spannung: 1.8V oder 3.3V",
"Minimum Recommended Voltage: 1.65V or 3.0V",
"Maximum Recommended Voltage: 1.95V or 3.6V",
"Voltage level must match the flash memory model used in the device (see pin 30)",
"Empfohlene Mindestspannung: 1.65V oder 3.0V",
"Empfohlene Höchstspannung: 1.95V oder 3.6V",
"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"
]
},
@@ -1475,8 +1475,8 @@
],
"avisos": [
"Empfohlene Spannung: 1.1V",
"Minimum Recommended Voltage: 0.99V",
"Maximum Recommended Voltage: 1.3V",
"Empfohlene Mindestspannung: 0.99V",
"Empfohlene Höchstspannung: 1.3V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
]
},
@@ -1558,9 +1558,9 @@
],
"avisos": [
"Empfohlene Spannung: 1.8V oder 3.3V",
"Minimum Recommended Voltage: 1.65V or 3.0V",
"Maximum Recommended Voltage: 1.95V or 3.6V",
"Voltage level must match the flash memory model used in the device (see pin 30)",
"Empfohlene Mindestspannung: 1.65V oder 3.0V",
"Empfohlene Höchstspannung: 1.95V oder 3.6V",
"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"
]
},
@@ -1638,8 +1638,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.0V",
"Minimum Recommended Voltage: 3.3V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.3V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
]
},
@@ -1655,8 +1655,8 @@
],
"avisos": [
"Empfohlene Spannung: 2.5V",
"Minimum Recommended Voltage: 3.3V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.3V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.6 des Datenblatts"
]
},
@@ -1673,7 +1673,7 @@
"avisos": [
"Ein High-Pegel an diesem Pin aktiviert 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": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.8V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 2.8V",
"Empfohlene Höchstspannung: 3.6V",
"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"
],
"categorias": [
"Antenne"
"Antena"
],
"avisos": []
},
@@ -40,8 +40,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.8V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 2.8V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.3 des Datenblatts"
]
},
@@ -57,8 +57,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.8V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 2.8V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.3 des Datenblatts"
]
},
@@ -384,8 +384,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.8V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 2.8V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -534,8 +534,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 1.8V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 1.8V",
"Empfohlene Höchstspannung: 3.6V",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.8V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 2.8V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.3 des Datenblatts"
]
},
@@ -969,8 +969,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.8V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 2.8V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.3 des Datenblatts"
]
},
@@ -1014,8 +1014,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.8V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 2.8V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.3 des Datenblatts"
]
},
@@ -1051,7 +1051,7 @@
"avisos": [
"Ein High-Pegel an diesem Pin aktiviert 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"
],
"categorias": [
"Antenne"
"Antena"
],
"avisos": [
"Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts"
@@ -25,8 +25,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -42,8 +42,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -60,7 +60,7 @@
"avisos": [
"Ein High-Pegel an diesem Pin aktiviert 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": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 1.8V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 1.8V",
"Empfohlene Höchstspannung: 3.6V",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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",
"Nach dem Reset ist dieser Pin als Eingang mit aktivem internen Pull-up konfiguriert",
"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": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -1063,8 +1063,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -1080,8 +1080,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"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)"
],
"categorias": [
"Antenne",
"Antena",
"RF"
],
"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": [
"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"
],
"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"
],
"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"
],
"avisos": [
"Analog input pin ADC1 Channel 1."
"Analoger Eingangs-Pin ADC1 Kanal 1."
]
},
{
@@ -120,7 +120,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC1 Channel 2."
"Analoger Eingangs-Pin ADC1 Kanal 2."
]
},
{
@@ -136,7 +136,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC1 Channel 3."
"Analoger Eingangs-Pin ADC1 Kanal 3."
]
},
{
@@ -152,7 +152,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC1 Channel 4."
"Analoger Eingangs-Pin ADC1 Kanal 4."
]
},
{
@@ -182,7 +182,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC1 Channel 5."
"Analoger Eingangs-Pin ADC1 Kanal 5."
]
},
{
@@ -198,7 +198,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC1 Channel 6."
"Analoger Eingangs-Pin ADC1 Kanal 6."
]
},
{
@@ -214,7 +214,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC1 Channel 7."
"Analoger Eingangs-Pin ADC1 Kanal 7."
]
},
{
@@ -230,7 +230,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC1 Channel 8."
"Analoger Eingangs-Pin ADC1 Kanal 8."
]
},
{
@@ -246,7 +246,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC1 Channel 9."
"Analoger Eingangs-Pin ADC1 Kanal 9."
]
},
{
@@ -262,7 +262,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC1 Channel 10."
"Analoger Eingangs-Pin ADC1 Kanal 10."
]
},
{
@@ -276,7 +276,7 @@
"Touch"
],
"avisos": [
"Dedicated analog pin for capacitive touch stabilization."
"Dedizierter Analog-Pin zur Stabilisierung der kapazitiven Berührungserkennung."
]
},
{
@@ -292,7 +292,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC2 Channel 0."
"Analoger Eingangs-Pin ADC2 Kanal 0."
]
},
{
@@ -308,7 +308,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC2 Channel 1."
"Analoger Eingangs-Pin ADC2 Kanal 1."
]
},
{
@@ -324,7 +324,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC2 Channel 2."
"Analoger Eingangs-Pin ADC2 Kanal 2."
]
},
{
@@ -340,7 +340,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC2 Channel 3."
"Analoger Eingangs-Pin ADC2 Kanal 3."
]
},
{
@@ -356,7 +356,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC2 Channel 4."
"Analoger Eingangs-Pin ADC2 Kanal 4."
]
},
{
@@ -372,7 +372,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC2 Channel 5."
"Analoger Eingangs-Pin ADC2 Kanal 5."
]
},
{
@@ -388,7 +388,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC2 Channel 6."
"Analoger Eingangs-Pin ADC2 Kanal 6."
]
},
{
@@ -404,7 +404,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC2 Channel 7."
"Analoger Eingangs-Pin ADC2 Kanal 7."
]
},
{
@@ -420,7 +420,7 @@
"SPI"
],
"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"
],
"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"
],
"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"
],
"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"
],
"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"
],
"avisos": [
"Dedicated Hold for external or internal SPI Flash."
"Dediziertes Hold für externen oder internen SPI-Flash."
]
},
{
@@ -692,7 +692,7 @@
"ADC"
],
"avisos": [
"Multifunction pin: GPIO33 and ADC2 Channel 8."
"Multifunktions-Pin: GPIO33 und ADC2 Kanal 8."
]
},
{
@@ -708,7 +708,7 @@
"ADC"
],
"avisos": [
"Multifunction pin: GPIO34 and ADC2 Channel 9."
"Multifunktions-Pin: GPIO34 und ADC2 Kanal 9."
]
},
{
@@ -927,7 +927,7 @@
"ADC"
],
"avisos": [
"Dedicated analog pin for precision ADC calibration."
"Dedizierter Analog-Pin zur präzisen ADC-Kalibrierung."
]
},
{
@@ -1090,7 +1090,7 @@
"Strapping"
],
"avisos": [
"Boot Strapping pin (paired with GPIO61).",
"Boot-Strapping-Pin (gepaart mit GPIO61).",
"Standardmäßig mit aktivem internen Pull-up ausgestattet."
]
},
@@ -1106,7 +1106,7 @@
"Strapping"
],
"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."
]
},
+30 -30
View File
@@ -11,10 +11,10 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V",
"Maximum Recommended Voltage: 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V",
"Empfohlene Mindestspannung: 2.3V oder 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Für Chips mit integriertem Flash oder PSRAM beträgt die empfohlene Mindestspannung 3.0V",
"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"
]
},
@@ -26,7 +26,7 @@
"Eingang des rauscharmen Verstärkers (LNA) für Wi-Fi- und Bluetooth-Empfänger"
],
"categorias": [
"Antenne"
"Antena"
],
"avisos": [
"Weitere Details zu analogen Pins finden Sie in Abschnitt 2.4 des Datenblatts"
@@ -44,10 +44,10 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V",
"Maximum Recommended Voltage: 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V",
"Empfohlene Mindestspannung: 2.3V oder 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Für Chips mit integriertem Flash oder PSRAM beträgt die empfohlene Mindestspannung 3.0V",
"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"
]
},
@@ -63,10 +63,10 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V",
"Maximum Recommended Voltage: 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V",
"Empfohlene Mindestspannung: 2.3V oder 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Für Chips mit integriertem Flash oder PSRAM beträgt die empfohlene Mindestspannung 3.0V",
"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"
]
},
@@ -155,7 +155,7 @@
"avisos": [
"Ein High-Pegel an diesem Pin aktiviert 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"
]
},
@@ -370,10 +370,10 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V",
"Maximum Recommended Voltage: 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V",
"Empfohlene Mindestspannung: 2.3V oder 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Für Chips mit integriertem Flash oder PSRAM beträgt die empfohlene Mindestspannung 3.0V",
"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"
]
},
@@ -569,8 +569,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 2.3V oder 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Dieser Pin ist mit dem Ausgang des internen LDO verbunden",
"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"
@@ -802,8 +802,8 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 1.8V",
"Maximum Recommended Voltage: 3.6V",
"Empfohlene Mindestspannung: 1.8V",
"Empfohlene Höchstspannung: 3.6V",
"Weitere Details zur Stromversorgung des Chips finden Sie in Abschnitt 2.5 des Datenblatts"
]
},
@@ -919,10 +919,10 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V",
"Maximum Recommended Voltage: 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V",
"Empfohlene Mindestspannung: 2.3V oder 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Für Chips mit integriertem Flash oder PSRAM beträgt die empfohlene Mindestspannung 3.0V",
"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"
]
},
@@ -966,10 +966,10 @@
],
"avisos": [
"Empfohlene Spannung: 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V",
"Maximum Recommended Voltage: 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V",
"Empfohlene Mindestspannung: 2.3V oder 3.0V",
"Empfohlene Höchstspannung: 3.6V",
"Für Chips mit integriertem Flash oder PSRAM beträgt die empfohlene Mindestspannung 3.0V",
"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"
]
},
+30 -30
View File
@@ -4,7 +4,7 @@
"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.",
"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",
"coprocessador_ulp": "Ja",
"seguranca": {
@@ -25,13 +25,13 @@
"bluetooth": "Bluetooth 4.2 BR/EDR (Clássico) und Bluetooth LE (dual mode)",
"ethernet": "Ja (Ethernet-MAC integriert)",
"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)",
"flash_externa": "Bis zu 16 MB über QSPI",
"psram_externa": "Bis zu 8 MB über QSPI (in spezifischen Modulen wie WROVER)",
"gpio": "34",
"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",
"uart": "3",
"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)",
"arduino_core": "Ja (147 definições de placa no core oficial)",
"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",
"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",
@@ -73,7 +73,7 @@
"frequencia": "Bis zu 240 MHz",
"coprocessador_ulp": "Ja (RISC-V)",
"seguranca": {
"aes": "AES-128/192/256 com GCM",
"aes": "AES-128/192/256 mit GCM",
"sha": "SHA-1/224/256/384/512",
"rsa": "Ja (RSA/MPI bis zu 4096 bits)",
"ecc": "Nein",
@@ -95,7 +95,7 @@
"psram_externa": "Bis zu 1 GB über QSPI/Octal SPI",
"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)",
"dac": "2x DAC de 8 bits",
"dac": "2x 8-Bit-DAC",
"touch": "14 kapazitive Kanäle",
"uart": "2",
"spi": "4 (SPI0/1 für Flash, SPI2/3 für allgemeine Zwecke)",
@@ -118,7 +118,7 @@
"esp_idf_minimo": "v4.2",
"arduino_core": "Ja (26 definições de placa no core oficial)",
"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",
"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",
@@ -192,13 +192,13 @@
"nome_completo": "ESP32-S31",
"icone": "🌀",
"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)",
"frequencia": "Bis zu 320 MHz",
"coprocessador_ulp": "Ja (RISC-V, LP CPU de 40 MHz)",
"aceleradores_ia": "Sim (Custom AI and DSP extension XespV)",
"seguranca": {
"aes": "AES-128/256 com GCM",
"aes": "AES-128/256 mit GCM",
"sha": "SHA-1/224/256/384/512",
"rsa": "Ja (RSA/MPI bis zu 4096 bits)",
"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)",
"gpio": "60",
"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",
"uart": "5 (4 UART + 1 LP UART)",
"spi": "7 (6 SPI + 1 LP SPI)",
"i2c": "3 (2 I2C + 1 LP I2C)",
"i2s": "2",
"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)",
"sensor_temperatura": "1 (interno)",
"consumo_energia": {
"active": "Konfigurierbarer, leistungsoptimierter Hochleistungsbetrieb",
"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_armazenamento": "-40°C a 150°C",
@@ -255,7 +255,7 @@
"nome_completo": "ESP32-C2 (ESP8684)",
"icone": "🌱",
"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)",
"frequencia": "Bis zu 120 MHz",
"seguranca": {
@@ -269,7 +269,7 @@
"key_manager": "Nein",
"rng": "Ja (TRNG Hardware-TRNG)",
"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"
},
"wifi": "IEEE 802.11 b/g/n (2.4 GHz, bis zu 72.2 Mbps)",
@@ -300,7 +300,7 @@
"esp_idf_minimo": "v5.0",
"arduino_core": "Ja (1 definições de placa no core oficial)",
"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",
"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",
@@ -311,7 +311,7 @@
"nome_completo": "ESP32-C3",
"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.",
"arquitetura": "RISC-V single-core de 32 bits",
"arquitetura": "32-Bit-RISC-V Single-Core",
"nucleos": "1 (Single-core)",
"frequencia": "Bis zu 160 MHz",
"seguranca": {
@@ -370,7 +370,7 @@
"nome_completo": "ESP32-C5",
"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.",
"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)",
"frequencia": "Bis zu 240 MHz",
"coprocessador_ulp": "Ja (RISC-V, LP CPU de 48 MHz)",
@@ -385,7 +385,7 @@
"key_manager": "Ja",
"rng": "Ja (TRNG Hardware-TRNG)",
"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"
},
"wifi": "Wi-Fi 6 (802.11ax) Dualband 2.4 GHz e 5 GHz",
@@ -396,7 +396,7 @@
"memoria_sram_rtc": "16 KB",
"memoria_rom": "320 KB",
"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",
"adc": "1x SAR-ADC mit 12 Bit, bis zu 6 Kanäle",
"dac": "Nein",
@@ -425,14 +425,14 @@
"guia_de_programacao": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c5/get-started/index.html",
"placa": "/placas/esp32-c5.png",
"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)"
},
"ESP32-C6": {
"nome_completo": "ESP32-C6",
"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.",
"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)",
"frequencia": "Bis zu 160 MHz",
"coprocessador_ulp": "Ja (RISC-V, LP CPU de 20 MHz)",
@@ -447,7 +447,7 @@
"key_manager": "Nein",
"rng": "Ja (TRNG Hardware-TRNG)",
"criptografia_flash": "XTS-AES-128",
"secure_boot": "V2 (RSA-3072 ou ECDSA)",
"secure_boot": "V2 (RSA-3072 oder ECDSA)",
"protecao_dpa": "Ja"
},
"wifi": "Wi-Fi 6 (802.11ax) 2.4 GHz",
@@ -493,7 +493,7 @@
"nome_completo": "ESP32-C61",
"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.",
"arquitetura": "RISC-V single-core de 32 bits",
"arquitetura": "32-Bit-RISC-V Single-Core",
"nucleos": "1 (Single-core)",
"frequencia": "Bis zu 160 MHz",
"seguranca": {
@@ -553,13 +553,13 @@
"nome_completo": "ESP32-P4",
"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.",
"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)",
"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)",
"aceleradores_ia": "Sim (Vector Instructions, aceleradores de IA)",
"seguranca": {
"aes": "AES-128/256 com GCM",
"aes": "AES-128/256 mit GCM",
"sha": "SHA-1/224/256/384/512",
"rsa": "Ja (RSA/MPI bis zu 4096 bits)",
"ecc": "Ja (P-192, P-256, P-384)",
@@ -569,7 +569,7 @@
"key_manager": "Ja",
"rng": "Ja (TRNG Hardware-TRNG)",
"criptografia_flash": "XTS-AES-128/256",
"secure_boot": "V2 (RSA-3072 ou ECDSA)",
"secure_boot": "V2 (RSA-3072 oder ECDSA)",
"protecao_dpa": "Nein"
},
"wifi": "Nein",
@@ -618,7 +618,7 @@
"nome_completo": "ESP32-H2",
"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.",
"arquitetura": "RISC-V single-core de 32 bits",
"arquitetura": "32-Bit-RISC-V Single-Core",
"nucleos": "1 (Single-core)",
"frequencia": "Bis zu 96 MHz",
"seguranca": {
@@ -632,7 +632,7 @@
"key_manager": "Nein",
"rng": "Ja (TRNG Hardware-TRNG)",
"criptografia_flash": "XTS-AES-128",
"secure_boot": "V2 (RSA-3072 ou ECDSA)",
"secure_boot": "V2 (RSA-3072 oder ECDSA)",
"protecao_dpa": "Ja"
},
"wifi": "Nein",
@@ -640,7 +640,7 @@
"zigbee_thread": "IEEE 802.15.4 (Zigbee 3.0, Thread 1.4)",
"matter": "Ja",
"memoria_sram": "320 KB",
"memoria_sram_rtc": "4 KB (LP Memory)",
"memoria_sram_rtc": "4 KB (LP-Speicher)",
"memoria_rom": "128 KB",
"flash_externa": "Bis zu 16 MB über QSPI",
"psram_externa": "Nein",
@@ -678,7 +678,7 @@
"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.",
"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)",
"frequencia": "Bis zu 96 MHz",
"seguranca": {
+4 -4
View File
@@ -7,7 +7,7 @@
"RF antenna connection (Wi-Fi and Bluetooth)"
],
"categorias": [
"Antenna",
"Antena",
"RF"
],
"avisos": [
@@ -19,7 +19,7 @@
"nome": "VDDA3P3",
"tipo": "power",
"funcoes": [
"Analog power supply de 3.3V"
"Analog power supply (3.3V)"
],
"categorias": [
"Power"
@@ -34,7 +34,7 @@
"nome": "VDDA3P3",
"tipo": "power",
"funcoes": [
"Analog power supply de 3.3V"
"Analog power supply (3.3V)"
],
"categorias": [
"Power"
@@ -300,7 +300,7 @@
"nome": "VDD3P3_CPU",
"tipo": "power",
"funcoes": [
"Digital power supply da CPU e IOs correspondentes (3.3V)"
"Digital power supply for the CPU and corresponding I/Os (3.3V)"
],
"categorias": [
"Power"
+1 -1
View File
@@ -7,7 +7,7 @@
"RF signals input/output (Wi-Fi and Bluetooth) to antenna"
],
"categorias": [
"Antenna"
"Antena"
],
"avisos": [
"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"
],
"categorias": [
"Antenna"
"Antena"
],
"avisos": [
"Refer to datasheet section 2.4 for more details on analog pins"
@@ -935,7 +935,7 @@
"RF antenna connection for 5 GHz band"
],
"categorias": [
"Antenna"
"Antena"
],
"avisos": [
"Refer to datasheet section 2.4 for more details on analog pins"
+1 -1
View File
@@ -7,7 +7,7 @@
"RF antenna connection"
],
"categorias": [
"Antenna"
"Antena"
],
"avisos": [
"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)"
],
"categorias": [
"Antenna",
"Antena",
"RF"
],
"avisos": [
+1 -1
View File
@@ -583,7 +583,7 @@
"RF antenna connection"
],
"categorias": [
"Antenna"
"Antena"
],
"avisos": [
"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"
],
"categorias": [
"Antenna"
"Antena"
]
},
{
+1 -1
View File
@@ -7,7 +7,7 @@
"RF signals input/output (Wi-Fi and Bluetooth) to antenna"
],
"categorias": [
"Antenna"
"Antena"
],
"avisos": [
"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)"
],
"categorias": [
"Antenna",
"Antena",
"RF"
],
"avisos": [
+3 -3
View File
@@ -29,7 +29,7 @@
"Low-noise amplifier (LNA) input for Wi-Fi and Bluetooth receiver"
],
"categorias": [
"Antenna"
"Antena"
],
"avisos": [
"Refer to datasheet section 2.4 for more details on analog pins"
@@ -1090,7 +1090,7 @@
"VDDA"
],
"funcoes": [
"Capacitor de filtro"
"Filter capacitor"
],
"categorias": [
"Power"
@@ -1108,7 +1108,7 @@
"VDDA"
],
"funcoes": [
"Capacitor de filtro"
"Filter capacitor"
],
"categorias": [
"Power"
+2 -2
View File
@@ -187,7 +187,7 @@
"nome": "VDD3P3_RTC",
"tipo": "power",
"funcoes": [
"Alimentación del dominio RTC e I/Os de bajo consumo"
"Alimentación del dominio RTC y I/Os de bajo consumo"
],
"categorias": [
"Power"
@@ -300,7 +300,7 @@
"nome": "VDD3P3_CPU",
"tipo": "power",
"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": [
"Power"
+9 -9
View File
@@ -68,7 +68,7 @@
"Power"
],
"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"
],
"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"
],
"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"
],
"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"
],
"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"
],
"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"
],
"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"
],
"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",
"tipo": "power",
"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": [
"Power"
+1 -1
View File
@@ -583,7 +583,7 @@
"nome": "VDD3P3_RTC_IO",
"tipo": "power",
"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": [
"Power"
+1 -1
View File
@@ -441,7 +441,7 @@
"nome": "VDD3P3_RTC",
"tipo": "power",
"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": [
"Power"
+4 -4
View File
@@ -520,7 +520,7 @@
"avisos": [
"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",
"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)"
]
},
@@ -588,7 +588,7 @@
"avisos": [
"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",
"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"
],
"funcoes": [
"Capacitor de filtro"
"Condensador de filtro"
],
"categorias": [
"Power"
@@ -1108,7 +1108,7 @@
"VDDA"
],
"funcoes": [
"Capacitor de filtro"
"Condensador de filtro"
],
"categorias": [
"Power"
+5 -5
View File
@@ -73,7 +73,7 @@
"frequencia": "Hasta 240 MHz",
"coprocessador_ulp": "Sí (RISC-V ULP coprocessor)",
"seguranca": {
"aes": "AES-128/192/256 com GCM",
"aes": "AES-128/192/256 con GCM",
"sha": "SHA-1/224/256/384/512",
"rsa": "Sí (RSA-3072/4096)",
"ecc": "No",
@@ -204,7 +204,7 @@
"coprocessador_ulp": "Sí (RISC-V ULP de ultra bajo consumo)",
"aceleradores_ia": "Sí (extensiones vectoriales avanzadas para TinyML, reconocimiento de voz y visión)",
"seguranca": {
"aes": "AES-128/256 com GCM",
"aes": "AES-128/256 con GCM",
"sha": "SHA-1/224/256/384/512",
"rsa": "Sí (RSA-3072/4096)",
"ecc": "Sí (ECC HW)",
@@ -241,7 +241,7 @@
"consumo_energia": {
"active": "Consumo optimizado de alto rendimiento configurable",
"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_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",
"placa": "/placas/esp32-c5.png",
"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)",
"ethernet": "No",
"ethernet_mac": "No",
@@ -591,7 +591,7 @@
"coprocessador_ulp": "Sí (RISC-V LP core de bajo consumo)",
"aceleradores_ia": "Sí (extensiones vectoriales completas para IA, DSP y códecs de video)",
"seguranca": {
"aes": "AES-128/256 com GCM",
"aes": "AES-128/256 con GCM",
"sha": "SHA-1/224/256/384/512",
"rsa": "Sí (RSA-3072/4096)",
"ecc": "Sí (ECC HW)",
+3 -3
View File
@@ -7,7 +7,7 @@
"Connexion de l'antenne RF (Wi-Fi et Bluetooth)"
],
"categorias": [
"Antenne",
"Antena",
"RF"
],
"avisos": [
@@ -301,7 +301,7 @@
"UART"
],
"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"
],
"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"
],
"categorias": [
"Antenne"
"Antena"
],
"avisos": [
"Consultez la section 2.4 de la fiche technique pour plus de détails sur les broches analogiques"
@@ -25,8 +25,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -42,8 +42,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -97,7 +97,7 @@
"avisos": [
"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",
"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": [
"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",
"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": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -292,8 +292,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -311,8 +311,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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",
"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é",
"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",
"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é",
"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",
"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é",
"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",
"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é",
"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",
"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é",
"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",
"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é",
"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",
"Not recommended to use this pin as GPIO"
"Déconseillé d'utiliser cette broche comme GPIO"
]
},
{
@@ -537,8 +537,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -554,8 +554,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
+34 -34
View File
@@ -11,8 +11,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -40,8 +40,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -85,8 +85,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -103,7 +103,7 @@
"avisos": [
"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",
"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": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -450,8 +450,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -471,7 +471,7 @@
"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é",
"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é",
"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",
"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é",
"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",
"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é",
"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",
"Not recommended to use this pin as GPIO"
"Déconseillé d'utiliser cette broche comme GPIO"
]
},
{
@@ -545,8 +545,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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",
"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é",
"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",
"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é",
"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",
"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é",
"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",
"Not recommended to use this pin as GPIO"
"Déconseillé d'utiliser cette broche comme GPIO"
]
},
{
@@ -717,8 +717,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -734,8 +734,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -751,8 +751,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -764,7 +764,7 @@
"Connexion de l'antenne RF pour la bande 2 GHz"
],
"categorias": [
"Antenne"
"Antena"
],
"avisos": [
"Consultez la section 2.4 de la fiche technique pour plus de détails sur les broches analogiques"
@@ -794,8 +794,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -811,8 +811,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -828,8 +828,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -853,7 +853,7 @@
"Connexion de l'antenne RF pour la bande 5 GHz"
],
"categorias": [
"Antenne"
"Antena"
],
"avisos": [
"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"
],
"categorias": [
"Antenne"
"Antena"
],
"avisos": [
"Consultez la section 2.4 de la fiche technique pour plus de détails sur les broches analogiques"
@@ -25,8 +25,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -42,8 +42,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -60,7 +60,7 @@
"avisos": [
"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",
"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": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -380,7 +380,7 @@
"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é",
"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é",
"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",
"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é",
"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",
"Not recommended to use this pin as GPIO"
"Déconseillé d'utiliser cette broche comme GPIO"
]
},
{
@@ -435,8 +435,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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",
"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é",
"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",
"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é",
"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",
"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é",
"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",
"Not recommended to use this pin as GPIO"
"Déconseillé d'utiliser cette broche comme GPIO"
]
},
{
@@ -527,8 +527,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -692,8 +692,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -737,8 +737,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
+29 -29
View File
@@ -7,11 +7,11 @@
"Connexion de l'antenne RF (Wi-Fi et Bluetooth)"
],
"categorias": [
"Antenne",
"Antena",
"RF"
],
"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": [
"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"
],
"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"
],
"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": [
"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": [
"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"
],
"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"
],
"avisos": [
"Multifunction pin: JTAG MTDO."
"Broche multifonction : JTAG MTDO."
]
},
{
@@ -206,7 +206,7 @@
"SPI"
],
"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"
],
"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"
],
"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"
],
"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"
],
"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"
],
"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"
],
"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"
],
"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"
],
"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"
],
"avisos": [
"Write Protect pin for SPI flash memory interface."
"Broche Write Protect de l'interface mémoire flash SPI."
]
},
{
@@ -389,7 +389,7 @@
],
"avisos": [
"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"
],
"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"
],
"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"
],
"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"
],
"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"
],
"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."
]
},
@@ -497,8 +497,8 @@
"Strapping"
],
"avisos": [
"Strapping pin for boot mode selection and ROM log printing control.",
"Floating by default during reset. High level (1) enables boot log printing."
"Broche de strapping pour la sélection du mode de démarrage et le contrôle de l'affichage du journal ROM.",
"Flottante par défaut pendant le reset. Le niveau haut (1) active l'affichage du journal de démarrage."
]
},
{
@@ -513,7 +513,7 @@
"Strapping"
],
"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)."
]
},
@@ -573,7 +573,7 @@
"Strapping"
],
"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."
]
},
+20 -20
View File
@@ -11,8 +11,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -28,8 +28,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -161,8 +161,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -280,7 +280,7 @@
"avisos": [
"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",
"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": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -312,8 +312,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -329,8 +329,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -453,8 +453,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -498,8 +498,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -515,8 +515,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -528,7 +528,7 @@
"Connexion de l'antenne RF"
],
"categorias": [
"Antenne"
"Antena"
],
"avisos": [
"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": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -359,9 +359,9 @@
],
"avisos": [
"Tension recommandée : 1.8V ou 3.3V",
"Minimum Recommended Voltage: 1.65V or 3.0V",
"Maximum Recommended Voltage: 1.95V or 3.6V",
"Voltage level must match the flash memory model used in the device (see pin 30)",
"Tension minimale recommandée : 1.65V ou 3.0V",
"Tension maximale recommandée : 1.95V ou 3.6V",
"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"
]
},
@@ -435,8 +435,8 @@
],
"avisos": [
"Tension recommandée : 1.1V",
"Minimum Recommended Voltage: 0.99V",
"Maximum Recommended Voltage: 1.3V",
"Tension minimale recommandée : 0.99V",
"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"
]
},
@@ -452,7 +452,7 @@
],
"avisos": [
"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": [
"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": [
"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": [
"Tension recommandée : 1.8V ou 3.3V",
"Minimum Recommended Voltage: 1.65V or 3.0V",
"Maximum Recommended Voltage: 1.95V or 3.6V",
"Voltage level must match the flash memory model used in the device",
"Tension minimale recommandée : 1.65V ou 3.0V",
"Tension maximale recommandée : 1.95V ou 3.6V",
"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"
]
},
@@ -515,7 +515,7 @@
],
"avisos": [
"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": [
"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": [
"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": [
"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": [
"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": [
"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": [
"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": [
"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": [
"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": [
"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": [
"Tension recommandée : 2.5V",
"Minimum Recommended Voltage: 2.25V",
"Maximum Recommended Voltage: 2.75V",
"Tension minimale recommandée : 2.25V",
"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"
]
},
@@ -682,7 +682,7 @@
],
"avisos": [
"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": [
"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": [
"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": [
"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": [
"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": [
"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": [
"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"
],
"avisos": [
"Dedicated to the negative data line of the USB OTG interface",
"Must not be used for other functions"
"Dédiée à la ligne de données négative de l'interface USB OTG",
"Ne doit pas être utilisée pour d'autres fonctions"
]
},
{
@@ -801,8 +801,8 @@
"USB"
],
"avisos": [
"Dedicated to the positive data line of the USB OTG interface",
"Must not be used for other functions"
"Dédiée à la ligne de données positive de l'interface USB OTG",
"Ne doit pas être utilisée pour d'autres fonctions"
]
},
{
@@ -817,8 +817,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.97V",
"Maximum Recommended Voltage: 3.63V",
"Tension minimale recommandée : 2.97V",
"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"
]
},
@@ -866,7 +866,7 @@
],
"categorias": [],
"avisos": [
"Must not be used"
"Ne doit pas être utilisée"
]
},
{
@@ -941,8 +941,8 @@
],
"avisos": [
"Tension recommandée : 1.65V",
"Minimum Recommended Voltage: 1.8V",
"Maximum Recommended Voltage: 1.95V",
"Tension minimale recommandée : 1.8V",
"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"
]
},
@@ -990,9 +990,9 @@
],
"avisos": [
"Tension recommandée : 1.8V ou 3.3V",
"Minimum Recommended Voltage: 1.65V or 3.0V",
"Maximum Recommended Voltage: 1.95V or 3.6V",
"Voltage level must match the flash memory model used in the device (see pin 30)",
"Tension minimale recommandée : 1.65V ou 3.0V",
"Tension maximale recommandée : 1.95V ou 3.6V",
"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"
]
},
@@ -1084,8 +1084,8 @@
],
"avisos": [
"Tension recommandée : 1.65V",
"Minimum Recommended Voltage: 1.8V",
"Maximum Recommended Voltage: 1.95V",
"Tension minimale recommandée : 1.8V",
"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"
]
},
@@ -1237,8 +1237,8 @@
],
"avisos": [
"Tension recommandée : 1.1V",
"Minimum Recommended Voltage: 0.99V",
"Maximum Recommended Voltage: 1.3V",
"Tension minimale recommandée : 0.99V",
"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"
]
},
@@ -1377,9 +1377,9 @@
],
"avisos": [
"Tension recommandée : 1.8V ou 3.3V",
"Minimum Recommended Voltage: 1.65V or 3.0V",
"Maximum Recommended Voltage: 1.95V or 3.6V",
"Voltage level must match the flash memory model used in the device (see pin 30)",
"Tension minimale recommandée : 1.65V ou 3.0V",
"Tension maximale recommandée : 1.95V ou 3.6V",
"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"
]
},
@@ -1475,8 +1475,8 @@
],
"avisos": [
"Tension recommandée : 1.1V",
"Minimum Recommended Voltage: 0.99V",
"Maximum Recommended Voltage: 1.3V",
"Tension minimale recommandée : 0.99V",
"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"
]
},
@@ -1558,9 +1558,9 @@
],
"avisos": [
"Tension recommandée : 1.8V ou 3.3V",
"Minimum Recommended Voltage: 1.65V or 3.0V",
"Maximum Recommended Voltage: 1.95V or 3.6V",
"Voltage level must match the flash memory model used in the device (see pin 30)",
"Tension minimale recommandée : 1.65V ou 3.0V",
"Tension maximale recommandée : 1.95V ou 3.6V",
"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"
]
},
@@ -1638,8 +1638,8 @@
],
"avisos": [
"Tension recommandée : 3.0V",
"Minimum Recommended Voltage: 3.3V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.3V",
"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"
]
},
@@ -1655,8 +1655,8 @@
],
"avisos": [
"Tension recommandée : 2.5V",
"Minimum Recommended Voltage: 3.3V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.3V",
"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"
]
},
@@ -1673,7 +1673,7 @@
"avisos": [
"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",
"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": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.8V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 2.8V",
"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"
]
},
@@ -24,7 +24,7 @@
"Entrée et sortie des signaux RF (Wi-Fi) vers l'antenne"
],
"categorias": [
"Antenne"
"Antena"
],
"avisos": []
},
@@ -40,8 +40,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.8V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 2.8V",
"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"
]
},
@@ -57,8 +57,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.8V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 2.8V",
"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"
]
},
@@ -384,8 +384,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.8V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 2.8V",
"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"
]
},
@@ -534,8 +534,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -569,7 +569,7 @@
"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é",
"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": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 1.8V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 1.8V",
"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"
]
},
@@ -605,7 +605,7 @@
"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é",
"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é",
"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",
"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é",
"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",
"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é",
"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",
"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é",
"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",
"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é",
"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",
"Not recommended to use this pin as GPIO"
"Déconseillé d'utiliser cette broche comme GPIO"
]
},
{
@@ -859,8 +859,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.8V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 2.8V",
"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"
]
},
@@ -969,8 +969,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.8V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 2.8V",
"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"
]
},
@@ -1014,8 +1014,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.8V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 2.8V",
"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"
]
},
@@ -1051,7 +1051,7 @@
"avisos": [
"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",
"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"
],
"categorias": [
"Antenne"
"Antena"
],
"avisos": [
"Consultez la section 2.4 de la fiche technique pour plus de détails sur les broches analogiques"
@@ -25,8 +25,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -42,8 +42,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -60,7 +60,7 @@
"avisos": [
"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",
"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": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -572,7 +572,7 @@
"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é",
"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": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 1.8V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 1.8V",
"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"
]
},
@@ -608,7 +608,7 @@
"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é",
"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é",
"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",
"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é",
"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",
"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é",
"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",
"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é",
"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",
"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é",
"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",
"Not recommended to use this pin as GPIO"
"Déconseillé d'utiliser cette broche comme GPIO"
]
},
{
@@ -908,8 +908,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -1063,8 +1063,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
@@ -1080,8 +1080,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 3.0V",
"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"
]
},
+35 -35
View File
@@ -7,11 +7,11 @@
"Connexion de l'antenne RF (Wi-Fi et Bluetooth)"
],
"categorias": [
"Antenne",
"Antena",
"RF"
],
"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": [
"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"
],
"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"
],
"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"
],
"avisos": [
"Analog input pin ADC1 Channel 1."
"Broche d'entrée analogique ADC1 canal 1."
]
},
{
@@ -120,7 +120,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC1 Channel 2."
"Broche d'entrée analogique ADC1 canal 2."
]
},
{
@@ -136,7 +136,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC1 Channel 3."
"Broche d'entrée analogique ADC1 canal 3."
]
},
{
@@ -152,7 +152,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC1 Channel 4."
"Broche d'entrée analogique ADC1 canal 4."
]
},
{
@@ -182,7 +182,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC1 Channel 5."
"Broche d'entrée analogique ADC1 canal 5."
]
},
{
@@ -198,7 +198,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC1 Channel 6."
"Broche d'entrée analogique ADC1 canal 6."
]
},
{
@@ -214,7 +214,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC1 Channel 7."
"Broche d'entrée analogique ADC1 canal 7."
]
},
{
@@ -230,7 +230,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC1 Channel 8."
"Broche d'entrée analogique ADC1 canal 8."
]
},
{
@@ -246,7 +246,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC1 Channel 9."
"Broche d'entrée analogique ADC1 canal 9."
]
},
{
@@ -262,7 +262,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC1 Channel 10."
"Broche d'entrée analogique ADC1 canal 10."
]
},
{
@@ -276,7 +276,7 @@
"Touch"
],
"avisos": [
"Dedicated analog pin for capacitive touch stabilization."
"Broche analogique dédiée à la stabilisation du toucher capacitif."
]
},
{
@@ -292,7 +292,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC2 Channel 0."
"Broche d'entrée analogique ADC2 canal 0."
]
},
{
@@ -308,7 +308,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC2 Channel 1."
"Broche d'entrée analogique ADC2 canal 1."
]
},
{
@@ -324,7 +324,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC2 Channel 2."
"Broche d'entrée analogique ADC2 canal 2."
]
},
{
@@ -340,7 +340,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC2 Channel 3."
"Broche d'entrée analogique ADC2 canal 3."
]
},
{
@@ -356,7 +356,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC2 Channel 4."
"Broche d'entrée analogique ADC2 canal 4."
]
},
{
@@ -372,7 +372,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC2 Channel 5."
"Broche d'entrée analogique ADC2 canal 5."
]
},
{
@@ -388,7 +388,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC2 Channel 6."
"Broche d'entrée analogique ADC2 canal 6."
]
},
{
@@ -404,7 +404,7 @@
"ADC"
],
"avisos": [
"Analog input pin ADC2 Channel 7."
"Broche d'entrée analogique ADC2 canal 7."
]
},
{
@@ -420,7 +420,7 @@
"SPI"
],
"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"
],
"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"
],
"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"
],
"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"
],
"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"
],
"avisos": [
"Dedicated Hold for external or internal SPI Flash."
"Hold dédié à la flash SPI externe ou interne."
]
},
{
@@ -692,7 +692,7 @@
"ADC"
],
"avisos": [
"Multifunction pin: GPIO33 and ADC2 Channel 8."
"Broche multifonction : GPIO33 et ADC2 canal 8."
]
},
{
@@ -708,7 +708,7 @@
"ADC"
],
"avisos": [
"Multifunction pin: GPIO34 and ADC2 Channel 9."
"Broche multifonction : GPIO34 et ADC2 canal 9."
]
},
{
@@ -927,7 +927,7 @@
"ADC"
],
"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"
],
"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."
]
},
@@ -1106,7 +1106,7 @@
"Strapping"
],
"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)."
]
},
+30 -30
View File
@@ -11,10 +11,10 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V",
"Maximum Recommended Voltage: 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V",
"Tension minimale recommandée : 2.3V ou 3.0V",
"Tension maximale recommandée : 3.6V",
"Pour les puces avec Flash ou PSRAM intégrée, la tension minimale recommandée est de 3.0V",
"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"
]
},
@@ -26,7 +26,7 @@
"Entrée de l'amplificateur faible bruit (LNA) pour le récepteur Wi-Fi et Bluetooth"
],
"categorias": [
"Antenne"
"Antena"
],
"avisos": [
"Consultez la section 2.4 de la fiche technique pour plus de détails sur les broches analogiques"
@@ -44,10 +44,10 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V",
"Maximum Recommended Voltage: 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V",
"Tension minimale recommandée : 2.3V ou 3.0V",
"Tension maximale recommandée : 3.6V",
"Pour les puces avec Flash ou PSRAM intégrée, la tension minimale recommandée est de 3.0V",
"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"
]
},
@@ -63,10 +63,10 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V",
"Maximum Recommended Voltage: 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V",
"Tension minimale recommandée : 2.3V ou 3.0V",
"Tension maximale recommandée : 3.6V",
"Pour les puces avec Flash ou PSRAM intégrée, la tension minimale recommandée est de 3.0V",
"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"
]
},
@@ -155,7 +155,7 @@
"avisos": [
"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",
"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"
]
},
@@ -370,10 +370,10 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V",
"Maximum Recommended Voltage: 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V",
"Tension minimale recommandée : 2.3V ou 3.0V",
"Tension maximale recommandée : 3.6V",
"Pour les puces avec Flash ou PSRAM intégrée, la tension minimale recommandée est de 3.0V",
"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"
]
},
@@ -569,8 +569,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 2.3V ou 3.0V",
"Tension maximale recommandée : 3.6V",
"Cette broche est connectée à la sortie du LDO interne",
"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"
@@ -802,8 +802,8 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 1.8V",
"Maximum Recommended Voltage: 3.6V",
"Tension minimale recommandée : 1.8V",
"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"
]
},
@@ -919,10 +919,10 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V",
"Maximum Recommended Voltage: 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V",
"Tension minimale recommandée : 2.3V ou 3.0V",
"Tension maximale recommandée : 3.6V",
"Pour les puces avec Flash ou PSRAM intégrée, la tension minimale recommandée est de 3.0V",
"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"
]
},
@@ -966,10 +966,10 @@
],
"avisos": [
"Tension recommandée : 3.3V",
"Minimum Recommended Voltage: 2.3V or 3.0V",
"Maximum Recommended Voltage: 3.6V",
"For chips with integrated Flash or PSRAM, recommended minimum voltage is 3.0V",
"For chips without integrated Flash or PSRAM, recommended minimum voltage is 2.3V",
"Tension minimale recommandée : 2.3V ou 3.0V",
"Tension maximale recommandée : 3.6V",
"Pour les puces avec Flash ou PSRAM intégrée, la tension minimale recommandée est de 3.0V",
"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"
]
},
+20 -20
View File
@@ -25,13 +25,13 @@
"bluetooth": "Bluetooth 4.2 BR/EDR (Clássico) et Bluetooth LE (dual mode)",
"ethernet": "Oui (Ethernet MAC intégré)",
"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)",
"flash_externa": "Jusqu'à 16 MB via QSPI",
"psram_externa": "Jusqu'à 8 MB via QSPI (dans des modules spécifiques comme WROVER)",
"gpio": "34",
"adc": "2x ADC SAR 12 bits, jusqu'à 18 canaux",
"dac": "2x DAC de 8 bits",
"dac": "2x DAC 8 bits",
"touch": "10 canaux capacitifs",
"uart": "3",
"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)",
"arduino_core": "Oui (147 definições de placa no core oficial)",
"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",
"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",
@@ -73,7 +73,7 @@
"frequencia": "Jusqu'à 240 MHz",
"coprocessador_ulp": "Oui (RISC-V)",
"seguranca": {
"aes": "AES-128/192/256 com GCM",
"aes": "AES-128/192/256 avec GCM",
"sha": "SHA-1/224/256/384/512",
"rsa": "Oui (RSA/MPI jusqu'à 4096 bits)",
"ecc": "Nonn",
@@ -95,7 +95,7 @@
"psram_externa": "Jusqu'à 1 GB via QSPI/Octal SPI",
"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)",
"dac": "2x DAC de 8 bits",
"dac": "2x DAC 8 bits",
"touch": "14 canaux capacitifs",
"uart": "2",
"spi": "4 (SPI0/1 pour la Flash, SPI2/3 pour usage général)",
@@ -118,7 +118,7 @@
"esp_idf_minimo": "v4.2",
"arduino_core": "Oui (26 definições de placa no core oficial)",
"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",
"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",
@@ -193,12 +193,12 @@
"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.",
"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",
"coprocessador_ulp": "Oui (RISC-V, LP CPU de 40 MHz)",
"aceleradores_ia": "Sim (Custom AI and DSP extension XespV)",
"seguranca": {
"aes": "AES-128/256 com GCM",
"aes": "AES-128/256 avec GCM",
"sha": "SHA-1/224/256/384/512",
"rsa": "Oui (RSA/MPI jusqu'à 4096 bits)",
"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)",
"gpio": "60",
"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",
"uart": "5 (4 UART + 1 LP UART)",
"spi": "7 (6 SPI + 1 LP SPI)",
"i2c": "3 (2 I2C + 1 LP I2C)",
"i2s": "2",
"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)",
"sensor_temperatura": "1 (interno)",
"consumo_energia": {
"active": "Consommation optimisée haute performance configurable",
"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_armazenamento": "-40°C a 150°C",
@@ -300,7 +300,7 @@
"esp_idf_minimo": "v5.0",
"arduino_core": "Oui (1 definições de placa no core oficial)",
"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",
"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",
@@ -371,7 +371,7 @@
"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.",
"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",
"coprocessador_ulp": "Oui (RISC-V, LP CPU de 48 MHz)",
"seguranca": {
@@ -396,7 +396,7 @@
"memoria_sram_rtc": "16 KB",
"memoria_rom": "320 KB",
"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",
"adc": "1x ADC SAR 12 bits, jusqu'à 6 canaux",
"dac": "Nonn",
@@ -425,7 +425,7 @@
"guia_de_programacao": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c5/get-started/index.html",
"placa": "/placas/esp32-c5.png",
"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)"
},
"ESP32-C6": {
@@ -433,7 +433,7 @@
"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.",
"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",
"coprocessador_ulp": "Oui (RISC-V, LP CPU de 20 MHz)",
"seguranca": {
@@ -553,13 +553,13 @@
"nome_completo": "ESP32-P4",
"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.",
"arquitetura": "RISC-V 32 bits bicœur de alto desempenho (HP) + monocœur de baixo consumo (LP)",
"nucleos": "2 (Dual-core HP) + 1 (Single-core LP)",
"arquitetura": "RISC-V 32 bits bicœur haute performance (HP) + monocœur basse consommation (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",
"coprocessador_ulp": "Oui (RISC-V, LP CPU de 40 MHz)",
"aceleradores_ia": "Sim (Vector Instructions, aceleradores de IA)",
"seguranca": {
"aes": "AES-128/256 com GCM",
"aes": "AES-128/256 avec GCM",
"sha": "SHA-1/224/256/384/512",
"rsa": "Oui (RSA/MPI jusqu'à 4096 bits)",
"ecc": "Oui (P-192, P-256, P-384)",
@@ -640,7 +640,7 @@
"zigbee_thread": "IEEE 802.15.4 (Zigbee 3.0, Thread 1.4)",
"matter": "Oui",
"memoria_sram": "320 KB",
"memoria_sram_rtc": "4 KB (LP Memory)",
"memoria_sram_rtc": "4 KB (mémoire LP)",
"memoria_rom": "128 KB",
"flash_externa": "Jusqu'à 16 MB via QSPI",
"psram_externa": "Nonn",
+420 -305
View File
@@ -1,307 +1,422 @@
[
{
"numero": "1",
"nome": "ANT",
"tipo": "analog",
"funcoes": ["RF 天线连接(Wi-Fi 和 Bluetooth)"],
"categorias": ["天线", "射频"],
"avisos": ["专用 RF 引脚。避免长走线或未做 50 欧姆阻抗匹配。"]
},
{
"numero": "2",
"nome": "VDDA3P3",
"tipo": "power",
"funcoes": ["3.3V 模拟电源"],
"categorias": ["电源"],
"avisos": [
"建议电压:3.3V(3.0V 至 3.6V)",
"为芯片的模拟和 RF 电路供电"
]
},
{
"numero": "3",
"nome": "VDDA3P3",
"tipo": "power",
"funcoes": ["3.3V 模拟电源"],
"categorias": ["电源"],
"avisos": [
"建议电压:3.3V(3.0V 至 3.6V)",
"为芯片的模拟和 RF 电路供电"
]
},
{
"numero": "4",
"nome": "GPIO0",
"tipo": "io",
"alimentacao": ["VDD3P3_RTC"],
"funcoes": [
"GPIO0",
"ADC1_CH0"
],
"categorias": [
"GPIO",
"ADC"
],
"avisos": ["ADC1 通道 0 模拟输入引脚"]
},
{
"numero": "5",
"nome": "GPIO1",
"tipo": "io",
"alimentacao": ["VDD3P3_RTC"],
"funcoes": [
"GPIO1",
"ADC1_CH1"
],
"categorias": [
"GPIO",
"ADC"
],
"avisos": ["ADC1 通道 1 模拟输入引脚"]
},
{
"numero": "6",
"nome": "GPIO2",
"tipo": "io",
"alimentacao": ["VDD3P3_RTC"],
"funcoes": [
"GPIO2",
"ADC1_CH2",
"FSPIQ"
],
"categorias": [
"GPIO",
"ADC",
"SPI"
],
"avisos": ["启动时默认映射为 SPI MISO(FSPIQ)功能"]
},
{
"numero": "7",
"nome": "CHIP_EN",
"tipo": "analog",
"funcoes": ["使能芯片(上电/复位)"],
"categorias": ["电源"],
"avisos": [
"高电平有效。拉高以启动芯片。",
"请勿让该引脚浮空。请使用外部 RC 延迟电路以实现稳定启动。"
]
},
{
"numero": "8",
"nome": "GPIO3",
"tipo": "io",
"alimentacao": ["VDD3P3_RTC"],
"funcoes": [
"GPIO3",
"ADC1_CH3"
],
"categorias": [
"GPIO",
"ADC"
],
"avisos": ["ADC1 通道 3 模拟输入引脚"]
},
{
"numero": "9",
"nome": "GPIO4",
"tipo": "io",
"alimentacao": ["VDD3P3_RTC"],
"funcoes": [
"GPIO4",
"MTMS",
"FSPIQ",
"ADC1_CH4"
],
"categorias": [
"GPIO",
"JTAG",
"SPI",
"ADC"
],
"avisos": [
"多功能引脚:JTAG MTMS、SPI2 MISO 和 ADC1 通道 4。",
"可与其他 JTAG 引脚配合用于 JTAG 调试。"
]
},
{
"numero": "10",
"nome": "GPIO5",
"tipo": "io",
"alimentacao": ["VDD3P3_RTC"],
"funcoes": [
"GPIO5",
"MTDI",
"FSPIWP"
],
"categorias": [
"GPIO",
"JTAG",
"SPI"
],
"avisos": ["多功能引脚:JTAG MTDI 和 SPI2 Write Protect(FSPIWP)。"]
},
{
"numero": "11",
"nome": "VDD3P3_RTC",
"tipo": "power",
"funcoes": ["RTC 域和低功耗 IO 的电源"],
"categorias": ["电源"],
"avisos": ["建议电压:3.3V"]
},
{
"numero": "12",
"nome": "GPIO6",
"tipo": "io",
"alimentacao": ["VDD3P3_RTC"],
"funcoes": [
"GPIO6",
"MTCK",
"FSPICLK"
],
"categorias": [
"GPIO",
"JTAG",
"SPI"
],
"avisos": ["多功能引脚:JTAG MTCK 和 SPI2 Clock(FSPICLK)。"]
},
{
"numero": "13",
"nome": "GPIO7",
"tipo": "io",
"alimentacao": ["VDD3P3_RTC"],
"funcoes": [
"GPIO7",
"MTDO",
"FSPID"
],
"categorias": [
"GPIO",
"JTAG",
"SPI"
],
"avisos": ["多功能引脚:JTAG MTDO 和 SPI2 MOSI(FSPID)。"]
},
{
"numero": "14",
"nome": "GPIO8",
"tipo": "io",
"alimentacao": ["VDD3P3_CPU"],
"funcoes": ["GPIO8"],
"categorias": ["GPIO", "启动配置"],
"avisos": [
"用于启动控制的 Strapping 引脚。",
"与 GPIO9 配合选择 SoC 启动模式(若 GPIO9=0,复位期间必须为 1 才能进入 Joint Download Boot)。"
]
},
{
"numero": "15",
"nome": "GPIO9",
"tipo": "io",
"alimentacao": ["VDD3P3_CPU"],
"funcoes": ["GPIO9"],
"categorias": ["GPIO", "启动配置"],
"avisos": [
"主 Strapping 引脚。复位时高电平(1)启用 SPI Boot(默认通过弱上拉)。",
"复位时低电平(0)使芯片进入 UART/SPI 下载模式。"
]
},
{
"numero": "16",
"nome": "GPIO10",
"tipo": "io",
"alimentacao": ["VDD3P3_CPU"],
"funcoes": [
"GPIO10",
"FSPICS0"
],
"categorias": [
"GPIO",
"SPI"
],
"avisos": ["多功能引脚:SPI2 Chip Select 0(FSPICS0)。"]
},
{
"numero": "17",
"nome": "VDD3P3_CPU",
"tipo": "power",
"funcoes": ["CPU 及相应 IO 的数字电源(3.3V)"],
"categorias": ["电源"],
"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": ["电源"]
},
{
"numero": "22",
"nome": "XTAL_N",
"tipo": "analog",
"funcoes": ["外部晶振连接(输出)"],
"categorias": ["时钟"]
},
{
"numero": "23",
"nome": "XTAL_P",
"tipo": "analog",
"funcoes": ["外部晶振连接(输入)"],
"categorias": ["时钟"]
},
{
"numero": "24",
"nome": "VDDA",
"tipo": "power",
"funcoes": ["3.3V 模拟输入电源"],
"categorias": ["电源"]
},
{
"numero": "25",
"nome": "GND",
"tipo": "power",
"funcoes": ["中心接地焊盘(Exposed Pad)"],
"categorias": ["电源"],
"avisos": ["应正确焊接至 PCB 接地平面(GND),以实现稳定性能和散热。"]
}
{
"numero": "1",
"nome": "ANT",
"tipo": "analog",
"funcoes": [
"RF 天线连接(Wi-Fi 和 Bluetooth)"
],
"categorias": [
"Antena",
"RF"
],
"avisos": [
"专用 RF 引脚。避免长走线或未做 50 欧姆阻抗匹配。"
]
},
{
"numero": "2",
"nome": "VDDA3P3",
"tipo": "power",
"funcoes": [
"3.3V 模拟电源"
],
"categorias": [
"Power"
],
"avisos": [
"建议电压:3.3V(3.0V 至 3.6V)",
"为芯片的模拟和 RF 电路供电"
]
},
{
"numero": "3",
"nome": "VDDA3P3",
"tipo": "power",
"funcoes": [
"3.3V 模拟电源"
],
"categorias": [
"Power"
],
"avisos": [
"建议电压:3.3V(3.0V 至 3.6V)",
"为芯片的模拟和 RF 电路供电"
]
},
{
"numero": "4",
"nome": "GPIO0",
"tipo": "io",
"alimentacao": [
"VDD3P3_RTC"
],
"funcoes": [
"GPIO0",
"ADC1_CH0"
],
"categorias": [
"GPIO",
"ADC"
],
"avisos": [
"ADC1 通道 0 模拟输入引脚"
]
},
{
"numero": "5",
"nome": "GPIO1",
"tipo": "io",
"alimentacao": [
"VDD3P3_RTC"
],
"funcoes": [
"GPIO1",
"ADC1_CH1"
],
"categorias": [
"GPIO",
"ADC"
],
"avisos": [
"ADC1 通道 1 模拟输入引脚"
]
},
{
"numero": "6",
"nome": "GPIO2",
"tipo": "io",
"alimentacao": [
"VDD3P3_RTC"
],
"funcoes": [
"GPIO2",
"ADC1_CH2",
"FSPIQ"
],
"categorias": [
"GPIO",
"ADC",
"SPI"
],
"avisos": [
"Flash 初始化时默认映射为 SPI MISO(FSPIQ)功能"
]
},
{
"numero": "7",
"nome": "CHIP_EN",
"tipo": "analog",
"funcoes": [
"使能芯片(上电/复位)"
],
"categorias": [
"Power"
],
"avisos": [
"高电平有效。拉高以启动芯片。",
"请勿让该引脚浮空。请使用外部 RC 延迟电路以实现稳定启动。"
]
},
{
"numero": "8",
"nome": "GPIO3",
"tipo": "io",
"alimentacao": [
"VDD3P3_RTC"
],
"funcoes": [
"GPIO3",
"ADC1_CH3"
],
"categorias": [
"GPIO",
"ADC"
],
"avisos": [
"ADC1 通道 3 模拟输入引脚"
]
},
{
"numero": "9",
"nome": "GPIO4",
"tipo": "io",
"alimentacao": [
"VDD3P3_RTC"
],
"funcoes": [
"GPIO4",
"MTMS",
"FSPIQ",
"ADC1_CH4"
],
"categorias": [
"GPIO",
"JTAG",
"SPI",
"ADC"
],
"avisos": [
"多功能引脚:JTAG MTMS、SPI2 MISO 和 ADC1 通道 4。",
"可与其他 JTAG 引脚配合用于 JTAG 调试。"
]
},
{
"numero": "10",
"nome": "GPIO5",
"tipo": "io",
"alimentacao": [
"VDD3P3_RTC"
],
"funcoes": [
"GPIO5",
"MTDI",
"FSPIWP"
],
"categorias": [
"GPIO",
"JTAG",
"SPI"
],
"avisos": [
"多功能引脚:JTAG MTDI 和 SPI2 Write Protect(FSPIWP)。"
]
},
{
"numero": "11",
"nome": "VDD3P3_RTC",
"tipo": "power",
"funcoes": [
"RTC 域和低功耗 IO 的电源"
],
"categorias": [
"Power"
],
"avisos": [
"建议电压:3.3V"
]
},
{
"numero": "12",
"nome": "GPIO6",
"tipo": "io",
"alimentacao": [
"VDD3P3_RTC"
],
"funcoes": [
"GPIO6",
"MTCK",
"FSPICLK"
],
"categorias": [
"GPIO",
"JTAG",
"SPI"
],
"avisos": [
"多功能引脚:JTAG MTCK 和 SPI2 Clock(FSPICLK)。"
]
},
{
"numero": "13",
"nome": "GPIO7",
"tipo": "io",
"alimentacao": [
"VDD3P3_RTC"
],
"funcoes": [
"GPIO7",
"MTDO",
"FSPID"
],
"categorias": [
"GPIO",
"JTAG",
"SPI"
],
"avisos": [
"多功能引脚:JTAG MTDO 和 SPI2 MOSI(FSPID)。"
]
},
{
"numero": "14",
"nome": "GPIO8",
"tipo": "io",
"alimentacao": [
"VDD3P3_CPU"
],
"funcoes": [
"GPIO8"
],
"categorias": [
"GPIO",
"Strapping"
],
"avisos": [
"用于启动控制的 Strapping 引脚。",
"与 GPIO9 配合选择 SoC 启动模式(若 GPIO9=0,复位期间必须为 1 才能进入 Joint Download Boot)。"
]
},
{
"numero": "15",
"nome": "GPIO9",
"tipo": "io",
"alimentacao": [
"VDD3P3_CPU"
],
"funcoes": [
"GPIO9"
],
"categorias": [
"GPIO",
"Strapping"
],
"avisos": [
"主 Strapping 引脚。复位时高电平(1)启用 SPI Boot(默认通过弱上拉)。",
"复位时低电平(0)使芯片进入 UART/SPI 下载模式。"
]
},
{
"numero": "16",
"nome": "GPIO10",
"tipo": "io",
"alimentacao": [
"VDD3P3_CPU"
],
"funcoes": [
"GPIO10",
"FSPICS0"
],
"categorias": [
"GPIO",
"SPI"
],
"avisos": [
"多功能引脚:SPI2 Chip Select 0(FSPICS0)。"
]
},
{
"numero": "17",
"nome": "VDD3P3_CPU",
"tipo": "power",
"funcoes": [
"CPU 及相应 IO 的数字电源(3.3V)"
],
"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).
*/
const nivelMemoria = (palavra) => (p) => {
const citam = p._avs.filter((a) => a.includes(palavra) && !/^fuer chips (mit|ohne)/i.test(a));
if (citam.some((a) => /(belegt|dediziert|verbunden)/i.test(a) && !/ausser/i.test(a))) return "forte";
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|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 (citam.length) return "fraco";
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.
*/
const nivelMemoria = (palavra) => (p) => {
const citam = p._avs.filter((a) => a.includes(palavra) && !/^para chips (com|sem)/.test(a));
if (citam.some((a) => /(utilizad|dedicad|conectad)/.test(a) && !/a menos que/.test(a))) return "forte";
if (p._fn.some((f) => /alimentacao/.test(f) && f.includes(palavra))) return "forte";
const citam = p._avs.filter((a) => new RegExp(`\\b${palavra}(?![a-z])`).test(a) && !/^for chips (with|without)/.test(a));
if (citam.some((a) => /(used by|used in|dedicated|connected)/.test(a) && !/unless/.test(a))) return "forte";
if (p._fn.some((f) => /(power output|power input|supply)/.test(f) && f.includes(palavra))) return "forte";
if (citam.length) return "fraco";
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: "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: "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: "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" },
+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).
*/
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 (p._fn.some((f) => /alimentacion|alimentacao/i.test(f) && f.includes(palabra))) return "forte";
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).
*/
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 (p._fn.some((f) => /alimentation/i.test(f) && f.includes(palavra))) return "forte";
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.
*/
const nivelMemoria = (palavra) => (p) => {
const citam = p._avs.filter((a) => a.includes(palavra) && !/^对于集成/.test(a));
if (citam.some((a) => /(存储使用|专用于|连接到|用于存储)/.test(a) && !/除非/.test(a))) return "forte";
if (p._fn.some((f) => /(供电|alimentacao|vdd)/.test(f) && f.includes(palavra))) return "forte";
const citam = p._avs.filter((a) => a.includes(palavra) && !/^对于(未)?集成/.test(a));
if (citam.some((a) => /(存储使用|专用|连接到|用于存储|所用)/.test(a) && !/除非/.test(a))) return "forte";
if (p._fn.some((f) => /电源/.test(f) && f.includes(palavra))) return "forte";
if (citam.length) return "fraco";
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",
"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([
"dados", "especificacao", "especificacoes", "spec", "specs", "informacao", "informacoes", "info",
"quanto", "quantos", "quantas", "capacidade", "limite", "limites", "tem", "possui", "suporta",
@@ -137,9 +137,17 @@ function casarTermo(termo, livres) {
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) {
const bruto = normalizar(consulta)
const pinNums = [];
const semPinos = normalizar(consulta)
.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(/([a-z0-9])([\u3400-\u9fff])/g, "$1 $2")
.replace(/[^a-z0-9.+\-_ \u3400-\u9fff]/g, " ");
@@ -231,7 +239,7 @@ export function interpretar(indice, consulta) {
cjkUsados.forEach((i) => usados.add(i));
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) => {
@@ -253,6 +261,27 @@ function pinosDoTopico(serie, topico) {
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) =>
`${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));
}
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) {
saida.push({
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"
const buscas = [...it.gpios, ...it.funcoes];
for (const termo of buscas) {
@@ -387,6 +440,7 @@ export function buscar(indice, consulta) {
const interpretacao = {
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 })),
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 }));
@@ -436,11 +490,11 @@ export function buscar(indice, consulta) {
const sugestoes = [];
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 });
} 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 });
}
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",
pinoNo: "{pino} no {serie}",
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: {
@@ -51,6 +63,18 @@ export const BUSCA_I18N = {
compDesc: "Quick comparison · add the chip to your search for details",
pinoNo: "{pino} on the {serie}",
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: {
@@ -73,6 +97,18 @@ export const BUSCA_I18N = {
compDesc: "Comparativa rápida · añade el chip a la búsqueda para ver el detalle",
pinoNo: "{pino} en el {serie}",
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: {
@@ -95,6 +131,18 @@ export const BUSCA_I18N = {
compDesc: "Comparatif rapide · ajoutez la puce à la recherche pour détailler",
pinoNo: "{pino} sur le {serie}",
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: {
@@ -117,6 +165,18 @@ export const BUSCA_I18N = {
compDesc: "Schnellvergleich · fügen Sie den Chip zur Suche hinzu, um Details zu sehen",
pinoNo: "{pino} beim {serie}",
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": {
@@ -139,6 +199,18 @@ export const BUSCA_I18N = {
compDesc: "快速对比 · 在搜索中加上芯片可查看详情",
pinoNo: "{serie} 的 {pino}",
motivoPino: "引脚 {pino}",
pinoFisico: "{serie} 的物理引脚 {n}",
pinoDesc: "图中的引脚数据",
kPino: "引脚",
kNome: "名称",
kFuncoes: "功能",
kCategorias: "类别",
kAviso: "警告",
pinoInexistente: "{serie} 没有引脚 {n}",
pinoInexistenteDesc: "引脚编号为 1 到 {max} · 打开引脚图",
pinoEmCada: "各系列的引脚 {n}",
pinoEmCadaDesc: "各芯片物理引脚 {n} 上的内容",
chipPino: "引脚 {n}",
},
},
};
+9
View File
@@ -65,6 +65,15 @@ export default function middleware(request) {
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
if (pathname === "/") {
const targetLocale = resolveRootLocale(request);
+4 -2
View File
@@ -9,10 +9,12 @@
"lint": "eslint",
"audit": "node scripts/auditar-paginas.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",
"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": {
"googleapis": "^165.0.0",
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>
<p class="capa-sub">
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>
<div class="capa-autor">
<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

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

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