Permanente beta- en gammastralingsmeting met ESPhome en Home Assistant

Met een eenvoudige Chinese Geiger-Muller telbuis en een kleine microcontroller heb je in een half uurtje een permanente weergave van de huidige omgevingsstraling in µSv/uur gemaakt en krijg je een waarschuwing als het stralingsniveau in je omgeving boven een bepaald niveau uitstijgt. Voor iedereen met een Home Assistant installatie een must-have en nog gemakkelijk te maken ook.

Geigertellerprint met hierop een microcontroller geplaatst

Ik ben dit project begonnen met een kant-en-klare Geigerteller-printplaat met daarop een J305 GM-telbuis. Het is een buis die je in meer Chinese stralingsmeters tegenkomt; het is niet een supergevoelige telbuis maar hij is goedkoop en – door volumeproductie en bijbehorende kwaliteitscontroles – betrouwbaar gebleken. Ik heb al eens vaker over stralingsmeting geschreven en in die artikelen aangegeven dat de telbuis werkt doordat het gas in de buis door bombardement van ionen ontlaadt en dan een elektrisch stroompje doorlaat. De telbuis wordt voorzien van een hoge spanning om dit mogelijk te maken en ieder type telbuis heeft een fabrieksspecificatie van de verhouding van ontladingen (‘counts per minute’) en de eenheid van straling, Sv/h (‘Sievert per uur’). In het geval van de J305 is dat verhoudingsgetal 123,14709 (zie overweging aan het einde van dit artikel). De buis zelf heeft een onderdrempel van 0,2 ontladingen per seconde, je hebt dus in elk geval 12 ontladingen per minuut op basis van de ‘achtergrondstraling’ die je overal op aarde tegenkomt. De levensduur van de buis is gespecificeerd als ‘> 1 x 10^9 pulse’, hetgeen bij 100 pulsen per minuut een levensduur van tenminste 2 jaar zou betekenen.

Je begint het project door een D1mini microcontroller met een kabeltje te voorzien van de basisfirmware en te verbinden met je wifi toegangspunt. Het kabeltje kan dan weer verwijderd worden: alle volgende updates van de firmware gaan ‘over the air’. Met drie korte stukjes montagedraad verbind je de D1mini met de aansluitingen 5V, GND en VIN van de Geigerteller. De VIN aansluiting van de Geigerteller is een digitale uitgang (die dus VOUT had moeten heten) die hoog wordt bij iedere telpuls. Ik heb deze pulsuitgang met aansluiting D6 van de D1mini verbonden. Met een stukje verpakkingsschuim en een eindje dubbelzijdig tape heb ik de D1mini op een handige plek op de Chinese stralingsmeter-printplaat vastgezet zodat het net lijkt alsof beide printplaten bij elkaar horen. Nuver.

Detail van de verbindingen van de D1mini microcontrollerprint

Aan de softwarekant heb ik de informatie vanaf de D1mini in drie delen opgesplitst: de telinformatie in CPM (’telpulsen per minuut’), een stralingsniveau omgerekend naar µSv/h en een indicatie van of zich een onveilige situatie voordoet: drie handige entiteiten die hun weg zo naar Home Assistant zullen vinden.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
substitutions:
  friendly_name: Geiger Counter
 
esphome:
  name: esphome-web-9fc591
 
esp8266:
  board: esp01_1m
 
# Board pinout
# GPIO12  D6  PULSE
 
# Enable logging
logger:
  level: debug
 
# Enable Home Assistant API
api:
 
ota:
 
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
 
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: ${friendly_name}
    password: !secret wifi_ap_password
 
captive_portal:
 
sensor:
  - platform: pulse_counter
    pin: 12
    name: ${friendly_name}
    id: "geiger_counter"
    state_class: measurement
    unit_of_measurement: 'CPM'
    on_raw_value:
      - sensor.template.publish:
          id: radiation_level
          state: !lambda 'return x / 123.14709;'
 
  - platform: template
    name: "Radiation Level"
    id: "radiation_level"
    unit_of_measurement: 'µSv/h'
    icon: mdi:radioactive
    accuracy_decimals: 5
 
binary_sensor:
  - platform: template
    device_class: safety
    name: "Radiation Warning"
    lambda: |-
      if (id(radiation_level).state > 0.32) {
        // Value of 2.8 mSv/year is the radiation dose in The Netherlands the average person receives
        // which translates to 0.32 µSv/hour. Everything above is suspicious and thus warrants a warning
        // See https://www.rivm.nl/straling-en-radioactiviteit/blootstelling-en-gezondheidsrisico/blootstelling-aan-ioniserende-straling-samengevat
        return true;
      } else {
        // Value equal or below the normal level
        return false;
      }

In Home Assistant heb ik vervolgens de entiteiten zichtbaar gemaakt op een dashboard.

Dashboard in Home Assistant

De YAML code voor dit dashboard is als volgt:

1
2
3
4
5
6
7
8
9
10
11
type: vertical-stack
cards:
  - type: glance
    entities:
      - entity: sensor.radiation_level
      - entity: binary_sensor.radiation_warning
      - entity: sensor.geiger_counter
  - type: history-graph
    entities:
      - entity: sensor.radiation_level
    hours_to_show: 48

Als je een analoge wijzerplaat wilt tonen, is het handig om gebruik te maken van de normen die RIVM erop na houdt: 2,8 mSv/jaar wordt als normaal gezien. Dat is omgerekend 0,32 µSv/uur. Als je dat als 20%-waarde instelt, en dus 1,6 µSv/uur als schaalmaximum, zou je 0,8 als 50%-waarde kunnen gebruiken. Op die manier krijg je een meter met een groene zone, oranje zone en rode zone:

1
2
3
4
5
6
7
8
9
- type: gauge
  entity: sensor.radiation_level
  needle: true
  name: Straling
  max: 1.6
  severity:
    green: 0
    yellow: 0.32
    red: 0.8

Ik gebruik een verzameling proefmaterialen om de opstelling te testen: uraniumerts in een loodgevoerd potje en een paar scherven van een aardewerken potje met uraniumhoudende verf.

Proefmaterialen voor het testen van geigerteller

Met de aardewerk scherven krijg je een prachtige demonstratie van de werking van de opstelling: de weergegeven straling stijgt tot ongekende hoogte en je krijgt een waarschuwing dat er veel straling is. Prima resultaat van een half uurtje knutselen (en wat langer spelen met de opstelling).

Metingen met de geigerteller getoond op een Home Assistant dashboard

Een project is niet af als er niet een beschermende – en bij voorkeur aantrekkelijke – verpakking omheen zit. Speciaal voor dit doel heb ik een doosje met eigen ontworpen deksel ge-3D-print waar de geigerteller-print-met-D1mini prima in verpakt zitten. Ik heb er zwarte Eco-ABS voor gebruikt, met het idee dat ik er nog een keer met een spuitbus gele verf wat mooie accenten op wil aanbrengen. Zie mijn Thingiverse pagina voor het ontwerp van deze behuizing.

3D geprinte behuizing voor de hele schakeling, met een USB aansluiting aan de zijkant

Update: de Y305 Geiger-Muller telbuis heeft een eindige levensduur, die wordt bepaald door het aantal gasontladingen dat de buis heeft doorstaan en nog kan doorstaan. De levensduur van de buis is gespecificeerd als ‘Life: > 1 x 10^9 pulse’, hetgeen bij 100 pulsen per minuut een levensduur van tenminste 2 jaar zou betekenen. Om daar een beetje gevoel voor te krijgen is het handig om het totaal aantal ontladingen total counts bij te houden. Ik laat Home Assistant het totale ‘gebruik’ bijhouden met een utility_meter. Hieronder de aanpassingen aan de ESPhome firmware en het Home Assistant configuratiebestand.

Benutting van de geigerteller telbuis

Toevoeging aan de ESPhome sensor:

sensor:
  - platform: pulse_counter
    pin: ..
    ...
    total:
      name: 'Total Counts'

Home Assistant configuratiebestand:

1
2
3
4
# Usage counters, are persistent (i.e. keep the value after a reset)
utility_meter:
  geiger_tube_j305_usage:
    source: sensor.total_counts

Een Geiger-Muller telbuis reageert op ioniserende straling en het aantal impulsen per minuut heeft een relatie met de stralingsdosis. Echter, wat is die relatie? De fabrikant van de buis zou het kunnen weten en er over publiceren, maar in het geval van de J305 is dat wat ‘mistig’. We komen echter zelf een heel eind als we de stelling van RIVM dat we in Nederland zo’n 2.8 mSv per jaar ontvangen. Met dat gegeven kunnen we de normale hoeveelheid straling per minuut omrekenen en in verhouding brengen met het aantal telpulsen.

1 gedachte over “Permanente beta- en gammastralingsmeting met ESPhome en Home Assistant”

  1. Thank you for the detailed manual!

    Looking to set this up for some time now.
    Add it to the HA project list.

    Greetings from Hong Kong

Plaats een reactie