Yet another IOT geigercounter

Similar projects worth following

Check the github page

Eikgeiger opensource project for detection of background radiation in Norway. It is developed in cooperation with Eik Ideverksted at NMBU. Use the design for anything you like comercially and privately, but i would love if you fork it so i can see what it is used for.

It uses an ESP32-WROOM-32E wifi module both communication and MCU, and is mostly based on surface mount components. It has a 100-1200v multiplied buck boost converter and the voltage is software configurable over serial.

If you want to handsolder this, i really recommend to check out the awesome IBOM assembly utility on github (use it with a desktop as it sucks on mobile)

The sourcecode is developed for pushing to, but it allso has a simple get api to fetch data with homeassistant


Parameter Description
Input voltage Usb-C cable, Header 4-6v, Direct 3.3v
Current Wifi: 150-250mA, Radio Off: 44mA, Only HV psup 4mA, Deep sleep 70uA
Communication 2.4ghz WIFI, Uart TTL, Uart over USB
Baudrate 115200
PCB size 31x119mm
Case size 30x35x121mm

Serial port control commands

To reconfigure device settings you need to connect the eikgeiger to a computer with a serial terminal (I recommend to just use the Arduino Program, but any serial terminal should work) When you want to configure a value you use two characters plus a number. So to set the PWM frequency to 2000hz, you would write PF2000 in the terminal and send. Some commands need a specific number, e.g to factory reset you must transmit FR9999. See the github page for serial command documentation


The pcb has one pinheader (J5) which can be used for 1 x i2c or 2 x Onewire io, and one header (J10) with 1xGpio, and 1x mosfet open collector for eg a clicker. A piezo buzzer with 5mm pitch can be directly soldered in the header holes. It is also possible to split out the 5v from the usb to insert an ebay generic lipo charger/powersupply to make it battery driven with usb charging.

It also implements an integrated FTDI chip to get serial over USB, and a transistor based rts#/dtr# pulldown function for the boot pin on the ESP (shamelessly stolen from the weemos d1 mini design) so it allows for automatic programming over USB without pushing the boot pin.

Homeassistant Implementation

To add the sensor in home assistant, you can use the following YAML sensor

  - platform: rest
    name: EIK_Geiger
    resource: http://<IP-Address>/cpm
      - "data"
    value_template: "OK"
  - platform: template
        value_template: "{{ state_attr('sensor.EIK_Geiger', 'data')['cpm'] }}"
        unit_of_measurement: "cpm"
        value_template: "{{ state_attr('sensor.EIK_Geiger', 'data')['cpm_M'] }}"
        unit_of_measurement: "cpm_avg_m"
        value_template: "{{ state_attr('sensor.EIK_Geiger', 'data')['cpm_H'] }}"
        unit_of_measurement: "cpm_avg_h"
        value_template: "{{ state_attr('sensor.EIK_Geiger', 'data')['raw_volt'] }}"
        unit_of_measurement: "raw_voltage"

x-zip-compressed - 35.75 MB - 12/07/2023 at 14:33


Adobe Portable Document Format - 169.36 kB - 12/07/2023 at 14:32


  • First Batch Ready

    Fredrik Beilegaard12/06/2023 at 21:06 0 comments

    I got approached by PCBway who wanted to sponsor a batch of assembled prototypes, and i just received them and fired them up!! I wanted them without the inductor and tube holders because i want to experiment a bit with different tubes, and to check if i could use some smaller inductors

    The assembled boards look beautiful! And they booted up perfectly, and thanks to the dtr/rts boot/rst transistor they program directly through USB-C without having to push any buttons., if you want one ive added the project to PCBway Projects, so its pretty easy to get one there.

    Boards with tubes:

    Since i finally got some prototypes to test out i dug down in my tube collection and found a SBM-20 which it is designed for accepting directly with mounted 6.5mm fuse holders, but i also have a huge SBM-19 and a pancake SI-14 Ive always wanted to check out.


    This is what it is designed for, the small portable SBM-20 tubes, They are quite cheap, i think i paid about 15$ per piece from an Ebay seller in ukraine. They run at around 240-280v, (with the 22mh inductor i get that around 25% pwm @1000hz) and they give about 20 clicks per minute, since the power supply is software configurable, its just a matter of sending "VOxxx" commands over serial until i start to get ticks, and then i increase it a little bit. the sbm-20 tubes i usually run around VO400.

    PCB with inductor and SBM-20 tube mounted

    I also wanted to upgrade the case, Ive made a 2 part snap fit 3d printed case, the old one weren't very water resistant if i wanted to use them outdoors, so Ive recessed the USB hole so i can pot the cable in place, and made the lid lip go a little bit further over the main case. I also designed some brackets for wall mounting.


    Next i wanted to test out my SBM-19 tube! This is a beast, 195mm long and 19mm in diameter, running at 350-375V and gives out a nice 80-90CPM, so it sounds very geigery with multiple clicks per second just from background radiation. The fuse-holders fit on the tube terminals, but i had to solder some wires to the board

    Eikgeiger with SBM-19 soldered with wires

    I allso made a snapfit case for this tube , its based on the SBM-20 case but much larger, and an internal cutout for the tube and fuse holder

    SBM-20 Case
    SBM-20 tube and pcb mounted in case

    Case assembled

    The next in line is to make a battery driver version with a screen using the SI-14b pancake tube! So looking forward to that.

    Below are some macro shots of the board:
    Very clean TH solderjoints! Happy with that

    Silkscreen is good and legible
    0.6mm high silkscreen text
    Voltage doublers

View project log

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates