This post covers adding a radiation sensor (Geiger counter) to my environmental monitoring system.
A while ago I had purchased a NETIO GC10 v2.4 Geiger Counter. This measures Beta and Gamma radiation and has a serial output, at 9600 baud. The unit was designed in the aftermath of the Fukushima disaster as a low cost way for monitoring radiation levels.
Some more links to this unit are here:
- Manual for GC10 NetIO Unit (assembly in English)
- NetIO Shop (currently sold out!)
- GC10 (aka 'Kinoko Geiger') users group (mainly Japanese)
- Review of the unit (youTube)
I wanted to include this sensor in my environmental monitoring set up for my workshop.
You can send serial commands to change the settings of the sensor. The protocol specification is here. 'stop' will stop the serial output, 'go' will start readings from the unit at a rate of once per second.
Connections and Issues
My idea was to initialise the unit to not send serial data and the start/stop the serial data to take readings. One issue was that the sensor unit runs at 5V, but the ESP8266 can only take 3.3V on the DIO pins. So I used a 2.2k resistor in series with a 3.3k resistor to give a voltage step down for the Rx pin. I also added a 3.3V zener to make sure the voltage does not go over 3.3V. For the Tx pin this should be OK as 3.3V logic should be read correctly by the 5V serial port.
I needed to add the Tx and Rx onto the software serial port I had already added (D4 and D5). This means there will be two devices on that software serial port, but I hoped that, through correct control of sending data, I could have both sensors on the same port. This did not work! The clash of the serial data caused all the data on the line to be gibberish. So I needed another solution.
I decided to set up another software serial port on some of the spare GPIO. I thought I use D0, but reading up a bit more this pin cannot be used for Rx, due to the fact this pin has a reserved function.
I ended up using D8 for the Rx (which is also the button press line) and D0 was set up as Tx (but I never need to send data on this line).
I could now see a stream of data at once sample per second. This value is the average 'counts per minute' (CPM). A continuous CPM value of greater than 100 is considered dangerous.
One thing I did find was that when the fan of the PM2.5 & PM10 dust sensor switches on then the Geiger counter reset. This seemed like a power supply issue. Reading the datasheet with the unit I found that they mention the power supply should be very stable. When the fan kicked in then the voltage dipped and the Geiger counter reset.
To solve this I added 3 x 1000uf capacitors on the 5V supply line. This buffered the voltage from the fan in-rush and the NetIO Geiger Counter worked perfectly once I had implemented the change. This is probably over-kill on capacitance, but hey, why not!
The strip board has a row of capacitors on the power rails - this is needed for the radiation sensor power supply, which seems to be sensitive to dips.
Due to the number of sensors now on my environmental monitoring unit the code is a bit 'hacky'. DIO pin 8 is used for both the encoder button and the radiation sensor Rx. This means the button does not work correctly all the time and it gets confused when there is serial data available. I have put in a jumper to disconnect the Rx from the NodeMCU, which allows me to use the encoder correctly, but not get any data from the radiation sensor. I don't use that button often once the unit is set up, so not a big deal.
In the code I set up another software serial and read the data every 5 seconds or so. There needs to be a couple of checks on this data and a simple check is: is then byte read bigger than 0 and less than 99999. There will never be zero CPM radiation (unless maybe I put it lead box) and if the reading is >99999 then I would be pretty darn irradiated.... These check stop some null and bad characters getting through which sometimes seemed to happen.
You can check out the radiation level in my workshop here.
More DIY Geiger Counter Projects
|SafeCast||https://github.com/Safecast/bGeigieNanoKit||Nice DIY kit with GPS and SD logging|
|https://www.electroschematics.com/diy-geiger-counter/||How to build a Geiger Counter|
|Mighty Ohm||https://mightyohm.com/blog/products/geiger-counter/||Great DIY geiger Counter kit|