Skip to the content
2 layers38.1 × 63.5 mmSstv backpack, the printed circuit board in 3D

A ESP32-CAM SSTV backpack for the Baofeng UV-5R + others!

Size
38.1 × 63.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
29
Nets
39
Pads
111
Tracks, vias
162, 10
Pours
2
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
24 Aug 2025
Updated
22 Nov 2025

Overview

Sstv backpack is an open-source printed circuit board by vaugerbird, from the vaugerbird/sstv-backpack repository on GitHub, published under the GPL-2.0 licence. It is a 2-layer board of 38.1 × 63.5 mm with 29 parts on 39 nets, routed with 162 tracks and 10 vias.

It is built around the ESP32-CAM, FT231XS-R and CPT-9019B-SMT-TR, with the LM2940IMPX-5.0/NOPB-HXY, MMBT3904 and SLW-1276864-4A-D among its other parts. Its parts include 6 capacitors, 5 resistors, 4 diodes, 3 connectors and 2 ICs. It belongs with the ESP32 and RISC-V boards of this library.

Main components

6

README

README.md

sstv-backpack

A ESP32-CAM SSTV backpack for the Baofeng UV-5R and others!

Project Description

Turn your HT into a point-and-shoot camera!

This project relies on using an ESP32 connected to a handheld transceiver to send SSTV (Slow Scan TeleVision) images. Any combination of HT and ESP32-CAM can send a picture, but the hardware in this repository is specifically designed to work!

To decode the images, another radio must be used and connected to any device that can run a decoder program. I personally use MMSSTV on my PC with a USB soundcard, or my phone running Robot36 and listening to the radio with the microphone.

Here's some questions I've been asked in the past:

  • Why?
    • This is a term project that I created for my college ARC that I'm the president of! We are currently assembling v1.1 and we plan on using the completed projects to do a SSTV scavenger hunt. This consists of a list of things to take pictures of around campus, where the hunter will take a picture of the required object, send the image back to the control room (clubroom), and the point will be awarded to the hunter/team!
  • How does this work?
    • In short, the ESP32-CAM captures a frame, converts the image into the appropriate encoded audio for SSTV, keys the PTT on the HT, and plays the audio through the microphone port. The specifics of the encoding process are somewhat black magic to me as I didn't create the underlying code, but as far as I understand, the encoding is done by applying a few math functions to the pixels stored in the framebuffer, and converted into audio.

Hardware Revisions

I currently have 2 hardware revisions available, with a 3rd planned:

  1. v1.0:
    • Mostly through-hole and completely hand-solderable
    • Simplest version with only a voltage regulator circuit, PTT circuit, 2 switches, a buzzer, and the ESP32-CAM
    • Requires external board for flashing and a serial monitor
  2. v1.1:
    • 2 sub-versions:
      • v1.1.1: CH340C version, uses the CH340C for USB-to-UART and has CC resistors for full USB type C compatibility.
      • v1.1.0: FT231XS version, uses the FTDI FT231XS for USB-to-UART and does not have CC resistors. I don't recommend this version for many reasons, unless it is difficult to get the CH340C.
    • Still mostly through-hole and hand-solderable, albeit with some fine-pitch components like the USB-to-UART chip.
    • Retains all the same functionality of v1.0, but adds a USB-to-Serial chip for flashing and a serial monitor.
    • The board is quite cramped and may be hard to work with.
  3. v1.2 (WIP):
    • Switch to a mostly top-mounted SMD design, while still being hand-solderable
    • Retain all features of the v1.1 board
    • Maybe add battery charging circuitry?

Assembly Instructions

Better (printable) instructions coming soon!

  1. Upload your desired Gerber file to your favorite PCB manufacturer. I recommend OSHPark for US-made, decent-priced priced small-batch PCBs. JLCPCB or PCBWay are both great for cheap, high quality PCBs, if you don't mind waiting.

  2. Order the required parts using the proper BOM for v1.0 or v1.1 from your favorite parts supplier.

  3. Once all parts arrive, assemble the board. There isn't much of a technique to it, just start with the lowest profile parts first like the diodes, resistors, and chips, and work your way up.

  4. Once the board is complete, print the case using one of the included STLs. Currently, the Baofeng UV-5R is the only supported radio, but the Inventor 2025 and STEP files are included, and help with additional radio models is always appreciated!

    • I used the standard settings (0.2mm) on my print, with supports on, and the case interior facing the build plate.

    • The case requires these additional parts:

      • 4 - M3 brass het set inserts
      • 4 - M3 x 6mm screws (preferably hex head)
      • 4 - M2 x 4mm screws
      • 1 - Radio cable (I just cut the end off of a cheap Baofeng speaker-mic, it was cheaper than using an unterminated cable.)
  5. After you have the hardware assembled, the next thing to do is upload the code!

Programming Instructions

  1. Ensure that you have this link added to the 3rd party boards section of the Arduino IDE (Found under File -> Preferences -> Additional board manager URLs):
text
https://dl.espressif.com/dl/package_esp32_index.json
  1. From the board manager, install the newest version of the ESP32 board definitions.

  2. Set the board model to "AI Thinker ESP32-CAM" and select the appropriate COM port.

  3. Change the text options on lines 37 and 38 of sstv-backpack.ino to reflect your callsign and desired splash text.

    • The color of the top and bottom text can be changed with the definitions in lines 24-31.
  4. Uncomment line 21 #define USE_FLASH if you want to use the flash LED (Turns on a high intensity white LED on when framegrabbing).

  5. At line 447, set 1 = HIGH or 0 = LOW properly reflect your CAPT_BTN wiring (GND for LOW, or +3.3V for HIGH)

  6. Between line 452-456, choose the correct button pull-up/pull-down configuration. The button is set to pull-up by default to mirror the PCBs. (Button connects to GND when pressed)

  7. Inside the "camera.h" file you can choose between two profiles, DAYLIGHT and HOME. Feel free to modify settings to best suit your case.

    • Notes from IU5HKU:
      • Keep in mind that this cheap sensor struggles a lot in poor light scenarios, so don't expect a picture like your Fujifilm camera.
      • A quick search online can lead you towards the proper settings values you need.
  8. All the board settings can be left alone except for selecting the correct COM port.

  9. Upload the code!

Contributors

A huge thank you to our contributors for this project! I'm pretty bad with code so all help is greatly appreciated!

  • IU5HKU / Marco - Updated the code to work with the newest version of the ESP32 board definition and improved the readability/usability of the code!
  • IU5HKU / Marco - Updated the code to work with deepsleep/wakeup ESP32 functions (maximize battery life).

Licensing

  • The main program and supporting libraries are licensed as CC BY-NC-SA 4.0 and are based on the program/libraries from desafioinventor on Instructables.
  • The case design is roughly based on this design by HStakhiv on Thingiverse. The original is licensed under CC BY. My case design falls under the GPL-2.0 license.
  • The remaining contents of this repository are designed by me (and contributors!), and are licensed under the GPL-2.0 license.

Parts

29
QtyValueFootprintReferences
21N4148Diode_SMD:D_SOD-123D3, D4
21N5819Diode_SMD:D_SOD-123D1, D2
227ΩResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1, R2
24.7kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR3, R4
247pFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC3, C4
10.47uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC2
1100nFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC6
110kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR5
110nFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC5
122uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1
1CPT-9019B-SMT-TRBuzzer_Beeper:Buzzer_CUI_CPT-9019S-SMTBZ1
1Conn_01x02_PinConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ2
1Conn_01x03_PinConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ1
1ESP32-CAMESP32-CAM:ESP32-CAMU1
1FT231XSPackage_SO:SSOP-20_3.9x8.7mm_P0.635mmU2
1LM2940IMPX-5.0/NOPBPackage_TO_SOT_SMD:SOT-223-3_TabPin2VR1
1MMBT3904Package_TO_SOT_SMD:SOT-23Q1
1SLW-1276864-4A-DSwitchSPDT:SW_SLW-1276864-4A-DSW2
1SW_PushButton_Switch_SMD:SW_Push_1P1T_NO_CK_PTS125Sx43PSMTRSW1
1USB_C_Receptacle_USB2.0_14PConnector_USB:USB_C_Receptacle_GCT_USB4085J4

The 25 most common of 29 parts.

More from vaugerbird/sstv-backpack

4
  • 2 layers38.1 × 63.5 mmSstv backpack v1.1, the printed circuit board in 3D

    Sstv backpack v1.1

    vaugerbird/sstv-backpack

    A ESP32-CAM SSTV backpack for the Baofeng UV-5R + others!

    28 parts94GPL-2.0
  • 2 layers38.1 × 63.5 mmSstv backpack v1.1.1, the printed circuit board in 3D

    Sstv backpack v1.1.1

    vaugerbird/sstv-backpack

    A ESP32-CAM SSTV backpack for the Baofeng UV-5R + others!

    26 parts94GPL-2.0
  • 2 layers38.1 × 63.5 mmSstv backpack v1.0.1, the printed circuit board in 3D

    Sstv backpack v1.0.1

    vaugerbird/sstv-backpack

    A ESP32-CAM SSTV backpack for the Baofeng UV-5R + others!

    16 parts94GPL-2.0
  • 2 layers38.1 × 63.5 mmSstv backpack v1.0.0, the printed circuit board in 3D

    Sstv backpack v1.0.0

    vaugerbird/sstv-backpack

    A ESP32-CAM SSTV backpack for the Baofeng UV-5R + others!

    13 parts94GPL-2.0

Similar boards

  • 2 layersBrainBoard, the printed circuit board in 3D

    BrainBoard

    PumpkinClouds/Ford_F150_Raptor_SumoBot_AL_Trim

    Bot code and pcb for sumo bot competition. (Asgore's fault)

    18 parts2GPL-3.0
  • 4 layers120 × 70.2 mmWallNet Main, the printed circuit board in 3D

    WallNet Main

    Jvillaso/WallNet

    The WallNet

    90 parts1
  • 4 layers41.6 × 36 mmEpaper smart watch, the printed circuit board in 3D

    Epaper smart watch

    AeroX2/aerox2.github.io

    One repository and npm installation builds the workshop at jamesridey.dev and the professional site at cv.jamesridey.dev.

    102 parts
  • 2 layers73 × 93 mmSCARA project, the printed circuit board in 3D

    SCARA project

    Paka-bot/2-axis-articulated-robotic-arm-with-custom-PCB

    18 parts1
  • 4 layers60.4 × 46.1 mmGoldenForm 1, the printed circuit board in 3D

    GoldenForm 1

    Athyo30/PCB

    Contains some PCBs by Atharva.

    70 partsMIT
  • 2 layers71 × 68.9 mmHeart Pendant, the printed circuit board in 3D

    Heart Pendant

    chasestuard07/Breathing-LED-Heart-PCB

    Custom battery-powered PCB featuring LEDs that turn on and off with a breathing effect.

    20 parts
  • 2 layers21.7 × 10 mmSensor Unit, the printed circuit board in 3D

    Sensor Unit

    Dooganar/engg3800-t3-eaar-pcb-design

    A repo used to track and collaborate on the pcb design for the University of Queensland "Team Project II" course.

    164 parts

Questions

How big is the Sstv backpack PCB?

It measures 38.1 × 63.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Sstv backpack use?

29 parts, built around the ESP32-CAM, FT231XS-R, CPT-9019B-SMT-TR and LM2940IMPX-5.0/NOPB-HXY. 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 Sstv backpack KiCad files?

From the vaugerbird/sstv-backpack repository on GitHub, at the commit this page was made from: the board is hardware/v1.2/sstv-backpack.kicad_pcb and its schematic hardware/v1.0/Old v1.0.0 Files/sstv-backpack-v1.0.0.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Sstv backpack design in my own project?

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