Найти в Дзене
K12 :: О ESP32 и не только

RS-WS-N01-2D-LCD

Оглавление

Добрый день, уважаемые читатели! Нет, это не секретный шифр и не случайный набор символов. Это всего-лишь обозначение влагозащищенного датчика температуры и влажности для шины RS485 Modbus RTU, о котором и пойдет речь в данной статье.

Основная электроника датчика надежно упакована во влагозащищенный корпус ( IP65 ) с уплотнителями для кабелей. Это позволяет использовать его в запыленных и (или) влажных помещениях - например в цеху, складе, подвале и т.д. Лично у меня он будет работать в теплице.

Чувствительным элементом в данном датчике является SHT30 производства Sensirion. Сенсор в данном экземпляре прибора вынесен на некоторое расстояние от корпуса, однако можно модификацию, в которой сенсор будет смонтирован непосредственно на корпусе.

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

Мой экземпляр
Мой экземпляр

Монтаж прибора осуществляется на стандартную DIN-рейку, причем в комплекте имеется своя собственная DIN-рейка, полностью адаптированная под размеры и цвет корпуса.

-3

Но можно использовать и стандартную.

Почему именно RS485?

SHT30 гораздо чаще встречаются в виде модулей для подключения к Arduino, ESP и другим микроконтроллерам по шине IIC ( I2C ). Здесь же используется промежуточный контроллер, который реализует аппаратную шину I2C внутри прибора, в для подключения к основному микроконтроллеру используется уже другая шина - RS485 Modbus. Для чего такие сложности?

  • Во первых, и это самое важное, шина RS485 позволяет не заботиться о длине проводов и напряжении питания - она будет работать на расстояниях до 1км и в широком диапазоне питающих напряжений. И не удивительно - ведь это промышленная шина, предназначенная для больших помещений и цехов.
  • Во вторых, шина RS485 позволяет программно изменять адреса устройств на шине, что дает возможность одновременного подключения множества однотипных устройств.
  • Ну а в третьих - это уже готовое промышленное устройство в защищенном корпусе, да еще и со своим собственным дисплеем для оперативного визуального снятия показаний.

Но за все нужно платить...

  • Во первых такой прибор стоит существенно дороже аналогичного сенсора в виде микромодуля для Arduino. Ну разумеется - за корпус, дисплей и дополнительные электронные компоненты придется заплатить.
  • Во вторых - мы имеем меньший шаг измерения (SHT30 имеет шаг измерения 0.01℃) и теряем доступ ко встроенному нагревателю, который можно было бы использовать для "просушки" сенсора во влажной среде.

Характеристики

  • Напряжение питания: заявлено 10~30 В, однако датчик прекрасно работает от 5 В
Нижний предел напряжения питания. Ниже - гаснет дисплей, но данные по шине идут до ~3В
Нижний предел напряжения питания. Ниже - гаснет дисплей, но данные по шине идут до ~3В
  • Диапазон измерения температуры: -40℃ ~ +80℃
  • Диапазон измерения влажности: 0%RH ~ 100%RH
  • Шаг измерения: 0.1℃, 0.1%RH
  • Точность: ±0.4℃ (25℃), ± 2% RH (при 25℃ и 60%RH)
  • Размеры:
-5

Внутренний мир

Внутри коробочки расположена небольшая плата, на котором расположен клеммник для подключения к шине RS485:

-6

Шлейфом подключен дисплей, который расположен на лицевой стенке корпуса.

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

Параметры шины

По умолчанию датчик настроен на скорость передачи данных 4800 бод, но поддерживается еще 2400 и 9600 бод.

-7

Так как у меня в системе имеется датчик, который не может работать со скоростью ниже 9600, мне пришлось перенастроить данный приборчик на 9600 бод, благо это очень не сложно.

Регистры

Прибор имеет всего 4 регистра:

-8

Первые два регистра отвечают за выдачу оперативных данных о текущих температуре и влажности. Другие два - отвечают за настройку адреса устройства и скорости передачи данных.

Как видите, отсутствуют регистры, отвечающих за корректировку измеренных значений температуры и влажности, но эти параметры в приборе есть. Что это? Ошибка документации или лень было регистры программировать и они реально отсутствуют?

Настройка прибора с помощью встроенной клавиатуры

Для данного сенсора совсем не обязательно настраивать адрес и скорость с помощью компьютера. Гораздо проще сделать это прямо на приборе. Для этого нажмите кнопку ОК, перед вами появятся три ноля - это приглашение для ввода пароля.

По умолчанию пароль - 888. Набираем пароль с помощью стрелок и кратковременного нажатия кнопки OK. По окончании ввода нажмите ОК но уже дольше 1 секунды.

На экране появится экран выбора адреса:

Можно поставить адрес от 1 до 125
Можно поставить адрес от 1 до 125

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

Следующий параметр - скорость шины:

Здесь доступны 2400 или 4800 или 9600 бод
Здесь доступны 2400 или 4800 или 9600 бод

Следующий параметр - корректировка температуры:

-11

Как видите - такой параметр все-таки существует. А регистра для него якобы не предусмотрено. Я думаю, что это все-таки ошибка документации, китайцы часто относятся к ней очень небрежно.

Далее идет корректировка влажности:

-12

Ну и последний параметр - пароль доступа к настройкам:

-13

Пароль служит защитой от всяких чересчур любопытных и шаловливых ручек, которые так и норовят понажимать на интересные кнопочки.

Подключение к ESP32 или Arduino

Для подключения к микроконтроллеру потребуется недорогая платка преобразователя интерфейса, например такая:

-14

К ESP32 я подключал её к 16 и 17 GPIO, но это не принципиально, можно выбрать и другие свободные выводы:

-15

Чтение данных с использованием ESP-IDF

Поскольку многие TH-датчики для шины RS485 имеют одни и те же регистры для температуры и влажности, я написал очень простую универсальную библиотечку для снятия с них показаний:

reSensors/reTH485 at master · kotyara12/reSensors

Как с ней работать?

  • добавляем необходимые библиотеки в проект: #include "mbcontroller.h" и #include "reTH485.h"
  • инициализируем modbus и rs485
Моя процедура инициализации modbus
Моя процедура инициализации modbus

где

Настройки шины
Настройки шины
  • читаем нужные регистры и делим полученное значение на 10
Чтение данных с сенсора
Чтение данных с сенсора

То есть для получения данных достаточно всего одной команды: mbc_master_send_request(), а остальное лишь подготовка и анализ кода ответа

_______________

На этом пока всё, до встречи на сайте и на dzen-канале!

👍 Понравилась статья? Поддержите канал лайком или комментарием! Каналы на Дзене "живут" только за счет ваших лайков.

📌Подпишитесь на канал и вы всегда будете в курсе новых статей.

🔶 Полный архив статей вы найдете здесь.