Все, наверное, помнят Фукусиму 2011-го. Как пишут о ней в Вики, "крупная радиационная авария максимального 7-го уровня по Международной шкале ядерных событий". Многие, возможно, помнят гифки с картами распространения радиоактивного облака типа таких
Ну и я, собственно, об этом как-то не забыл и в итоге год-два назад купил Raspberry Pi 3, Arduino-к, всяких еще железок, почитал про программирование, создание сайтов и ОС Linux и замутил свою метеостанцию-тире-систему-оповещения с маджонгом и гейшами. О чем и речь. :)
Кота нет, поэтому сервер (в старой стойке)
Часть первая, теоретическая
Позволю себе процитировать Вики еще раз.
Радиоактивное заражение происходит при:
- выпадении радиоактивных веществ из облака ядерного взрыва и наведённой радиации, обусловленной образованием радиоактивных изотопов в окружающей среде под воздействием мгновенного нейтронного и гамма-излучений ядерного взрыва; поражает людей и животных главным образом в результате внешнего гамма- и (в меньшей степени) бета-облучения, а также в результате внутреннего облучения (в основном альфа-активными нуклидами) при попадании радиоизотопов в организм с воздухом, водой и пищей.
- техногенных авариях (утечках из ядерных реакторов, утечках при перевозке и хранении радиоактивных отходов, случайных утерях промышленных и медицинских радиоисточников и т. д.) в результате рассеяния радиоактивных веществ; характер заражения местности зависит от типа аварии.
В итоге имеем реальную возможность получения дозы, даже не находясь в непосредственной близости от места аварии. Шансов - копейки, конечно, (сам их оцениваю как крайне маловероятные) но сами понимаете, практика показывает, что все же они существуют (ссылка на статью на ria.ru). Потому будем считать, что сподвиг меня на создание сего хозяйства спортивный интерес и немножко - желание быть в курсе. В первых рядах, так сказать.
А всем скептикам и уверенным в собственной безопасности - просьба выслать мне контакт того, с кем они договорились, что с ними уж точно такого не произойдет.:)
Часть вторая, железная
Для реализации нам понадобится 2 устройства: 1. датчик, установленный в месте, подверженном стихиям (т.н. "балкон"); 2. сервер в более миролюбивой обстановке - дома, на шкафу, куда пока не могут добраться дети и не хочет добираться жена. Датчик должен быть установлен в месте, омываемом дождями и обдуваемом ветрами - чтобы собирать на себя все, что находится в атмосфере.
Датчик
Состоит из
- счетчика Гейгера на трубке M4011, как пишут о нем в сети:
Both beta and gamma radiation detetion.
Working Voltage: 380-450V
Working Current: 0,015-0,02 mA
Sensivity to Gamma Radiation: 0.1 MeV
Working Temperature Range: -50 +60 С
Length: 88mm
Diameter: 10mm
- Датчика температуры и влажности DHT-21
- Беспроводного модуля nRF24l01
- Китайской Arduino UNO
- Канализационной трубы
Конструкцию нельзя назвать полностью герметичной. Место выхода кабеля залито герметиком, но, думаю воздух проходит. Проблем не было. Полностью герметичная труба, возможно в какой-нибудь жаркий (ха) летний день вытолкнула бы заглушку.
Сервер
Состав сервера
- Raspberry Pi 3 с ОС Raspbian
- Беспроводной модуль nRF24l01
- Датчик давления BMP 280
Фотка сервера уже была.
Логическая схема такая
Часть третья, софтовая
Софт:
- Скрипт, принимающий данные с беспроводного модуля
- Скрипты, формирующие картинки для сайта
- Сайт с историческими данными и текущими показаниями датчиков
- OpenHAB
- notifyMyAndroid (платная, на Андроид смартфоне)
Листингов программ здесь не будет. То, что все это у меня работает - это счастливая случайность, а не результат вдумчивого написания кода профессионалом.)) (Ну если кому-то нужен говнокод, лично вышлю).
Расскажу общую логику работы.
Счетчик Гейгера выдает импульсы при пробое в трубке. Чем больше высокоэнергетических частиц попадает в трубку, тем больше пробоев в трубке. Импульсы поступают в Adruino UNO. Adruino UNO считает импульсы в течении 5 минут. По прошествии 5 минут отсылает количество импульсов вместе с текущей температурой и влажностью через беспроводной модуль nRF24l01 (кстати, знаете почему я так уверенно каждый раз пишу этот набор букв и цифр? потому что я ЗАТРАХАЛСЯ с модулем, простите). Скрипт на сервере принимает количество импульсов трубки, температуру, влажность и пишет в MySQL.
Далее OpenHAB путем периодического запуска скрипта чтения из БД, мониторит базу данных и если последнее значение радиации больше 0,5 мкЗв/ч, то через сервер notifyMyAndroid отправляется сообщение на смартфон. Смартфон пищит, я боюсь. Это то, что касается системы предупреждения о БП.
И все-таки пару скриптов OpenHAB'a - с чем пришлось помучаться, т.к. вообще не понимал как это работает.
Итем:
Number weather_rad "Радиация: [%.2f мкЗв/ч]" <temperature> (weather, radiation) {exec="<[php@@/path/to/php/script/script.php:10000:JSONPATH($.rad)]"}
Правило:
rule "Radiation alarm"
when
Item weather_rad received update
then
if (weather_rad.state > 0.5)
{
notifyMyAndroid("xxxxxxxxxxxxxxxxxxx", "Квартира", "Повышенный уровень радиации")
}
end
Что касается вывода информации для просмотра всеми.
Специальный php-скрипт генерит картинки для сайта:
И для (когда-то) автоматической публикации в Instagram (старая картинка):
На сайте также есть возможность посмотреть исторические данные - уровень радиации, влажность, температуру, давление. Реализовано на Highstock.
Данные о радиации кстати, занятные. Если интересно - могу замутить небольшой пост о том, как я проводил анализ.
Всем спасибо, мирного неба, стабильного коннекта и мягких котиков.