A proven end-to-end pipeline: fused GPS + barometric telemetry beacon every 10 seconds, remote image capture over RF, SD card file management, and a complete HAB mission stack. No radio license required.
Start Building →The Pico acts as a remote payload processor. Board 0004 receives RF commands and forwards them to the Pico over UART. The Pico handles GPS, altimeter, camera, storage, and telemetry.
GPS + baro fused packet fires every 10 seconds autonomously. No ground command needed during flight. 8-field telemetry.
Send PICO Snap from ground station. Pico captures JPEG and saves to SD. Returns filename and size confirmation.
Request SD card file listing over RF. Returns comma-separated filenames displayed in the Files tab.
Transfer files in 200-byte chunks over RF. Ground station reassembles and saves to Images\ folder automatically.
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-opcode | Command | Response |
|---|---|---|
| 0x00 | PING | PICO:ACK |
| 0x01 | READ_TEMP | TEMP:xx.xxC |
| 0x02 | SNAP | SNAP:OK:<filename>:<bytes> |
| 0x03 | LIST | LIST:<file1>,<file2>,... |
| 0x04 | GET_INFO | INFO:<filename>:<bytes>:<chunks> |
| 0x05 | GET_CHUNK | CHUNK:<index>:<200 bytes> |
| 0x06 | DELETE | DEL:OK:<filename> |
| 0x07 | GET_GPS | GPS:lat,lon,gps_alt,sats,fix,hpa,baro_alt,temp_c |
| 0x08 | GET_BARO | BARO:hpa,alt_m,temp_c |
In addition to the OpenLST Explorer Dev Kit (which provides board 0004), you need these components for the full payload pipeline.
| Component | Notes | Link |
|---|---|---|
| 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 |
| MS5611 Altimeter | 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 ~$10 |
| Arducam OV2640 Mini 2MP | 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 → |
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.
| Board 0004 Pin | Pico Pin |
|---|---|
| P1_5 (UART0 TX) | GP1 (UART0 RX) |
| P1_4 (UART0 RX) | GP0 (UART0 TX) |
| GND | GND |
| GPS Pin | Pico Pin |
|---|---|
| VCC | 3.3V |
| GND | GND |
| TX → Pico RX | GP9 (UART1 RX) |
| RX → Pico TX | GP8 (UART1 TX) |
| MS5611 Pin | Pico Pin |
|---|---|
| VDD | 3.3V |
| PS ⚠️ | 3.3V (I2C mode) |
| CSB | 3.3V |
| SDO | GND (addr 0x76) |
| SDA | GP2 (I2C1) |
| SCLK | GP3 (I2C1) |
| GND | GND |
| Camera Pin | Pico Pin |
|---|---|
| VCC | 3.3V |
| GND | GND |
| MISO | GP16 (SPI0) |
| MOSI | GP19 (SPI0) |
| SCK | GP18 (SPI0) |
| CS | GP15 |
| SDA | GP4 (I2C0) |
| SCL | GP5 (I2C0) |
| SD Card Pin | Pico Pin |
|---|---|
| VCC | VBUS (5V) ⚠️ |
| GND | GND |
| MISO | GP16 (shared) |
| MOSI | GP19 (shared) |
| SCK | GP18 (shared) |
| CS | GP17 |
| LED | Color | Pico Pin |
|---|---|---|
| Camera | GREEN | GP10 |
| SD Card | GREEN | GP11 |
| GPS Fix | BLUE | GP12 |
| Altimeter | YELLOW | GP13 |
| Fault | RED | GP14 |
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 Arducam and MS5611 use 3.3V — do not connect them to VBUS.
The Arducam OV2640 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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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 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.
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.