Дозиметр не для Сережи
В постоянно изменяющемся мире дозиметр является не только способом утолить любопытство и поймать на мушку хоть немного веселых Зивертов, но и способом обнаружения вполне реальных угроз. От проверки “любопытной старинной штуковины” из дедовского гаража, до отслеживания радиоактивного фона в зонах расположения АЭС, от обеспечения безопасности при вылазке в заброшки до мониторинга глобальных и локальных техногенных катастроф.
Нетленной классикой Хабра является цикл статей “Дозиметр для Серёжи”. В этом материале много истории, теории и хардовой (если не сказать “крафтовой”) сборки. Мы респектуем автору, и Сереже тоже. Но ставим перед собой другую, более практическую задачу — собрать дешёвый, функциональный и удобный дозиметр из готовых компонентов. В качестве основных элементов будут использованы 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/).
![схема обновлена 13.11.2022 схема обновлена 13.11.2022](https://habrastorage.org/getpro/habr/upload_files/d8f/0b0/ba3/d8f0b0ba3044372aff8cb06a400ccdf6.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 в массы!
ссылка на оригинал статьи https://habr.com/ru/articles/691774/
Добавить комментарий