ESPGeiger Compatible Hardware
ESPGeiger is written to be compatible with both the ESP8266 and ESP32 range of MCUs.
ESP8266
The Wemos D1 Mini (4MB) is the recommended ESP8266 MCU for ESPGeiger.
The ESP8266 ESPGeiger build is the base firmware for the official ESPGeiger-based hardware ESPGeiger-HW and ESPGeiger Log.
ESP32
PCNT
The ESP32 range of MCUs feature an in-built hardware pulse counter (PCNT). By default ESPGeiger uses the hardware PCNT on Pulse builds for ESP32 devices. A no_pcnt build is also available for ESP32 which uses the same Interrupt counter mechanism as the ESP8266 builds.
PCNT Filter
The PCNT hardware includes a glitch filter that can ignore pulses shorter than a configurable threshold. This helps filter out electrical noise and interference that could otherwise be counted as false radiation events.
The filter value can be configured from the ESPGeiger web interface under Config. The value ranges from 0 to 1023, representing APB clock cycles at 80MHz (each unit = 12.5ns). A value of 0 disables filtering.
| Filter Value | Pulse Duration Filtered | Use Case |
|---|---|---|
| 0 | Disabled | No filtering |
| 100 (default) | < 1.25μs | Filters electrical noise while passing all real geiger pulses |
| 500 | < 6.25μs | More aggressive filtering for noisy environments |
| 1023 | < 12.8μs | Maximum filtering |
Real Geiger-Muller tube pulses are typically 50-200μs in duration, so even the maximum filter value will not affect real readings. The filter is only available on ESP32 PCNT builds.
The filter value can also be set at compile time with the -D PCNT_FILTER=N build flag. See Build Options for details.
Interrupt Debounce
On builds that use software interrupt counting instead of PCNT (all ESP8266 pulse builds, and ESP32 no_pcnt builds), a debounce window rejects any edge that arrives within a configurable number of microseconds of the previously accepted pulse. This serves the same purpose as the PCNT filter — suppressing electrical noise and contact bounce without affecting real tube pulses.
The debounce value can be configured from the ESPGeiger web interface under Config. The value is in microseconds, with a range of 0 to 10000. A value of 0 disables the debounce.
| Debounce Value | Pulses Rejected | Use Case |
|---|---|---|
| 0 | Disabled | No debounce |
| 500 (default) | < 500μs apart | Suppresses typical switching noise, passes all real pulses |
| 1000 | < 1ms apart | More aggressive for noisier setups |
Real Geiger-Muller tube dead time is around 50-200μs, so the default value comfortably accommodates real events. The debounce only applies to the software interrupt path; PCNT builds use the PCNT Filter above instead.
The default can also be set at compile time with the -D GEIGER_DEBOUNCE=N build flag. See Build Options for details.