Low-Cost Solid-State Cosmic Ray Observatory

Multiple nodes detect photons to within nanoseconds to analyze cosmic ray air showers and help solve the Greisen-Zatsepin-Kuzmin paradox.

Similar projects worth following
This is a new design for a cosmic ray observatory consisting of small, low-cost, easy-to-use, internet-connected detector nodes based on PIN diodes. Cosmic rays are particles and nuclei which bombard the earths atmosphere and create cone-shaped showers of secondary particles. Observatory nodes are able to detect and record the time of impact of single gamma ray photons of these showers to within a few nanoseconds, as well as the energy of the photon, and are low-cost enough to create cosmic ray observatories of unprecedented size. Nodes communicate to a central database to upload data, which is later analyzed to determine the energy, angle, and location of the original cosmic rays. This information can be used to learn about the origin of ultrahigh-energy cosmic rays and can help solve the Greisen-Zatsepin-Kuzmin paradox, in which the experimentally determined cosmic ray energies are higher than theoretically possible.


Cosmic rays are particles and nuclei which bombard the earth from all directions [1]. The Greisen-Zatsepin-Kuzmin (GZK) limit is a theoretical upper limit on the energy of cosmic rays from distant sources of 5*10^19 eV. The limit is set by their propagation to us through the cosmic microwave background radiation (CMBR) [4]. However, cosmic ray energies have been experimentally determined to vary from 10^8 eV to well beyond 10^20 eV. The identification of sources of ultrahigh-energy cosmic rays (UHECR), cosmic rays from distant sources with energies above the GZK limit, has been a great challenge since they were first observed in 1962 [1]. The observed existence of these particles is the GZK paradox: Why is it that some cosmic rays appear to possess energies that are theoretically too high, given that there are no possible near-Earth sources, and that rays from distant sources should have scattered off the cosmic microwave background radiation?

Detecting the cosmic rays themselves is difficult; only a handful have been directly detected in the last 50 years. The only way to detect UHECR is through their interaction with the earths atmosphere, producing a cascade of billions of particles that excite nitrogen molecules in the air and spread out over a large area once they reach the ground [1]. When a primary cosmic ray produces many secondary particles, this is called an air shower. When many thousand, millions, even billions of particles arrive at ground level this is called an extensive air shower (EAS). When cosmic rays interact with nuclei in the air, pi-mesons (pions) are created. Neutral pions decay very quickly, usually into two gamma rays. The gamma rays from the neutral pions may also create new particles, an electron and a positron, by the pair creation process, and these electrons and positrons may produce more gamma rays by the bremsstrahlung mechanism. Charged pions decay into a muon and neutrino but after a longer time than neutral pions, so some charged pions may collide with more nuclei in the air to produce even more new particles [2].

These air showers form cones of particles, meaning detectors on the ground can determine the place in the atmosphere where the original cosmic ray hit. Dozens of such cosmic ray observatories exist. In 2007, the Pierre Auger Observatory, consisting of 1600 detectors spaced 1.5km apart, found a strong association between cosmic ray direction and nearby active galactic nuclei, galaxies hosting central black holes which may eject plasma jets into intergalactic space [1]. However, more observatory data are necessary to properly understand cosmic rays and solve the GZK paradox. 


Figure 1: Flow of information within each observatory node

The cosmic ray observatory is comprised of many individual detector nodes. When struck by a single gamma ray photon, a node must be able to record the time the photon struck to within a few nanoseconds, the energy of the photon, and the location of the node. It must then be able to store this data and later send it to a master database. Each node contains two microcontrollers: a timing microcontroller dedicated to precisely measuring the time the photon strikes, and a logging and interface microcontroller to measure photon energy, record data to an SD card, and communicate with the master server. Both can be atmel atmega microcontrollers, and the logging and interface microcontroller can be a raspberry pi. However, the timing microcontroller cannot be a raspberry pi because even with a real-time linux kernel, latency is inconsistent and unacceptably high at around 28 microseconds [3].

Figure 2: PIN diode gamma ray photo detector. Current generated when a photon strikes the PIN diode is amplified through four op amps; a comparator then sends a pulse when the signal dips below a threshold. 

The heart of a node is its PIN diode detector (figure 2), based on a 2003 Maxim application note, which uses a photodiode...

Read more »

  • 1 × GPS Module NEO6MV2
  • 50 × Pin Photoiode BPW 34
  • 1 × ATmega328 Microprocessors, Microcontrollers, DSPs / ARM, RISC-Based Microcontrollers
  • 5 × Quad Op amp MAX4478
  • 1 × Ethernet Module W5100

View all 9 components

  • Putting the project on hold

    aelias3612/15/2015 at 19:20 0 comments

    I already had little time to work on this project while in high school, so now that I'm in college, I'll have to put this project to rest. Perhaps I'll come back to it a few years down the road.

  • Personal issues

    aelias3609/29/2014 at 06:49 0 comments

    As you might have noticed, I have not worked a whole lot on this project since the last checkpoint. Unfortunately, I was sick for more than a week and have lots of schoolwork to deal with. Hopefully, I can work on the project much more in the next few weeks.

  • My conversation with a real astrophysicist

    aelias3609/29/2014 at 06:47 0 comments

    I recently spoke to a friends's father whose research and dissertation was exactly on what I am doing in this project: detecting cosmic rays through air showers. He said that this should theoretically work, but told me that 2 things need to happen: first, I need to increase my detector area. This can be done by adding lots of metal above my PIN diodes so that particles cascaded and multiply, without having to use too many diode. Second, I need to increase my timing resolution by one order of magnitude. This should not be difficult as long as I use pulse integration, as explained in an earlier project log.

  • What to detect

    aelias3608/31/2014 at 02:33 1 comment

    I've been doing a bit of reading on other solid state detectors and have decided that it's a great idea to detect muons rather than gamma rays. Secondary showers consist mainly of electrons, photons, and muons. Unlike photons, muons are easily able to pass through thick metal shielding. This means I can detect only muons by adding thick metal around the pin diode. (I was going to add some shielding anyway to prevent electromagnetic interference. I realize now that this simultaneously decreases gamma ray sensitivity in a somewhat unpredictable way.) The benefit of detecting muons rather than gamma rays is that the node will detect less terrestrial background radiation, which is important if I intend for the node to be used in somewhat populated areas.

    At this point I'm not sure what kind of material or thickness is needed for the shield, nor am I totally positive that detecting only muons is the right way to go. Thankfully, my detector design is flexible enough that I can continue working on the electronics and software while simultaneously working on the particle physics aspect.

    Coincidence detection might also be something to look into. This is where two PIN diodes (or hopefully array of diode) have shielding in between them, and a circuit is used to record only events where the top detector get a pulse a certain amount of time before the bottom detector. This should reduce terrestrial radiation interference even more.

  • Hooray!

    aelias3608/25/2014 at 20:25 0 comments

    I made it to the top 50! I just need to make sure I keep working on and documenting this project.

  • Future Goals

    aelias3608/21/2014 at 04:47 0 comments

    Right now I’m assembling a first prototype of the detector node. I’ve determined a few things which need to get done in order to make sure the device will work how I’d like it to.

    1. Optimize timing accuracy

    I’d first like to see how I can modify the GPS settings to get the most accurate clock pulses. I also want to experiment to find the best algorithm for utilizing the GPS pulses. This means measuring how many Arduino clock pulses it takes for a single GPS pulse over time, and seeing if averaging is necessary. This also means making more intelligent code which accommodates for the timer ticking while each byte is recorded. (I haven't thought through that last part entirely, but I may not have to accommodate for this delay as long as it is consistent.)

    2. Optimize protocol for server communication

    I need to find a balance between minimal processing by the Arduino and minimal transmission size. I also need to determine if the detector node should immediately send data, or rather accumulate data on the SD card and then send it to the server.

    3. Increase detector sensitivity

    I realize now that a single pin diode probably isn’t enough. This means I need an array of pin diodes. I need to determine which pin diode on the market is most worth its cost. I also need to determine which amplification circuits and ICs work the best.

    4. Determine calibration procedure

    All nodes need to have the same sensitivity and delay; this means calibration is important. I need to determine where in the circuit pots or adjustable caps are required, and what accuracy each discreet component needs to be. Then, I need to find a good way to ensure that the nodes can be calibrated without any expensive test equipment. One idea I have is to use readily available americium from smoke detectors to calibrate sensitivity.

  • Project Video

    aelias3608/19/2014 at 07:16 0 comments

    I took the creative approach.

  • Detecting button presses

    aelias3608/15/2014 at 01:59 0 comments

    modified the Arduino program to output the raw time for both of its interrupt pins. In lieu of a working gamma detector, (as the op amps haven't arrived yet,) I used a button press to simulate a pulse.

    I added a small parallel capacitor to the button in order to remove any contact bounce. I also wrote some javascript to compute the length of time between the button press and last GPS pulse.

    Next, I need to have the Arduino read the serial data from the GPS, which includes not only location but also time of the last sent pulse. Considering how easy it is to implement timing measurement, I think I'll try to use one microprocessor rather than two. If I can get everything, including networking, working on a single Arduino, that would reduce a lot of the cost I originally estimated.

  • Current state as of me first posting the project online

    aelias3608/13/2014 at 23:45 0 comments

    I've been working on the project for about a month now. I decided to post it to hackaday only recently, so I've got a lot of stuff to go over.

    The first thing I did was build just a gamma ray detector. The output is hooked up to the trigger of a 555, which is also connected to a buzzer, so that I get a beep every time a gamma ray is detected. I accidentally bought an op amp with too high of an input bias current, so the detector does not work correctly right now. However, I'm ordering a new op amp which should get the detector working and beeping.

    The PIN diode is inside the electrical tape below the voltage regulator. The white bodge wire is there because I accidentally flipped the inputs on the comparator.

    Next, I experimented a bit with peak detector circuits. I realize now that the circuit from EEVblog #590 is probably not fast enough. I'll work more on the peak detector once I get the gamma detector working.

    Finally, I bought a GPS module and arduino and got the arduino to detect the GPS's pulses to within 62.5 nanoseconds. I did this by setting up two timers and an interrupt. One timer ticks up when the other overflows. When the arduino detects a rising edge, it reads the values of the two timers, in addition to the count of the slower timer overflowing. You can see the code I used here.

    I'm using a NEO 6M GPS module with an Arduino micro clone.

    Here are my notes for how to measure pulses to within a single 62.5 nanoseconds. I use both timer1 and timer2.

    Here is how I can measure to within 0.061ns. I can do this by integrating a new pulse the length of time between the pulse I'm measuring and the next tick of the arduino's crystal oscillator. Although I could try to implement this, it's a lot of extra work, and the GPS's pulses are only accurate to around 30 or 60ns anyway.

    Here's proof that the timing works. My math got a bit messed up at first so that the results were around half of what they should be, but then I corrected my formula. You can see that the GPS and arduino's time are slightly different, which is what is expected.

View all 9 project logs

Enjoy this project?



smith_barry wrote 03/31/2015 at 16:33 point

Hi like your project.  I have some pictures of a muon telescope from the 1970s which you might find useful.  The telescope comprised of a series of inch thick iron plates with a Plexiglas spark chamber between each plate.  The sparks were focused onto a photographic plate via a series of mirrors.  There were about 50 iron plates each about 2 feet square.

The site was under the castle in Nottingham and by altering the angle of the telescope the muon flux could be measured by the amount of rock traversed.  The idea was then to link the flux variation to muon energy.   

My interest was predicting and then measuring the neutron flux component resulting from the capture of negative muons in the upper 20m of the Earths surface. 

It would be useful to focus on a particular energy range as lower energy cascades are impacted on by air pressure and hence will vary with prevailing weather conditions.

Another way to add absorbers is to measure at different floors in a multi-story car park and below roof top swimming pools. 

I have recently become interested in this area of science and am particularly excited by the possibilities opened up by transferring the technologies in every day objects to enable more people to become involved in such work i.e. sound card based spectrometry

Cheers, Barry

  Are you sure? yes | no

Robert Hart wrote 01/23/2015 at 22:30 point

Hi, I have been working on something similar, I have been building cosmic ray detectors for some years now using Photo-multiplier/Sintillator, Spark Chambers and Geiger Muller tubes. At present I've been exploring a number of Pin Diode and amplified designs.

  Are you sure? yes | no

Christian Haughwout wrote 10/16/2014 at 14:18 point
Hi. I really like the idea of your project and I would like to offer my assistance if at all possible. I have expertise in PCB design and evaluation. If you would like any help with PCBs, email me at

  Are you sure? yes | no

Felipe Muniz wrote 09/11/2014 at 19:43 point
A geiger tube isn't useful? Some tubes are very cheap, check on Ebay.

I also remember of this projects here, one use photodiode and other use a webcam to detect radiation.

  Are you sure? yes | no

Jan-willem De Bleser wrote 09/11/2014 at 14:45 point
Fantastic idea! The more data we have, the better, so a distributed detector would be excellent.

Have you started thinking about the data collection infrastructure yet? Anyone who wants to do some of the calculations you're talking about will need more than just their own dataset, so you'll need some way of distributing or gathering all the individual measurements. Do you envision running a central repository somewhere, where the RPIs can upload and scientists can download? Or what about something distributed, say RPIs in a p2p network distributing all measurements to all (interested) nodes?

I'd be interested in building one myself, and tinkering with the design.

  Are you sure? yes | no

aelias36 wrote 09/11/2014 at 15:35 point
Hi there,
I have't put to much thought into networking just yet. As another commented posted below, I would probably like to look at Blitzortung, which has a similar setup but with detecting lightning. Thanks for the p2p idea; that sounds promising.

  Are you sure? yes | no

Jonr.westfield wrote 09/10/2014 at 21:05 point
Great project!

Have you got any more documentation yet?

Thanks :D

  Are you sure? yes | no

aelias36 wrote 09/10/2014 at 21:24 point
I was very busy with school this past week, but more documentation is sure to come! I recently spoke with an astrophysicist who researched and wrote his dissertation on cosmic rays and their detection, and I'll be writing about what we discussed soon.

  Are you sure? yes | no

masoud wrote 08/28/2014 at 02:30 point
Very interesting project and congratulations for being selected. I am happy to see many scientific projects selected.

  Are you sure? yes | no

Legionlabs wrote 08/26/2014 at 11:49 point
I used the Hamamatsu Photonics S1223-01 photodiode to detect 20MeV alpha particles with an almost identical op-amp chain. It worked really well, but was expensive and difficult to source. The first opamp stage required a full Faraday cage.

I tested many other PIN photodiodes without luck, but I'm confident a cheaper and more available option exists. The most promising avenue was a design I saw somewhere that used solar panels as a cheap detector in a small particle accelerator, as they are essentially high surface area PIN photodiodes. I never got it working.

I have read rumors that the venerable 2N3055 power transistor can be decapped and works, but cannot confirm.

I can share notes if useful to you.

  Are you sure? yes | no

PointyOintment wrote 08/14/2014 at 20:47 point
Do you know about Blitzortung? It basically does the same thing for lightning, so it might be good to look at their electronics and algorithms.

  Are you sure? yes | no

aelias36 wrote 08/14/2014 at 23:11 point
I did not. Thanks for the link!

  Are you sure? yes | no

aelias36 wrote 08/21/2014 at 05:05 point
I recently learned about something very interesting: some scientists propose almost all lighting is triggered by cosmic rays. This means comparing data between lighting and cosmic ray detectors could be very useful. Again, thanks for the link!

  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