

Altimetro
Esquemático KiCad 10 de um altímetro barométrico de recuperação dupla (apogeu + principal), equivalente em função ao Altus Metrum EasyMini: sensor barométrico, registro de voo em flash, dois canais pirotécnicos com…
- Size
- 66 × 26 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 56
- Nets
- 44
- Pads
- 174
- Tracks, vias
- 628, 94
- Pours
- 5
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 17 Oct 2026
- Updated
- 18 Oct 2026
Overview
Altimetro is an open-source printed circuit board by Daniel-Alencar, from the Daniel-Alencar/MiniEasy repository on GitHub. It is a 2-layer board of 66 × 26 mm with 56 parts on 44 nets, routed with 628 tracks and 94 vias.
It is built around the STM32F042K6T6, MS560702BA03-50 and W25Q16JVSSIQ, with the MCP1703A-3302E/MB, USBLC6-2SC6 and B5819W among its other parts. Its parts include 18 resistors, 17 capacitors, 5 ICs, 5 connectors and 4 diodes. It belongs with the STM32 boards of this library.
Main components
9STM32F042K6T6
LQFP-32(7x7)-40℃~+85℃ 1.65V~3.6V 12bit 26 32 Bit 32KB 48MHz 6KB ARM Cortex-M0 Built-in FLASH LQFP-32(7x7) Microcontrollers (MCU/MPU/SOC) ROHSSTMicroelectronicsMicrocontrollers (MCU/MPU/SOC)MS560702BA03-50
SMD-8P-40℃~+85℃ 1.5mbar 1.8V~3.6V 140nA 1Kpa~1.2bar I2C、SPI Yes SMD-8P Pressure Sensors ROHSTE ConnectivityPressure SensorsW25Q16JVSSIQ
SOIC-8-208mil-40℃~+85℃ 100,000 cycles 10uA 133MHz 16Mbit 2.7V~3.6V 20 Years 3ms SPI SOIC-8-208mil NOR FLASH ROHSWinbondNOR FLASHMCP1703A-3302E/MB
SOT-89-3-40℃~+125℃@(Tj) 1 16V 250mA 2uA 3.3V 35dB@(100Hz) 625mV@(250mA) Fixed Over Current Protection、Over Temperature Protection、Short Circuit Protection Positive SOT-89-3 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSMicrochip TechnologyVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsUSBLC6-2SC6
SOT-23-60.35pF、0.8pF 100nA 150W@8/20us 15V 2 5V 6A@8/20us 6V ESD SOT-23-6 ESD and Surge Protection (TVS/ESD) ROHSUMWESD And Surge Protection (TVS/ESD)B5819W
SOD-123-55℃~+125℃ 1.5A 1mA@40V 25A 40V 600mV@1A Standalone SOD-123 Schottky Diodes ROHSMDDSchottky DiodesAO3400A
SOT-23-55℃~+150℃ 1 N-channel 1.45V 1.4W 30V 48mΩ@2.5V 5.7A 50pF 630pF 75pF 7nC@10V N-Channel SOT-23 MOSFETs ROHSAlpha & Omega SemiconductorMOSFETsBSS138
SOT-23-55℃~+150℃ 1 N-channel 1.1Ω@10V、1.2Ω@4.5V 1.2V 1.7nC@10V 17.5pF 340mA 350mW 50V 6.5pF N-Channel SOT-23 MOSFETs ROHShongjiachengMOSFETsCMT-8504-100-SMT-TR
SMD,8.5x8.5mm-40℃~+85℃ 100dB 150mA 1V~6V 4kHz 4mm 5V 8.5mm 8.5mm Electromagnetic Passive (Externally Driven) Surface Mount SMD,8.5x8.5mm Buzzers ROHSCUIBuzzers
README
README.mdAltímetro de dois eventos — classe EasyMini
Esquemático KiCad 10 de um altímetro barométrico de recuperação dupla (apogeu + principal), equivalente em função ao Altus Metrum EasyMini: sensor barométrico, registro de voo em flash, dois canais pirotécnicos com teste de continuidade, download por USB. Sem GPS, sem acelerômetro, sem telemetria.
Defeito crítico em aberto:
FIRE_Bestá no PA9, que o bootloader da ROM leva a nível alto — o canal principal dispara se a placa entrar no bootloader (JP1 fechado ou flash vazia) com bateria e ignitor ligados. Até corrigir, grave firmware só com USB, sem bateria. Detalhes em SINAIS.md.
Documentos:
- SINAIS.md — cada sinal: função, conexões, tensões, notas de firmware.
- ALIMENTACAO.md — por que o bloco de alimentação é assim: o "OU" de diodos, a escolha do regulador, o reservatório de disparo e o desacoplamento.
Arquivos:
| arquivo | conteúdo |
|---|---|
altimetro.kicad_sch | esquemático, folha única A2, formato nativo KiCad 10 |
altimetro.kicad_pro | projeto (inclui netclass PIRO de 1,0 mm) |
altimetro.kicad_pcb | placa de 2 camadas, 66 × 26 mm, roteada |
altimetro.kicad_dru | regra de DRC do USB que avança sobre a borda |
altimetro.pdf | plotagem do esquemático |
fabricacao/ | Gerber + furação (zip), posição SMD, BOM, desenho de montagem, renders |
bom.csv | lista de materiais exportada pelo KiCad, 54 componentes |
gerador/ | scripts que geram e verificam o esquemático |
Arquitetura
J1 ──┬── C1 100µF ──────────────────► VBAT ──┬── J4 pino 1 (piro apogeu)
BAT │ (reservatório de disparo) └── J5 pino 1 (piro principal)
4-16V└── D1 ─┐
├─ VSYS ── U1 MCP1703 ── +3V3 ── MCU, baro, flash, buzzer
J3 USB ── D2 ┘ (SOT-89)
└── U5 USBLC6 ── D+/D- ── U2 STM32F042K6T6 ──┬── SPI1 ──┬── U3 MS5607 (baro)
│ └── U4 W25Q16 (flash)
├── ADC ───── continuidade A/B + VBAT
├── GPIO ──── Q1/Q2 AO3400A (disparo)
└── TIM3 ──── Q3 + LS1 (buzzer)Sete blocos no esquemático, numerados na folha: alimentação, MCU, barômetro + memória, USB, canal A, canal B, aviso sonoro.
Mapa de pinos do STM32F042K6T6 (LQFP32)
| pino | função | net | uso |
|---|---|---|---|
| 1, 5, 17 | VDD, VDDA, VDDIO2 | +3V3 | C6/C9/C7 = 100 n, C8/C10 = 1 µF |
| 16, 32 | VSS, VSSA | GND | |
| 4 | NRST | NRST | C11 100 n + J2 pino 4 |
| 6 | PA0 / ADC_IN0 | SNS_A | continuidade canal apogeu |
| 7 | PA1 / ADC_IN1 | SNS_B | continuidade canal principal |
| 8 | PA2 / ADC_IN2 | VB_SNS | tensão de bateria (÷11) |
| 9 | PA3 | CS_FLSH | chip select da flash |
| 10 | PA4 | CS_BARO | chip select do barômetro |
| 11, 12, 13 | PA5/6/7 = SPI1 SCK/MISO/MOSI | SCK MISO MOSI | AF0 |
| 14 | PB0 / ADC_IN8 | VU_SNS | detecção de VBUS (÷2) |
| 15 | PB1 / TIM3_CH4 | BEEP | geração de tom |
| 18 | PA8 | FIRE_A | disparo apogeu |
| 19 | PA9 | FIRE_B | disparo principal |
| 21, 22 | PA11, PA12 | USB_DM USB_DP | USB FS device |
| 23, 24 | PA13, PA14 | SWDIO SWCLK | depuração |
| 25 | PA15 | STAT | LED de estado (dreno) |
| 31 | PB8 / BOOT0 | BOOT0 | R3 10 k para GND + JP1 |
| 2, 3, 20, 26–30 | PF0, PF1, PA10, PB3–PB7 | — | marcados no connect |
Pinagens conferidas contra o datasheet: pino 17 é VDDIO2 e pino 16 é VSS (ST STM32F042x4/x6); MS5607-02BA03 pino 4 = CSB e pino 5 = conexão interna, ambos no mesmo net (datasheet TE, seção Pin Configuration). Atenção ao MCP1703: a numeração muda com o encapsulamento — em SOT-89 é 1 = GND, 2 = VIN, 3 = VOUT (em SOT-223 o pino 1 é VIN).
Decisões de projeto
STM32F042K6T6. Mesma escolha do EasyMini v3. O que importa aqui é o USB crystal-less: o periférico USB roda do HSI48 corrigido pelo CRS, sincronizado ao SOF do host. Isso elimina cristal, dois capacitores e a área deles; PF0/PF1 ficam livres. Em troca, não há base de tempo precisa — o registro de voo usa o HSI de ±1 % como base, suficiente para taxa de amostragem mas não para medição de tempo absoluto.
MS5607-02BA03 em SPI. PS em GND seleciona SPI, compartilhando o barramento com a flash. Resolução de 20 cm e conversão de 1 ms; limite de 1200 mbar e 10 mbar cobre do nível do mar a ~30 km. Barramento compartilhado é seguro porque as duas conversões nunca são concorrentes: o firmware lê o barômetro e só depois grava a amostra.
W25Q16JV (16 Mbit). 2 MByte dão ~44 min de registro a 100 Hz com amostra de
8 bytes (800 B/s) — de 10 a 20 voos de 2–4 min sem apagar; mais se a taxa cair
depois do apogeu. WPn e HOLDn ficam em nível alto por R4/R5 (10 k), o que
desativa a proteção de escrita por hardware e a pausa. Esses pinos não chegam ao
MCU, então a flash opera só em SPI simples.
LDO MCP1703 em SOT-89, não SOT-23. Com 16 V na entrada e 25 mA de consumo o regulador dissipa (16 − 3,3) × 0,025 = 0,32 W. Em SOT-23 (θ_JA ≈ 250 °C/W) isso são 80 °C de elevação; em SOT-89 (θ_JA ≈ 140 °C/W), 45 °C. O Iq de 2 µA importa porque a placa fica armada na bancada por horas.
OR de fontes por Schottky (D1/D2). Bateria e USB alimentam o 3V3 por diodos
separados. O efeito colateral é a propriedade de segurança mais importante da
placa: VBAT alimenta os bornes pirotécnicos diretamente, não passa pelos
diodos — com só o USB conectado os canais ficam sem energia. Dá para programar e
baixar dados com os ignitores ligados.
Disparo em lado baixo com pulldown no gate. Q1/Q2 (AO3400A, 30 V, 5,7 A, R_DS ≈ 30 mΩ) chaveiam o lado de GND do ignitor. R9/R13 de 100 k mantêm o gate em GND enquanto o MCU está em reset, sem firmware ou travado — um pino em tri-state não dispara nada. R8/R12 de 100 Ω limitam o pico de corrente de gate.
Continuidade por divisor no dreno. R10/R11 (100 k/10 k) medem o dreno de Q1. Com ignitor intacto o nó fica em VBAT/11 (1,45 V em 16 V, 0,36 V em 4 V); com ignitor aberto o divisor puxa o nó para 0 V. A corrente de teste que passa pelo ignitor é VBAT/110 k, no máximo 145 µA — três ordens de grandeza abaixo da corrente de não-disparo típica (250 mA) de um e-match. C16/C17 de 10 n filtram o nó do ADC.
C1 de 100 µF. O disparo é um curto de ~1 Ω por ~1 s; sem reservatório local a queda em VBAT faz o MCU resetar no pior momento possível. C1 fica no borne de bateria, no mesmo laço de corrente dos bornes pirotécnicos.
JP1 (BOOT0). No STM32F042, BOOT0 é multiplexado com PB8. Fechando JP1 a placa entra no bootloader DFU da ROM e aceita firmware pelo próprio USB, sem programador. J2 (SWD 1×5, passo 1,27 mm) fica para depuração.
Observações sobre o desenho
As ligações são feitas por rótulos em stubs de 2,54 mm: cada pino tem um fio curto com o nome do net, em vez de fios longos atravessando a folha. É legal e sem ambiguidade — a netlist extraída da geometria é idêntica à tabela de nets do gerador — mas é um estilo compacto, não o traçado "bonito" de um esquemático feito à mão. Reposicionar e traçar fios de verdade nos blocos é trabalho de edição normal no Eeschema e não altera a netlist.
D1/D2/D3 estão desenhados com o catodo à esquerda (orientação padrão do símbolo,
sem espelhamento). Os rótulos deixam o sentido claro: em D1, VBAT entra pelo
anodo à direita e VSYS sai pelo catodo à esquerda.
Placa
66 × 26 mm, 2 camadas, FR-4 1,6 mm, montagem SMD só no topo. Dois furos M3 nas pontas, sem cobre (não ligam a placa ao suporte). Regras compatíveis com fabricação padrão: trilha mínima 0,15 mm, folga 0,15 mm, via 0,6/0,3 mm.
| netclass | nets | trilha | folga |
|---|---|---|---|
PIRO | VBAT, PYRO_A, PYRO_B | 0,8 mm | 0,3 mm |
POWER | +3V3, VSYS, VBUS, GND | 0,4 mm | 0,2 mm |
| Default | sinais | 0,25 mm | 0,2 mm |
Disposição: bornes na borda inferior (entrada do fio para fora), USB na borda superior esquerda, alimentação à esquerda, MCU no centro com os desacoplamentos colados aos pinos, flash e barômetro em cima à direita (longe do regulador), buzzer embaixo à direita. Plano de GND nas duas faces, costurado por vias.
Decisões de layout:
- Bornes de 3,5 mm (Metz Connect RT06302HBWC, 10 A, 0,14–1,5 mm²) em vez dos de 5,08 mm: metade da área, e mesma série de parafuso.
- Pads SMD com ligação sólida ao plano, alívio térmico só nos passantes. Importa para o GND do protetor de ESD (U5) e para a fonte de Q1/Q2, por onde volta a corrente de disparo. O pad de GND do header SWD também é sólido: no passo de 1,27 mm não cabem dois raios térmicos.
- Faixa sem vias acima de cada borne (área de regra) para os rótulos
+BAT-,APO,PRI— furo de via corta a serigrafia. - Referências que não cabem sem cobrir pad, via ou outra peça ficam fora da
serigrafia e aparecem no desenho de montagem (
fabricacao/altimetro-montagem.pdf). O verso traz legenda completa dos bornes e a pinagem do SWD.
Gerar a placa
FREEROUTING=/caminho/freerouting-2.4.1.jar JAVA=/caminho/java25/bin/java gerador/fazer_pcb.shRequer KiCad 10 (módulo Python pcbnew), Java 25+ e Freerouting 2.4.1. O script
posiciona (conectores e CIs em posição fixa; passivos pelo lugar livre mais
perto do pino que atendem), exporta DSN com as larguras por classe, autorroteia,
cria planos e costura, posiciona a serigrafia e roda o DRC com paridade de
esquemático. Só grava no projeto se o DRC passar sem nenhuma violação. O
Freerouting não é determinístico: cada execução dá um traçado diferente, todos
verificados pelo mesmo DRC.
Antes de encomendar
- Rodar o DRC no GUI e olhar a placa: o roteamento é automático. Funcional e verificado, mas vale revisar os laços de disparo e o USB a olho.
- Para montagem na JLCPCB/PCBWay: a BOM não tem códigos de fornecedor (LCSC), e o arquivo de posição usa a rotação do KiCad — alguns encapsulamentos (SOT-23, SOT-89) precisam de correção de rotação no visualizador do fabricante.
- O buzzer puxa ~100 mA de pico do 3V3 a 4 kHz. O firmware não deve tocá-lo enquanto mede pressão para referência de solo.
Notas para o layout da PCB
- O laço de disparo (J1 → C1 → J4/J5 → Q1/Q2 → GND) carrega alguns ampères por
~1 s. Netclass
PIROjá está configurada em 1,0 mm; mantenha o laço curto e com área pequena, e não passe sinais de ADC por dentro dele. - O MS5607 precisa de abertura de ventilação para a pressão ambiente e não pode ser lavado (o datasheet é explícito: usar pasta no-clean). Mantenha a área reservada sob o sensor livre de trilhas, conforme o pad layout da TE.
- Separe o GND de retorno pirotécnico do GND analógico do divisor de continuidade, unindo-os num único ponto junto ao borne de bateria.
- U5 (USBLC6) vai o mais próximo possível do conector USB, antes de qualquer outra coisa nas linhas D+/D-.
- Reserve lugar para fixar a bateria e os fios dos ignitores: são eles que sofrem a aceleração, não os componentes SMD.
Verificação
gerador/verificar.sh gera o esquemático a partir das bibliotecas do KiCad
instalado e só grava o resultado se tudo passar:
- o gerador recusa pino sem net e sem no connect, pino em dois nets, e dois símbolos de alimentação no mesmo ponto;
check_sch.pyreextrai a netlist da geometria do arquivo e compara com a tabelaNETS;check_layout.pyprocura sobreposição de símbolos e rótulos e itens fora da folha;kicad-cli sch upgradeconverte para o formato nativo;- ERC do KiCad com todas as severidades — 0 erros, 0 avisos;
netcheck.pycompara a netlist exportada pelo próprio KiCad com a tabelaNETSe confere cada footprint contra o filtro de footprint do símbolo;- exporta
altimetro.pdfebom.csv.
O que não está feito
- Firmware e certificação.
- Proteção contra inversão de polaridade da bateria: D1 protege só o ramo de
3V3. Os bornes pirotécnicos estão em
VBATdireto, então bateria invertida polariza Q1/Q2 pelo diodo de corpo. Se isso preocupar, um P-FET em série na entrada resolve, ao custo de R_DS no caminho de disparo. - Um elemento de armamento em série (chave física ou segundo FET) nos canais pirotécnicos. O EasyMini também não tem, mas é o acréscimo que eu faria antes de tratar a placa como produto.
Regenerar
gerador/verificar.sh # usa /usr/share/kicad/symbols
gerador/verificar.sh /caminho/symbols # outra instalaçãoA tabela NETS em gerador/gen_sch.py é a fonte da verdade das ligações: o
gerador falha se algum pino ficar sem net e sem no connect, se um pino aparecer
em dois nets, ou se dois símbolos de alimentação caírem no mesmo ponto. Depois de
editar o esquemático à mão no Eeschema, não regenere — o gerador sobrescreve o
posicionamento.
Parts
56| Qty | Value | Footprint | References |
|---|---|---|---|
| 9 | 100n | Capacitor_SMD:C_0603_1608Metric | C4, C5, C6, C7, C9, C11, C12, C13, C15 |
| 8 | 100k | Resistor_SMD:R_0603_1608Metric | R1, R6, R7, R9, R10, R13, R14, R17 |
| 6 | 10k | Resistor_SMD:R_0603_1608Metric | R2, R3, R4, R5, R11, R15 |
| 3 | 100R | Resistor_SMD:R_0603_1608Metric | R8, R12, R16 |
| 3 | 1u | Capacitor_SMD:C_0603_1608Metric | C8, C10, C14 |
| 3 | B5819W | Diode_SMD:D_SOD-123 | D1, D2, D3 |
| 2 | 10n | Capacitor_SMD:C_0603_1608Metric | C16, C17 |
| 2 | AO3400A | Package_TO_SOT_SMD:SOT-23 | Q1, Q2 |
| 2 | M3 | MountingHole:MountingHole_3.2mm_M3 | H1, H2 |
| 1 | 100u/25V | Capacitor_SMD:CP_Elec_6.3x7.7 | C1 |
| 1 | 10u | Capacitor_SMD:C_0805_2012Metric | C3 |
| 1 | 10u/25V | Capacitor_SMD:C_0805_2012Metric | C2 |
| 1 | 1k | Resistor_SMD:R_0603_1608Metric | R18 |
| 1 | BAT 4-16 V | TerminalBlock_MetzConnect:TerminalBlock_MetzConnect_Type059_RT06302HBWC_1x02_P3.50mm_Horizontal | J1 |
| 1 | BOOT0 | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP1 |
| 1 | BSS138 | Package_TO_SOT_SMD:SOT-23 | Q3 |
| 1 | CMT-8504-100-SMT | Buzzer_Beeper:MagneticBuzzer_CUI_CMT-8504-100-SMT | LS1 |
| 1 | LED verde | LED_SMD:LED_0603_1608Metric | D4 |
| 1 | MCP1703A-3302E/MB | Package_TO_SOT_SMD:SOT-89-3 | U1 |
| 1 | MS5607-02BA03 | Package_LGA:LGA-8_3x5mm_P1.25mm | U3 |
| 1 | PIRO APOGEU | TerminalBlock_MetzConnect:TerminalBlock_MetzConnect_Type059_RT06302HBWC_1x02_P3.50mm_Horizontal | J4 |
| 1 | PIRO PRINCIPAL | TerminalBlock_MetzConnect:TerminalBlock_MetzConnect_Type059_RT06302HBWC_1x02_P3.50mm_Horizontal | J5 |
| 1 | STM32F042K6T6 | Package_QFP:LQFP-32_7x7mm_P0.8mm | U2 |
| 1 | SWD | Connector_PinHeader_1.27mm:PinHeader_1x05_P1.27mm_Vertical | J2 |
| 1 | USB micro-B | Connector_USB:USB_Micro-B_Molex_47346-0001 | J3 |
| 1 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U5 |
| 1 | W25Q16JVSSIQ | Package_SO:SOIC-8_5.3x5.3mm_P1.27mm | U4 |
Similar boards
- 4 layers90 × 60 mm

- 4 layers68 × 60 mm

RoboCore V2
Plastal-Bot-Builders/RoboCoreDocumentation
RoboCore is a classroom robot kit and coding platform, designed and built in Zambia by Plastal-Bot Builders (Lusaka).
146 partsMIT - 2 layers180 × 50 mm

- 4 layers100 × 50 mm

- 4 layers

Rocket fc
npsggehlot-cmyk/self-landing-rocket
Self-landing TVC model rocket: RocketFC flight computer PCB, avionics bay, servo chute ejector, Arduino firmware, 3D MATLAB flight simulator
104 parts - 2 layers100 × 50 mm

Clock pcb
MitchellStride/Hummingbird-RP2040-Clock-Module
RP2040 RTC Module, highly compatible with JLCPCB's basic SMT components.
124 parts2 - 2 layers60 × 40 mm

Canary
offgridevices/offgrid-hardware
Open hardware from OffGrid Devices. One folder per board. CERN-OHL-S.
52 partsCERN-OHL-S-2.0 - 4 layers100 × 120 mm

Micromouse pcb
MukeshSethy/micromouse-runner
This is my repo for the first version of full size micromouse development.
184 parts
Questions
How big is the Altimetro PCB?
It measures 66 × 26 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Altimetro use?
56 parts, built around the STM32F042K6T6, MS560702BA03-50, W25Q16JVSSIQ and MCP1703A-3302E/MB. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Altimetro KiCad files?
From the Daniel-Alencar/MiniEasy repository on GitHub, at the commit this page was made from: the board is altimetro.kicad_pcb and its schematic altimetro.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Altimetro design in my own project?
Its repository states no licence, so its author keeps all rights: ask Daniel-Alencar before reusing the design.