SpaceCommsKit · SCK-PBL-1 · Payload Board

SCK-PBL-1
Standalone Dev Board. Bolt-On Payload.

A Raspberry Pi Pico payload board with GPS, a barometric altimeter, a camera, and SD storage — built to bolt directly onto an SCK-915 or SCK-2400 for HAB and CubeSat missions. Every Pico pin is broken out and the firmware is open source, so it works just as well as a standalone board for any project that needs this sensor stack, radio or no radio.

The Board

Bolt-On or Standalone — Same Board

SCK-PBL-1 was designed to sit on top of an SCK-915 or SCK-2400 radio board, but nothing about it requires a radio at all. Every subsystem inits and fault-flags independently, and every GPIO — used or not — is on a header.

[ SCK-PBL-1 board photo ]

Bolt-On Mode

Mounts to an SCK-915 or SCK-2400 Mini over a 4-pin UART header (GND/RX/TX/+3V3). Same ESP-framed command protocol on both, so the same firmware runs unmodified against either radio.

ParameterValue
Radio interfaceUART0, ESP framing, 115200 baud
Compatible radiosSCK-915 (CC1110) & SCK-2400 Mini (CC2652P)
Command set10 opcodes — PING through BEACON_CTRL
Autonomous beaconFused GPS+baro every 10s
[ Standalone breakout headers photo ]

Standalone Mode

Power it from LiPo, wall adapter, or raw wire and drive it from USB REPL or your own UART host — no SpaceCommsKit radio board required. `main.py` is open source and built to be extended.

ParameterValue
Power inputLiPo (JST-PH), 5.5×2.5mm barrel jack, raw wire
Onboard regulation5V (LM2576-5.0) + 3.3V (MC33269) rails
Breakout headersFull 40-pin Pico breakout (J1/J2) + 3-pin SWD debug (J3)
FirmwareMicroPython, open source, documented extension pattern
Bolt-On System Overview

How It Works — Bolt-On to a Radio

In bolt-on mode, the Pico acts as a remote payload processor. The radio board (SCK-915 or SCK-2400 Mini) receives RF commands and forwards them to the Pico over UART. The Pico handles GPS, altimeter, camera, storage, and telemetry.

// Complete RF payload pipeline — fused telemetry + imaging

Windows Ground Station ──── COM · USB-Serial ────► Board 0001
RF 915MHz · CC1190 PA/LNA ────► Board 0004
UART0 · 115200 baud ────► Raspberry Pi Pico
UART1 · 9600 baud ────► GPS6MV2 (NEO-6M)
I2C1 · addr 0x76 ────► MS5611 Altimeter
SPI0 · 400kHz ────► ArduCAM Mini-Cam-Plus
SPI0 · CS GP17 ────► MicroSD Card
🔌
Running Standalone Instead?

Skip the radio board entirely — power SCK-PBL-1 from LiPo/wall/raw wire and talk to it over USB REPL, or wire UART0 to any host of your own. Every subsystem below still works the same way; you're just choosing what sits upstream of it. See §Standalone Use below.

📡

Fused Beacon

GPS + baro fused packet fires every 10 seconds autonomously. No ground command needed during flight. 8-field telemetry.

📷

SNAP Command

Send PICO Snap from ground station. Pico captures JPEG and saves to SD. Returns filename and size confirmation.

📋

LIST Command

Request SD card file listing over RF. Returns comma-separated filenames displayed in the Files tab.

⬇️

GET Command

Transfer files in 200-byte chunks over RF. Ground station reassembles and saves to Images\ folder automatically.

Command Reference

Pico Sub-Opcodes (opcode 0x20)

All Pico commands use opcode 0x20 (PICO_MSG) with a sub-opcode byte as the payload. Responses are ESP-framed ASCII strings returned as ACK payloads.

Sub-opcodeCommandResponse
0x00PINGPICO:ACK
0x01READ_TEMPTEMP:xx.xxC
0x02SNAPSNAP:OK:<filename>:<bytes>
0x03LISTLIST:<file1>,<file2>,...
0x04GET_INFOINFO:<filename>:<bytes>:<chunks>
0x05GET_CHUNKCHUNK:<index>:<200 bytes>
0x06DELETEDEL:OK:<filename>
0x07GET_GPSGPS:lat,lon,gps_alt,sats,fix,hpa,baro_alt,temp_c
0x08GET_BAROBARO:hpa,alt_m,temp_c
0x09BEACON_CTRLBEACON:ON / BEACON:OFF
// Fused GPS + Baro beacon format (autonomous every 10 seconds)
GPS:36.058910,-87.384024,254.5,8,1,989.31,201.3,20.56
                                                 └ baro temp °C
                                          └ baro altitude metres
                                      └ pressure hPa
                                  └ fix (1=valid)
                                └ satellites
                          └ GPS altitude m
                └ longitude
        └ latitude
No Radio Required

Using SCK-PBL-1 Standalone

Because the firmware runs on stock MicroPython with no dependency on a specific radio board, you can build with SCK-PBL-1 the same way you'd build with any Pico dev board — just with GPS, altimeter, camera, and SD already sorted out.

🔌

Power It Your Way

LiPo battery over the onboard JST-PH connector, a 5.5×2.5mm barrel jack for wall power, or raw wire straight to the regulators. Onboard LM2576-5.0 and MC33269-3.3 regulation gives you clean 5V and 3.3V rails either way.

🧩

Every Pin, On a Header

The Pico sits centered with a full breakout header down each side — every GPIO, power pin, and the SWD debug interface (SWDIO/GND/SWCLK) broken out separately, whether or not the stock firmware uses it.

🛠️

Strip It Down or Extend It

Camera, SD, GPS, and altimeter each have independent init and fault flags — pull out what you don't need. Add new commands to `main.py` following the documented opcode pattern, or bypass the command protocol entirely and drive the board from USB REPL.

📖

Open Source, Start to Finish

`main.py` is the same firmware whether you're bolted to an SCK-915, an SCK-2400, or nothing at all. Read it, fork it, ship your own payload on top of it — we'd like to hear what you build.

Bill of Materials

What's On the Board

A stock SCK-PBL-1 ships with all of this already populated and wired — you don't need to source or wire anything below to use one. This is here as a reference for replacement parts, or if you're replicating the design with discrete modules instead of buying a board.

RefPartDescriptionSource / Part #
U1Raspberry Pi PicoRP2040, MicroPython firmware
U3LM2576-5.0WU-TR (TO-263-5)5V rail regulator, fixed output
U4MC33269DR2-3.3G3.3V LDO regulatorDigi-Key MC33269DR2-3.3GOSCT-ND
InductorBuck regulator inductor (LM2576 stage)Digi-Key 495-4547-1-ND
J10S2B-PH-K-SBattery power connector, JST-PH 2-pinDigi-Key 455-1719-ND
J954-00134Power adapter jack, R/A PCB, 5.5×2.5mm barrelDigi-Key 839-54-00134-ND
U9MEM2080-00-128-00-AmicroSD card slotDigi-Key 2073-MEM2080-00-128-00-ACT-ND
U5MS561101BA03-50MS5611 barometric pressure/altitude sensorDigi-Key 223-1622-1-ND
ArduCAM Mini-Cam-Plus (OV2640)SPI/I2C camera module
GPS6MV2u-blox NEO-6M GPS module
📡
MS5611 Sourcing Alternative

If replicating the design on a breadboard, the MS5611 can also be sourced pre-mounted on an SPI/I2C breakout board rather than the bare SMD chip — see smart-prototyping.com.

DIY / Replacement Reference

Sourcing These Individually

If you're building an equivalent from a bare Pico plus discrete modules — or replacing a damaged part — these are the module-level parts and general sourcing notes that match the onboard design.

ComponentNotesLink
Raspberry Pi Pico W RP2040. Micro USB cable required. Adafruit / Digi-Key
GPS6MV2 (NEO-6M breakout) UART GPS module. Connect via UART1. Firmware configures airborne mode at boot — rated to 50km. Amazon ~$8
MS561101BA03-50 Aviation-grade barometric altimeter. I2C1 address 0x76. PS pin must tie to 3.3V for I2C mode. 10–1200 hPa — rated above 45km altitude. Digi-Key 223-1622-1-ND
ArduCAM Mini-Cam-Plus (OV2640) SPI camera module. Must be direct-wired to Pico — not through a breadboard. Breadboard connections are unreliable at SPI speeds. Amazon →
SPI MicroSD Card Adapter Important: Use an adapter with 5V power input and 3.3V logic (level-shifted). Connect VCC to Pico VBUS (5V), not 3.3V. Amazon →
MicroSD Card 32GB Format as FAT32 before use. Any retailer
USB to Serial FTDI Adapter 3.3V TTL. Used to connect board 0001 to your Windows PC. Amazon →
Wiring Guide

Complete Wiring — All Devices

All SPI devices share the Pico's SPI0 bus with separate chip select pins. GPS and altimeter use separate I2C and UART buses. Follow this exactly — pin assignment matters.

Already Wired on a Stock Board

On a production SCK-PBL-1 this pinout is fixed in the PCB — nothing to wire by hand. It's documented here because it's exactly what the firmware expects, so it's the reference if you're extending firmware, adding your own sensor to a free GPIO, or replicating the design on discrete modules.

Board 0004 → Pico

Board 0004 PinPico Pin
P1_5 (UART0 TX)GP1 (UART0 RX)
P1_4 (UART0 RX)GP0 (UART0 TX)
GNDGND

GPS6MV2 (NEO-6M) → Pico

GPS PinPico Pin
VCC3.3V
GNDGND
TX → Pico RXGP9 (UART1 RX)
RX → Pico TXGP8 (UART1 TX)

MS5611 Altimeter → Pico

MS5611 PinPico Pin
VDD3.3V
PS ⚠️3.3V (I2C mode)
CSB3.3V
SDOGND (addr 0x76)
SDAGP2 (I2C1)
SCLKGP3 (I2C1)
GNDGND

ArduCAM Mini-Cam-Plus (OV2640) → Pico

Camera PinPico Pin
VCC3.3V
GNDGND
MISOGP16 (SPI0)
MOSIGP19 (SPI0)
SCKGP18 (SPI0)
CSGP15
SDAGP4 (I2C0)
SCLGP5 (I2C0)

SD Card Adapter → Pico

SD Card PinPico Pin
VCCVBUS (5V) ⚠️
GNDGND
MISOGP16 (shared)
MOSIGP19 (shared)
SCKGP18 (shared)
CSGP17

Status LEDs (SCK-PBL-1)

LEDColorPico Pin
CameraGREENGP10
SD CardGREENGP11
GPS FixBLUEGP12
AltimeterYELLOWGP13
FaultREDGP14

SCK-2400 Mini High-Speed Interface (SPI1)

SCK-2400 SignalPico Pin
DIO23 (SSI1 SCLK)GP26
DIO24 (SSI1 MOSI)GP27
DIO25 (SSI1 MISO)GP28
DIO26 (SSI1 CS)GP22

Wired but reserved — no command handler implemented yet. Not used with the SCK-915 bolt-on path.

Breakout Headers (Standalone)

HeaderFunction
J1 / J2Full 20-pin breakout each side — every Pico power, ADC, and GPIO pin
J3SWD debug header — SWDIO / GND / SWCLK

Pins already used by onboard subsystems are still present on the header — driving them externally will conflict with that subsystem.

SD Card Power — Critical

The SD card adapter VCC must connect to the Pico's VBUS pin (5V from USB), NOT the 3.3V pin. Using 3.3V will cause unreliable SD card operation. The camera and MS5611 use 3.3V — do not connect them to VBUS.

🔌
Camera — Direct Wire Required

The ArduCAM Mini-Cam-Plus must be connected with direct jumper wires — not through a breadboard. Breadboard connections introduce enough resistance and capacitance to make SPI communication unreliable at 400kHz.

📡
MS5611 PS Pin — I2C Mode Select

The PS pin on the MS5611 must be tied HIGH (3.3V) to select I2C mode. If left floating or pulled LOW, the chip enters SPI mode and will not respond on I2C. This is the most common MS5611 wiring mistake.

Setup Guide

Step-by-Step Setup

1

Install MicroPython on the Pico

Download MicroPython v1.27 for the Pico from micropython.org. Hold BOOTSEL while connecting USB, then copy the .uf2 file to the drive that appears. Install Thonny to manage files.

2

Install Pico Firmware

Open Thonny, connect to the Pico, and upload sdcard.py first, then main.py. Save main.py as main.py on the Pico root — it runs automatically at boot.

3

Wire Everything

Follow the wiring tables above. Direct-wire the camera (no breadboard). Connect SD card VCC to VBUS. Tie MS5611 PS pin to 3.3V. Connect board 0004 UART0 (P1_5 → GP1, P1_4 → GP0). Insert formatted microSD card.

4

Flash Board 0004 Custom Firmware

Board 0004 needs the custom firmware with PICO_MSG and CC1190 support. Clone github.com/eor123/openlst, build with SDCC, and flash OTA from the ground station Firmware tab. See the Developer Guide for full build instructions.

5

Power Up and Verify

Power board 0001 (5V), power board 0004, power Pico via USB. In the ground station, set HWID to 0004. Wait 5–10 seconds for Pico boot. Watch the GPS/Map tab — the fused GPS+baro beacon should start arriving every 10 seconds automatically. Status LEDs on the SCK-PBL-1 should be green.

6

Test Commands

Send PICO Ping from Custom Commands — you should see ✓ ack → PICO:ACK. Then try Get GPS from the GPS/Map tab — should populate all 8 stat panels and plot on the map.

Capture Your First Image

Send PICO Snap from Custom Commands. You'll see ✓ ack → SNAP:OK:snap_001.jpg:4617. Go to the Files tab, click Refresh List, select snap_001.jpg, click Get File. Image saves to your Images\ folder and Explorer opens automatically.

Troubleshooting

Common Issues

No GPS beacon arriving

Take GPS module near a window — NEO-6M needs open sky view. First fix can take 60–90 seconds cold start. Blue LED on SCK-PBL-1 illuminates when fix acquired. Beacon fires every 10 seconds after fix.

MS5611 not responding

Check PS pin is tied to 3.3V — this selects I2C mode. Without it the chip enters SPI mode and won't respond on I2C. Verify SDA/SCL on GP2/GP3 and address is 0x76 (SDO to GND).

PICO commands return no reply

Wait 5–10 seconds after Pico boot — camera initializes on first idle timeout. Verify UART wires (P1_5→GP1, P1_4→GP0). Confirm Pico is running main.py by checking Thonny console.

SNAP returns memory error

MicroPython heap fragmentation. Run gc.collect() before capture, or reduce camera resolution. The firmware automatically reduces resolution if memory allocation fails. Power cycling the Pico clears the heap.

SD card not mounting

SD card VCC must be on VBUS (5V pin), not 3.3V. Confirm card is formatted as FAT32. Try a different SD card — some cards are incompatible with SPI mode.

File transfer stalls or fails

Boards too close together — maintain 2–4 feet separation. Check RF link quality with Get Telem (RSSI should be above −90 dBm). Retry logic will attempt each chunk 3 times automatically.

Availability

SCK-PBL-1 — Coming Soon

SCK-PBL-1 is in active bringup — GPS, MS5611, camera, and SD are all verified working on the production layout. Sign up to be notified when boards are available.

🎈

Bolt-On Payload

Drop-in for SCK-915 or SCK-2400 Mini · GPS + baro fused beacon · camera SNAP · SD file transfer over RF

Pricing TBD

Sign up below to be notified at launch

🧩

Standalone Dev Board

No radio required · every Pico pin broken out · open-source firmware · LiPo, wall, or raw wire power

Pricing TBD

Sign up below to be notified at launch

Questions before ordering? info@spacecommskit.com  ·  Volume or university pricing available on request.

Ships to United States only. Boards are hand-assembled in Tennessee, USA.