Skip to the content
PCBKitNew board
2 layers38 × 42 mmSpectrometer, the printed circuit board in 3D

Spectrometer

dpohanlon/isaac1

Reconstructing low-resolution spectra from Osram sensors

Size
38 × 42 mm
Copper layers
2
Thickness
1.6 mm
Parts
20
Nets
13
Pads
49
Tracks, vias
175, 19
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
13 Sep 2025
Updated
23 May 2026

Overview

Spectrometer is an open-source printed circuit board by dpohanlon, from the dpohanlon/isaac repository on GitHub, published under the MIT licence. It is a 2-layer board of 38 × 42 mm with 20 parts on 13 nets, routed with 175 tracks and 19 vias.

It is built around the AP2112K-1.8 and PCA9306D. Its parts include 8 resistors, 3 ICs, 2 capacitors and 1 diode. It belongs with the sensors and measurement boards of this library.

Main components

2

README

README.md


Reconstructing low-resolution spectra from Osram sensors

Introduction

The Osram AS7341 IC is an 11 channel spectral sensor, with sensitivity from 350nm to 1000nm. Sensitivity is provided by various filters that correspond to 11 spectral bins that are read out by an ADC. These bins however are not evenly spaced in wavelength, bands overlap, and their spectral response is non-uniform over their wavelength band. Therefore with knowledge of the frequency response of each filter, we can deconvolve the signal according to the frequency response of each channel and reconstruct the original spectrum.

From the spectral response listed in the AS7341 datasheet, the FWHM resolution across the wavelength range can be seen in the plot below:

This is currently set up for the AS7341, but in future will also support TCS3448 (on its own and in combination with AS7341). Very preliminary prototype hardware designs for a TCS3448 interface board are available in the hardware/TCS3448_board directory.

Installation

This project uses Poetry for dependency management. To install the package along with its dependencies, run:

bash
poetry install

Usage

Most of the heavy lifting is done by the SpectrumSolver, which takes a set of reference points and a wavelength grid as input. This object can then be used to 'solve' for the original spectrum when provided ADC counts, using Tikhonov regularised least squares. The reference points should correspond to a NumPy array of shape (n_points, n_bins) (seeextract_reference.py), describing the frequency response of the wavelength bin, and therefore y_meas is expected to be a NumPy array of shape (n_bins,).

python
from spectrum.solver import SpectrumSolver

solver = SpectrumSolver.from_reference_points(reference, wavelength_grid)

y_out = solver.solve(y_meas, lam_smooth=1e-5, mu=1e-8)

The scripts/ directory contains helper programs:

  • extract_reference.py – extract response curves from a PDF and save them to an .npz file.
bash
python scripts/extract_reference.py sensor.pdf curves.npz
  • fwhm_scan.py – scan a narrow Gaussian across wavelengths and plot the recovered FWHM resolution.
bash
python scripts/fwhm_scan.py curves.npz out.png

Parts

20
QtyValueFootprintReferences
64.7kResistor_SMD:R_0805_2012MetricR1, R2, R3, R4, R5, R6
6TestPointTestPoint:TestPoint_Pad_D2.0mm3.3V, GND1, GPIO1, GPIO2, SCL1, SDA1
21.0uCapacitor_SMD:C_0603_1608MetricC1, C2
11kCapacitor_SMD:C_1206_3216MetricR7
1AP2112K-1.8Package_TO_SOT_SMD:SOT-23-5U2
1LEDLED_SMD:LED_1206_3216MetricD1
1PCA9306DPackage_SO:SO-8_3.9x4.9mm_P1.27mmU3
1RResistor_SMD:R_0402_1005MetricR8
1~Sensor:TCS3448U4

Questions

How big is the Spectrometer PCB?

It measures 38 × 42 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Spectrometer use?

20 parts, built around the AP2112K-1.8 and PCA9306D. 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 Spectrometer KiCad files?

From the dpohanlon/isaac repository on GitHub, at the commit this page was made from: the board is hardware/TCS3448_board/spectrometer.kicad_pcb and its schematic hardware/TCS3448_board/spectrometer.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Spectrometer design in my own project?

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

Similar boards

  • 4 layers27 × 80 mmLedmatrix, the printed circuit board in 3D

    Ledmatrix

    bitluni/Mdot2Matrix

    276 parts104MIT
  • 2 layers91.3 × 53.3 mmTimep, the printed circuit board in 3D

    Timep

    Matir/timep

    Test Interface for Multiple Embedded Protocols

    89 parts25Apache-2.0
  • 4 layers39 × 54 mmCaravel mvp, the printed circuit board in 3D

    Caravel mvp

    TinyTapeout/caravel-mvp-pcb

    the minimum necessary to use a Caravel chip (Google MPW or chipIgnite)

    58 parts8Apache-2.0
  • 4 layers61.8 × 27.5 mmAudio Processing HW V1.0, the printed circuit board in 3D

    Audio Processing HW V1.0

    aitesam961/OpenADSP

    An Embedded Digital Signal Processing Device for Audio signals.

    83 parts4GPL-3.0
  • 2 layers45 × 35.5 mmWearable revB, the printed circuit board in 3D

    Wearable revB

    AhmedDoesECE/wearable-health-monitor

    45 parts1MIT
  • 2 layers51.3 × 20.3 mmRpi 8x2 v1, the printed circuit board in 3D

    Rpi 8x2 v1

    charkster/rpi_level_shifter_v1

    rpi_level_shifter_v1

    18 parts1MIT
  • 2 layers26.9 × 38.3 mmXiao level shifter v1, the printed circuit board in 3D

    Xiao level shifter v1

    charkster/xiao_rp2040_level_shifter_v1

    Add-on PCB board for Seeed Studio Xiao RP2040, which provides 1.2V and 1.8V selectable level-shifting.

    14 parts1MIT
  • 2 layers29 × 23 mmMCU, the printed circuit board in 3D

    MCU

    Ironman-007/Digital_Artifact

    Input devices: - mouse encoder: https://www.amazon.com/gp/product/B0CF9FS3QS/ref=ppxyodtbasintitleo00s00?ie=UTF8&psc=1 - thumb joystick: https://www.adafruit.com/product/5628 - thumbwheel: -…

    36 parts1