Introduction: Hack GMC Geigercounter With Blynk

Even though my GMC-320 Plus Geigercounter has built-in WiFi, I was not really able to use it. That´s why I wanted to build a Device, that can stream the recorded data to my mobile / the web while adding additional features such a cumulative dose, WiFi and Bluetooth. I wanted an option to use WiFi for a stationary setup at home and Bluetooth to use the device out in the field. This is why you can select between both connection types with a simple switch. All the Data is shown on a small 128*32 Pixel OLED Display and uploaded to the Blynk cloud. The device connects to the geigercounter with a simple aux cable, so you don´t have to make any changes to your geigercounter at all!


Geigercounter with AUX output, e.g. for headphones

Aux cable

NE555 Timer IC

680uF, 10V capacitor

C1815 NPN Transistor

18650 Battery

TP4056 charging & protection board

Step up converter (e.g. XL6009) with 5V output

2x 1kOhm 0.25W resistor

1x 470Ohm 0.25W resistor

1x 10Ohm 0.25W resistor

1x 3.3kOhm 0.25W resistor

1x 22Ohm 0.25W resistor

0.01uF Cermaic capacitor ( Code : 103)

PCB material

3.5mm jack, female


2x permanent switch


MCP1700-3302 LDO 3.3V regulator

Optional: 128x32 Pixel OLED I2C Display


Soldering Iron with Solder

USB to TTL converter


Hot Glue

Optional: Tools to etch PCB


Step 1: Build the Thing!

Now it is time to assemble the Circuit. I made myself a custom PCB from scratch, but the circuit is not that complex and can easily be build on a breadboard or something similar.

The whole project including the PCB I used can be found here :

If you want to use the PCB I used, you have to bend the Pins of the NE555 backward so that the pinout matches when you mount it on the other side. You also have to connect a cable between the unconnected side of R3 and Battery +, if you want to see your batteries voltage.

If you want to, you can put it into a more permanent setup. I have designed a housing for it, you can 3D Print it now. You can get the STL files from here:

Step 2: Setup Blynk App

Download the Blynk App from Applestore or Google Play store. In the App you can create a new account.

After that you can create a new project. As board type you have to select "ESP32 Dev board" and as connection type "Bluetooth". An auth token will be sent to your email address.

In the Project, you cann now add different widgets to you project, using the + Icon in the upper right corner.

Here you can add the Widget "Value Display" four times as well as ther Widget "Superchart". If you want to use Bluetooth aswell, you also have to add the Bluetooth widget.

Every value display will show a differnt Value (CPM, uSv/h, uSv and Batteryvoltage). To set them up, you click on the field and select the right Virtual pin (CPM = V1, uSv/h = V3, uSv = V5, Voltage = V7).

Now you cant set up the Superchart. It will plot the recorded data. To do this, you can tap the Superchart Widget and under "Datastreams" you select "New Datastream" for every value you want to Plot. With the small slider Icon on the right, you can select the color and virtual pin (CPM = V2, uSv/h= V4, uSv = V6, Volatage = V8). Keep in mind that every value needs a new Datastream!

Step 3: Program the ESP32

Using the Program Port (See schematic) you can connect the ESP with the TTL converter. GPIO0 and GND to GND, 3.3V and EN to 3.3V, RX to TX and TX to RX.

You now have to install the Arduino IDE, you can get it here:

After installing and opeing it, you have to go to Arduino > Preferences. Here you post this link : into the additional Boards Manger URL option.

You can now close the Preference Window. Now go to Tool > Board > Board manager and type "ESP32" into the search. Now click on install.

Next up we have to install the Libraries. To do that, you have to go to Sketch > Add Libary > Manage Libraries.

Now you have to install "Adafruit_SSD1306", "Adafruit_GFX", "Wire", "SPI" and "Blynk". Some of these are maybe already installed. Finally you can install the main Blynk library from here:

Just follow the instructions in the "Readme" file.

Now open the sketch, you can find it in the Library you just downloaded. Go to Examples > GeigercounterOLED and open the Geigercounter_Oled.ino file in Arduino.

Here you have to put in your WiFis Name(SSID) and password, aswell as the auth code that was sent to you by email when you created the Blynk project.

Thats it! Hit upload und wait until it says "Upload complete". You Device should work now.

Step 4: How to Use It?

You can connect the divice to the Geigercounter with an auxcable now. If you close the switch between GND and GPIO14 and turn it on, the Device will boot into Bluetooth mode. In the App, you can now click on the bluetooth icon and select the Geigercounter. It will now stream the data via Bluetooth.

If you prefer WiFi mode instead, just open the switch. If you apply Power to it, it will attempt to connect to your WiFi and stream the Data to the cloud directly.

If you Device shows wrong uSv/h, it is possible that your Geigercounter uses a different kind of Geiger Müller Tube and has therefore a different conversion factor. The GMC320 uses an M4011 Tube. Here 1uSv/h is 152 CPM, so 1/152 = 0.00658 In the sketch, you have to change "CONV_FACTOR".

If you want to find out you conversion Factor, just google your tube and find a datasheet.

If you want to find out more on how this works and on how to calculate the Sieverts from CPM, take a look at this article: