Влажность.
С датчиками ветра разобрались в предыдущей статье https://dzen.ru/a/ZK18CtwU-Tuq_HWd . Теперь о влажности. На мой взгляд все доступные на сегодняшний день датчики влажности можно разбить на две категории. Первая категория это датчики которые сами по себе полная дрянь, но имеют однопроводный интерфейс и их можно вынести на значительное расстояние от измерительного блока. Вторая категория это боле-менее хорошие датчики, но они с интерфейсом i2c и их нельзя подключать длинными проводами, поскольку этот интерфейс предназначен для соединения микросхем в пределах одной платы и большие расстояния сильно не любит. Но недавно я обнаружил, что Китайские товарищи решили эту проблему выпустив для датчиков серии SHT фактически конвертер rs485 modbus в шину i2c. Как обычно за совсем небольшие деньги. Вот это чудо. https://aliexpress.ru/item/1005005437488818.html
Заказал за 417 рублей. Доставка бесплатно.
У этого же продавца можно приобрести и сами датчики.
Цена 593 рубля.
Заказал этот датчик в сугубо научных целях, разломать и посмотреть на потроха. К такой компоновке возникают вопросы. Возможно это и удачный вариант при размещении в отапливаемом помещении, но нам нужен именно уличный датчик. Проблема в том, что в силу специфики измерений сам сенсор нельзя сделать герметичным, а уличные условия влияют на него не самым благоприятным образом. К счастью существуют материалы пропускающие водяной пар но не воду. Именно таким материалом укрыт сенсор в следующем датчике. https://aliexpress.ru/item/1005004718790450.html
Цена 480 рублей. Доставка дороговата, 318 рублей. Отправили CDEKом. Думаю если хорошо поискать то можно найти и дешевле.
И в первом и во втором случае используется один и тот же сенсор SHT30. Только корпуса в которые сенсор упакован разные. Сам сенсор имеет следующие характеристики: напряжение питания от 2.5 до 5.5 вольт, интерфейс i2c, диапазон измеряемых температур от -40 до 125 с разрешением 0.1℃; , диапазон измеряемой влажности от 0 до 100%RH с разрешением 0.1%RH, точность измерения температуры ±0.2℃, точность измерения влажности ±2%RH.
Теперь нужно озаботится тем, чтобы на датчик не попадали прямые солнечные лучи. Иначе может получится так, что на улице лежит снег, а метеостанция показывает +20 градусов тепла. Во "взрослых" конструкциях для этого используется "священный грааль" метеорологов "будка Стивенсона". Нечто подобное можно изготовить самостоятельно, но таким ленивым как я проще купить готовый домик для датчика у отечественного производителя, известного в определённых кругах как Constantin. Заказывать тут https://narodmon.ru/senscase
Цена на момент покупки 800 рублей + доставка. Статья Константина о истории создания этой конструкции. https://dzen.ru/a/X1QEs_dJUSjkZN82
Заказываем, оплачиваем и ждём посылки. По затратам получается в районе 2000 рублей. Самое дорогое это домик для датчика влажности и температуры. Но если есть желание знать боле менее правильное значение температуры, то без него не обойтись. Повторюсь, его можно изготовить самостоятельно.
Распаковка и проверка.
Наружный датчик.
Рассмотрим подробнее из чего состоит эта конструкция. 1 - колпачок со прорезанными окнами закрытыми синтетическим материалом который пропускает водяной пар, но при этом не пропускает воду (по крайней мере так уверяет производитель). 2 - соединительная втулка. Части 3 и 4 это сальник, защищающий внутреннее пространство от влаги (выглядит достаточно герметично). 5 - сам сенсор SHT30. Плата на которой он распаян, защищена герметиком и затянута в термоусадку. Для подключения к схеме имеются четыре провода. Чёрный - минус питания, красный - плюс питания, белый - sda, жёлтый - scl. Кабель достаточно длинный поэтому при окончательном монтаже желательно лишнее обрезать. В данном случае, чем короче, тем лучше.
Датчик для помещений.
Разобрал второй датчик. Убедился, что нет никакой защиты платы и самого сенсора. Размещать на улице эту конструкцию крайне нежелательно.
Переходник i2c - rs485 modbus.
Уже традиционно никаких документов и описаний этой платы я найти в интернете не смог, поэтому всё добывается в переписке с продавцом. Причём если датчики ветра хотя бы упоминаются на форумах любителей ардуино и других самодельщиков, то о плате SHA8C01 упоминают только продавцы.
Попробуем понять, что можно получить от этой платы. Соберём тестовый стенд и подключим к плате с одной стороны датчик, с другой стороны источник питания 12 вольт и конвертер usb - rs485. Источник питания с гальванической развязкой, конвертер usb - rs485 и используемые программы описаны в предыдущей статье https://dzen.ru/a/ZK18CtwU-Tuq_HWd .
Подключаем всё это к usb портам компьютера, запускаем программу termite. Настраиваем номер порта, к которому подключен переходник rs485. Скорость обмена с платой по умолчанию 9600. Открываем порт и убеждаемся, что надпись с параметрами порта внизу окна программы стала зелёной.
Строка запроса будет выглядеть так 01 03 00 00 00 07. Где 01 адрес платы по умолчанию. 03 команда на чтение 16 битных регистров. 00 00 говорим что будем читать начиная с нулевого регистра. 00 07 количество регистров которое желаем считать. Отправляем эту строку и если до этого всё сделали правильно увидим в окне терминала вот такие строчки.
Первая строка это наш запрос, 01 03 00 00 00 07 к которому добавилась контрольная сумма 04 08. Вторая строка 01 03 0E 01 07 01 DD 00 01 00 03 00 00 00 00 00 00 B4 AF ответ датчика. Его разберём подробнее.
- 01 ответ пришёл от устройства с адресом 1
- 03 ответ состоит из значений 16 разрядных регистров.
- 0E тело ответа состоит из следующих 14 байт. 01 07 01 DD 00 01 00 03 00 00 00 00 00 00
- 01 07 значение температуры. Чтобы привести её в удобочитаемый вид, переводим шестнадцатеричное число 0x0107 в десятичное 263 и делим его на 10. Получается 26.3 градуса Цельсия. Если значение этого регистра будет равно 80 00 значит датчик неисправен или вернул данные с ошибкой. В случае если такое будет повторяться часто то возможно вы оставили кабель от датчика до платы слишком длинным.
- 01 DD значение влажности. Всё тоже самое, что и в предыдущем пункте. Hex 0x01DD -> dec 477 / 10 получаем 47.7 %Rh. Учитывая, что точность датчика влажности 2%, последний разряд можно совсем отбросить. Останется просто 47.
- 00 01 адрес устройства.
- 00 03 скорость обмена по rs485. Возможны следующие значения 0:1200, 1:2400, 2:4800, 3:9600( по умолчанию), 4:19200, 5: сброс настроек.
- 00 00 коэффициент коррекции температуры. Понадобится если не устроит имеющаяся точность датчика и вы его решите откалибровать.
- 00 00 тоже самое, что и предыдущее но для влажности.
- 00 00 Плата умеет сама посылать отчёты. Возможные варианты значений - 0: ответ только по запросу, 1-255 интервал посылки в секундах.
- B4 AF контрольная сумма crc16.
Описание регистров из документации на плату.
Теперь вспоминаем, что адреса 1 и 2 уже заняты датчиками ветра, поэтому нужно изменить адрес платы на 3. Для этого надо записать в регистр 0x0002 значение 0x0003. Формируем строку с командой 01 06 00 02 00 03. Где 01 адрес устройства, 06 - говорим что будем записывать в 16 разрядные регистры, 02 записывать будем во второй регистр, 03 значение 3. Отправляем и получаем её же в ответ.
Значит всё хорошо и адрес устройства изменился. Для проверки снимаем питание с платы и снова включаем. Отправляем запрос на чтение уже по новому адресу 03 03 00 00 00 07.
Всё работает! Теперь по аналогии нужно установить скорость обмена такую же как у датчиков ветра - 4800. Запрос будет выглядеть так 03 06 00 03 00 02. Оправляем. Получаем.
Всё отлично. Снимаем и снова подаём питание. Перенастраиваем в программе termite скорость порта на 4800 и проверяем связь 03 03 00 00 00 07.
Ок. Теперь датчик готов к совместной работе с остальными устройствами.
Тоже самое с помощью программы mbpoll в linux.
К сожалению у этой платы есть один недостаток :( В датчиках серии SHT есть встроенный нагреватель, которым можно воспользоваться для сушки чувствительного элемента гигрометра. А плата переходника эту возможность не поддерживает.
Домик для термометра и гигрометра.
Разбираем домик.
Прикидываем как в него поселить датчик.
Центральная стойка явно великовата. Обрезал её ножовкой по металлу. Датчик закрепил термоусадкой. Получилось на удивление крепко.
Всё. Можно окончательно собирать и тащить на крышу. Чем в следующей статье и займёмся. Было бы неплохо успеть до зимы :)
Часть 3. Лезем на крышу.
Всё что описано в статье можно обсудить в комментариях и телеграм канале etrivia.
#SHA8C01 #метеостанция #влажность #температура #i2c #rs485 #sht30 #modbus #Стивенсона