Данный модуль долго лежал в коробке и ждал своего часа, чтобы присоединиться к домашней метеостанции (о которой я еще планирую написать пару постов).
По какой-то теперь уже неведомой [забытой] причине я купил DIY-набор для пайки, а не готовый модуль. Возможно, на момент покупки он был заметно дешевле.
В этот раз рассмотрим вывод данных на онлайн сервисы с использованием только ESP8266/ESP32 без систем умного дома.
Флюс должен быть хорошо отмыт, при включении плата должна быть сухая и чистая. При работе устройство должно быть защищено от влаги. Не прикасайтесь к работающему устройству голыми руками. На трубке присутствует высокое напряжение!
Диапазон измерений: 20~120 мкР/ч для гамма и 100~1800 частиц*мин/см2 для бета
Напряжение питания: 4.5-5 В
Потребляемый ток: 12-30 мА
Рабочее напряжение: 330-600 В (рекомендуется не более 550 В)
Рабочий ток: 0.015-0.02 мА
Газоразрядный счётчик Гейгера Мюллера (сама трубка): J305, совместимы M4011, STS-5, SBM20
Наработка > 1 x 10**9 импульсов
Набор поставляется в большой коробке из переработанного картона.
В комплекте печатная плата, большой блистер с компонентами, размещенными в отдельных ячейках, трубка J305, держатель АА батареек, кабель USB-A -> DC5.5/2.5, Dupont кабель (для подключения к Arduino и пр.), аудиокабель, кусок акрила, к которому прикручивается плата и нейлоновые стойки.
Маркировка на плате: RadiationD v1.1 (CAJOE). Это довольно старый проект, но он все еще активно продается на али (в основном благодаря низкой цене), хотя сейчас есть модули и поинтересней. Продавец дает ссылку на GitHub репозиторий, хотя оригинальный репозиторий здесь.
Качество печатной платы хорошее
Выводы резисторов и диодов уже укорочены и отформованы, у конденсаторов и транзисторов почему-то нет. Вот только ножки отформованы несимметрично и кривовато. Некрасиво, да и треть ножек после пайки все равно пришлось укорачивать.
Стеклянные трубки следует прятать от прямого солнечного света — может наблюдаться реакция на фотоны ультрафиолетового и ближнего ультрафиолетового спектра, источник с описанием явления (каноничные СБМ-20 имеют латунный корпус). Анод обозначен на трубке и на плате.
Переключатель отказался паяться с нейтральным флюсом, ЛТИ-120 и то еле справился (ЛТИ-120 от Solins, отмывал все долго и упорно — мое почтение kdekaluga). С остальным без сложностей. Я заменил клемму питания (под большее сечения кабеля), выкинул кроватки DIP-8, припаял TVS диоды на питание.
Почти готово, осталось еще разок промыть.
Калибровка генератора высокого напряжения
Отключаем устройство, если оно оказалось включено. Снимаем трубку, ставим перемычку J4 Test, на потенциометре R100 выкручиваем меньше 50 Ом.
Подаем питание, ставим мультиметр на измерение постоянного напряжения, щупы ставим на землю (например на клемме питания) и тест поинт J2.
Крутим потенциометр R100 так, чтобы измеренное напряжение составило 57 В
Отключаем питание, снимаем перемычку Test, ставим трубку.
Для подключения к МК (Arduino, ESP и т.д.) используется разъем P3. Работа реализуется через счетчик импульсов (количество распадов в минуту). Неправильная маркировка идет через года, пин VIN на самом деле выходной сигнал. 5V идет насквозь с клемм питания, так что можно запитаться прямо отсюда.
Выходной сигнал имеет логический уровень 5 В, но очень слабая подтяжка (47К + 470К) позволяет подключаться к тем же ESP напрямую. Но можно зачистить маску рядом с разъемом и припаяться снизу платы — резистор 1 МОм к земле позволит получить на выходе ровно 3.3 В.
Делаем корпус. С корпусом вышла неувязочка, пришлось разъем для подключения к МК перепаивать.
Даже работает. Даже с первого раза. Раз в несколько секунд мигает индикаторный светодиод и пьеза щелкает. Потребление модуля в рамках метеостанции меня волнует мало. К сожалению (или к счастью), я не нашел ничего радиоактивного для проверки устройства. Например гранит, найденный в клумбе, не выделяется на естественном фоне.
Народный мониторинг — проект интернета вещей для сбора, обработки, хранения и отображения (на карте и в приложениях) показаний датчиков и веб-камер своих участников с публичным или приватным доступом на различных платформах.
На сайт можно вывести множество датчиков
наиболее востребованные и редкие уличные метеодатчики (температура, анемометр, радиация, индекс УФ, пыль)
Если отсеять банальные температуру воздуха, влажность, давление, остается не так много интересных датчиков. Есть, конечно, интересные сенсоры вроде датчика грозы AS3935, но от него я смог только однажды получить правдоподобные показания, а тестирование затруднено.
Но вот наконец-то я достал из долгого ящика коробку с героем обзора, чтобы вывести в онлайн еще один датчик.
Сегодня мы посмотрим, как можно передать данные на сервис без сервера умного дома, ограничившись возможностями ESP Easy.
Находим первую попавшуюся плату с ESP8266/ESP32. Теперь нужно прошиться.
По ряду причин я использую устройства ESP* с прошивкой ESPEasy. Эта прошивка не особо популярна в русскоязычном сегменте (несмотря на большие возможности и ориентированность на использование веб-интерфейса), и это одна из причин о ней немного рассказать.
На всякий случай приведем ссылки на обсуждение (оф.форумы) использования модуля RadiationD с ESP Easy, и ESPHome в качестве более популярной (да, я знаю об этом) альтернативы.
Прошивка устройств довольно проста. Идем на официальный GitHub на страницу релизов, качаем архив с бинарниками для своего устройства
ESPEasy_mega_ДАТА_ESP82xx_binaries.zip - для ESP8266 и ESP8285
ESPEasy_mega_ДАТА_ESP32_binaries.zip — более простая/дешевая/старая версия ESP32, такие встречаются на платах NodeMCU и пр.
и далее для разных версий ESP32 (ESP32-S2...)
Также бинарники различаются набором встроенных плагинов, размером и способом организации памяти в ESP и т.д., подробно. При сомнениях — прошивайте ESP_Easy_mega_*_normal_ESP8266_4M1M.bin для ESP8266 и ESP_Easy_mega_*_normal_ESP32_4M316k_LittleFS.factory.bin для ESP32
Важно! ESP32* шьется в 2 этапа — сначала ESP_Easy_mega_*_ESP32_*.factory.bin а потом — уже через web-интерфейс сама рабочая прошивка.
Качаем прошивальщик Flash Download Tools или сразу ESP_Easy_Flasher
После прошивки через Flash Download Tools устройство создаст точку доступа с именем ESP_0 (возможны вариации) и паролем configesp. Подключаемся к WiFi, в браузере открываем адрес 192.168.4.1 и вбиваем настройки WiFi в веб интерфейсе. Или настраиваем через терминал.
А ESP_Easy_Flasher позволяет сразу применить настройки устройства, WiFi, применить правила (rules — скрипты, которые можно выполнить непосредственно на устройстве)
Устройствам ESP Easy (далее — узел, поскольку «датчики» в EPS Easy обозначаются Devices — «устройства») нужно присваивать разные Unit Number — тогда узлы объединяться в сеть, в которой они смогут обмениваться данными (ESPEasy p2p Network) без контроллера [умного дома]. Например, можно расшарить датчики на другие узлы и использовать сложные правила, управляя другими узлами.
Для этого на вкладке Controllers нужно добавить ESPEasy P2P Networking на принимающем и передающем узлах (и выставить одинаковый порт в Tools -> Advanced -> ESPEasy p2p UDP port — по умолчанию 8266, и для ESP32)
После этого у датчика, который нужно расшарить (вкладка Devices -> Edit), поставить галочку Send to Controller (ESPEasy P2P Networking, enabled).
Есть существенно ограничение — датчик на клиентах будет автоматически добавлен под тем же номером, под каким он значится на передающем узле (если номер свободен). Активируем устройство.
#TODO В будущем обещают возможность изменения номера.
Уличные датчики подключены к одной плате ESP8266, сабж же у нас будет стоять внутри помещения. Для уменьшения количества запросов соберем все данные на одном узле, у потом будет посылать на онлайн сервис все вместе.
Добавим устройство, которое будет выводить аптайм (полезно для мониторинга работы оборудования). Devices -> Edit -> Generic — System Info
задаем интервал обновления устройства, применяем.
Добавим счетчик импульсов, который и будет обрабатывать данные с модуля RadiationD.
Devices -> Edit -> Generic — Pulse counter
Чтобы нам было поинтересней, время выборки установим 10 секунд. Устройство возвращает количество тактов за установленное время, общее количество, время в мс, прошедшее с последнего изменения.
Аналогично добавляем виртуальные устройства, в которое мы можем писать через правила — создадим устройства для значений импульсов в минуту и мкЗв, мкР.
Devices -> Edit -> Generic — Dummy Device
Активируем статистику для количества импульсов — это позволит вычислить среднее для последних N значений (также нужно установить Interval для этого устройства).
Вот только в виртуальных устройствах будут нули. Нужно присвоить им значения.
Я говорил, что ESP Easy ориентирована на веб интерфейс, но не было ни слова о том, что будет совсем просто. Переходим к правилам [Rules].
Tools -> Advanced -> активируем Rules
И напишем правила (в новых билдах — красивое, с подсветкой синтаксиса).
on System#Boot do
let,1,0 // total number of cpm's (you can use %v1% or [var#1])
let,2,1 // number of measurements
let,3,60/[Geiger#settings.interval] // multiplier: measurements per minute
endon
On Geiger#Count do
Let,1,[var#1]+[Geiger#Count]*[var#3]
Let,2,[var#2]+1
TaskValueSet 4,1,[Geiger#Count]*[var#3]
TaskValueSet 4,2,[var#1]/[var#2]
TaskValueSet 4,3,[CPM#Instant_CPM.avg] // Average (64 samples on ESP32, 16 on ESP8266)
TaskValueSet 5,1,[Geiger#Count]*[var#3]/151
TaskValueSet 5,2,[Geiger#Count]*[var#3]/151*100
endon
Синтаксис записи правил в одной строке:
on <trigger> do <action> endon
или многострочный:
on <trigger> do
<action>
<action>
<action>
endon
Мы объявляем несколько переменных, работа с которым идет через НОМЕР переменной, например %v1% или [var#1]
Let,<n>,<value>
Значение устройства можно получить через [<TaskName>#<ValueName>]. Например
[Geiger#Count] // Получаем текущее значение количества импульсов
[Geiger#settings.interval] // Интервал обновления устройства Geiger
Мы настроили выборку в 10 секунд, но значения импульсов нужно пересчитать для одной минуты, для этого введем коэффициент [var#3]
let,3,60/[Geiger#settings.interval]
Присвоить значение в фиктивное устройство можно через номер устройства и номер значения (встречается чаще) или через имена:
TaskValueSet 4,1,0 // установим значение №1 устройства №12 в "0"
TaskValueSet CPM,Instant_CPM,0 // через имена
Значение 151 — коэффициент перевода импульсов в минуту в микроЗиверты для трубки J305. Для других трубок будет отличаться.
TaskValueSet 5,1,[Geiger#Count]*[var#3]/151
Здесь же посчитаем арифметическое скользящее среднее для импульсов в минуту (64 выборки на ESP32, подробно):
[CPM#Instant_CPM.avg]
да и мкЗв/ч и мкР/ч лучше тоже считать усредненные — создаем еще одно виртуальное устройство и пишем в него усредненные данные (не забудьте для устройства Radiation включить статистику и задать интервал обновления):
TaskValueSet RadiationAverage,uSv_per_Hours,[Radiation#uSv_per_Hours.avg]
TaskValueSet RadiationAverage,uR_per_Hours,[Radiation#uR_per_Hours.avg]
Почти готово. Показания правдоподобные.
Осталось только передать показания.
Самый простой (и небезопасный) способ передачи показаний — по протоколу HTTP GET:
http://narodmon.ru/get?ID=MAC&mac1=value1&...&macN=valueN[&time=UnixTime][&name=название][&owner=владелец][&lat=широта][&lon=долгота][&alt=высота_над_морем]
Дополняем правила:
Добавляем в правило Boot запуск таймера через 60 секунд после пробуждения, дабы мы успели опросить все датчики:
timerSet,1,60
И создаем правило таймера, которое каждые 5 минут (чаще — платно, либо заработанными за участие в жизни проекта бонусами) будет передавать показания (<DEVICEMAC> заменить на уникальный идентификатор устройства):
On Rules#Timer=1 do
SendToHTTP narodmon.ru,80,/get?ID=<DEVICEMAC>&T1=[Si7021#Temperature]&H1=[Si7021#Humidity]&R1=[Radiation#uR_per_Hours]
timerSet,1,300
endon]
Регистрируемся на сайте narodmon — ничего сложного.
После того, как сервис получил от нас хотя бы один запрос, идем в верхнем меню Профиль -> Мои датчики -> Добавить
Указываем серийный номер нашего устройства. Почти все.
Осталось добавить описание устройства и названия датчиков. Любоваться своей метеостанцией можно через сайт, через приложение или telegram бот.
narodmon — не единственный подобный сервис, в качестве альтернативы для личного использования многим может подойти thingspeak (тут можно и MATLAB для анализа данных использовать). Запрос будет выглядеть так:
On Rules#Timer=1 do
SendToHTTP api.thingspeak.com,80,/update?key=<APIKEY>&field1=[Si7021#Temperature]&field2=[Si7021#Humidity]&field3=[Radiation#uR_per_Hours]
timerSet,1,300
endon]
<APIKEY>, естественно, заменить на свой ключ.
или посмотреть OpenWeatherMap, но здесь другой уровень требований к участникам и достоверности данных.
+23 |
1461
51
|
+140 |
3069
41
|
+45 |
2319
79
|
https://aliexpress.ru/item/1005002590475171.html
Библиотека под ардуино иде есть.
А трубочки покупал у одного дядьки с авито. У него их целая коробка, все безупречные свиду, ни вмятинки, ни царапинки.
Но всё же не понятно, зачем на него смотреть. Он работал пару дней, я его выключил, пальцами пощупал, всё холодное. Собрал в корпус и отправил на место несения службы.
Поржал )))
Отвечу случаем из жизни:
Ровно 12 лет назад появился в нашей конторе тепловизор. Я тогда мастер участка был. И было три стажера. И вот возвращаюсь на объект, а на столе лежит бумага, в которой расписано, что кабель один греется черезмерно, поэтому отрубили его нафиг. Куча писем на мэйле, какого х.., когда устраните.
Короче новоиспечённый смотрел в тепловизор и узрил кабель, который, цитирую, «очень жёлтый а остальные сиреневые». Короче, все кабели были окружающей температуры — 19 градусов, а один был 37 градусов. Всё. Паника. Алярма…
Я понимаю, что игрушки сейчас очень продвинутые, всё мерят, показывают, но всё же немного надо понимать как ими пользоваться.
Очень жаль что им пофиг на развитие и среднестатистический обыватель не осилит такой проброс. Обычные физлица им неинтересны, мне примерно так прямо и ответили в техподдержке.
А разброс значений у меня примерно такой же.
Я вот тоже в недоумении почему они не сделают аддон которым в два клика можно выдать датчик в народмон, золотая жила же. Официальный аддон только наборот, с сайта тянет сенсоры и то делает это весьма топорно
Но и это решение уже работает только со старой версией Appdaemon. На новой там структуру папок переделали и уже не работает. Сижу на старой чисто из-за этого датчика. Техподдержке писал, им пофиг, не их интеграция.
Если ХА стоит как супервизор, то путь до AppDaemon: /usr/share/hassio/addon_configs/<цифробуквы>_appdaemon
в файле appdaemon.yaml поменять путь на secrets: /homeassistant/secrets.yaml.
Настройки народмон в той же директории /apps/narodmon_sender.
У меня не вышло настроить.
Но я и не шарю.
Если не сложно, распишите по пунктам, как для хлебушка.
Буду очень благодарен.
Я не стал рисковать и цеплять пятивольтовый выход на есп (есть опыт сгоревших есп-шек, а лицензии используемой мной прошивки привязаны к железу и не могут быть перенесены на другое железо). Я просто взял выход на пищалку. Все так же заработало.
Еще — данные передавать нужно же не в попугаях, а в каких то системных единицах… Там несложная формула пересчета количества импульсов, но в ней есть коэффициент — который зависит от используемой трубки!
Блин — делал это все пару лет назад и уже все забыл… Станция лежит в шкафу (ждет переезда на новое место жительства, где еще идет стройка). Если не забуду — завтра откопаю ее и включу — там все в готовности.
может конечно у современных что-то сильно поменяли.
Послала знакомому SMS: «Как дела?»
Получила ответ: «хорово»
Теперь сижу, думаю, в какой же букве опечатка.
Расширяюсь на доступные датчики — температура воздуха, влажность, давление, освещенность, индекс ультрафиолета уже были, теперь радиационный фон. В планах — все-таки побороть датчик молнии AS3935, дальше можно заняться анемометром.
Если без сервера умного дома, как я писал в топике — да, решение рабочее.
В домотикзе усредняю данные, а то смысла в таком пилообразном графике нет.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.