Skip to the content
2 layers158.2 × 89.4 mmSpur demo card, the printed circuit board in 3D

Musings from my ECE undergraduate research project

Size
158.2 × 89.4 mm
Copper layers
2
Thickness
1.65 mm
Parts
150
Nets
136
Pads
583
Tracks, vias
806, 82
Pours
2
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
22 Aug 2024
Updated
21 Dec 2025

Overview

Spur demo card is an open-source printed circuit board by ericmutton, from the ericmutton/spur-project repository on GitHub. It is a 2-layer board of 158.2 × 89.4 mm with 150 parts on 136 nets, routed with 806 tracks and 82 vias.

It is built around the ESP32-C3-WROOM-02-H4, ISL91127IRNZ-T7A and PCF8575PWRE4, with the LM393, 103AT-2 and RK09711110EL among its other parts. Its parts include 40 resistors, 25 diodes, 22 capacitors, 20 switches and 7 ICs. It belongs with the radio and wireless boards and the ESP32 and RISC-V boards of this library.

Main components

6

README

README.md

spur-project

Musings in preparation for the 2025 Summer Platform for Undergraduate Research.

Getting Started

This repository contains the project files created during my Fall 2024 and Spring 2025 semesters.

Hardware

The EDA schematic captures and prototype PC boards are maintained in separate KiCAD projects in the Hardware directory.

  • Single-Cell PMIC and Switch-Mode PSU testbench
  • NiceRF SA868 walkie-talkie module breakout board

Software

The source code utilizing either the Espressif Systems ESP-IDF Arduino Core (using FreeRTOS) for experimentation or the Zephyr Standalone Application (using ZephyrRTOS) constituting the base radio platform firmware are both maintained in the Software directory.

Scope

The scope of this research project is to build a two-way radio communications platform that remains extensible in arbitrary 'all-mode' FM modulation in both firmware and hardware.

This means adopting modern real-time operating system ecosystems, particularly the two RTOS under consideration are:

For the hardware, the platform is to allow off-the-shelf (and few bespoke) integration of:

  • Wireless communications modules
    • GNSS/GPS receivers
    • Sub-Ghz transceivers
    • LoRa transceivers
  • Peripheral Human-Machine Interface Devices (HIDs)
    • Potentiometers (Volume, Frequency), Keypad (DTMF, Navigation), Display
    • Mono CW Keyer, Keyboard, and USB devices
    • External audio source/sink, external modem/vocoder

Groundwork

  • Develop a working 'two-way' radio prototype.
    • Phase out SA868 Demo Board by building a minimal breakout board
    • Make prototype mobile through a rechargable cell and JEITA charger
      • BQ24195
    • Amplify audio output of SA868 with anything other than an LM386 reference design
    • Allow end-user to enter new RX and TX frequencies
    • All settings available to the end-user
    • Persistence of settings between power cycles

Phase 1

For the purposes of this project, the SA868 is limited to arbitrary FM modes:

  • Analog FM Voice
  • Amateur Packet Reporting System (APRS)
  • Premodulated FM Waveforms

In Analog FM Voice, a parrot test or signal strength report (Readability-Strength-Tone) would be satisfactory.

Approach

A first-principles approach in designing this platform is to be taken on:

  1. inter-device communications interfacing
    • sensor device register-level configuration
    • factory firmware flashing (see DMO module)
    • microcontroller (a)synchronous peripheral utilization
  2. utilizing vendor hardware abstractions
  3. utilizing operating system abstractions
    • target hardware-application decoupling (see ZephyrRTOS)
    • communications stack normalization (see USB, IEEE 802.15.4, Bluetooth SIG)
    • tracing & debugging meta-tooling (see openocd)

Outcomes

After discovering a lack of ZephyrRTOS Charge API charge enable in the Cirrus Logic implementation of the ti,bq24190, this research project migrated to FreeRTOS. This migration allowed for the creation of bespoke 'device drivers' for the chips utilized in the radio platform. Print debugging was satisfactory in the making of the platform firmware and so the use of OpenOCD with ESP-Prog board was only researched. Zephyr abstractions listed in part 3 of approach were considered and not implemented after the migration to FreeRTOS.

The scope of this project during the one full academic semester resulted in a functional prototype of the radio platform on two breadboards capable of UHF operation of local Richardson city amateur radio infrastructure and two-way communications with a comparable handheld radio. Afterwards in the Spring 2025 semester a handheld radio form-factor two-layer PCB was designed under the Hardware/KiCAD/spur-demo directory.

This project now contains demonstrable embedded radio firmware and human-machine interface design efforts for handheld radio operation.

Parts

150
QtyValueFootprintReferences
20DDiode_SMD:D_0603_1608MetricD1:1, D1:2, D1:3, D1:4, D1:5, D2:1, D2:2, D2:3, D2:4, D2:5, D3:1, D3:2, D3:3, D3:4, D3:5, D4:1 +4
1710kResistor_SMD:R_0603_1608MetricR1, R6, R11, R12, R15, R16, R17, R18, R19, R20, R21, R22, R23, R33, R34, R40 +1
910uCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC2, C5, C6, C7, C8, C9, C14, C19, C22
5TestPointTestPoint:TestPoint_Loop_D2.54mm_Drill1.5mm_BeadedTP1, TP2, TP3, TP4, TP5
41uCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC1, C13, C20, C21
4LEDLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD3, D4, D5, D6
30.1uCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC15, C16, C17
3100kResistor_SMD:R_0603_1608MetricR13, R30, R31
20kResistor_SMD:R_0603_1608MetricR24, R25
21MResistor_SMD:R_0603_1608MetricR9, R10
21x15Connector_PinHeader_2.54mm:PinHeader_1x15_P2.54mm_VerticalJ8, J9
22.2kResistor_SMD:R_0603_1608MetricR38, R39
222uCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC10, C11
2680kResistor_SMD:R_0603_1608MetricR29, R36
1#Button_Switch_THT:SW_PUSH_6mm_H7.3mmSW17
1*Button_Switch_THT:SW_PUSH_6mm_H7.3mmSW15
10Button_Switch_THT:SW_PUSH_6mm_H7.3mmSW16
10RResistor_SMD:R_0603_1608MetricR5
11Button_Switch_THT:SW_PUSH_6mm_H7.3mmSW3
1100k 5%Resistor_SMD:R_0603_1608MetricR28
1103AT-2spur-demo:103AT2TH1
1150kResistor_SMD:R_0603_1608MetricR32
11N5819Diode_SMD:D_0603_1608Metric_Pad1.05x0.95mm_HandSolderD2
11kResistor_SMD:R_0603_1608MetricR35
11uInductor_SMD:L_Coilcraft_XxL4020L2
11uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC3
12Button_Switch_THT:SW_PUSH_6mm_H7.3mmSW4
12.27kResistor_SMD:R_0603_1608MetricR3
12.2MResistor_SMD:R_0603_1608MetricR8
12.2uInductor_SMD:L_Coilcraft_XxL4020L1
1265RResistor_SMD:R_0603_1608MetricR4
12kResistor_SMD:R_0603_1608MetricR37
13Button_Switch_THT:SW_PUSH_6mm_H7.3mmSW5
1330kResistor_SMD:R_0603_1608MetricR14
14Button_Switch_THT:SW_PUSH_6mm_H7.3mmSW7
14.7uCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC18
147nCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC4
15Button_Switch_THT:SW_PUSH_6mm_H7.3mmSW8
15.1KResistor_SMD:R_0603_1608MetricR26
15.1kResistor_SMD:R_0603_1608MetricR27
156pCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC12
16Button_Switch_THT:SW_PUSH_6mm_H7.3mmSW9
16.86kResistor_SMD:R_0603_1608MetricR2
17Button_Switch_THT:SW_PUSH_6mm_H7.3mmSW11
18Button_Switch_THT:SW_PUSH_6mm_H7.3mmSW12
19Button_Switch_THT:SW_PUSH_6mm_H7.3mmSW13
1BOOTButton_Switch_SMD:SW_SPST_CK_RS282G05A3SW1
1BQ24193RGERspur-demo:QFN50P400X400X100-25N-D_BQ24193RGERIC1
1BS0Jumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm_NumberLabelsJP8
1BS1Jumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm_NumberLabelsJP9
1BS2Jumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm_NumberLabelsJP10
1CH_LEFTJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP3
1CH_MIXJumper:SolderJumper-2_P1.3mm_Bridged_Pad1.0x1.5mmJP4
1CH_RIGHTJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP5
1Conn_01x02Connector_JST:JST_GH_SM02B-GHS-TB_1x02-1MP_P1.25mm_HorizontalJ5
1Conn_CoaxialConnector_Coaxial:SMA_Molex_73251-1153_EdgeMount_HorizontalJ2
1DOWNButton_Switch_THT:SW_PUSH_6mm_H7.3mmSW10
1DriverJumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm_NumberLabelsJP6
1ESP32-C3-WROOM-02PCM_Espressif:ESP32-C3-WROOM-02U2
1EXITButton_Switch_THT:SW_PUSH_6mm_H7.3mmSW21
1GAIN_{LOGIC}Jumper:SolderJumper-3_P1.3mm_Open_RoundedPad1.0x1.5mm_NumberLabelsJP1
1GAIN_{R}Jumper:SolderJumper-3_P1.3mm_Open_RoundedPad1.0x1.5mm_NumberLabelsJP2
1ISL91127IRNZ-T7Aspur-demo:QFN50P400X400X100-21N_ISL91127IRNZ-T7AIC3
1LEFTButton_Switch_THT:SW_PUSH_6mm_H7.3mmSW14
1LM393Package_SO:VSSOP-8_3x3mm_P0.65mmU4
1Level setpointPotentiometer_SMD:Potentiometer_Bourns_3314G_VerticalRV1
1MAX98357APackage_DFN_QFN:TQFN-16-1EP_3x3mm_P0.5mm_EP1.23x1.23mmU3
1MENUButton_Switch_THT:SW_PUSH_6mm_H7.3mmSW20
1Microphone_CondenserSensor_Audio:POM-2244P-C3310-2-RMK1
1OLED-128O064DDisplay:OLED-128O064DDS1
1OTGJumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm_NumberLabelsJP11
1PCF8575PWRspur-demo:SOP65P640X120-24N_PCF8575PWRIC2
1PSELJumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm_NumberLabelsJP7
1PTTButton_Switch_THT:SW_PUSH_6mm_H7.3mmSW19
1PeripheralsConnector_JST:JST_EH_B4B-EH-A_1x04_P2.50mm_VerticalJ1
1RESETButton_Switch_SMD:SW_SPST_CK_RS282G05A3SW2
1RIGHTButton_Switch_THT:SW_PUSH_6mm_H7.3mmSW18
1RK09711110ELspur-demo:RK09711110ELVR1
1SA868sa8x8:G-NICERF_SA868U1
1SD_CardConnector_Card:microSD_HC_Hirose_DM3AT-SF-PEJM5J3

The 143 most common of 150 parts.

More from ericmutton/spur-project

4
  • 2 layers63.7 × 105.5 mmSpur demo without display, the printed circuit board in 3D

    Spur demo without display

    ericmutton/spur-project

    Musings from my ECE undergraduate research project

    104 parts4
  • 2 layers63.8 × 105.5 mmSpur demo, the printed circuit board in 3D

    Spur demo

    ericmutton/spur-project

    Musings from my ECE undergraduate research project

    75 parts4
  • 2 layers50.8 × 32 mmBms smps testbench, the printed circuit board in 3D

    Bms smps testbench

    ericmutton/spur-project

    Musings from my ECE undergraduate research project

    32 parts4
  • 2 layers49.6 × 35.6 mmSa8x8-breakout, the printed circuit board in 3D

    Sa8x8-breakout

    ericmutton/spur-project

    Musings from my ECE undergraduate research project

    11 parts4

Similar boards

  • 2 layers59 × 42 mmKivar demo, the printed circuit board in 3D

    Kivar demo

    markh-de/KiVar

    PCB Assembly Variants for KiCad

    66 parts65MIT
  • 2 layers120 × 100 mmEnose PCB, the printed circuit board in 3D

    Enose PCB

    Tobias66662/Bachelor-Project-PCB-Designs

    PCB to be used in the Enose (for Bachelor Project)

    157 parts1
  • 4 layers56.5 × 216 mmE003 rocker, the printed circuit board in 3D

    E003 rocker

    oscar-wik/e002_rocker

    226 parts
  • 2 layers70 × 57.5 mmHmi modulino, the printed circuit board in 3D

    Hmi modulino

    OpenAir-Lab/capstone-project

    ECE 438X Senior Design Capstone Project

    74 parts3MIT
  • 2 layers123.2 × 50.2 mmI2c 24vin, the printed circuit board in 3D

    I2c 24vin

    abzman/modular-i2c-board-set

    boards designed to be used together to create a modular control system

    109 parts1Unlicense
  • 2 layers75.8 × 19.2 mm3S coinCellChargeController, the printed circuit board in 3D

    3S coinCellChargeController

    PocketConcepts/Pocket_PSU

    A variable current & voltage PSU with 3S lipo charging, balancing, and protection circuit using PPS.

    78 parts36
  • 2 layers89.3 × 52.1 mmDivergence Meter Project v2, the printed circuit board in 3D

    Divergence Meter Project v2

    waicool20/Divergence-Meter-Project-v2

    This is the second iteration of the Divergence Meter Project and another personal learning project, this time learning how to integrate Li-Ion batteries into a project, new electrical converter topologies, Rust…

    149 parts28

Questions

How big is the Spur demo card PCB?

It measures 158.2 × 89.4 mm and has 2 copper layers, 1.65 mm thick.

What parts does the Spur demo card use?

150 parts, built around the ESP32-C3-WROOM-02-H4, ISL91127IRNZ-T7A, PCF8575PWRE4 and LM393. 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 Spur demo card KiCad files?

From the ericmutton/spur-project repository on GitHub, at the commit this page was made from: the board is Hardware/KiCAD/spur-demo/spur-demo-card.kicad_pcb and its schematic Hardware/KiCAD/bms-smps-testbench/bms-smps-testbench.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Spur demo card design in my own project?

Its repository states no licence, so its author keeps all rights: ask ericmutton before reusing the design.