Pico Imaging Project · Full Replication Guide

Remote Image Capture
Over RF

A proven end-to-end pipeline: command a Raspberry Pi Pico over RF, capture a JPEG image with an Arducam OV2640 camera, and transfer it back to your Windows PC — all wirelessly.

Start Building →
System Overview

How It Works

The Pico acts as a remote payload processor. Board 0004 receives RF commands and forwards them to the Pico over UART. The Pico handles camera, storage, and file transfer.

// Complete RF imaging pipeline

Windows Ground Station ──── COM5 · 115200 baud · USB-Serial ────► Board 0001
RF 915MHz · 7.4-250kbaud · 2-FSK+FEC ────► Board 0004
UART0 · 115200 baud ────► Raspberry Pi Pico
SPI0 · 400kHz ────► Arducam OV2640
SPI0 · 400kHz ────► SD Card
📡

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 image in 200-byte chunks over RF. Ground station reassembles and saves to Images\ folder. Auto-opens Explorer.

🗑️

DELETE Command

Remove files from SD card remotely. Confirmation dialog prevents accidental deletion.

Parts List

What You'll Need

In addition to the OpenLST Explorer Dev Kit (which provides board 0004), you need these additional components for the imaging pipeline.

ComponentNotesLink
Raspberry Pi Pico Original Pico (RP2040). Micro USB cable required. May need extension cable — board 0004 must be 2–4 feet from board 0001. raspberrypi.com
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 Format as FAT32 before use. 8GB or larger recommended. Any retailer
USB to Serial FTDI Adapter 3.3V TTL. Used to connect board 0001 to your Windows PC. Included with Explorer Dev Kit. Amazon →
Jumper Wires Male-to-female and male-to-male. Use direct wires for camera — not breadboard connections. Any retailer
Wiring Guide

Complete Wiring Diagram

All three devices share the Pico's SPI0 bus with separate chip select pins. Follow this diagram exactly — pin assignment matters.

OpenLST Pico Image RF Transfer Project wiring diagram

Board 0004 → Pico

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

Arducam OV2640 → Pico

Camera PinPico Pin
VCC3.3V
GNDGND
MISOGP16
MOSIGP19
SCKGP18
CSGP15
SDAGP4
SCLGP5

SD Card Adapter → Pico

SD Card PinPico Pin
VCCVBUS (5V) ⚠️
GNDGND
MISOGP16 (shared)
MOSIGP19 (shared)
SCKGP18 (shared)
CSGP17
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 Arducam uses 3.3V — do not connect it to VBUS.

🔌
Camera — Direct Wire Required

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, causing FIFO read failures.

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 — it runs automatically at boot.

3

Wire Everything

Follow the wiring diagram above. Direct-wire the camera (no breadboard). Connect SD card VCC to VBUS. 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 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 Test

Power board 0001 (external 5V), power board 0004, power Pico via USB. In the ground station, set HWID to 0004. Wait 5–10 seconds for Pico boot and camera init. Send PICO Ping from Custom Commands — you should see ✓ ack → PICO:ACK.

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

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 FIFO error

Camera is on breadboard — direct wire required. Or SPI was corrupted by SD mount — power cycle Pico. Check camera VCC is on 3.3V not VBUS.

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.