Skip to the content
PCBKitNew board
4 layers50 × 30 mmCc1200-balloon, the printed circuit board in 3D

Cc1200-balloon

tmpk13/cc1200-balloon

High altitude balloon payload: a CC1200 sub-GHz telemetry downlink and an air quality sensor stack, hosted by a Seeed Wio-E5 module. Four-layer 50 x 30 mm board, routed.

Size
50 × 30 mm
Copper layers
4
Thickness
1.6 mm
Parts
108
Nets
100
Pads
409
Tracks, vias
649, 289
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
3 Aug 2026
Updated
22 Sep 2026

Overview

Cc1200-balloon is an open-source printed circuit board by tmpk13, from the tmpk13/cc1200-balloon repository on GitHub, published under the MIT licence. It is a 4-layer board of 50 × 30 mm with 108 parts on 100 nets, routed with 649 tracks and 289 vias.

It is built around the AT6558R-5N32, CC1200RHB and WIO-E5, with the AS3935-BQFT, BME688 and SCD40-D-R2 among its other parts. Its parts include 55 capacitors, 13 resistors, 12 inductors, 7 ICs and 7 connectors.

Main components

12

README

README.md

cc1200-balloon

High altitude balloon payload: a CC1200 sub-GHz telemetry downlink and an air quality sensor stack, hosted by a Seeed Wio-E5 module. Four-layer 50 x 30 mm board, routed. The last full review is in BOARD_REVIEW.md; read its verdict table before ordering boards. Five items in it block fabrication.

The CC1200 radio and its 434 MHz matching network are carried over from the v1 design (an import of the Altus Metrum TeleMini netlist). Everything else is new: the Wio-E5 host, an AT6558R GNSS receiver with an on-board patch antenna and LNA, a burn/cutdown channel, and the sensor set from Forest-Balloon.csv.

Architecture

mermaid
classDiagram
    direction LR

    class WioE5["U201 Wio-E5"] {
        STM32WLE5JC + SX126x
        SPI1 PB3 PB4 PB5
        I2C1 PB6 PB7
        USART2 PA2 PA3
        LPUART1 PC1
        ADC_IN0 PB13
        RFIO to J201 SMA
    }
    class Power["Power"] {
        J101 battery pads 3.6 V max
        Q101 reverse block
        +BATT unregulated
        R103 R104 sense divider
    }
    class Burn["Burn channel"] {
        Q1 P-FET high side
        gate on PA15
        J1 two pin header
    }
    class Radio["U301 CC1200"] {

Sheets

SheetContents
mcu.kicad_schbattery pads, reverse-block P-FET, sense divider, Wio-E5 and decoupling, reset, SWD and console pads, status LED, I2C pull-ups, LoRa SMA, burn FET and header, two mounting holes
radio.kicad_schCC1200, 40 MHz crystal, per-pin decoupling, loop filter, the v1 TX/RX matching network, SMA
gnss.kicad_schAT6558R-5N32, 26 MHz TCXO, 32.768 kHz RTC crystal, internal DCDC/LDO passives, ALND-WB-0014 LNA, ceramic patch antenna
sensors.kicad_schSCD40, AS3935 with its 500 kHz loop antenna, one BME688, BMV080 ZIF connector on I2C with address jumpers

Power

There is no regulator and no switch. The cell drives the whole board through one P-channel FET:

text
J101 -- VBATT_IN -- Q101 (reverse block) -- +BATT -- everything

Q101 blocks a reversed cell: its source is on the load side, so the body diode conducts battery to load and the channel shorts it out. The rail is the cell minus one Rds(on) and follows the cell from full charge to cutoff. R103/R104 (100k/100k) put half of it on PB13 for the ADC.

Rail+BATT, unregulated, 3.6 V maximum
Bulk on the rail43.5 uF nominal as drawn, 4.7 uF at the MCU and the GNSS, 10 uF at each of the three big sensor loads, 1 uF at each IC
At the battery entrynothing; nearest is C202 at 19 mm
Off-state drainnone possible: the board is live whenever the cell is connected

Every supply window on this rail is tabulated in section 4 of the 2026-09-15 review; the BMV080 and the TCXO are the tight ones.

GNSS front end

The receiver sees a passive 15 x 15 mm ceramic patch (J401, The Antenna Company AC33154-1T) mounted on the back of the board, feeding an Abracon ALND-WB-0014 LNA (U402, 16 dB, 0.85 dB noise figure) on the front. ANT_BIAS powers the LNA, which puts the LNA's 5.3 mA above the chip's 2.5 mA antenna-detect threshold and switches it off with the receiver in sleep. C402 100 pF blocks DC into RF_IN; L402 6.8 nH is the series match at the chip.

L404 8.2 nH sits in series 0.87 mm from RFIN, which is the Abracon reference topology. BOARD_REVIEW.md items 4, 8, 17, 21 and 24 still concern this block.

Burn channel

Q1, a P-channel FET on PA15, switches +BATT into the two-pin header J1 for a cutdown wire. R205 100 k holds the gate at the rail while the MCU is in reset. Review items 15, 20, 22 and 23 still concern it.

Wio-E5 pin map

PinNetFunction
8 PB3SPI_SCKSPI1 clock to the CC1200
7 PB4SPI_MISOSPI1 MISO
11 PB5SPI_MOSISPI1 MOSI
26 PB14RADIO_CSCC1200 chip select
5 PB15RADIO_RSTCC1200 reset
20 PB10RADIO_IRQCC1200 GPIO2
6 PA15Net-(Q1-G)burn FET gate
25 PB9PM_IRQBMV080 interrupt, open drain active low
10 PB6SCLI2C1 clock
9 PB7SDAI2C1 data
23 PA0LIGHTNING_IRQAS3935 interrupt (wake-capable)
19 PA2GNSS_RXUSART2 TX to the receiver, through 22R
18 PA3GNSS_TXUSART2 RX from the receiver, through 22R
27 PA10GNSS_PPS1PPS
13 PC0GNSS_ONOFFreceiver sleep control
12 PC1DBG_TXLPUART1 console out, on the debug pads
24 PB13BATT_VSENSEADC_IN0, 1:2 divider off +BATT; also the module's boot pin
21 PA9STATUS_LEDgreen LED through 1 k
15 RFIOLORA_RFJ201, the module's own sub-GHz radio

CC1200 GPIO0 and GPIO3 go to test pads TP301/TP302. GNSS SWD is on TP401/TP402.

Interfaces

RefPartCarries
J101two 2 x 4 mm solder pads, 3 mm pitch, back sidebattery leads
J202six 1.27 mm solder pads, back side+BATT GND SWDIO SWCLK NRST DBG_TX
J12-pin 1.00 mm header, front sideburn wire, switched high side
J201 J301Samtec SMA-J-P-H-ST-EM1 edge launchLoRa and CC1200 antennas
J401AC33154-1T patch, pin fed through the boardGNSS, back side
J501Kyocera 6844 0.30 mm 13-way ZIFBMV080 flex; the sensor lies along the bottom edge
JP1 JP23-pad solder jumpersBMV080 I2C address bits; open by default, which the sensor does not allow

Parts, data sheets and BOM

Most bought symbols carry Datasheet, MPN and Manufacturer fields, mirrored onto the board's footprints. The sourcing table is tools/parts.json.

sh
python3 tools/set_part_fields.py --check   # report what would change
python3 tools/set_part_fields.py           # write fields into *.kicad_sch and the .kicad_pcb
python3 tools/gen_digikey_bom.py           # digikey_bom.csv, BOM.md, bom.json

The BOM tools do not currently run. Six symbols (Q1, J1, X401, U402, C416, J401) have no entry in tools/parts.json, so digikey_bom.csv and BOM.md are stale: they still list three SMA jacks, an off-board active antenna, the old TCXO and two BME688. Review item 19 lists the DigiKey numbers to add.

The generator is stale

sheets/*.json, build.sh and the TypeScript tools describe the design as it stood on 2026-09-06. The schematics were hand-edited after that and the board was routed against them. Do not run build.sh: it would overwrite all four sheets with the old design. The .kicad_sch files are the source of truth.

Verification

CheckResult on 2026-09-22
full-hierarchy ERC0 errors, 3 warnings (Q1, JP1, JP2 differ from the library)
DRC, zones refilled, all track errors27 unique errors: 13 clearance, 7 starved thermal, 4 courtyard, 3 hole clearance
schematic parity0 unconnected items, 1 warning (Q1 footprint)
pinouts vs data sheetsWio-E5, CC1200, AT6558R, AS3935, BME688, SCD40, BMV080, ALND-WB-0014, NSC5351B and now Q1: all match

Known limitations

  • The rail is unregulated and can touch 3.6 V, the absolute maximum operating supply of the Wio-E5 and the CC1200. Confirm the cell's open-circuit voltage before connecting it.
  • No brownout floor. RF output power, the ADC reference and sensor readings drift with the cell. BATT_VSENSE makes the drift observable.
  • The GNSS stops first. VDD_IO and DX_IN are specified from 2.7 V; the TCXO is rated to 3.3 V and is fed from a pin that can reach 3.6 V. Budget the flight on that, not on the cell's cutoff.
  • The BMV080 wants 3.3 V +-5 % on its laser supply. On this rail it is in window only between 3.135 and 3.465 V.
  • The patch antenna is characterized on a 50 x 50 mm ground plane and has 0.09 mm of it on one side here. Expect it to be off tune.
  • GNSS altitude limit. The AT6558R data sheet says nothing about COCOM limits; confirm behavior above 18 km before flying.
  • SCD40 in a balloon. Specified from -10 C and pressure dependent; compensate from the BME688 pressure channel.
  • No thermal design, no antenna measurements. The CC1200 match values are TeleMini's; sweep them on this board.

Parts

108
QtyValueFootprintReferences
11100nCapacitor_SMD:C_0402_1005MetricC107, C201, C204, C401, C403, C405, C412, C413, C501, C507, C508
1147nCapacitor_SMD:C_0402_1005MetricC301, C302, C303, C304, C305, C306, C307, C308, C309, C315, C316
81uCapacitor_SMD:C_0402_1005MetricC312, C407, C408, C409, C410, C411, C504, C511
3100kResistor_SMD:R_0402_1005MetricR103, R104, R205
310kResistor_SMD:R_0402_1005MetricR201, R401, R501
310uCapacitor_SMD:C_0402_1005MetricC512, C513, C515
35p1Capacitor_SMD:C_0402_1005MetricC323, C325, C326
2100pCapacitor_SMD:C_0402_1005MetricC310, C402
210nCapacitor_SMD:C_0402_1005MetricC311, C314
212pCapacitor_SMD:C_0402_1005MetricC318, C319
215nInductor_SMD:L_0402_1005MetricL302, L305
222RResistor_SMD:R_0402_1005MetricR402, R403
227nInductor_SMD:L_0402_1005MetricL307, L308
24k7Resistor_SMD:R_0402_1005MetricR203, R204
24u7Capacitor_SMD:C_0603_1608MetricC404, C406
256nInductor_SMD:L_0402_1005MetricL301, L306
2M2.5MountingHole:MountingHole_2mmH101, H102
1100ucc1200_balloon:L_Axial_D2.8mm_L7.2mm_P10.16mm_HorizontalL501
110uCapacitor_SMD:C_0603_1608MetricC503
118RResistor_SMD:R_0402_1005MetricR302
11kResistor_SMD:R_0402_1005MetricR202
11n0Capacitor_SMD:C_0402_1005MetricC416
11n8Capacitor_SMD:C_0402_1005MetricC317
1220nCapacitor_SMD:C_0402_1005MetricC313
122nInductor_SMD:L_0402_1005MetricL304
12p2Capacitor_SMD:C_0402_1005MetricC322
132.768kHzCrystal:Crystal_SMD_3215-2Pin_3.2x1.5mmX402
139pCapacitor_SMD:C_0402_1005MetricC321
14.7uCapacitor_SMD:C_0402_1005MetricC202
140MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmX301
1434MHz ANT padsConnector_Coaxial:SMA_Samtec_SMA-J-P-H-ST-EM1_EdgeMountJ301
143nInductor_SMD:L_0402_1005MetricL303
147pCapacitor_SMD:C_0402_1005MetricC506
14u7Inductor_SMD:L_0603_1608MetricL403
156kResistor_SMD:R_0402_1005MetricR301
156pCapacitor_SMD:C_0402_1005MetricC320
16n8Inductor_SMD:L_0402_1005MetricL402
16p2Capacitor_SMD:C_0402_1005MetricC324
18n2Inductor_SMD:L_0402_1005MetricL404
1910pCapacitor_SMD:C_0402_1005MetricC505
1ALND-WB-0014cc1200_balloon:Abracon_DFN-6_1.1x0.7mmU402
1AS3935-BQFTPackage_DFN_QFN:QFN-16-1EP_4x4mm_P0.65mm_EP2.7x2.7mmU502
1AT6558R-5N32cc1200_balloon:AT6558R_QFN-40-1EP_5x5mm_P0.4mm_EP3.4x3.4mmU401
1BATT padscc1200_balloon:SolderPad_Wire_1x02_P3.0mmJ101
1BME688Package_LGA:Bosch_LGA-8_3x3mm_P0.8mm_ClockwisePinNumberingU503
1BMV080cc1200_balloon:Kyocera_046844713002846_FPC-13_P0.30mmJ501
1CC1200Package_DFN_QFN:Texas_RHB0032E_VQFN-32-1EP_5x5mm_P0.5mm_EP3.45x3.45mmU301
1Conn_01x02Connector_PinHeader_1.00mm:PinHeader_1x02_P1.00mm_VerticalJ1
1DMG3401LSN-7Package_TO_SOT_SMD:SOT-23Q101
1GNSS TCKTestPoint:TestPoint_Pad_1.0x1.0mmTP401
1GNSS TMSTestPoint:TestPoint_Pad_1.0x1.0mmTP402
1GNSS patch 15x15mmcc1200_balloon:Patch_AC33154-1T_15x15mmJ401
1GPIO0TestPoint:TestPoint_Pad_1.0x1.0mmTP301
1GPIO3TestPoint:TestPoint_Pad_1.0x1.0mmTP302
1IAB0cc1200_balloon:Jumper_3_0402JP1
1IAB1cc1200_balloon:Jumper_3_0402JP2
1LoRa ANT padsConnector_Coaxial:SMA_Samtec_SMA-J-P-H-ST-EM1_EdgeMountJ201
1PMOSPackage_TO_SOT_SMD:SOT-523Q1
1SCD40-D-R2Sensor:Sensirion_SCD4x-1EP_10.1x10.1mm_P1.25mm_EP4.8x4.8mmU501
1STATUSLED_SMD:LED_0402_1005MetricD201
1SWD+DBG padscc1200_balloon:SolderPad_1x06_P1.27mmJ202
1TCXO 26MHzOscillator:Oscillator_SMD_Kyocera_2520-6Pin_2.5x2.0mmX401
1Wio-E5cc1200_balloon:WIO-E5U201

Questions

How big is the Cc1200-balloon PCB?

It measures 50 × 30 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Cc1200-balloon use?

108 parts, built around the AT6558R-5N32, CC1200RHB, WIO-E5 and AS3935-BQFT. 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 Cc1200-balloon KiCad files?

From the tmpk13/cc1200-balloon repository on GitHub, at the commit this page was made from: the board is cc1200_balloon.kicad_pcb and its schematic cc1200_balloon.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Cc1200-balloon design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 4 layersLora node, the printed circuit board in 3D

    Lora node

    Mehdi-Ldj/lora-ble-sensor-node

    Off-grid LoRa/BLE sensor node — 868 MHz LoRa, 2.4 GHz BLE, solar/LiFePO4

    110 partsCERN-OHL-P-2.0
  • 2 layers100 × 75 mmAirQualityPCB, the printed circuit board in 3D

    AirQualityPCB

    leslier7/AirQualityPCB

    MAE 5220 Air Quality Board

    57 parts
  • 4 layers130 × 105 mmHomeDeck, the printed circuit board in 3D

    HomeDeck

    Kilan777/HomeDeck

    Jarvis HomeDeck: a Raspberry Pi CM4 carrier board and voice-assistant software for a 7-inch smart display (KiCad hardware, generated from Python, plus the Python/JS assistant)

    228 parts1
  • 4 layers36.5 × 69 mmStorm tracker, the printed circuit board in 3D

    Storm tracker

    solderable/storm-tracker-hardware

    Open-source-ready Storm Tracker hardware design, documentation, BOM, and manufacturing package

    102 parts58
  • 4 layers100 × 80 mmLoRa COW, the printed circuit board in 3D

    LoRa COW

    JuanVicaria/MUUU

    MUUU!: Livestock Smart Collar 🐮

    117 parts5
  • 4 layers260 × 110 mmPandore, the printed circuit board in 3D

    Pandore

    filliformes/pandore

    pandore is an open-source digital audio instrument protyping platform based on the LattePanda Mu.

    804 parts2
  • 2 layers50 × 45 mmPowerCutoffBoard1, the printed circuit board in 3D

    PowerCutoffBoard1

    ararobo/GN10RemoteEmergencyStop

    PowerCutoffBoard and RemoteSwitchBoard created by Gento Aiba.

    46 parts1
  • 4 layers50 × 80 mmSensBoard, the printed circuit board in 3D

    SensBoard

    Hazel-H-Chen/PocketSens

    Microcontroller based sensor suite for portable environmental measurements.

    62 parts1MIT