Найти тему
etrivia

Метеостанция из палочек и верёвочек. Часть 1. Введение. Ветер.

Введение.

Этот цикл статей попытка описать как создать недорогую домашнюю метеостанцию из доступных комплектующих. Даже наверное не создать, а дать направление в какие стороны копать для её создания. Также цель сделать возможность задействовать её датчики в домашней автоматизации (умный дом) и поддержку облачных сервисов типа "Народный мониторинг". Ну и никто не отменял принцип - "если кому то рассказывать как правильно делать, то через некоторое время поймёшь и сам". Кстати, иногда можно услышать мнение, а зачем мне домашняя метеостанция, если всегда можно посмотреть погоду в интернете? К сожалению погоду именно возле вашего дома посмотреть можно только на метеостанции расположенной у вас дома. По опыту, на расстоянии в пару километров, разность температур может оказаться порядка 10 градусов. Поэтому лучше иметь своё.

Ветер.

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

Что понадобится.

Для начала закажем на всем известном Китайском сайте собственно датчики. Механические датчики последнее время сильно подешевели, чего не скажешь о новых ультразвуковых полностью электронных, цена за которые может достигать ста тысяч рублей. Хотя совершенно непонятно за что. Но оставим это на совести производителей. Возьмём недорогие, проверенные веками, механические.

Датчики ветра. Картинка с сайта продавца.
Датчики ветра. Картинка с сайта продавца.

Брал тут. На сайте продавца представлены датчики с тремя видами интерфейсов. Токовая петля, уровень напряжения и rs485 modbus. Был выбран с rs485. Это позволит обойтись четырёх жильным кабелем, через который будут подключены все выносные датчики, по этому же кабелю будет подаваться питание. Да и датчики с цифровым интерфейсом проще подключить к компьютеру или на чём там в конечном итоге будет сделана метеостанция. Цена постоянно плавает, мне этот комплект обошёлся чуть меньше двух тысяч рублей и семьсот рублей за доставку. Важно! Сразу требуйте у продавца прислать документацию и программу конфигуратор для этих датчиков.

Для подключения датчиков к компьютеру понадобится преобразователь USB - RS485. Их продаётся множество на любой вкус и кошелёк. Например на алиэкспрес можно приобрести такой

Переходник USB-RS485. Картинка с сайта продавца.
Переходник USB-RS485. Картинка с сайта продавца.

стоит всего 127 рублей и доставка бесплатно.

Также эти датчики нуждаются в питании, постоянном напряжении 10 - 30 вольт. Можно воспользоваться любым внешним источником питания. Или там же на али приобрести повышающий преобразователь, чтобы из 5 вольт от USB порта получить нужное напряжение. Можно что то такое

Повышающий конвертер. Картинка с сайта продавца.
Повышающий конвертер. Картинка с сайта продавца.

Стоит всего 40 рублей и доставка бесплатно. Но такие решения годятся только для экспериментов пока датчики стоят на столе. При реальной эксплуатации выносные датчики лучше питать от источника с гальванически развязанным выходом и защитой от коротких замыканий. Мало ли что может случится, кабель перетрётся на чердаке или молния ударит где то рядом. И в этом случае нам тоже помогут продавцы с али. Выпускаются вот такие гальванически развязанные преобразователи HLK-B0512S-2WR3

Гальваническая развязка по питанию. Картинка с сайта продавца.
Гальваническая развязка по питанию. Картинка с сайта продавца.

Стоит 166 рублей. Он тоже преобразует 5 вольт от USB в 12 вольт. Но придётся немного поработать паяльником. Припаять на вход и выход конденсаторы и клеммники для проводов.

Расположение выводов. Картинка из документации производителя.
Расположение выводов. Картинка из документации производителя.
Выбор ёмкости. Картинка из документации производителя.
Выбор ёмкости. Картинка из документации производителя.

Зато в самом крайнем случае сгорит только эта деталька, а не компьютер вместе с домом. Ссылка на полный даташит HI-LINK-HLK-B0512S-2WR3.pdf (Да, всё идёт к тому, что скоро изучение китайского языка станет для инженера обязательным.)

Ещё понадобится программа modbus терминал, с помощью которой будем проверять датчики и считывать с них показания. Собственно modbus терминал отличается от обычного тем, что умеет считать контрольную сумму CRC16 которая используется в этом протоколе. Можно считать и самостоятельно, но это удовольствие ниже среднего. Краткое объяснение, что такое modbus и обзор таких программ есть на хабре. Мне понравилась программа termite. Бесплатная, простая в использовании и имеет весь необходимый функционал.

Терминал. Картинка с сайта программы.
Терминал. Картинка с сайта программы.

Для linux можно использовать утилиту mbpoll. У программы нет графического интерфейса, её работа выглядит как то так.

Скриншот работы утилиты mdpoll.
Скриншот работы утилиты mdpoll.

Итак собираем необходимый минимум софта и железа. Ждём посылки с алиэкспресс. Сумма затрат порядка трёх тысяч рублей. Примерно через месяц можно будет начинать экспериментировать.

Посылки пришли. Смотрим подробнее, что получили.

Собственно датчики.

Так выглядит содержимое посылки.
Так выглядит содержимое посылки.

Обратите внимание, для удобства монтажа производитель добавил в комплект пигтейлы с герметичными, по крайней мере на вид разъёмами. За это ему жирный плюс.

Пигтейлы.
Пигтейлы.

Датчики подключаются к внешнему миру посредством четырёх проводов.

Цветные провода.
Цветные провода.

Чёрный - минус питания, коричневый - плюс питания, зелёный - rs485 провод A, синий - rs485 провод B.

Теперь о источнике питания.

Пришёл модуль hlk-b0512s-2wr3, я его вместе с конденсаторами и клеммниками распаял на макетной плате и то что получилось обжал в термоусадочную трубку. Получилось как то так

Модуль питания.
Модуль питания.

А вот конвертер USB - RS485 где то по дороге задержался. К сожалению так бывает с посылками. Ну не беда, возьмём из тех что есть в наличии. Все они по сути одно и тоже.

USB-RS485
USB-RS485

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

Подключение.
Подключение.
Подключение крупным планом.
Подключение крупным планом.

Получившиеся хвосты подключаем с одной стороны к компьютеру, с другой к датчику направления ветра. Если при этом не заморгал свет и не запахло дымом, значит идём в верном направлении.

У этого комплекта датчиков сразу после покупки есть один нюанс. По умолчанию адреса обеих датчиков одинаковы и равны единице. Соответственно работать на одной шине они не смогут. Чтобы это исправить, понадобится утилита конфигуратор. Что интересно, я не смог найти в интернете упоминаний о этом нюансе. Также не смог найти где скачать эту программу. Хорошо хоть были упоминания о её существовании. В результате архив с документацией и программами удалось получить только после переписки с продавцом. Но после этого приключения не закончились. В архиве присланном продавцом, было аж три версии этой программы. Но все они имели вот такой чудесный интерфейс ...

Программа конфигуратор.
Программа конфигуратор.

Ага. Вот и я тоже удивился. (Видимо таки скоро придётся китайскую локаль на винду ставить.) Впрочем путём не долгой медитации с кликаньем мышкой, нужные кнопки удалось найти. Ниже картинка с наложенными правильными названиями. Теперь смотрим в свойствах компьютера порт который система присвоила переходнику USB-RS232. Указываем его в выпадающем меню конфигуратора "Port" и кликаем кнопку "Connect".

Перевод.
Перевод.

Если все соединения выполнены правильно, то датчик будет обнаружен и в поле "Adress" появится единичка, а в поле "Speed" скорость 4800. Скорость пока не трогаем, а адрес меняем на двойку и нажимаем кнопку "write". Для проверки, что данные сохранились, можно нажать кнопку "Read". Должна считаться двойка. Теперь датчик сконфигурирован правильно и можно попробовать получить от него собственно направление. Для этого закрываем чудесную китайскую программу и запускаем "Termite".

-18

Первым делом настраиваем порт. Tools -> COM port... -> в открывшемся окне указываем номер порта и скорость, остальные настройки оставляем как есть. Жмём кнопку OK. Далее Tools -> Open port надпись с параметрами порта внизу окна программы должна стать зелёной. Теперь нужно сформировать строку запроса к датчику по правилам протокола modbus. Выглядит эта строка так "02 03 00 00 00 02". Попробуем разобраться, что это значит. Разбираем байты слева направо 02 - это адрес датчика который мы установили с помощью программы конфигуратора. 03 - объясняем датчику что нас интересуют 16 разрядные регистры. 00 00 смещение (адрес) начиная с которого надо читать данные и 00 02 это количество регистров которые надо прочитать. Вписываем эту строку в поле ввода терминала и жмём кнопку "Send". Если всё сделано правильно, то в окне терминала увидим такие строчки

Запрос - ответ.
Запрос - ответ.

Первая строка это наш запрос, к которому программа добавила два байта C4 38 контрольной суммы. Вторая строка это ответ датчика. Разберём её подробнее. И так слева на право 02 - номер датчика который ответил, 03 - ответ состоит из 16 разрядных регистров, 04 - ответ уложился в 4 байта, 00 06 - номер сектора на который показывает стрелка указателя, 01 0E - направление ветра в градусах, А9 66 контрольная сумма.

Датчик направления ветра умеет отслеживать только восемь направлений, от 0 до 7, для ветра этого вполне достаточно. Что бы получить значение в градусах нужно перевести шестнадцатеричное число 0x010E в десятичное, получим 270 градусов. Соотношение секторов, градусов и направлений сведено в табличку из документации на датчик.

Направление.
Направление.

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

Риска.
Риска.

Теперь разбираемся с датчиком скорости ветра. Отключаем датчик направления и вместо него подключаем анемометр. Кстати первый датчик можно и не отключать, а просто соединить их параллельно. Собственно так в конечной конструкции и будет сделано.

-22

Строка запроса будет выглядеть так "01 03 00 00 00 01". Слева на право 01 - номер датчика, 03 - работаем с 16 разрядными регистрами, 00 00 смещение, 00 01 - читаем один регистр. Записываем её в терминал и отправляем. В ответ получим "01 03 02 00 1D 78 4D". Где 01 - номер датчика от которого пришёл ответ, 03 ответ считан из шестнадцатиразрядного регистра, 02 - ответ состоит из дух байт, 00 1D - скорость ветра, 78 4D - контрольная сумма. Для получения человекочитаемого результата переводим шестнадцатеричное значение в десятичное и делим его на 10. Получается 0x001D -> 29/10 скорость ветра 2.9 метра в секунду.

Так выглядит опрос сразу двух датчиков в linux программой mbpoll.

Screen mbpoll.
Screen mbpoll.

Всё. В принципе можно тащить датчики на крышу. Но лучше подождать. Что за метеостанция без датчиков температуры и влажности? Этому вопросу и будет посвящена следующая статья https://dzen.ru/a/ZKZ-ll4JRmr9iN5r.

Всё что описано в статье можно обсудить в комментариях и телеграм канале etrivia.