{"id":49427509,"url":"https://github.com/steadramon/espgeiger","last_synced_at":"2026-05-27T17:00:51.621Z","repository":{"id":152241858,"uuid":"620544993","full_name":"steadramon/ESPGeiger","owner":"steadramon","description":"☢️ ESP8266 / ESP32 Firmware for collecting and reporting statistics from Geiger counters","archived":false,"fork":false,"pushed_at":"2026-05-23T19:36:56.000Z","size":60963,"stargazers_count":50,"open_issues_count":0,"forks_count":5,"subscribers_count":8,"default_branch":"main","last_synced_at":"2026-05-23T20:19:32.467Z","etag":null,"topics":["arduino","cajoe","esp32","esp8266","gc10","geiger-counter","geiger-muller","home-assistant","iot","mightyohm","mqtt","mqtt-client","neopixel","pcnt","platformio","radiation","radiation-detector","radiation-sensor","radmon","sdcard"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/steadramon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-03-28T22:32:46.000Z","updated_at":"2026-05-23T19:36:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"67b5b7e7-2646-424d-a119-cfd95a265fe7","html_url":"https://github.com/steadramon/ESPGeiger","commit_stats":null,"previous_names":[],"tags_count":52,"template":false,"template_full_name":null,"purl":"pkg:github/steadramon/ESPGeiger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steadramon%2FESPGeiger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steadramon%2FESPGeiger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steadramon%2FESPGeiger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steadramon%2FESPGeiger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/steadramon","download_url":"https://codeload.github.com/steadramon/ESPGeiger/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steadramon%2FESPGeiger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33575520,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","cajoe","esp32","esp8266","gc10","geiger-counter","geiger-muller","home-assistant","iot","mightyohm","mqtt","mqtt-client","neopixel","pcnt","platformio","radiation","radiation-detector","radiation-sensor","radmon","sdcard"],"created_at":"2026-04-29T10:03:07.459Z","updated_at":"2026-05-27T17:00:51.609Z","avatar_url":"https://github.com/steadramon.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build](https://github.com/steadramon/ESPGeiger/workflows/Build/badge.svg?branch=main)](https://github.com/steadramon/ESPGeiger/actions) [![Issues](https://img.shields.io/github/issues/steadramon/ESPGeiger)](https://github.com/steadramon/ESPGeiger/issues) [![Stars](https://img.shields.io/github/stars/steadramon/ESPGeiger)](https://github.com/steadramon/ESPGeiger/stargazers)\n\n# \u003cimg src=\"https://raw.githubusercontent.com/steadramon/ESPGeiger/main/docs/img/ESPGeiger.svg\" width=\"30px\"/\u003e ESPGeiger\n\nESPGeiger is an open-source project that turns an ESP8266 or ESP32 into an IoT-connected Geiger counter. It collects, calculates and reports radiation levels from a range of Geiger counters with pulse or serial outputs.\n\n- 😃  Easy to install via web browser - no compiler required\n- ✅  Works with generic pulse counters and GC10, GC10next, MightyOhm serial counters\n- 📈  Built-in web server with live graphing\n- 🔴  Live CPM and μSv/h readings\n- 🔢  Smoothed values over 1, 5 and 15 minutes\n- 🖥️   Optional SSD1306 / SSD1309 / SH1106 OLED display and WS2812X NeoPixel status light\n- 🌡️   Optional BME280 / BMP280 / AHT environmental sensors - auto-detected over I2C\n- 📟  Accurate counting via interrupt or ESP32 hardware counter (PCNT)\n- 🌐  MQTT, Home Assistant auto-discovery, Radmon.org, GMCMAP, ThingSpeak, custom Webhooks\n- 📡  UDP/OSC receiver builds for tubeless mirror displays and fleet aggregators\n- 💾  Optional SD card logging\n- 🚧  Test builds for emulating pulse and serial counters\n\n\u003cimg src=\"https://raw.githubusercontent.com/steadramon/ESPGeiger/main/docs/hardware/img/ESPGeigerLog.png\" width=\"50%\"/\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/steadramon/ESPGeiger/main/docs/img/statuspage.png\" width=\"50%\"/\u003e\n\n## Quick Start\n\nThe easiest way to install ESPGeiger is the **Web Installer** - it runs in your Chrome or Edge browser and flashes your device over USB. No code editor or compiler required.\n\n### 👉 [https://install.espgeiger.com](https://install.espgeiger.com)\n\nSelect your build from the dropdown and follow the on-screen instructions. Installation takes about two minutes.\n\n## Which Build Do I Need?\n\nPick the build that matches your hardware. If in doubt, start with **Pulse** - it works with most generic Geiger counters.\n\n### I have an ESP + generic pulse Geiger counter\n\n| Hardware | Recommended Build |\n|---|---|\n| ESP8266 (Wemos D1 Mini, NodeMCU, etc.) | `esp8266_pulse` |\n| ESP8266 with SSD1306 OLED | `esp8266oled_pulse` |\n| ESP32 | `esp32_pulse` |\n| ESP32 with SSD1306 OLED | `esp32oled_pulse` |\n| CAJOE IoT-GM (ESP32 with built-in OLED) | `esp32_cajoe_iotgm` |\n\n### I have an ESP + serial Geiger counter\n\nA single serial build supports all serial counter types (GC10, GC10Next, MightyOhm, ESPGeiger). Select your counter type from the **Config** page after flashing.\n\n| ESP8266 Build | ESP32 Build |\n|---|---|\n| `esp8266_serial` | `esp32_serial` |\n\nOLED variants: `esp8266oled_serial` / `esp32oled_serial`.\n\n### I have an ESPGeiger-HW or ESPGeiger Log\n\nThese are official ESPGeiger hardware kits - use the hardware-specific builds:\n\n| Hardware | Pulse | Serial |\n|---|---|---|\n| ESPGeiger-HW | `espgeigerhw` | - |\n| ESPGeiger Log | `espgeigerlog` | `espgeigerlog_serial` |\n\n### I want to test without a real Geiger counter\n\nTest builds emulate a Geiger counter internally. You can also wire the `TXPIN` of one ESPGeiger to the `RXPIN` of another to simulate a serial counter:\n\n| Build | Description |\n|---|---|\n| `esp8266_test` / `esp32_test` | Internal counter, no output |\n| `esp8266_testpulse` / `esp32_testpulse` | Outputs Poisson-distributed pulses on TXPIN |\n| `esp8266_testserial` / `esp32_testserial` | Emulates a serial counter (type selectable via Config) |\n\n### I want a remote display or fleet aggregator (no tube needed)\n\nUDP receiver builds listen for OSC multicast broadcasts from other ESPGeiger devices and mirror them locally. Everything (CPM, µSv, OLED, MQTT, blip-LED) works as if a real tube were attached:\n\n| Hardware | Build |\n|---|---|\n| ESP8266 | `esp8266_udp` / `esp8266oled_udp` |\n| ESP32 | `esp32_udp` / `esp32oled_udp` |\n\nProducers enable the broadcast via Config → Local broadcast → mode 2. See [UDP / OSC Output](https://docs.espgeiger.com/output/udp) for the full protocol.\n\nSee the full list of available builds on the [releases page](https://github.com/steadramon/ESPGeiger/releases/latest) or in the [build targets documentation](https://docs.espgeiger.com/install/buildtargets).\n\n## Hardware Connection\n\nBy default `GEIGER_RXPIN` is set to GPIO13. Connect your Geiger counter's pulse or serial TX output to this pin. Don't forget a common ground.\n\n\u003cimg src=\"https://raw.githubusercontent.com/steadramon/ESPGeiger/main/docs/img/D1mini-basicwiring.png\" width=\"50%\"/\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/steadramon/ESPGeiger/main/docs/img/cajoe-wemosd1.jpg\" width=\"50%\"/\u003e\n\n## First-time Setup\n\n1. After flashing, connect to the new Wi-Fi network (`ESPGeiger-XXXXXX`)\n2. A captive portal should pop up - if not, browse to http://192.168.4.1/\n3. Select your home Wi-Fi network and enter the password\n4. Once connected, browse to `http://ESPGeiger-XXXXXX.local` or the assigned IP\n5. Configure MQTT, Radmon, GMCMAP, ThingSpeak and other outputs from the Config page\n\n\u003cimg src=\"https://raw.githubusercontent.com/steadramon/ESPGeiger/main/docs/img/ESPGeiger-anim.gif\" width=\"75%\"/\u003e\n\n## Upgrading\n\nUpgrades can be done over-the-air through the web interface. Please be careful to select the right firmware for your hardware.\n\nNote: ESP32 users should use the `firmware` binary when upgrading (the `merged` binaries are for fresh installs via the Web Installer).\n\n## Documentation\n\nFull documentation is available at **[docs.espgeiger.com](https://docs.espgeiger.com/)**.\n\n## Building from Source\n\nIf you want to customise the firmware or create a build for unsupported hardware, you can build from source using PlatformIO. See the [Platformio Build documentation](https://docs.espgeiger.com/install/platformio) for details.\n\n## Compatible Geiger Counters\n\n### Pulse\n\n- [DIY GeigerKit](https://sites.google.com/site/diygeigercounter/)\n- [NetIO GC10](https://www.ebay.co.uk/usr/pelorymate)\n- [RHElectronics](https://www.rhelectronics.store/diy-geiger-counter-kit)\n- [GeigerHV](https://www.ebay.co.uk/usr/geigerhv)\n- [GGreg20](https://www.tindie.com/stores/iotdev/)\n- [MightyOhm Kit](https://www.tindie.com/stores/mightyohm/) (can also be used as a pulse counter)\n- [DiY-GDC](https://www.ebay.com/usr/impexeris)\n- CAJOE (and clones) RadiationD-v1.1\n\n### Serial\n\n- GC10 / GC10-Next\n- MightyOhm\n- ESPGeiger-HW\n\nOther serial-based counters should be supportable with small additions to the codebase. If you have one not listed, please [raise an issue](https://github.com/steadramon/ESPGeiger/issues).\n\n## Announcing ESPGeiger-HW\n\n\u003cimg src=\"https://raw.githubusercontent.com/steadramon/ESPGeiger/main/docs/img/ESPGeiger-HW-STS-5.jpg\" width=\"75%\"/\u003e\n\nThe official IoT Geiger counter powered by ESPGeiger. See [docs.espgeiger.com](https://docs.espgeiger.com/hardware/espgeigerhw) for more information.\n\n## Contributions\n\nContributions are welcome - please feel free to raise a Pull Request or open an issue.\n\n## Thanks 🙏\n\nSupporting libraries:\n- [WiFiManager](https://github.com/tzapu/WiFiManager)\n- [AsyncHTTPRequest_Generic](https://github.com/khoih-prog/AsyncHTTPRequest_Generic)\n- [ESPNtpClient](https://github.com/gmag11/ESPNtpClient)\n- [Smoothed](https://github.com/MattFryer/Smoothed)\n- [ArduinoJson](https://github.com/bblanchon/ArduinoJson)\n\nInspiration:\n- [OpenMQTTGateway](https://github.com/1technophile/OpenMQTTGateway)\n- [tinyGS](https://github.com/G4lile0/tinyGS/)\n- [FreqCountESP](https://github.com/kapraran/FreqCountESP)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteadramon%2Fespgeiger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsteadramon%2Fespgeiger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteadramon%2Fespgeiger/lists"}