Radioactivity Counter (IoT) and Monitoring Eco-system




Introduction: Radioactivity Counter (IoT) and Monitoring Eco-system

Status : Release Candidate 1
Difficulty : Low
Prerequisite : Electronics
Documentation : Read the PDF
Support : Forum only, no PM

C-GM firmware last update on June, 10th 2019 with new 1.3 version

A-GM applicationlast update on Sept, 6th 2021 with new 1.4 version

This D.I.Y low cost (50$/43€) C-GM Counter project provides hardware and firmware for building a Geiger-Müller counter device aka G.M. counter for continuous measurement of the radioactivity level. It is based on an Arduino Nano, a 20 chars x 4 lines LCD display, a W5100 Ethernet card, a 400V power supply and very few components around. The number of components has been kept to minimum for easy assembling and reducing the cost.

  • The C-GM Counter is able to run as a standalone radioactivity counter
  • or for ensuring long term radioactivity monitoring, the C-GM counter can be used in association with A-GM Manager (in the sequel) that is an open-source web application running on a SOHO server (e.g. QNAP sells Small Office Home Office servers). A-GM Manager is also able to publish the C-GM Counter measures on the worldwide shared map managed by GMC MAP. Finally, there is also a Node-RED version for integration of the C-GM Counter with Node-RED such as the QNAP IoT framework.

See also the W-GM Counter, a portable battery powered Wifi version (22$/27€) based on ESP32 Heltec compatible with the current Eco-System .

IMPORTANT (risk of electrical shocks)

The device requires a 400 Volts power supply. Despite the current delivered will remain very low, I discourage people not accustomed dealing with electronics and electricity to try building this device but to choose a commercial product instead (see available compatible products in the Eco-system section).

Step 1: The Eco-system

You may be ONLY interested to build the C-GM Counter. Of course you can!

But you may also be willing to implement your local radioactivity measuring point and trace level's evolution over the time. This can be done using our Eco-system above.

For those having difficulties to build hardware, I found counters from GQ Electronics LLC© such as the GMC-320V5 that is compatible with our A-GM Manager (I have neither interests nor contacts with this company so don't ask me more about their products).

NOTE: Version 1.4 with fix issues with PHP 7.3 is available from SourceForge.

NOTE: Comprehensive documentations regarding both the C-GM Counter device and the A-GM Manager are available in PDF format to guide you across device building and Eco-system implementation.

All pieces of information required for assembling the C-GM Counter device hardware and firmware can be found and downloaded from SourceForge.

Step 2: The C-GM Counter Device


  • Radiation detection : beta, gamma, X-ray
  • GM tube : STS-5 (CTC-5) / SBM-20 (400 V operating voltage)
  • Language support : English only
  • Maximum value 65 535 CPM / 425 µSv/h (theoretical)
  • Display values :
    • Current CPM
    • Current µSv/h
    • Maximum µSv/h since startup
    • Average µSv/h since startup
    • Elapsed time since startup
    • Level on bar graph
    • Alarm
      • User defined threshold
      • Alarm messages on LCD
      • LCD backlight blinking
    • LED flash for each beta/gamma radiation pulse
      • LED blink every second if GM tube is detective
      • LED still on when Network connection fail
    • Audio sound
      • Beep for each beta/gamma radiation pulse
      • Audible sound alarm
    • Device control from :
      • Device internal menu
      • USB (require a serial console such as Termite) or Ethernet (using a web browser)
    • Network connection using DHCP
    • Support for A-GM Manager web interface
    • User defined parameters (from Menu or through web interface)
      • GM tube conversion factor (CPM to µSv/h)
      • Alarm threshold in CPM
      • Buzzer On or Off
      • Display timeout
      • Enable Network for communication to A-GM Manager
      • A-GM server IP definition (through USB or A-GM Manager)
      • Internal H.V. voltmeter calibration (through USB or A-GM Manager)
      • Parameters can be permanently saved into EEPROM

Step 3: Building the C-GM Counter

Short description

See the PDF file for details


The assembly of the C-GM counter hardware has been made the simplest as possible using minimum components available from the selves (e.g. Amazon or eBay) and the minimum of wiring. There is no dedicated printed circuit board (PCB) but instead an inexpensive single face dot board (aka Perfboard) with solder pad for each hole (Veroboard).

  • The GM 5.6MΩ resistor is sold directly on the RCA socket.
  • The Ethernet board is connected to the Arduino Nano using a 2x5 connector.
  • Ethernet board connector pins pass through the Perforboard to ensure its fixation.
  • The Arduino Nano is weld on the Perfboard.
  • The C1 capacitance (10nF/2kV) is weld on the output connector on the back of the H.V. module.
  • There is a strap wire weld on the back of the H.V. module between the input and output GND.
  • The R6 resistor (47KΩ) is weld directly on the ground pin of the LED.
  • The W5100 Ethernet module RST is not connected to the Arduino RST. On the RST pin of the W5100 module pin there is a resistor and capacitance. If connected to the Arduino RST, this prevents downloading new firmware in the Arduino. The drawback is the need to switch off the power supply for resetting the Ethernet.


The C-GM Counter Device programming can be done using the C-GM Counter device HEX file.

You will need a UpLoader utility such as Xloader (Author's website is currenlty closed a copy is available here) or ArduinoSketchUploader (C# sources to be compiled). Other alternatives may be available from Arduino website.

  • CGM_vx.x.x.hex Use this file to keep the native boot-loader of your Arduino Nano.
  • CGM_v1.x.x.x_bootloader.hex Use this file to flash the C-GM firmware and its boot-loader.

NEW v1.3 : To disable network, keep depressing the button while booting (until entering the menu, then leave the menu). This avoid being continuously blocked due to network connection retries that prevents entering the menu for setting new network parameters (I'm surprised nobody reporting to be bother with this so far!)

Step 4: Using the C-GM Counter

Short description

Please read the PDF for details

The C-GM Counter device counts the number of radiation pulses (CPM) over a one minute period (shifting window), and convert this count into a micro Sievert per hour (µSv/h) value using the G.M. tube conversion factor.

  • At start-up, the splash screen displays the version and copyrights of the C-GM counter device firmware.
  • About 5 seconds after the power-up, the splash screen closes and the counter starts the radiation measurement.

The user interface was made very simple and there is only one tack switch for control the device screens and menu.

According to the duration of the button push, there are two possible actions.

  1. Short press = SELECT User press the button less than half second.
  2. Long press = NEXT User press the button more than half second.

To ENTER the Menu or validate a menu entry, make one long press.

To WAKE-Up the Display, jump to next screen or menu entry, make one short press.

There are 5 information screens:


The default information screen displays the current radiation values such as the current µSV/h measure, the maximum µSV/h value since power-up, the current CPM value and the average µSV/h since power-up. Messages are displayed on bottom line.


This screen displays values since power-up including the elapsed time, the total number of counts and the equivalent dose expressed both in micro-Sievert and micro-Rem.


Display the GM tube conversion factor CPM to µSv/h, the current high voltage value (read from internal voltmeter) and the Alarm threshold (in CPM).


Display the device (Dev) IP address (allocated by the DHCP service) and the A-GM remote server (Svr) IP address.


Display the firmware version and date as well as the copyrights.


There are 7 menus screens for configuring the device. Some parameters must be set using the communication ports ( Serial or network).


Step 5: Implementing the Overall Eco-system

Short description

Please read the PDF for details

The A-GM project is aimed for providing a long-term continuous measurement of the radioactivity level. It includes an open-source Web application (A-GM Manager) running on a SOHO server (e.g. NAS from QNAP for Small Office Home Office servers) connected to a Geiger-Muller radioactivity counter device such asC-GM Counters or compatible counters from GQ Electronics LLC.

To sum-up the overall system:

  • A-GM Manager
  • The web application that continuously monitors and stores the Beta/Gamma radiation levels acquired from Geiger-Muller Counters on a local server. Data can be redirected to the GMC.MAP website for worldwide data sharing using a user account.
  • C-GM Counter
  • An open-source hardware and firmware for the Ethernet G.M. counter developed and provided by Ad’Novea® running with the A-GM Manager.
  • GMC-320 device
  • GMC-320/5xx/6xx devices are sold by GQ Electronics LLC© and allow the redirection of measures to the GMC.MAP website directly from the device using a WiFi connection. A-GM Manager supports these devices for logging the radiation measures on your server and ensuring the redirection to the GMC.MAP website.


  • Language support for English, French, Japanese, Russian and Chinese
  • Support for C-GM Counters and GQ Electronics LLC Geiger-Muller counter or compatible devices
  • Monitor radioactivity over a user-defined retention period (90 days max) or monthly (see picture)
  • Should the level exceed the user-defined threshold; emails are sent up to 5 email addresses.
  • Display current radiation level in µSv/h and maximum level over the retention period (recording)
  • Plot trace with zoom and pan functions (1 hour, 6 hours, 24 hours, 1 week and 4 weeks)
  • Log over the retention period can be downloaded and monthly data when available
  • Download and Configuration protected with login and password
  • Detection of GM tube failure and send e-mail to the administrator
  • Data redirection to GMC.MAP website (required a user account at gmcmap)
  • Support for Desktop computers, Tablets and Smartphone screens.


The ZIP below can be extracted into the Web directory of your SOHO server. For QNAP NAS owners, there is a QPKG package available from SourceForge.

Latest VERSION 1.3 can be downloaded from SourceForge

Step 6: The IoT Integration

Short description

A completely independent Node-RED limited version of A-GM is available for QNAP IoT environment. It is a different and limited A-GM Manager application that can be used for monitoring only.

Because the C-GM Counter is able to provide measurement data in a JSON format, it's an easy candidate for IoT integration. Some SOHO/NAS providers such as QNAP make available IoT frameworks on their machines for IoT devices supporting the JSON data format.

Here is attached a NodeRED file available that I have developed for integration in the QNAP IOT framework. It make possible to access C-GM Counter data from any computer or mobile devices.

Be the First to Share


    • Game Design: Student Design Challenge

      Game Design: Student Design Challenge
    • For the Home Contest

      For the Home Contest
    • Make It Bridge

      Make It Bridge


    Hello AdNovea.I build this device and it work great,but i have a problem with the device IP address.When i set NETWORK=ON, a few seconds after that, the terminal is responding with: "C-GM Counter IP:" and i do not know what i must do after this.I try to enter the IP address(for example:,but the terminal says me:"Failed! Invalid!".Can you show me the right way to setup the DEVICE_IP address please?When i type OPTIONS in the terminal command line i get:"device_ip": "" as a info.


    Reply 2 years ago

    Hi miroslavventsislavovshilov,

    From what I can see, your newtork uses two different segments : and
    By default the network MASK= and allows only one segment.
    For using several segments change the mask to
    But I'm not sure this will completely solve your problem as it strongly depend of your network configuration.

    Examples of correct inputs for :


    Reply 2 years ago

    Not sure I understand well your problem.
    This CGM version uses DHCP only.
    Therefor if you wanna set the CGM device IP, you have to associate its MAC address to a static IP in your network router.
    From what I can see, the DHCP fails. There was no bail for the CGM device given by the router and the system hangs until it will get one or reach the timeout.

    1- Enable NETWORK
    2- SAVE parameter's changes into the eeprom otherwise they will be lost at next reboot.
    3- Reboot to force your router to assign an IP address.

    The Only IP you can set is the SERVER address.
    When typing the IP address you must enter the leading zeros to have the correct format.

    NOTE: this thread has been de-published so I don't get email alert when user messages are posted.


    Question 3 years ago

    I made a copy of the C-GM counter.
    I flashed the version C-GM_v1.2a_standard.hex
    I could enter the tube factor and the high voltage factor.
    The display shows the booting process as default.
    But I can't change the server address to match my subnet, neither via Termite nor via web browser.
    Also the button doesn't work.
    Does anyone else have such problems?


    Answer 3 years ago

    Hi a-energie,

    Regarding the server IP address, you should type "000" for "0" fields.
    IP length must always have 15 chars.
    E.g. http://<your-device-IP>/?SERVER=
    Don't forget to PERMANENTLY SAVE changes in memory using the EEPROM command.

    The button has two modes short press and long press.
    If you long press (>0.5s) and release, you should enter the Menu.
    The Arduino Nano input is D5.
    The D5 input is pulled-up (no need for external pull-up resistor).
    Is the D5 line voltage changing when button is depressed ?
    Adding a 10nF in parallel of the button may improve debouncing.

    Hope this will help you solving the issues.


    Reply 3 years ago

    Hello AdNovea
    Many thanks for the quick answer.
    The problem was the format of the IP address, when I entered it 15 digits it worked and also the button worked from then on.
    But now I have another question, this time about the A-GM website.
    It runs on a Synology NAS.
    The website itself works, but I don't get any data.
    Also the data.csv file is nowhere to be found.
    Do you have a tip what permissions I should set?
    Or does the data.csv file have to be created manually in the folder hystory?

    Translated with


    Reply 3 years ago

    I'm not familiar with Synology NAS but I assume they works like any other NAS.
    I would try to set 777 permission during debugging and check if the files are correctly created.
    The "A-GM/history" folder containts data.csv, history.txt, last.txt and all AGM_yyyy_mm.csv files. These files are created by the PHP scripts.
    You can simulate data sending from device using the HTTP GET command line but A-GM round data timestamp to the minute (one data per minute).
    Also keep in mind that your PHP server must be configured for sending email. This is not always enabled by default.


    Reply 3 years ago

    Hi AdNovea
    Now it's working.
    The problem was that the PHP server could not send e-mails.
    Thanks for the project and your help.

    Alex in NZ
    Alex in NZ

    4 years ago

    Cool project. Thank you for sharing the design :-)


    4 years ago

    Have a look at the W-GM Counter (portable and wifi version battery powered). I'm finalizing the beta test and will release it soon. Here is attached a photo of the prototype. The components will cost only 22€ but are more fragile and can be easily destroyed making it assembly a little more complex.

    DIY Hacks and How Tos

    It would be really interesting to have a radiation detector to test random everyday things.