GEIGER COUNTER RadiationD V1-1 with Arduino Nano & SH1106 OLED
Overview
This project is a compact radiation monitor built around an Arduino Nano, a Geiger–Müller tube detector module (RadiationD-v1.1 / CAJOE) and a 1.3" SH1106 OLED display.
The system measures radiation pulses from the Geiger module and calculates:
- • Instant radiation dose rate (µSv/h)
- • Counts per minute (CPM)
- • Integrated radiation dose (µSv)
- • 60-second activity graph
The device includes a menu system, alarm buzzer, snooze function, battery indicator, and several stability protections (Watchdog Timer + I²C timeout recovery) for reliable field operation.
The firmware is designed to run continuously and recover automatically from communication errors or rare MCU lockups.
Key Features
- Real-time µSv/h radiation dose rate
- CPM (counts per minute) calculation using a rolling 60-second window
- Total integrated dose measurement
- 60-second activity graph
- Adjustable alarm threshold
- Buzzer alarm with snooze
- Battery level indicator
- Menu system for configuration
- Factory reset option
- EEPROM stored settings
- Watchdog auto-recovery
- I2C timeout protection
Hardware Components
| Component | Description |
|---|---|
| Arduino Nano | Main microcontroller (ATmega328P) |
| Geiger Counter Module | CAJOE / RadiationD-v1.1 with M4011 or J305 tube |
| OLED Display | 1.3" SH1106 128×64 I2C |
| Active Buzzer | 5V active buzzer |
| Push Buttons | × tactile buttons (MENU / UP / DOWN) |
| Li-Ion Battery | 3.7V cell |
| Step-Up Converter | 3.7V → 5V boost converter |
| Voltage Divider | 470k + 150k for battery measurement |
| Capacitors (recommended) | 100nF + 10µF near OLED |
Wiring / Connection Table
| Device | Pin | Arduino Nano |
|---|---|---|
| Geiger Module | VCC | 5V |
| Geiger Module | GND | GND |
| Geiger Module | Pulse Output (Click) | D2 (INT0) |
| OLED Display | VCC | 5V |
| OLED Display | GND | GND |
| OLED Display | SDA | A4 (SDA) |
| OLED Display | SCL | A5 (SCL) |
| Buzzer | + | D6 |
| Buzzer | − | GND |
| MENU Button | one side | D3 |
| MENU Button | other side | GND |
| UP Button | one side | D4 |
| UP Button | other side | GND |
| DOWN Button | one side | D7 |
| DOWN Button | other side | GND |
| Battery Divider | midpoint | A7 |
| Battery Divider | top | Battery + |
| Battery Divider | bottom | GND |
Buttons are configured using INPUT_PULLUP, so they connect to GND when pressed.
Alarm Snooze
When the alarm is active:
Press UP + DOWN simultaneously
→ Alarm is muted for 30 seconds
Menu Structure
- K Mode
- Custom K
- Alarm
- Sound
- Reset Fac. Default
- Exit
Settings are stored in EEPROM.
Radiation Calculation
Radiation dose rate is calculated from the pulse count using calibration constants.
Two predefined calibration modes are available:| Mode | Conversion |
|---|---|
| K1 | 0.00332 µSv/h per CPM |
| K2 | 0.00812 µSv/h per CPM |
A custom calibration constant can also be configured.
System Reliability Features
To ensure long-term stable operation:
Watchdog Timer
The firmware uses the AVR Watchdog Timer (2 seconds) to automatically reset the system if the firmware locks up.
I2C Timeout Recovery
Wire.setWireTimeout(25000, true);
This prevents the OLED display from freezing due to I²C bus lockups.
Reduced I²C Speed
u8g2.setBusClock(100000L);
Improves reliability with SH1106 displays.
Power System
Recommended power setup:
3.7V Li-Ion Battery
↓
Boost Converter (5V)
↓
Arduino Nano + OLED + Geiger Module
Battery voltage is monitored via A7 using a resistor divider.
Typical Background Radiation
Typical environmental background radiation:
0.05 – 0.20 µSv/h


