Project tutorial
A Geiger Counter Simulator

A Geiger Counter Simulator © CC BY

Build a device to safely teach radioactivity or to scare your buddies.

  • 20 respects

Components and supplies

Ph a000066 iso (1) ztbmubhmho
Arduino UNO
51gzz5eu9pl. sx425
Ultrasonic Sensor - HC-SR04 (Generic)
Relay Module (Generic)
This will be used just to make some noise when the relay switched from on to off and viceversa. Then, you shouldn't use a solid state relay.

About this project

Introduction and motivation

When teaching about radioactivity, one needs to explain the main features of this phenomenon. Some radioactive samples (i.e., alpha and beta emitters) emit electrically charged particles that, when pass through a Geiger counter, make it react with an internal spark whose noise can be heard like a sort of "click". In order to characterise the radioactive sample, one needs to measure the number of particles emitted per unit time (i.e. the frequency of the "clicks"). Such a number, manifestly, increase while the distance between the radioactive source and the Geiger counter decreases, because the latter intercepts more and more particles as the source gets closer to it.

Making experiments in a classroom is the best way to let students fix the lesson in their minds. However, making experiments with radioactive sources in a classroom can be dangerous. Then, why not to simulate them?

The basic idea

Of course one can use a "virtual" laboratory, but a real piece of hardware is much more effective. Then, I realised a Geiger counter simulator that works this way: an ultrasonic sensor measure the distance of any obstacle in the vicinity of the simulator; a relay is triggered with a probability that depends on the distance. The "click" is produced by the relay switching from on to off and vice versa.

Of course, the simulator turns any obstacle in a "radioactive source". However, a clever positioning of the sensor relative to the obstacle make you control wether the simulator should "click" or not.

Building the simulator

First of all, assemble the system according to the schematic. Keep the wires long enough such that you can then insert the whole system inside a cardboard tube (I use those around which the kitchen paper is rolled up). Before inserting the system inside make two holes close to one end of the cylinder, such that the speaker and the microphone of the ultrasonic sensor can pass through them (see the picture).

Load the sketch into the Arduino memory. The loop() starts obtaining the distance between the sensor and an obstacle (if any). To do that you should trigger the sensor with a positive pulse whose duration is at least 10 us (done by the trigger() function). Upon triggering the sensor, it returns a positive pulse after a time T proportional to the time needed to the ultrasonic pulses to be reflected by the obstacle. In order to suppress the effects of spurious reflections, we average 15 measurements.

From the average d we derive the number t=1000/d^2. Given that d ranges from about 2 cm to 400 cm, t ranges from almost 0 to about 250. We can then draw a (pesudo-)random number r uniformly distributed between 0 and 1000 and check if r < t. That happens with a probability of t/1000, ranging from almost 0 to 250/1000=25%. If that happens we switch the relay from on to off or viceversa, based on the last status stored in the appropriate variable.

As a result, the relay clicks with a probability that depends on the distance of an obstacle from the sensor. When no objects are in front of the sensor the system is silent (it may click randomly from time to time, but this behaviour is typical of a Geiger counter because of natural radioactivity, cosmic rays or just noise). Putting something pretending to be radioactive in from of the sensor makes the Geiger simulator react with a clicking frequency increasing when the source gets closer.

Using the device

To effectively use the device while teaching, you can approach any object to the system taking care not to place it in front of the sensor. The Geiger does not click and the object is then classified as non radioactive.

You can then approach another object pretending it is a radioactive source. If you put the object in front of the sensor, the system starts clicking and the frequency of the clicks increases while the distance decreases (that's because a larger number of particles emitted from the source can pass through the detector).

You can look at how it works in this video.

The Geiger simulator in operation

It is also possible to turn a non radioactive material into a radioactive one putting it in the vicinity of a radioactive source (activation). So you can put the (pretended) radioactive source close to the non radioactive material for a while, then you move the latter close to the voilà activated it.

In fact my Geiger simulator was proven to be very effective with my class and reactions were enthusiast. Someone also thought that I really made experiments with real radioactive materials! I then decided to share its design with you.


The Arduino sketchArduino
#define CLIK 8
#define ECHO 2
#define TRIG 3

#define c 340.e-6  // the speed of sound

void setup() {
  pinMode(CLIK, OUTPUT);
  pinMode(ECHO, INPUT);
  pinMode(TRIG, OUTPUT);
  digitalWrite(TRIG, LOW);
  digitalWrite(CLIK, LOW);

void trigger() {
  /* trigger the sensor */
  digitalWrite(TRIG, HIGH);
  digitalWrite(TRIG, LOW);

float measure() {
  /* measure the distance between the sensor and the obstacle */
  float d = 0.;
  for (int i = 0; i < 15; i++) {
    unsigned long T = pulseIn(ECHO, HIGH);
    d += c*T/2.;
  return d;

int status = HIGH; // the current status of the relay

void loop() {
  float d = measure();
  unsigned long trigger = 1000./(d*d); 
  unsigned long r = random(1000);
  if (r < trigger) {
    digitalWrite(CLIK, status);
    if (status == HIGH) {
      status = LOW;
    } else {
      status = HIGH;


Geigersimulator bb onrwzw8hxx


Similar projects you might like

Fake Geiger Counter with Indoor Positioning

Project showcase by Samuelvdv

  • 10 respects

Customizable Geiger Muller Counter

Project tutorial by juliandwillett

  • 13 respects

PKE Meter Geiger Counter

Project showcase by mvonsivers

  • 5 respects

Handheld Geiger Counter with Arduino Nano

Project tutorial by Pedro52

  • 10 respects

Arduino Traffic Light Simulator

Project tutorial by Zachary Haslam

  • 46 respects

Car Counter using Arduino + Processing + PHP

Project tutorial by Team UNO

  • 9 respects
Add projectSign up / Login