

Opengeiger
IOT Geigercounter for workshop
- Size
- 116 × 31 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 96
- Nets
- 89
- Pads
- 310
- Tracks, vias
- 842, 227
- Pours
- 342
- Routed
- Yes
- KiCad
- KiCad 7 (file 20221018)
- Created
- 3 Nov 2022
- Updated
- 11 Jan 2024
Overview
Opengeiger is an open-source printed circuit board by fredriknk, from the fredriknk/eikgeiger repository on GitHub, published under the MIT licence. It is a 2-layer board of 116 × 31 mm with 96 parts on 89 nets, routed with 842 tracks and 227 vias.
It is built around the ESP32-WROOM-32E-N16, FT231XS-R and TC1264-3.3VDBTR, with the LTST-C191KRKT, RS1J and CC0603KRX7R9BB104 among its other parts. Its parts include 34 resistors, 19 capacitors, 14 diodes, 5 connectors and 4 transistors. It belongs with the ESP32 boards of this library.
Main components
12ESP32-WROOM-32E-N16
WIFI-SMD-40℃~+85℃ -98dBm 112mA 2.4GHz 20dBm 239mA 3V~3.6V Bluetooth4.2 ESP32-DOWD-V3 On-board PCB Antenna UART、SDIO、SPI、I2C、GPIO、ADC、DAC、Ethernet、TWAI SMD,25.5x18mm WiFi Modules ROHSEspressif SystemsWiFi ModulesFT231XS-R
SSOP-20-150mil-40℃~+85℃ 125uA 5V 8.4mA USB 2.0 USB to UART SSOP-20-150mil USB Converters ROHSFTDIUSB ConvertersTC1264-3.3VDBTR
SOT-223-3-40℃~+125℃@(Tj) 1 130uA 3.3V 64dB@(1kHz) 6V 800mA Fixed Over Current Protection、Over Temperature Protection Positive SOT-223-3 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSMicrochip TechnologyVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsLTST-C191KRKT
0603-55℃~+85℃ 130° 20mA 2V 54mcd 631nm 639nm 75mW Discrete Diode Red Water Clear 0603 LED Indication - Discrete ROHSLite-OnLED Indication - DiscreteRS1J
SMA-55℃~+150℃ 1 Independent 1.3V@1A 1A 250ns 30A 5uA@600V 600V SMA Fast Recovery / High Efficiency Diodes ROHSMDDFast Recovery / High Efficiency DiodesCC0603KRX7R9BB104
0603100nF 50V X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSYAGEOMultilayer Ceramic Capacitors MLCC - SMD/SMTKTR18EZPF1005
1206-55℃~+155℃ 10MΩ 250mW 500V Thick Film Resistor ±1% ±100ppm/℃ 1206 Chip Resistor - Surface Mount ROHSROHM SemiconductorChip Resistor - Surface MountRMCF0603JT10K0
0603-55℃~+155℃ 100mW 10kΩ 75V Thick Film Resistor ±200ppm/℃ ±5% 0603 Chip Resistor - Surface Mount ROHSStackpole Electronics (SEI)Chip Resistor - Surface MountKTR18EZPF1004
1206-55℃~+155℃ 1MΩ 250mW 500V Thick Film Resistor ±1% ±100ppm/℃ 1206 Chip Resistor - Surface Mount ROHSROHM SemiconductorChip Resistor - Surface MountCL21A226MOCLRNC
080516V 22uF X5R ±20% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSSamsung Electro-MechanicsMultilayer Ceramic Capacitors MLCC - SMD/SMTRMCF0603JT47R0
0603-55℃~+155℃ 100mW 47Ω Thick Film Resistor ±200ppm/℃ ±5% 0603 Chip Resistor - Surface Mount ROHSStackpole Electronics (SEI)Chip Resistor - Surface MountKTR18EZPJ514
1206-55℃~+155℃ 250mW 500V 510kΩ Thick Film Resistor ±200ppm/℃ ±5% 1206 Chip Resistor - Surface Mount ROHSROHM SemiconductorChip Resistor - Surface Mount
README
README.mdEIKGEIGER

Eikgeiger opensource project for detection of background radiation in Norway. It is developed in cooperation with Eik Ideverksted. 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.
First Batch
Thanks to PCBway for providing assembled prototype units for this project. Its awesome that you support the opensource community like this! If you want one for yourself, i've made a pcbway project which you can make an assembly order quite easily.

Description
It uses anESP32-WROOM-32E wifi module both communication and MCU, and is mostly based on surface mount components.
Thanks to the DIYgeiger radmon project for inspiration DIYGeiger RADMON + kit.
If you want to handsolder this, i really recommend to check out the awesome IBOM assembly utility (use it with a desktop as it sucks on mobile) Assembly IBOM
Specifications
| 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 |
| Series Resistor | 4.51MOHM |
Serial port controll comands
To reconfigure device settings you need to connect the eikgeiger to a computer with a serial terminal (I reccomend 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, eg to factory reset you must transmit FR9999. after you have verified that the configuraion works you use SA1 to save the config to the flash eeprom
| Characters | Unit | Value | Factory Value | Description | Example |
|---|---|---|---|---|---|
| VO | VOLT (value/4096 %) | 0-2000 | 350 | Set pwm duty cycle, this is a value which controlls the duty cycle of HV power supply, it is a 12bit (4096) value, but you cant go over 50% or the coil field colapses. So keep it under 2046=50% duty cycle. (SBM-20 tubes like it best between 350-400) | VO350 |
| VF | FREQUENCY (hz) | 0-18000 | 1001 | Set pwm frequency, from experimentation i have found ~1000hz to be most effective but it can make some coil whine, It is smart to not have this as a value divisible by log output, or it might generate some interferance with ADC readings | VF1001 |
| SA | SAVE | 1 | - | Saves parameters to eeprom | SA1 |
| RE | RESTART | 1 | - | Restarts device | RE1 |
| RF | FACTORY RESET | 9999/1111 | - | Resets all values to factory default and restarts device, 1111 will reset all settings except wifi and radmon credentials, 9999 resets everything | RF9999 |
| BE | BEEPER (activation) | 0/1 | 0 | Activate beeper output 0=Off 1=On | BE1 |
| BD | _BEEPER duty (val/255) _ | 0-127 | 50 | Beeper duty cycle, higher number is louder | BD50 |
| BF | BEEPER FREQUENCY (hz) | 10-40000 | 6000 | Beeper frequency 6000hZ is a very nice and annoying frequency | BF6000 |
| LE | LED (activation) | 0/1 | 1 | Activate LED output 0=Off 1=On | LE1 |
| LF | FLASHTIME (mS) | 1-500 | 10 | How long the beeper beeps and led flashes in mS for every click. If value is higher than 60*1000/CPM, you will have counts without indication | LF10 |
| LO | LOG OUTPUT | 0/1 | 1 | Outputs raw_volt:(Voltage ADC reading, arbtrary number not directly related to volt) set_volt:(Duty cycle value) cpmM:(Running average CPM for one minute) cpmH:(Running average CPM for one hour) cpm:(CPM value for last detection) | LO1 |
| LS | LOG SPEED | 0-10000 | 1000 | Number of milliseconds for every log output over serial | LS1000 |
| EV | EVENTS (number) | 0-1000 | 0 | How many events for one flash, in practice it will divide by that number, so a value of 10, it will need 10 detections for every led and ticker flash. | EV0 |
Description
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 allso possible to split out the 5v from the usb to insert an ebay generic lipo charger/powersuply to make it battery driven with usb charging.
It allso 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, use the following YAML sensor, supplied by u/chillinorway
sensor:
- platform: rest
name: EIK_Geiger
resource: http://<IP-Address>/cpm
json_attributes:
- "data"
value_template: "OK"
- platform: template
sensors:
cpm:
value_template: "{{ state_attr('sensor.EIK_Geiger', 'data')['cpm'] }}"
unit_of_measurement: "cpm"
cpm_m:
value_template: "{{ state_attr('sensor.EIK_Geiger', 'data')['cpm_M'] }}"
unit_of_measurement: "cpm_avg_m"
cpm_h:
value_template: "{{ state_attr('sensor.EIK_Geiger', 'data')['cpm_H'] }}"
unit_of_measurement: "cpm_avg_h"
raw_volt:
value_template: "{{ state_attr('sensor.EIK_Geiger', 'data')['raw_volt'] }}"
unit_of_measurement: "raw_voltage"BUCK BOOST CONVERTER
It is designed for SBM-20 GM tube integrated onto the PCB with 6.3mm fuse holders, but it can use any tube up to 1000v if you just solder on some leads. The power supply is a standard buck boost, but with a 4x voltage multiplier output. It seems reaonably of effective, and consumes about 4ma@3.3v delivering 350v out running at 1000hz pwm. It has a voltage feedback read by adc2 on the esp32 module, but from experimentation i found it more stable to just set a pwm level rather than actively regulating it

More Pictures
Renders
SBM-20 Enclosure
SBM-19 Enclosure
Parts
96| Qty | Value | Footprint | References |
|---|---|---|---|
| 9 | 330nF | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C2, C4, C10, C11, C12, C13, C14, C23, C24 |
| 7 | 270R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R9, R10, R11, R12, R13, R33, R34 |
| 7 | RED_LED | LED_SMD:LED_0603_1608Metric | D2, D3, D4, D5, D6, D7, D14 |
| 7 | RS1J | Diode_SMD:D_SMA | D1, D8, D9, D10, D11, D12, D13 |
| 5 | 0.1uF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C6, C8, C9, C15, C16 |
| 5 | 10M | Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R20, R22, R24, R26, R28 |
| 5 | 10k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R2, R8, R16, R17, R18 |
| 4 | 1M | Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R19, R21, R23, R25 |
| 4 | 22uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C1, C3, C5, C17 |
| 3 | 47R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R1, R31, R32 |
| 3 | 510k | Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R3, R4, R27 |
| 3 | Conn_01x04 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J1, J5, J10 |
| 3 | Fiducial | Fiducial:Fiducial_1mm_Mask2mm | FID1, FID2, FID3 |
| 2 | 100k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R6, R29 |
| 2 | 5.1k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R14, R15 |
| 2 | 6.35mm Fuse holder | eikgeiger:FC-102-22 | F1, F2 |
| 2 | MountingHole_Pad | MountingHole:MountingHole_2.5mm_Pad_Via | H1, H3 |
| 2 | MountingHole_Pad | MountingHole:MountingHole_2.5mm | H2, H4 |
| 2 | TL3301NF160QG/TR | eikgeiger:SW_TL3301NF160QG_TR | SW1, SW2 |
| 1 | 0R | Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R30 |
| 1 | 1.5k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R5 |
| 1 | 22mH | Inductor_THT:L_Radial_D10.5mm_P5.00mm_Abacron_AISR-01 | L2 |
| 1 | 27k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R7 |
| 1 | 330pF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C7 |
| 1 | Conn_01x06 | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical | J3 |
| 1 | DMG2302UK-7 | Package_TO_SOT_SMD:SOT-23_Handsoldering | Q3 |
| 1 | ESP32-WROOM-32E | eikgeiger:ESP32-WROOM-32 | U1 |
| 1 | FT231XS | Package_SO:SSOP-20_3.9x8.7mm_P0.635mm | U3 |
| 1 | G*** | kibuzzard-6571CD20 | kibuzzard-6571CD20 |
| 1 | G*** | kibuzzard-637F3F6B | kibuzzard-637F3F6B |
| 1 | G*** | kibuzzard-6571CD43 | kibuzzard-6571CD43 |
| 1 | GM_tube_HOLDERS | eikgeiger:SBM-20 | G1 |
| 1 | LOGO | LOGO | G*** |
| 1 | PMBT2222A,215 | Package_TO_SOT_SMD:SOT-23_Handsoldering | Q2 |
| 1 | STN0214 | Package_TO_SOT_SMD:SOT-223 | Q1 |
| 1 | TC1264-3.3VDBTR | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U2 |
| 1 | UMH3N | Package_TO_SOT_SMD:SOT-363_SC-70-6 | Q4 |
| 1 | USB_C_Receptacle_USB2.0 | Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | J8 |
Questions
How big is the Opengeiger PCB?
It measures 116 × 31 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Opengeiger use?
96 parts, built around the ESP32-WROOM-32E-N16, FT231XS-R, TC1264-3.3VDBTR and LTST-C191KRKT. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Opengeiger KiCad files?
From the fredriknk/eikgeiger repository on GitHub, at the commit this page was made from: the board is CAD/opengeiger.kicad_pcb and its schematic CAD/opengeiger.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Opengeiger design in my own project?
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).
Similar boards
- 4 layers100 × 40 mm

- 2 layers72 × 43 mm

- 4 layers94 × 54 mm

Transportation Monitor PCB
giatats/Transportation_Monitor_PCB
Transportation monitor device for PeakSat nanosatellite
86 parts - 2 layers111.6 × 59.4 mm

Gotek
liveboxandy/Gotek-SFRKC30.AT4.35
Project to create an ibom for a SFRKC30.AT4.35 based Gotek
78 partsCC0-1.0 - 4 layers55 × 35 mm

Commo
Stab-Rabbit-coding/Serenity-UAV
A functional, security conscious, Unmanned Aerial Vehicle based on the Firefly Class spacecraft Serenity from the 2002 show..
88 parts1CERN-OHL-W-2.0 - 4 layers194 × 94 mm

- 4 layers172 × 140.5 mm

- 4 layers44.5 × 44.5 mm

QUT Autopilot Pixracer
Heckus/QUT-OpenFCU
The primary objective is to create an alternative to the difficult-to-source off-the-shelf Pixhawk 6. This work builds upon a edited pixracer version produced by KAI (Wesley) in 2022.
145 parts