A little Saturday afternoon project last weekend was putting together this geiger counter kit from RH Electronics in Israel, paired with a soviet SBM-20 Geiger-Müller tube sourced from an eBay seller in the Ukraine. Total cost was £32 which seems very reasonable to me.
The RH Electronics kit comes with all the components apart from the Geiger-Müller tube, it is all through hole components (there are a few SMD components in the design but these are presoldered) and the PCB is well labelled so it is very easy to build. It runs on 4.5-5.5V, has a very low power consumption, stable HV output for the G-M tube and support for both 400V and 500V tubes. It also provides a handy interrupt output so that it can easily be linked to your favourite microcontroller.
I connected the INT output from the geiger counter to the INT1 pin on one my Tiny328 boards (an ATmega 328 combined with an RFM12B radio) and both are powered from a USB wall adapter. This Arduino code runs on the Tiny328 and counts the interrupts from the geiger counter, once a minute it sends the resulting CPM (Counts Per Minute) over the RFM12B wireless network. This is then picked up by another Tiny328 connected via a serial-USB adapter to my home automation server along with the data from all my other wireless sensors.
On the server Node-RED automatically processes the incoming serial packets sending the data to different MQTT topics based on the node number. eg, the geiger counter node is number 23 so the CPM is sent to the “rfm12b/23/1” topic. An MQTT input node then takes this value, saves it into a global context (context.global.radiation) and then outputs to a more human readable/memorable topic name of “radiation”. Node-RED also sends the value to my local emoncms install for my own logging and graphing purposes.
I also wanted to submit my CPM readings to Radmon, a community website for logging background radiation around the world. This was easy to do with Node-RED as data is submitted to Radmon via a simple URL of the format:
Where USER and PASS are the details you used when registering your Radmon account and CPMVALUE is the counts per minute from the geiger counter.
All that is then required is a simple flow to grab the last CPM from the global context and send it to that url using the http request node. An inject node fires that process off every 15 minutes.