Внешний вид датчика BME680, установленного на плате


С чего всё началось


В начале 2023 года, во многих СМИ появилась информация, что стрелки часов Судного дня перевели на десять секунд. Сейчас они замерли на отметке 90 секунд до полуночи, и теперь часы показывают самый высокий уровень риска ядерной катастрофы за всю историю проекта. Эта информация побудила меня создать устройство для мониторинга фоновой радиации — мог бы написать я, но на самом деле, всё началось гораздо раньше и об этом расскажу далее.

Однажды вечером, в 2015 году, мне захотелось посмотреть статистику фоновой радиации в регионе где я проживаю, зашел на мой любимый проект под названием «Народный мониторинг» и начал искать близлежащие датчики, которые могли бы измерять фоновую радиацию. На моё удивление, я не обнаружил подобных датчиков. Ладно, не беда, сказал я себе, ведь я живу в регионе, где есть государственные предприятия атомной энергетики, на их сайте должна же быть публичная информация об уровне фонового излучения. Зашел на сайт, да, действительно, есть статистика по уровню фонового излучения, где на графике показана прямая линия без намека на динамику, естественно, данный результат меня не устроил и я решил собирать статистику самостоятельно, разработав свое устройство.

Немного информации о том, что собой представляет ионизирующее излучение (радиация)



image

На рисунке схематично изображена проникающая способность трех видов излучения
Альфа-излучение представляет собой поток альфа-частиц (ядер гелия-4). Альфа-частицы излучаются при радиоактивном распаде и могут быть легко остановлены листом бумаги. Бета-излучение — это поток электронов, возникающих при бета-распаде, для защиты от бета-частиц энергией до 1 МэВ достаточно алюминиевой пластины толщиной в несколько миллиметров. Гамма-излучение обладает гораздо большей проникающей способностью, поскольку состоит из фотонов с высокой энергией, не обладающих зарядом, для защиты эффективны тяжёлые элементы (свинец и т. д.), поглощающие фотоны Гамма-излучения в слое толщиной несколько см.

Как можно видеть, наиболее опасные типы радиационного излучения это Бетта и Гамма, если речь идет о внешнем воздействии. При попадании излучающих частиц во внутрь человека, все виды излучения представляют опасность.

Так, немного разобрались что такое радиация, надеюсь, эта информация не утомила вас. Предлагаю перейти к конструкции устройства.

Аппаратная часть устройства


Так как основным эффектом радиационного излучения является ионизация, то для детектирования излучения используется простое решение — трубка (счетчик) Гейгера-Мюллера.

image


image


Краткое описание работы трубки(счетчика) Гейгера-Мюллера:
При пролете частицы с высокой энергией сквозь трубку, образуется ионный канал, который замыкает цепь электродов, создавая импульс на загрузочном резисторе. Эти импульсы и будут сигналом регистрации фонового излучения, остается только передать эти импульсы в микроконтроллер для вычисления накопленной дозы излучения.

Чтобы работать с трубкой, необходим источник высокого напряжения на 400В. В качестве источника высокого напряжения я решил применить повышающий Step-UP преобразователь на базе ШИМ контроллера MAX1771, который хорошо себя показал в проекте часов на ламповых индикаторах. За интеллектуальную часть устройства отвечает микроконтроллер ESP8266.
Итак, ниже размещена принципиальная схема разработанного устройства.

image

  • Рендер печатной платы:

image

  • Печатная плата в собранном виде:

image

  • Один из вариантов корпуса устройства:

image


Разработка корпуса устройства


Корпус спроектирован во FreeCAD, данный вариант корпуса изготовлен с учетом применения трубки СИ180Г.

image


Еще немного картинок готового устройства:

image


image

На фото вариант устройства с применением массива трубок СИ1-Г/

Разработка программной части устройства


Программная часть не подразумевает каких-то сложных решений, наша задача подсчитать импульсы, приходящие с трубки Гейгера-Мюллера за определенный промежуток времени и применить расчетный коэффициент трубки. В прошивке устройства будет использоваться несколько временных интервалов подсчета импульсов, 10 сек, 1 мин, 5 мин, 60 мин. Подсчет импульсов будет выполняться с помощью аппаратного прерывания.

attachInterrupt(digitalPinToInterrupt(4), count_tube, FALLING);


Так как у нас для усиления сигнала импульса трубки используется транзистор с обратной проводимостью, то нам необходимо использовать параметр FALLING в аппаратном прерывании.

  • Ниже представлена функция счетчиков импульса:

ICACHE_RAM_ATTR void count_tube(){ 
     bCP10s++;
     bCP1m++;
     bCP5m++;
     bCP60m++; 
}

  • Функция вычисления накопленной дозы для разных временных интервалов:

void timers(){
   unsigned long currentMillis = millis();  
     if((currentMillis - t10s) > 10000 ){ 
            val10s  = bCP10s*0.06*settings.tubecof;
            t10s    = currentMillis;
            CP10s   = bCP10s;
            bCP10s  = 0;  
        }
        
    if((currentMillis - t60s) > 60000 ){ 
             val1m  = bCP1m*0.01*settings.tubecof;
             t60s   = currentMillis;
             CP1m   = bCP1m;
             bCP1m  = 0;     
        }

    if((currentMillis - t5min) > 300000){ 
              val5m = bCP5m*0.002*settings.tubecof;
              t5min = currentMillis;
              CP5m  = bCP5m;
              bCP5m = 0; 
        }    
     
    if((currentMillis - t60min) > 3600000){ 
             val60m = bCP60m*0.00017*settings.tubecof;
             t60min = currentMillis;
             CP60m  = bCP60m;
             bCP60m = 0;
        }  
}

Ссылка на исходный код будет добавлена конце статьи.

Конфигурация устройства / интерфейс


В данной версии программного обеспечения для конфигурации устройства используется веб-интерфейс. Для первичной настройки при отсутствии подключения к сети устройство создает Wi-Fi точку доступа, при подключение к которой выполняется автоматическая переадресация на веб-страницу устройства (реализована с применением технологии Captive portal).

  • Интерфейс главной страницы:

image

Доступ к конфигурации устройства выполняется только после авторизации.

  • Интерфейс настройки подключения по MQTT протоколу:

image


Интеграция в Home Assistant


Для передачи данных в Home Assistant, как вы уже могли догадаться, используется протокол MQTT. Ниже приведен пример интеграции, в примере использован формат данных JSON и имя топика «r_sensor/jsondata».

Формат данных JSON для данного устройства:


{
"CP10s":"6",
"CP1m":"34",
"CP5m":"158",
"CP60m":"1977",
"val10s":"11.16","
val1m":"10.54","
val5m":"9.80",
"val60m":"10.42",
"WORKTIME":"3900" }

Ключи, которые начинаются на «CP» — это «сырые» данные, полученные от трубки, Ключи начинающиеся на «val» — это итоговое значение уровня излучения.

Для интеграции в Home Assistant в конфигурационном файле configuration.yaml, добавьте следующий код (пример):


mqtt:
  sensor:
    - name: "Сенсор фонового излучения (10 сек)"
      unique_id: 5bc54f8b-7767871-47fg74-e98e92456
      state_topic: "r_sensor/jsondata"
      unit_of_measurement: "uRh"
      value_template: "{{ value_json.val10s }}"
    - name: "Сенсор фонового излучения (1 мин)"
      unique_id: 5bc54f8b-7767871-47fg74-e98e926456
      state_topic: "r_sensor/jsondata"
      unit_of_measurement: "uRh"
      value_template: "{{ value_json.val1m }}"
    - name: "Сенсор фонового излучения (5 мин)"
      unique_id: 5bc54f8b-7767871-47fg74-ee92456
      state_topic: "r_sensor/jsondata"
      unit_of_measurement: "uRh"
      value_template: "{{ value_json.val5m }}"
    - name: "Сенсор фонового излучения (60 мин)"
      unique_id: 5bc54f8b-7767871-47fg4-e6e92456
      state_topic: "r_sensor/jsondata"
      unit_of_measurement: "uRh"
      value_template: "{{ value_json.val60m }}"


Чтобы добавить в dashboard Home Assistant карточку с отображением данных, создайте карточку «Объекты» и в текстовом редакторе необходимо вставить следующий код:

type: entities
entities:
  - entity: sensor.sensor_fonovogo_izlucheniia_10_sek
  - entity: sensor.sensor_fonovogo_izlucheniia_1_min
  - entity: sensor.sensor_fonovogo_izlucheniia_5_min
  - entity: sensor.sensor_fonovogo_izlucheniia_60_min_2
state_color: true
title: Мониторинг излучения

В итоге должна получиться подобная карточка с отображением данных:

image


На этом мы закончили базовую интеграцию датчика в Home Assistant.

Немного информации о дополнительных функциях


В устройстве предусмотрена функция звуковой индикации. Да-да, это тот самый звук потрескивания при регистрации частицы. Думаю, радиофилы и радиофобы будут довольны).

Так же в устройстве предусмотрена звуковая сигнализация о превышении допустимого уровня излучения, она срабатывает при достижении уровня радиации более 100 мкР/ч.
Демонстрацию можно увидеть здесь

Итог


В итоге у нас получилось интересное и компактное решение для мониторинга уровня фоновой радиации, которое запитывается от обычного USB порта.

image


Устройство прошло несколько итераций развития, как программного, так и аппаратного. На данный момент это проверенное временем и отлаженное устройство, которое не стыдно показать.

Первая версия устройства (2015 год)

На этом можно завершать. Всем большое спасибо за внимание!
Небольшая бонусная история, связанная с данным устройством
В конце сентября 2017 года, внезапно устройство начало регистрировать повышенный уровень фоновой радиации, о чем оно меня предупредило. Я не мог понять, что происходит и склонялся к тому, что возникла какая-то аппаратная проблема и не принял в серьез эту ситуацию. Спустя пару минут всё нормализовалось. Диагностика не показала каких-либо проблем с устройством. В начале октября появилась информация в СМИ о выбросе изотопа Рутений-103 и все стало ясно. Облако Рутения-103 пролетело где-то рядом. Это была первая аномалия, которая была зафиксирована моим устройством.

Исходники проекта





Возможно, захочется почитать и это:

Комментарии (30)


  1. gorbln
    16.10.2023 08:24
    +2

    Зашел на сайт, да, действительно, есть статистика по уровню фонового излучения, где на графике показана прямая линия без намека на динамику, естественно, данный результат меня не устроил

    Ну, в общем-то, так оно и есть на большом отрезке времени.

    Какая-то внятная "колбаса" есть только на отрезке 5 минут, даже на часовом графике уже все значения близки к среднему.


    1. CyberexTech Автор
      16.10.2023 08:24

      Да, я понимаю, но не ровная линия на протяжении месяца). Сейчас они давно исправили, но доверия их данные у меня давно не вызывают, особенно после случая с Рутением-103)


      1. SergeyMax
        16.10.2023 08:24
        +2

        Непонятно, почему бы линии не быть ровной на протяжении месяца, это же фоновое излучение, оно вообще не меняется.


        1. KbRadar
          16.10.2023 08:24
          +2

          Фон меняется со временем, в особенности от погоды. Но лучше иметь сцинтилляционный прибор чтобы наблюдать такие изменения.


      1. Radisto
        16.10.2023 08:24
        +3

        Так это же вроде бета-излучатель? Чтобы датчик фонового излучения показал хоть что-то выше этого фона от бета-изотопа, этот рутений должен был вокруг облаками летать. Ваш прибор его тоже не покажет


        1. jar_ohty
          16.10.2023 08:24
          +3

          Счетчики Гейгера намного эффективнее "ловят" бета-лучи, чем гамму. Почти на два порядка. А учитывая, что рутений присутствовал в виде газовой фазы и мог проникнуть внутрь корпуса и сорбироваться на стенках счетчика, вероятность регистрации еще больше возрастает. Но скорее всего это был обычный свинцово-висмутовый дождик, смывший из толщи атмосферы ДПР радона прямо под нос вашему детектору.


      1. VT100
        16.10.2023 08:24

        Такое мнение о рутении.

        Название, кстати, - тоже классное. Говорящее само за себя.


    1. olartamonov
      16.10.2023 08:24

      Какая-то внятная "колбаса" есть только на отрезке 5 минут

      И это попросту дробовой шум.


      1. gorbln
        16.10.2023 08:24

        Согласен. Никакого периодического характера этот график не имеет, он всегда разный. Соответственно, и никакой толковой информации извлечь из него тоже не получится, кроме случаев, когда циферки колбасились в районе 5-25 мкр/ч, потом вдруг начали колбаситься в районе 150-300, а потом снова в районе 15. Но обычно ты и сам знаешь причину.


        1. olartamonov
          16.10.2023 08:24

          Вопрос не в периодичности. Вопрос в том, что у вас там частота событий какая — один импульс в единицы-десятки секунд? В результате на минутных отрезках регистрация единичного события значительно меняет результат.

          А единичное событие — по определению случайно.


  1. mmMike
    16.10.2023 08:24
    +6

    Для счетчика "судного дня" слишком большой потребление. Датчики с толстым стеклом осадки скорее всего особо и не заметят (не гамма же в основном будет).
    А потребление? У датчика мизерный ток потребления и не критичен к разбросу напряжения. Чего все собирают на step-up ШИМ?! (блокинг генератор на 1 транзисторе это же скучно жже)
    Впрочем, чего я..
    С учетом использование ESP и встроенного сайта слова "судный день" воспринимаются как шутка.

    Для судного дня практичнее карманный счетчик с ЖК индикатором на AAA батарейках/аккумуляторах со сроком непрерывной работы несколько недель от одного комплекта.


    1. SergeyMax
      16.10.2023 08:24
      +6

      Для счетчика "судного дня" слишком большой потребление.

      Для датчика Судного дня у него слишком неподходящий диапазон измерений: сигнализатор настроен на 100 микрорентген, а должен быть настроен на 100 рентген.


      1. Javian
        16.10.2023 08:24
        +1

        При 100Р некому будет эти результаты читать.


        1. SergeyMax
          16.10.2023 08:24
          +2

          В таких случаях очень опасно забывать про время.


          1. Didimus
            16.10.2023 08:24
            +1

            Логично шкалу проградуировать в оставшемся времени жизни


      1. gorbln
        16.10.2023 08:24
        +3

        На 100Р нужна другая лампа. СБМ-20 захлебнётся при 144мР/ч.

        Надо СИ-3БГ:


        1. ovn83
          16.10.2023 08:24
          -1

          Сбм 20 не производят, производят сбм-20-1, смотреть сроки. При 1 Р/ч сбм-20 начнёт регестрировать непрерывно и дозиметр будет показывать нормальный уровень, а на самом деле уровень высокий.

          При мощном излучении полупроводники деградируют за минуты. На лампах надо собирать. Си-3 показывает, что через час на кладбище ползти.


    1. hw_store
      16.10.2023 08:24

      серийный на двух часовых батарейках LR-44 работает примерно полгода.... выключателя питания в нём нет


      1. mmMike
        16.10.2023 08:24

        У меня самоделка, собранная в школе (1984-86 год где то) на 176 КМОП с индикацией на ЖК от дохлых часов "Электроника" и питанием от "кроны", работала непрерывно где то недели 3.
        Скорее всего это был предел именно батарейки. Да и конденсаторы дерьмо с неизвестным током утечки.

        Так что, собранное на нормальных компонентах вполне может существенно дольше.


    1. Nick0las
      16.10.2023 08:24

      Удивляет не только ШИМ step-up, но и использование дроселя вместо трансформатора.

      Давным давно я делал блокинг-генератор, ток потребления был небольшой (что-то около 100мка с гарантией работы счетичка при 10000мкр/ч). Только мотать сотни витков на кольцо ферритовое было долго и нудно. Потом делал прямоходовик с управлением ключом непосредственно от МК. Трансформатор с учетом предыдущего опыта был на броневой чашке. У такой схемы достоинство в том что частоту импульсов можно подстравиать согласно числу срабаоываний счетчика, чтобы не гонять трансформатор вхолостую. Один недостаток таких экономичных преобразователей - ты не знаешь что на выходе, и даже вольтметром с 10МОм входным сопротивлением не померять. Я заряжал от преобразователя конденсатор большой емкости (около 1 мкФ) в течение нескольких минут) и мерял напряжение на нем.


  1. Iv38
    16.10.2023 08:24
    +2

    Если планировалось сразу интегрировать счётчик в Home Assistant, то прошивку можно было вообще не писать, а взять ESPHome и сконфигурировать Pulse Counter Sensor.


  1. nomhoi
    16.10.2023 08:24

    У нас в деревне зимой дровами топят утром и вечером, иногда ветер дует в мою сторону, посоветуете какой-нибудь датчик, который бы распознавал дым, и подавал сообщение, чтобы закрыть заслонку бризера?


    1. ForestDog
      16.10.2023 08:24

      Конкретный датчик не подскажу, но очевидно это должен быть датчик PM 2.5. У меня такой встроен в фильтр Xiaomi Air Purifier - любой дым моментально отлавливает.


    1. Dr_Faksov
      16.10.2023 08:24

      Рискну предложить стандартный пожарный оповещать задымления. Правда не уверен, подойдёт ли вам его чувствительность.


    1. Javian
      16.10.2023 08:24

      На хабре есть ряд публикаций про конструкции на SDS011 как эта -  https://habr.com/ru/articles/525140/

      Чувствует дым, аэрозоль, пыль.


    1. Koduc
      16.10.2023 08:24

      В помещении использую такой: Qingping Air Monitor Lite. Цепляется по wifi, в HomeAssistant интегрируется без проблем. Дым хорошо показывает датчик PM 2.5 в нем


  1. REPISOT
    16.10.2023 08:24

    Вы почему-то проигнорировали рекомендации по разводке.

    Keepout Zone for ESP8266 Module's Antenna on the Base Board
    Keepout Zone for ESP8266 Module's Antenna on the Base Board


    1. CyberexTech Автор
      16.10.2023 08:24

      В большинстве реализаций данного устройства, используется модуль ESP-07S с внешней антенной, на корпусе можно заметить отверстие для крепления внешней антенны. В статье показан отладочный образец, на котором тестирую изменения в прошивке.


  1. ovn83
    16.10.2023 08:24
    +1

    Когда случиться, эта игрушка сгорит первой. Имею ДП5, там крайняя шкала 200 Р/ч и её в Чернобыле не хватало, зашкаливало. В быту вся эта радиофобская мура точно не нужна. Детекторы деградируют, смотрите дату изготовления и срок хранения.


  1. vvbob
    16.10.2023 08:24
    +1

    Автор, кстати, сам и упомянул основной минус таких устройств. Когда оно поднимает тревогу - то первая мысль, которая приходит в голову - что-то там в нем поломалось, а не то что на улицу просто опасно выходить из-за повышенной радиации. Поэтому, думаю, обязательно нужно дублирование, желательно совершенно разными устройствами, например одно мониторит обстановку постоянно, второе в виде хорошего переносного устройства лежит где-то в легкой доступности. Если первое поднимает тревогу, то можно с помощью второго проверить - ложная это тревога, или стоит.. предпринимать меры, в зависимости от уровня радиации, ну или если уровень слишком большой, то расслабиться и не суетиться перед смертью.