Get on the map! An “Internet of Things” Geiger counter for $100

Do you live near a nuclear facility?   Are you concerned about contamination from Fukushima?  Would you like to chart fluctuations in cosmic rays, or track the solar winds?

This post covers building and configuring a net-connected Geiger counter that takes advantage of free on-line charting and mapping services like or Xively directly, with no intermediate computer or software required.

The preliminaries;  you must be able to assemble and solder standard through-hole components; no surface mount devices are used in the making of the kits.  Also, familiarity is required with the use of the Arduino development environment for configuring user-specific parameters and compiling/downloading sketches with a TTL (5V) compatible FTDI cable.  Arduino IDE version 1.05 is known to work well at the time of this post.

There are two ATMEL (Arduino) chips in this project; each on a separate board.   One for counting pulses from the GM tube & performing “housekeeping”, with the other driving the Internet interface.  They communicate with each other over the 6-pin FTDI (serial) interface connectors.  The two kits (and display) can be purchased from the DIYGeigerCounter site.  You’ll need a GK-B5 ($49), display ($5.50), and a GKNet kit ($18).   From Ebay (or your favourite source), an SBM-20 GM tube ($20), and either a WIZNet W5100 ($25) or an ENC28J60 Ethernet module ($5).  See the GKNet page for capabilities & limitations of each module.

Here’s a picture of my setup (no enclosure to inhibit radiation 😉 )

Net connected Geiger counter

Net connected Geiger counter

I hacked an old USB cable for the 5Volts.  The kit doesn’t need a display to operate, and I’ve also disabled the speaker (removed the click/tone jumper) since it’s next to my desk.  Pointing your browser to,  if you click on the marker over Colorado Springs, CO, then on the wrbishop link in the popup – daily, weekly, monthly, and quarterly graph displays will be displayed (DIYGeigerCounter headquarters (BroHogan) is the marker over Denver).   This is a “no brainer” way to track radiation levels in your area.  It also lets you know when your ISP fails, and for how long — the radiation data will “flatline”.   Notice I removed the IR sensor; when I configured other boards, the IR spill from the remote tended to effect this one too (oops, I forgot to mention, you’ll want one of these TV remotes too – $14).   John just sent me a keychain remote update as an alternative.

I found John’s (DIYGeigerCounter) instructions very clear with lots of pictures and helpful tips accumulated over the years.   His code is well commented, and easy to understand (assuming a basic grasp of the “C” language).   Don’t worry, you won’t need to learn to program.

First, build the GK-B5, and get it working (this is where the display helps).  Once that is accomplished, build the GKNet interface, and plop-on the network module of your choice. Personally, I find the WIZNet W5100 to be very reliable, having run it 24/7 for months.  I’m currently beginning to experiment with a WIZ550io module; I’ll keep folks updated.

Click the “register” link on to establish your account information (username, password, email, …). Once Dan acknowledges the information, your username & password need to be inserted & compiled into the GKNet code, then downloaded into the board (same with Xively, if you’re sending data to that site as-well).

Now, to program the GKNet card with your credentials, you’ll need to swap the transmit and receive data lines to the board from the FTDI cable.  I put together a “crossover” patch cable that sits between the programming cable and the GKNet FTDI interface:

GKNet Interface

GKNet Interface with a twist

After downloading the GKnet_Radmon_Xively_v3_X.ino sketch (where X is the “current version”),  open it in the IDE or your favourite text editor.    About 50 lines or so down, is an area labelled “User setup #defines”.    This is where you’ll need to make changes.  Select which site(s) to send the data to (SEND_TO_RADMON, SEND_TO_XIVELY) by setting the appropriate define to “true” or “false” (yes or no).    If sending to, change the “????” in the UserName[] and PassWord[] variables to reflect your values.  If sending to, set the FEED_ID and KEY[] values.   Then set the POST_PERIOD as mentioned (how often to send counts).  Finally, if you need to statically set the IP address (DHCP is the default), set STATIC_IP to “true”, and set “ip” and “mydns” (more detailed information is contained in the GKnetBuildInstructions).

At this point, save the sketch, compile and download it into the GKNet board.  An easy way to test the network interface is to open the console in the Arduino IDE (9600 baud), and pretend you’re a GK-B5 by sending lines of the form “counts, dose, voltage” (22,3,5.2).  The yellow LED should flash each time you send a line.  At the next POST_PERIOD interval, the data should be sent over the Internet (green LED lights up), and you can observe it in your browser.

Finally, power-off, unplug the programming cable from the GKNet board,  plug the GKNet board into the GK-B5, plug an Ethernet cable into the GKNet board, power-on, and start charting!

This entry was posted in Radiation. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *