Introduction: Geiger Counter IoT

About: Will write code for food. :) If you need help with any of your embedded Arduino applications please send me a message.

Ever since the 2011 Fukushima Daiichi nuclear disaster I've wanted a Geiger counter. After some online searching I found the MightyOHM.com Geiger Counter Kit! Perfect! The kit comes with all the parts needed to build a "solder by numbers" Geiger counter. After a few hours of soldering and assembly the Geiger counter was ready to test. I inserted some batteries and flipped on the power switch. The red LED started flashing randomly and the sonic beeper chirped to life with each hit to the Geiger tube. It was working!

During the build process there are optional output pins you can install. There are six serial output pins, six ICSP pins, and three pulse pins. Immediately I began thinking of ways to use a PLC like an Arduino to interface with the Geiger counter. After some more research on the MightOHM Geiger Counter Forum I decided to try reading the output from the three pulse pins. According to the forum the output signal was a very fast 3 volt burst. I tried to test this with a multi meter without success. I then tried using an ESP8266-12E to read the pulse output. Again, after a few hours of trial and error, I had no success.

I little frustrated, I sat their watching the red LED flash with each hit to the Geiger tube. That's it! I'll just read the electrical signal going to the LED! I abandoned the pulse pins and set about to test my new idea. With the case on the MightOHM Geiger Counter it was not easy to access the + lead of the LED. So, to test my idea, I attached an alligator clip to the beeper unit. The solder blob on the bottom of the board was just big enough and close enough to the edge of the case that I could easily attach the clip. I then attached this to the ESP8266-12E D2 pin. After some coding with the Arduino IDE and some testing I soon had a web based GUI to the Geiger counter complete with data logging and Google charts to display the data.

Step 1: Things You Need

To complete the build you will need the following items.

For the completed breakout board you will need the following.

  • A small prototype board.
  • Some headers. Two types: stackable headers regular pinouts (see picture above).
  • Jumper wire - some female type ribbon cable works well.
  • Soldering equipment.

You can find all these items by searching online.

Step 2: Hardware Setup

First you will need to build the MightyOHM.com Geiger Counter Kit. I won't go into many details here regarding the MightyOHM build as there are instructions available on their website. You will need to have some soldering skills to build this kit. If you have never soldered a circuit before, you might want to practice before attempting this kit. The MightyOHM website also has some useful tips for soldering.

After building the Geiger counter, turn it on to test. You should see the red led flicker and hear the chirp of the beeper every time there is a hit to the Geiger tube. Normal background radiation should result in at least 15 CPM (counts per minute). If not, something went wrong during the build - recheck your soldering.

If the Geiger counter works, it's time to connect the ESP8266-12E. I recommend using a breadboard to first setup and test the connections. Depending on the size of your ESP8266-12E, you may need two breadboards (see pictures above for a wiring diagram).

  • The D2 pin on the ESP8266-12E will connect to the + lead of the LED (or the beeper which is easier to access with alligator clips).
  • Connect one of the 3v3 pins to the + side of the battery holder.
  • Connect one of the GND pins to the - side of the batter holder (see pictures).
  • Connect the A0 pin of the ESP8266-12E to the + side of the battery terminal if you want to measure the power supply.

You can watch the following video for more details and a demonstration: https://youtu.be/1w2Thpmku1c

Step 3: Software Setup

To program the ESP8266-12E we will use the Arduino IDE. You can download the Arduino IDE from their website. After installing the Arduino IDE you will need to install the libraries for the ESP8266-12E. I've created a video tutorial that describes how to install the libraries. Now that the libraries are installed, you can download the source code to use as your sketch. The source code is available here: https://github.com/dmainmon/Geiger-Counter-IoT (Note: the first couple of videos shows an older version of the GUI, this download contains the latest version).

Copy the source code into the Arduino IDE. Before uploading the sketch to the ESP8266-12E, make sure you have turned "debugmode" on by setting this variable to true. Also, set the IP address to match your WiFi network and make sure the WiFiSSID and WiFiPassword are set correctly for your WiFi environment. Now compile and upload the sketch to the ESP8266-12E board. If you are unable to upload, make sure the COM port is set correctly for your board. When the upload is complete you can test the web interface by pointing your browser to the IP address setup in the source code. You should see the GUI shown in the pictures above. If you are unable to access the ESP8266-12E web server, make sure your WiFi and IP settings are correct. You can also try cycling the power on the ESP8266-12E by removing and reinserting the USB cable to the ESP8266-12E.

Open the Arduino IDE serial monitor and you should see data displayed each time the Geiger counter receives a hit. The serial data is useful for debugging. If you are unable to see the web interface, the serial data will be helpful to determine if you are connected to WiFi (required to view the web page).

If you do not see serial data with each Geiger hit, make sure the wiring is correct.

Step 4: Prototype Board Circuit

After you have successfully tested using a breadboard, it's time to build the breakout circuit. I've created a video tutorial with detailed information on how build the circuit and connect it to the Geiger counter. You can see from the pictures above that the wiring is pretty simple.

Step 5: Testing the Geiger Counter IoT

Once you have everything working it's time to do some testing. You can find low emission materials to test by searching the internet. The MightyOHM website has some information on readily available sources. I purchased some Vaseline Glass and Fiestaware from eBay. For more detailed information, I created a video that demonstrates testing these materials.

Before testing an object I like to get a background radiation measurement as a baseline. You should be getting a background radiation reading of at least 15 CPM (unless you are in a lead box). Now, when you test an object, you can subtract the baseline value to get a more accurate idea of the objects emissions. For example, if my background radiation reading is 17 CPM and my test material is producing 100 CPM, I subtract the 17 and determine that the object emits 83 CPM.

WARNING! Be aware that radiation is harmful and cumulative, proceed with caution.

Step 6: Source Code Overview

I created a video overview of the source code for this project. If you are new to programming or want a better understanding the source code, please watch the video.

IoT Builders Contest

Participated in the
IoT Builders Contest