Дозиметр не для Сережи
В постоянно изменяющемся мире дозиметр является не только способом утолить любопытство и поймать на мушку хоть немного веселых Зивертов, но и способом обнаружения вполне реальных угроз. От проверки “любопытной старинной штуковины” из дедовского гаража, до отслеживания радиоактивного фона в зонах расположения АЭС, от обеспечения безопасности при вылазке в заброшки до мониторинга глобальных и локальных техногенных катастроф.
Нетленной классикой Хабра является цикл статей “Дозиметр для Серёжи”. В этом материале много истории, теории и хардовой (если не сказать “крафтовой”) сборки. Мы респектуем автору, и Сереже тоже. Но ставим перед собой другую, более практическую задачу - собрать дешёвый, функциональный и удобный дозиметр из готовых компонентов. В качестве основных элементов будут использованы Wemos D1 и модуль RadSens (ардуино-дозиметр на базе трубки Гейгера СБМ-20).
![](https://habrastorage.org/getpro/habr/upload_files/fb5/a7e/85a/fb5a7e85ab9d12833aa256a030753216.jpg)
RadSensor (таково гордое имя нашего детектора) берет лучшее от прошлых проектов, а также учитывает их ошибки и расширяет функционал счетчика, в частности:
увеличено время автономной работы;
реализован функционал аудиоотклика;
повышена эргономичность и универсальность корпуса;
проект в целом упрощен и избавлен он “крафта”
Не устаем повторять, что основной критерий успеха материала - наличие удачных повторов и ремейков проекта со стороны маленьких электронщиков-школьников, бесшабашных туристов-студентов, а также практичных грибников-родителей.
Перед тем как листать дальше настоятельно рекомендуем ознакомиться с легендарным материалом (https://habr.com/ru/post/471236/). Краткая история и матчасть сами себя не прочитают ;)
Ознакомились? Отлично, тогда приступим!
Персональный дозиметр своими руками
Шутейки иссякли. Далее вас ждет сухая пошаговая инструкция по сборке устройства от закупки компонентов до кода и тестирования.
План покупок (BOM)
Плата разработки Wemos D1, от 117 руб. на Али
![](https://habrastorage.org/getpro/habr/upload_files/185/0d8/83e/1850d883ef4d1fec3bdc7e0d252c363c.jpg)
![](https://habrastorage.org/getpro/habr/upload_files/0e5/650/e60/0e5650e604dcb4ec4a40f97f6ca6c320.png)
OLED-экран 1.3” с I2C, от 161 руб на Али
![](https://habrastorage.org/getpro/habr/upload_files/709/77e/6c4/70977e6c41dc16c60c195d2798cd1bda.jpg)
Пассивный пьезоизлучатель, от 48.5 руб. на Али
![](https://habrastorage.org/getpro/habr/upload_files/ab9/695/6c9/ab96956c9a1416e1c7186ae9e97972b4.jpg)
Плата заряда TP4056, от 25 руб. на Али
![](https://habrastorage.org/getpro/habr/upload_files/c69/6e3/9e6/c696e39e6b9d1f1883e513ec4a647774.jpg)
Аккумулятор 18650, от 210 руб. на Али
![](https://habrastorage.org/getpro/habr/upload_files/cc4/9ee/ac6/cc49eeac679dcf9498df9ea49b5b9d3e.jpg)
Бокс одинарный для 18650 аккумулятора, от 19 руб. на Али
![](https://habrastorage.org/getpro/habr/upload_files/d81/bfa/8bd/d81bfa8bdf8486b9f507df56cdf16e7c.jpg)
Макетная плата 7*3 см, от 17 руб. на Али
![](https://habrastorage.org/getpro/habr/upload_files/3ca/6a8/9aa/3ca6a89aa54ef10c54d0c76dbbc4494c.jpg)
Выключатель KCD-01, от 64 руб. за 10 шт на Али
![](https://habrastorage.org/getpro/habr/upload_files/605/077/734/6050777348372a4914d552f9854cadf7.jpg)
Разъём XH-2.54 с обжатыми проводами, от 66 руб. за две пары на Али
![](https://habrastorage.org/getpro/habr/upload_files/ee9/8fe/bfa/ee98febfae5223e39921ccf3015bbada.jpg)
Резисторы номиналами 220 и 100 кОм
Винты/саморезы с диаметром резьбы 3 и 2.5 мм
Корпус, изготовленный на 3d-кринтере - о нем ниже
Общая стоимость компонентов ~5500 рублей.
Цена сравнима с древними дозиметрами советской или китайской разработки. Аналогичное, но современное решение на Озоне обходится уже в 7-9 тысяч рублей.
Схема устройства
Соединения показаны ниже на схеме. Особенности сборки:
В верхней части макетной платы располагается Wemos (2 пина от края) и OLED (2 пина от края).
Внизу макетки установлены: зарядкаTP4056 (Type-C сдвинут максимально близко к краю платы, но не вылезает за её пределы) и пьезоизлучатель (любая удобная позиция).
Выключатель стоит на разрыве плюсового выходного пина контроллера заряда. Если подключить его на разрыв плюсового провода батареи, то контроллер заряда будет уходить в защиту, это ведёт к некорректной работе устройства.
Для расчёта и вывода остатка заряда батареи используется АЦП (пин А0). Для его правильной работы необходимо понизить напряжение с помощью делителя нпряжения. Подробнее о нем вы можете прочитать в статье о сборке анемометра (https://habr.com/ru/post/676348/).
![](https://habrastorage.org/getpro/habr/upload_files/540/532/925/5405329253cbe4337333702004d180a0.jpg)
В результате должно получиться подобное устройство. Рекомендуем заизолировать контакты на лицевой стороне платы. Это одна из возможных способов собрать её, поэтому мы приветствуем критику и предложения :)
![](https://habrastorage.org/getpro/habr/upload_files/b59/f2c/0ed/b59f2c0eda4178be8ac90e24b9fec2b4.jpg)
Корпус для дозиметра
Мы постарались создать максимально удобный для печати, сборки и эксплуатации корпус.
На углу предусмотрена проушина диаметром 3 мм под шнурок или брелок.
![](https://habrastorage.org/getpro/habr/upload_files/791/b80/f71/791b80f71ecd891891c83b0418c13f67.png)
Под трубкой Гейгера сделаны прорези для возможности детекции альфа-частиц, сделаны отверстия под пьезоизлучатель.
![](https://habrastorage.org/getpro/habr/upload_files/821/1bf/10a/8211bf10ad285dd43a89d2ad8107626b.jpg)
Посадочные места дозиметра адаптированы под длинную и короткую версии модуля RadSens.
![](https://habrastorage.org/getpro/habr/upload_files/302/f70/8a0/302f708a06a56d9e70f3b53dc08148c3.png)
Кнопка включения утоплена и защищена от случайных нажатий
![](https://habrastorage.org/getpro/habr/upload_files/36d/191/58e/36d19158e495f33d71e10fa88266ef16.png)
На крышке предусмотрены посадочное место для OLED-экрана для предотвращения западания, добавлены боковые стенки для увеличения жёсткости корпуса
![](https://habrastorage.org/getpro/habr/upload_files/d7b/cd9/f99/d7bcd9f99be1c3b39f2fcc40dac306ce.png)
Модель адаптирована под 3d-печать, подобрана нормальная толщина стенки, минимизировано число поддержек
![](https://habrastorage.org/getpro/habr/upload_files/7b7/41f/17d/7b741f17de04dae6b30c0b4929997969.png)
Найти модели корпуса (stl и step-файлы) вы можете в нашем GitHub.
Код
Для проекта использован слегка доработанный код из нашей предыдущей статьи "Народная дозиметрия". Нововведения:
добавлен звук приветствия при включении устройства;
добавлена индикация заряда;
реализовано предупреждение при превышении порога интенсивности излучения.
Для работы с OLED-экраном используется библиотека Алекса Гавера GyverOled.
Вы также можете найти код в примерах библиотеки RadSens на GitHub.
// Инициализируем библиотеки
#include <Wire.h>
#include <CG_RadSens.h>
#include <GyverOLED.h>
#define ADC_pin A0 // задаём значение пина АЦП
#define buz_pin 14 // Задаём значения пина для пищалки
GyverOLED<SSH1106_128x64> oled; // Инициализируем 1.3" OLED-экран
CG_RadSens radSens(RS_DEFAULT_I2C_ADDRESS); // Инициализируем RadSens
uint16_t ADC; // Переменная для значений АЦП
uint32_t timer_cnt; // Таймер для измерений дозиметра
uint32_t timer_bat; // Таймер для измерения заряда батареи
uint32_t timer_imp; // Таймер опроса импульсов для пьезоизлучателя
uint32_t pulsesPrev; // Число импульсов за предыдущую итерацию
//Функция аудиоприветствия
void hello() {
for (int i = 1; i < 5; i++) {
tone(buz_pin, i * 1000);
delay(100);
}
tone(buz_pin, 0);
delay(100);
oled.setScale(2);
oled.setCursor(10, 3);
oled.print("Radsensor");
oled.update();
delay(3000);
oled.clear();
}
//Функция, которая создаёт "трески" пьезоизлучателя при появлении импульсов
void beep() { // Функция, описывающая время и частоту пищания пьезоизлучателя
tone(buz_pin, 3500);
delay(13);
tone(buz_pin, 0);
delay(40);
}
//Функция предупреждения при превышении порога излучения
void warning() {
for (int i = 0; i < 3; i++) {
tone(buz_pin, 1500);
delay(250);
tone(buz_pin, 0);
delay(250);
}
}
void setup() {
Wire.begin();
oled.init(); // Инициализируем OLED в коде
oled.clear();
oled.update();
pinMode(ADC_pin, OUTPUT); // Инициализируем АЦП как получатель данных
hello(); // Приветствуем пищанием
oled.update(); // Обновляем экран
pulsesPrev = radSens.getNumberOfPulses(); // Записываем значение для предотвращения серии тресков на старте
}
void loop() {
// Раз в 250 мс происходит опрос счётчика импульсов для создания тресков, если число импульсов за 250 мс превысит 5, раздастся предупреждение
if (millis() - timer_imp > 250) {
timer_imp = millis();
int pulses = radSens.getNumberOfPulses();
if (pulses - pulsesPrev > 5 ) {
pulsesPrev = pulses;
warning();
}
if (pulses > pulsesPrev) {
for (int i = 0; i < (pulses - pulsesPrev); i++) {
beep();
}
pulsesPrev = pulses;
}
}
// Снимаем показания с дозиметра и выводим их на экран
if (millis() - timer_cnt > 1000) {
timer_cnt = millis();
char buf1[50];
char buf2[50];
char buf3[50];
sprintf(buf1, "%.1f мкр/ч", radSens.getRadIntensyDynamic()); // Собираем строку с показаниями динамической интенсивности
sprintf(buf2, "Стат: %.1f мкр/ч ", radSens.getRadIntensyStatic()); // Собираем строку с показаниями средней интенсивности за период работы
oled.setCursor(0, 2);
oled.setScale(2);
oled.print(buf1);
oled.setCursor(0, 6);
oled.setScale(1);
oled.print(buf2);
}
// Считываем показание с АЦП, рисуем батарею и создаём индикацию заряда, показания АЦП вы можете подстроить под своё удобство
if (millis() - timer_bat > 5000) {
timer_bat = millis();
ADC = analogRead(ADC_pin);
oled.rect(110, 0, 124, 8, OLED_STROKE);
oled.rect(125, 3, 126, 5, OLED_FILL);
if (ADC >= 350) {
oled.rect(112, 2, 114, 6, OLED_FILL);
oled.rect(116, 2, 118, 6, OLED_FILL);
oled.rect(120, 2, 122, 6, OLED_FILL);
}
if (ADC < 350 && ADC >= 335) {
oled.rect(112, 2, 114, 6, OLED_FILL);
oled.rect(116, 2, 118, 6, OLED_FILL);
}
if (ADC < 335 && ADC >= 320) {
oled.rect(112, 2, 114, 6, OLED_FILL);
}
if (ADC < 320){
oled.rect(110, 0, 124, 8, OLED_STROKE);
oled.rect(125, 3, 126, 5, OLED_FILL);
}
}
oled.update(); // Обновляем экран в конце цикла
}
Сборка мобильного DIY-дозиметра
Для придания большей компактности мы свели к минимуму свободное пространство внутри корпуса. Поэтому необходимо придерживаться простого алгоритма сборки.
Устанавливаем бокс для 18650 с помощью винта диаметром 3х7 мм и вставляем выключатель в отверстие с торца, подпаиваем к нему провода для разрыва линии +OUT контроллера заряда.
![](https://habrastorage.org/getpro/habr/upload_files/afe/cdb/63a/afecdb63a6509d520345dab8ddb4a0b6.jpg)
Припаиваем провода от бокса к соответствующим выходам контроллера заряда, провода от выключателя – в разрыв между +OUT и плюсовыми контактами потребителей. Затем подключаем два шлейфа для дозиметра и экрана, выводим их и закрепляем корпус на три винта 2.5х7 мм. После вставляем батарею в бокс.
![](https://habrastorage.org/getpro/habr/upload_files/e36/e8c/3ed/e36e8c3ed3be5378a126caacb09adcc7.jpg)
Подключаем модуль RadSens через коннектор и закрепляем его винтам 2.5х7 мм.
![](https://habrastorage.org/getpro/habr/upload_files/b96/6b0/f9d/b966b0f9d18dd6c2f38aa00f91dc6b89.jpg)
Закрепляем экран винтами 2.5х5 мм и подключаем его.
![](https://habrastorage.org/getpro/habr/upload_files/e0d/c73/462/e0dc73462ccdaa44fbf786601a654384.jpg)
Закрепляем крышку винтами 3х5 мм.
![](https://habrastorage.org/getpro/habr/upload_files/261/442/ad7/261442ad7ac20cb3dfa0df12db30549f.jpg)
Тестирование собранного счетчика
Как и в предыдущих статьях мы проводим тестирование на сульфате калия. Если у вас в тумбочке завалялся кусок урана - можете использовать его, но помните о мерах безопасности.
![](https://habrastorage.org/getpro/habr/upload_files/36e/869/cea/36e869ceaefe2893527f6f110f22aff6.jpg)
Дозиметр для DIY-щиков
В рамках материала мы описали только базу дозиметра. Проект можно и нужно развивать: создать приложуху для сбора и записи статистики на телефон, интегрировать с Народным Мониторингом, добавить функции фонарика, датчика температуры и лазерной сабли. Пожалуйста, выбирайте задачку по себе, предлагайте новые идеи и помогайте нам.
Наш же новый челендж - автономный дозиметр, работающий от солнечной батареи и передающий данные по модему на Нармон. Ждите, скоро на просторах хабра...
Также мы планируем провести в Москве несколько мастер-классов по сборке дозиметров и прочих проектов. Если DIY-электроника для Вас в новинку, но очень хочется попробовать - присоединяйтесь к сообществу ClimateGuard, ловите объявления и приходите к нам в гости на Электрозавод (МЭЛЗ).
![](https://habrastorage.org/getpro/habr/upload_files/9b0/788/1ed/9b07881eddcced542fdffc3ddc8ecbba.jpg)
Пользуясь случаем команда инженеров ClimateGuard передает благодарности и респекты:
бессменному (и бессмертному, Илюха выздоравливай!) автору Илье Радченко (@octopoly) за подготовку материала;
Алексу Гаверу (@AlexGyver) за прекрасную библиотеку GyverOLED;
магазину Амперкот за предоставленные компоненты и желание создавать крутые и полезные образовательные наборы;
сообществу, поддерживающему проекты и участвующему в нашей жизни;
...и конечно же вам, дорогие читатели, за уделенные время и интерес к статье!
Давайте сплачиваться и нести DIY в массы!
Комментарии (23)
Jury_78
06.10.2022 13:38+1ставим перед собой другую, более практическую задачу - собрать дешёвый,
функциональный и удобный дозиметр из готовых компонентовЕсли цель собрать, то все замечательно и без всякой иронии. Если дешёвый - то уже не так однозначно, т.к. готовое на Али будет дешевле. Такая цена это из-за Модуля дозиметра RadSens, и как я понимаю альтернативы нет?
yellowknife Автор
06.10.2022 13:57+1Альтернатив много
есть вариант китайской платы дозиметра на dip-компонентах, она же является репликой израильского решения - только там трубка плохая
есть классные решения у ребят из Украины от GGreg на СМБ 20
можно взять отдельно плату от RadSens на Али, и к ней дешевую китайскую трубку или трубку с Авито - платка работает с разными трубками и даже Бета-2 ребята из сообщества к плате RadSens подключали
EugeneVRN
06.10.2022 16:52Кликнул по ссылке "дозиметр на али", так же мне показало и другой внешне такой же но в 3 раза дешевле, вот. Он нерабочий что-ли, или почему такая разница?
yellowknife Автор
06.10.2022 18:54Это как раз вариант 1 - китайский израильтянин. Из минусов - он здоровый, не цифровой и со слабочувствительной трубкой.
Jury_78
06.10.2022 18:42СБМ20 не такая дорогая, менее 1000р предлагают...
yellowknife Автор
06.10.2022 18:56Да, на Авито они недорогие. Но средняя цена 1000-1200 рублей. Более дешевые - либо совсем старые, 80-х и 90-х годов, либо мятые, либо спаянные с приборов. У трубки есть ресурс. Поэтому покупайте аккуратно.
Pavlitko
06.10.2022 20:23+1А могли бы посоветовать на Али проверенный вариант качественного из бюджетных? На Авито б/у тоже не хочется брать.
yellowknife Автор
06.10.2022 20:25+1Как разработчик RadSens - не могу))) Ну мы типа создали лучший из лучших и дешевейший их нормальных. Надеюсь на помощь сообщества Хабра.
Могу подсказать, что на Озоне можно смело просить скидку на RadSens в 15% или дождаться одной из регулярных распродаж.
Pavlitko
06.10.2022 21:28Да, но это же для гиков больше. С руками и паяльником. А мне б потребительский вариант с функционалом из коробки....
Sigest
07.10.2022 08:03А какой ресурс у трубки? Понимаю что зависит от трубки, но предположим, у вашей? Ну если есть что-то среднее?
MobCobra
06.10.2022 14:18+1Грибникам больше пригодился бы гамма-спектрометр, но для них детали не бывают дешёвыми, насколько я понимаю.
dragonnur
07.10.2022 13:13Скорее, что-то чувствительное на альфу и бету, чтоб не проглотить "грязь". Гамма-спектрометр -- кучка деталек до ЕМНИМС ста баксов, но тысячи долларов за кристалл.
Voldemaar
06.10.2022 16:55+2СБМ - ну такое. Лучше "Бета".
yellowknife Автор
06.10.2022 18:41так точно. Но Бета дороже, и достать ее физлицу, как ребята в сообществе говорят, сложнее.
VT100
06.10.2022 19:50+1Поставить конденсатор параллельно нижнему резистору делителя напряжения. Т.к. подключение УВХ АЦП будет вызывать падение напряжения на верхнем.
Убрать constant magic из рисования уровня зарядки и поставить формулу с комментарием?
jar_ohty
06.10.2022 19:55+5Зарядка аккумулятора сделана неправильно. При работе дозиметра ток, отдаваемый TP4056, будет равен зарядному току плюс потребление дозиметра. А по падению тока до 1/10 от начального тока заряда TP4056 детектирует окончание заряда. В итоге она не сможет определить его и будет заряжать вечно, что приведет к взрыву.
Надо отключать потребитель от аккумулятора при подаче внешнего напряжения и переключать на внешний источник.
Slonosvin
07.10.2022 08:04+1А какой смысл в этом диайвае кроме самого процесса? За те же самые 5к на авито можно купить мкс-01са1м, который умеет в гамму и в бету, откалиброван с завода, и даже говорить немного умеет. Я уже не говорю про более лучшие датчики. Да, к вайфаю не подключить, но какой в этом смысл для носимого устройства с собственным дисплеем?
AlexanderS
07.10.2022 21:30Я уже не говорю про более лучшие датчики.
А примеры можете привести с точки зрения гражданского использования?Slonosvin
08.10.2022 21:39Для гражданского применения слюдяной датчик, который стоит в МКС, даст вам более вменяемый габарит прибора, возможность измерять бета-излучение (что довольно полезно) и лучшую чувствительность. На форумах видел, что очень многие визжат, что слюдяные датчики не могут измерять большие величины излучения, а СБМ может измерять какие-то бешенные рентгены. Ну а оно вам надо при каждодневном применении?
MikeVC
08.10.2022 18:22Интересно что есть готовая плата для сбм-20. С датчиком покупать дорого а если датчик уже есть а паять лень, то может быть. Интересно прикрутить "хардовую" щелкалку которая работает непосредственно по факту пробоя трубки. Дисплей хочу обычный 2х строчный а для беспроводной связи - блюпуп чтоб не занимать в телефоне wi-fi. У меня уже есть устройства мониторинга всякого разного с блюпупом. Управляются и конфигаются с терминала. Данные можно посмотреть им же. Если надо, можно написать програмку обработки данных на питоне.
RealBeria
и просто и со вкусом. не хватает разве что, возможности дистанционного считывания показаний по wifi. на модкаме был подобный проект (но с пайкой платы) с передачей данных по zigbee.