All-In-One Gamma-Ray Spectrometer

Open hardware for a small all-in-one gamma-ray spectrometer using a popular NaI(Tl) scintillation crystal and a Raspberry Pi Pico.

Similar projects worth following
Using a small custom PCB, a Raspberry Pi Pico microcontroller and a scintillator you can build your own gamma spectrometer! The needed processing and multi-channel analyzer are all on-board so no external parts are needed, except something to look at the data (with a screen).

This detector uses a silicon photomultiplier (SiPM) instead of the usual photomultiplier tubes that are more common with these types of DIY projects. This means that the whole assembly is much smaller and also safer, because no high voltages are needed! Also in contrast to projects like theremino you don't strictly need a computer or even an external sound card -- everything is self-contained. You can do standalone measurements using only a USB power cable and save the spectra to the Pico's flash storage or connect to your PC via the Serial-over-USB connection.

The principle of operation for the detector looks like this:

Here are some of the most important key facts:

  • Compact design: Only 60 x 60 mm (not including scintillator).
  • All-in-one detector: No external sound card required.
  • Micro-USB serial connection and power.
  • Easily programmable using the Arduino IDE.
  • Low-voltage device: No HV needed for PMT.
  • Low power consumption: ~25 mA @ 5V.
  • Geiger Mode: Capable of up to 30,000 cps without energy measurement.
  • Default Mode: Capable of up to 10,000 cps while also measuring energy.
  • 4096 ADC channels for the energy range of about 30 keV to 1300 keV.

The PCB is single-sided and has only two layers so that it is easy/cheap to manufacture and assemble by hand. I also chose to use only 0805 size components that can still be easily hand-soldered with some practice. This is what the PCB front side looks like:

The 2x3 female pin header should be facing the back-side so that the SiPM board plugs in correctly!

Depending on the scintillator size (which changes the amount of photons emitted), you'll probably need to change the gain resistors of the first preamp. This will only be done once, since you probably don't switch scintillators on a daily basis. By doing it this way, best performance and consistency are ensured. I'm using a 30.5 cm^3 scintillator and a gain of about 69 for all of the measurements below. If you know your scintillator volume you can easily adjust the gain by the volume fraction.

To analyze the recorded spectra and plot the serial data live, I have set up a progressive web app. With it you can download and export spectrum files, connect via the serial interface straight to the Pico and much more!

Some example spectra:

Spectrum of a cup with Uraninite

Spectrum of an ionization smoke detector with 0.9µC of Am-241 inside:

More information can be found in the GitHub repo!


Schematic of the main detector board

Adobe Portable Document Format - 97.55 kB - 05/02/2022 at 11:29



BOM for the main detector board

ms-excel - 3.58 kB - 05/02/2022 at 11:29



Schematic of the SiPM carrier board

Adobe Portable Document Format - 26.73 kB - 05/19/2022 at 15:34



BOM for the SiPM carrier board

ms-excel - 964.00 bytes - 05/19/2022 at 15:34


  • 1 × Raspberry Pi Pico Microcontroller and heart of this detector
  • 1 × MicroFC-60035 SiPM The silicon photomultiplier used with the scintillator
  • 1 × SiPM carrier PCB Production-ready gerber file in GitHub repo
  • 7 × SMD components SiPM board See BOM for exact parts
  • 1 × Main detector PCB Production-ready gerber file in GitHub repo

View all 6 components

  • New SiPM carrier board

    NuclearPhoenix05/19/2022 at 10:52 0 comments

    I'm currently working on a new detector board that makes this whole thing more modular and usable. It is going to include variable SiPM bias voltage and preamp gain this time. There will also be a better option for mounting than just the pin header now. And last but not least, I'll change the preamp and SiPM DC/DC converter to fit better parts!

    In the mean time there is a new SiPM carrier board design! It's way smaller with 18 x 18 mm and also less stupid with the holes in the PCB, because there are no more holes (well, except for two tiny vias) that could make it harder to isolate the sensor from light. Enjoy!

    Link to the GitHub repo

View project log

  • 1
    Solder SiPM carrier board components

    All the SMD parts, the pin header and the SiPM itself. Orient yourself with the schematic and BOM.

  • 2
    Couple SiPM with scintillator

    Center the SiPM on the scintillator crystal and put some silicon grease between the two parts to optimize the coupling (and minimize reflections)

  • 3
    Wrap scintillator assembly

    Use black electrical insulation tape to wrap the whole assembly except for the pin header, of course. This will reduce light passing to the SiPM to an absolute minimum, otherwise it won't work properly. You should use multiple layers of tape just to be sure.

View all 8 instructions

Enjoy this project?



Wesley Ellis wrote 05/19/2022 at 00:36 point

Neat project, but I think there's a typo in "a USB power cable and safe the spectra to the Pico's flash storage" where safe should be save

  Are you sure? yes | no

NuclearPhoenix wrote 05/19/2022 at 09:17 point

Yes, thank you!

  Are you sure? yes | no

yahyabangash2004 wrote 05/06/2022 at 16:06 point

Good initial

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates