Skip to content

Repository files navigation

RadiaCode Python Library

PyPI versionPython 3.9+DocumentationLicense: MIT

Python library for interfacing with the RadiaCode-10x radiation detectors and spectrometers. Control your device, collect measurements, and analyze radiation data with ease.

🚀 Features

  • 📊 Real-time radiation measurements
  • 📈 Spectrum acquisition and analysis
  • 🔌 USB and Bluetooth connectivity
  • 🌐 Web interface example included
  • 📱 Device configuration management

📸 Demo

Interactive web interface example (backend | frontend):

radiacode-webserver-example

🎮 Quick Start

Examples

pip install --upgrade 'radiacode[examples]'

Run the web interface shown in the screenshot above:

# Via Bluetooth (use the device's MAC address, or its CoreBluetooth UUID on macOS)
$ python3 -m radiacode.examples.webserver --bluetooth-mac 52:43:01:02:03:04
# Via USB connection (Linux/macOS/Windows)
$ sudo python3 -m radiacode.examples.webserver

Basic terminal output example (same options as web interface):

$ python3 -m radiacode.examples.basic

Library Usage Example

pip install --upgrade radiacode
fromradiacodeimportRadiaCode, RealTimeData# Connect to the device over USB and release it when finishedwithRadiaCode() asdevice:
# Get current radiation measurementsdata=device.data_buf()
forrecordindata:
ifisinstance(record, RealTimeData):
print(f"Dose rate: {record.dose_rate}")
# Get spectrum dataspectrum=device.spectrum()
print(f"Live time: {spectrum.duration.total_seconds()}s")
print(f"Total counts: {sum(spectrum.counts)}")
# Configure devicedevice.set_display_brightness(5) # 0-9 brightness leveldevice.set_language('en') # 'en' or 'ru'

More Features

# Bluetooth connection (use the device's CoreBluetooth UUID on macOS)device=RadiaCode(bluetooth_mac="52:43:01:02:03:04")
# Connect to specific USB devicedevice=RadiaCode(serial_number="YOUR_SERIAL_NUMBER")
# Energy calibrationcoefficients=device.energy_calib()
print(f"Calibration coefficients: {coefficients}")
# Reset accumulated datadevice.dose_reset()
device.spectrum_reset()
# Configure device behaviordevice.set_sound_on(True)
device.set_vibro_on(True)
device.set_display_off_time(30) # Auto-off after 30 seconds

📚 Documentation

The documentation site contains setup guides, measurement and unit notes, spectrum examples, device configuration, and an API reference generated from the source docstrings and type annotations.

Build it locally with:

uv sync --group docs
uv run --no-sync mkdocs serve

🔧 Development Setup

  1. Install prerequisites:

    # Install uv
    curl -LsSf https://astral.sh/uv/install.sh | sh
  2. Clone

    git clone https://github.com/cdump/radiacode.git
    cd radiacode
  3. Run examples:

    uv run python -m radiacode.examples.basic

⚠️ Platform-Specific Notes

macOS

  • ✅ USB connectivity supported via libusb
  • ✅ Bluetooth connectivity supported via Bleak (use the device's CoreBluetooth UUID)
  • 📝 Required: brew install libusb

Linux

  • ✅ Both USB and Bluetooth fully supported
  • 📝 Required: libusb and BlueZ
  • 🔑 May need udev rules for USB access without root

Windows

  • ✅ USB connectivity supported
  • ✅ Bluetooth connectivity supported via Bleak
  • 📝 Required: USB drivers

License

This project is licensed under the MIT License - see the LICENSE file for details

About

Control RadiaCode-10x radiation detectors via Python. Collect real-time measurements, analyze spectra, and manage device settings over USB or Bluetooth.

Topics

Resources

Stars

238 stars

Watchers

20 watching

Forks

Releases

Used by

Contributors

Languages