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

Электронный змей Горыныч о трех головах

Добрый день, уважаемые читатели! Думаю, никто не будет спорить со мной, что ни один “умный” (и даже “не очень умный”) дом не обойдется без датчиков. Разнообразные датчики для устройств домашней автоматизации являются теми самыми “органами чувств”, на основании данных с которых алгоритмы управляют теми или иными процессами. И самыми популярными датчиками, пожалуй, являются датчики температуры – с их помощью регулируется температура в доме, погребе, гараже, аквариуме и т.д. Я уже не раз писал статьи про подобные датчики, эта тема мне весьма близка. Одним из действительно народных датчиков, безусловно, является цифровой датчик температуры DS18B20, обладающий достаточной точностью даже в “китайском исполнении”. Одна проблема – все локальные шины, основанные на подтяжке линий данных к земле (I2C, 1Wire, SingleBus) обладают небольшой “дальностью” и стабильность их работы резко снижается при возрастании паразитной емкости соединительного кабеля. Читатели, регулярно читающие мой сайт, наверное
Оглавление

Добрый день, уважаемые читатели!

Думаю, никто не будет спорить со мной, что ни один “умный” (и даже “не очень умный”) дом не обойдется без датчиков. Разнообразные датчики для устройств домашней автоматизации являются теми самыми “органами чувств”, на основании данных с которых алгоритмы управляют теми или иными процессами. И самыми популярными датчиками, пожалуй, являются датчики температуры – с их помощью регулируется температура в доме, погребе, гараже, аквариуме и т.д. Я уже не раз писал статьи про подобные датчики, эта тема мне весьма близка. Одним из действительно народных датчиков, безусловно, является цифровой датчик температуры DS18B20, обладающий достаточной точностью даже в “китайском исполнении”. Одна проблема – все локальные шины, основанные на подтяжке линий данных к земле (I2C, 1Wire, SingleBus) обладают небольшой “дальностью” и стабильность их работы резко снижается при возрастании паразитной емкости соединительного кабеля.

Читатели, регулярно читающие мой сайт, наверное уже заметили, что в последнее время я довольно плотно подсел на шину RS485 / Modbus RTU, которая позволяет особо не задумываться о длине соединительного кабеля, в том числе и на производстве.

В связи во всем вышесказанным, представляю вам обзор отечественного продукта: адаптер RS485 Modbus RTU для 3 (трех) датчиков температуры DS18B20. То есть данный адаптер позволяет измерять температуру воздуха, почвы, воды и т.д. в одной, двух или трех точках и выдает полученные данные на master-устройство по запросу последнего.

Почему такое название? Поскольку здесь мы имеем три “головы” (DS18B20), один “хвост” (RS485), и одну “тушку” (сам адаптер), то сие устройство небезосновательно получило название “Горыныч“, или “TE-Gorynych“. Головы можно “отрубать”, то есть вы можете использовать один, два или три датчика.

Разработано оно в России и выпускается малыми партиями на полуострове Ямал, о чем, собственно и сказано на печатной плате адаптера. Хотя, справедливости ради, стоит отметить, что комплектующие используются не российские, а вполне себе китайские, о чем будет сказано ниже. Это не совсем “независимый” обзор, так как я виртуально знаком с автором проекта, и даже немного поучаствовал в совершенствовании его прошивки – по моей просьбе была добавлена новая функция. Но я постараюсь сделать обзор максимально беспристрастным. Все контакты и ссылки – как обычно в конце статьи.

В отличие от большинства китайских аналогов с неизвестной “одноразовой” прошивкой внутри, рассматриваемое устройство активно обсуждается в чате, дорабатывается, и его можно довольно легко перепрошить уже после покупки – понадобится только недорогой USB-адаптер и некоторое количество свободного времени. При должном подходе устройство можно использовать не только как адаптер для датчиков, но и как макетную плату для изучения китайского микроконтроллера CH32V003 и написания собственных прошивок.

Внешний вид и описание

Адаптер собран в вентилируемом корпусе промышленного изготовления 65 x 45 x 28 миллиметров без учета разъемов или 85 x 45 x 28 мм с разъемами. Корпус может быть закреплен на стандартной DIN-рейке либо винтами / саморезами через специально предусмотренные отверстия. Подобные корпуса – не редкость, я уже как-то писал обзор на подобный адаптер.

На мой взгляд, применение вентилируемого корпуса не всегда оправдано, так как в “боевых” условиях оно может (и по идее как раз и должно) быть вынесено за пределы “комфортной зоны”, например на улицу. И тогда его всё равно придется прятать в более – менее герметичном корпусе. Но… корпус этот весьма распространен и дешев, так что его применение вполне оправдано. Я же для себя напечатал бокс, в котором заодно разместился “разветвитель” RS485 с питанием.

На условно “верхней” грани расположен разъем-клеммник на 9 контактов для подключения от одного до трех датчиков DS18B20. На нижней – такой же разъем для подключения проводов шины передачи данных и подачи питания. Клеммники хорошего качества, витая пара держится надежно; а при необходимости и 0,75 мм2 легко входит.

Их “распиновка” нанесена на верхней крышке корпуса, но есть обозначения и на печатной плате:

-4

Характеристики устройства

Взято с официального сайта производителя

  • Питание данного устройства заявлено производителем в диапазоне от +9 до +24в, хотя оно вполне стабильно работает и при +5В от “компьютерного” USB-RS485 адаптера.
  • Подключение од одного до трех датчиков DS18B20 по трехпроводной или двухпроводной схеме подключения
  • Контроль состояния подключенных датчиков: как то обрыв кабеля, короткое замыкание, ошибка CRC, нехватка питания.
  • Возможность задания интервала опроса датчиков от 1 до 30 секунд. Цикл опроса датчиков не зависит от времени запроса данных мастером
  • Выдача данных о температуре в трех режимах:
    1) с округлением до целого (наименьшая точность)
    2)с одним знаком после запятой в виде целого числа (как во всех китайских адаптерах), для получения значения температуры необходимо разделить считанное число на 10
    3) в RAW-виде (максимальная точность), для получения значения температуры необходимо умножить полученное число на 625 и разделить на 10000: t = v * 625 /10000
  • Передача данных по шине RS485 с использованием протокола Modbus RTU
    - Скорость передачи данных 1200 / 2400 / 4800 / 9600 / 19200 / 28400 / 57600 / 115200 baud
    - 8 бит данных
    - Режимы чётности NONE / EVEN / ODD
    - Количество стоповых бит 0.5 / 1 / 1.5 / 2

По умолчанию используются параметры передачи: 9600, 8, None, 1, адрес на шине 0x01

Богатый внутренний мир

Перейдем к внутреннему устройству. Крышка адаптера довольно легко снимается без применения специнструмента, нужно только нажать сбоку на верхнюю половинку корпуса. Внутри мы видим небольшую плату, на которой расположен микроконтроллер, DC-DC импульсный преобразователь и RS485-приемопередатчик, не считая “рассыпухи”.

Разъемы и перемычки

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

-6
  • J1 – перемычка, отвечающая за подключение к линии связи терминатора 120 Ом с целью гашения стоячих волн. На коротких дистанциях лучше отключить
  • J2 и J3 – с их помощью можно подтянуть линии данных А и В к питанию через резисторы 1.2 кОм. Но обычно такие резисторы уже установлены на стороне мастера, так что их чаще всего тоже можно отключить
  • J7 служит для сброса микроконтроллера к заводским настройкам: для сброса необходимо переставить перемычку с контактов 4–3 гребёнки J7 на контакты 3-2 (красный и зелёный светодиоды загорятся одновременно), а затем вернуть перемычку в исходное положение на контакты 4 – 3.
  • J8 может быть использован для подключения программатора микроконтроллера, это может понадобиться при выходе новых версий прошивки. На обратной стороне платы есть обозначения: GND, SWD, VCC, RST.

Схема питания

Вход питания защищен от переполюсовки защитным диодом. В качестве внутреннего стабилизатора в данном экземпляре использован “готовый” импульсный DC-DC преобразователь HW-613. Во первых “импульсник” не греется в отличие от линейного стабилизатора (который рассеивает все избыточное напряжение на себе), а во вторых – это достаточно дешево. Хотя базовая плата предусматривает и другие варианты – можно поставить линейный стабилизатор с обвязкой.

Контроллер

“Сердцем”, а вернее “мозгами”, платы служит бюджетный микроконтроллер CH32V003F4P6: 32-х битный RV32EC микроконтроллер с 16КБ Flash памяти. Тактовая частота задана внешним кварцем 24 MHz. К контролеру, как и положено, подключены три линии 1WIRE, причем каждая из них защищена с помощью спаренных диодов Шоттки BAV99.

RS485

В качестве сигнального приемопередатчика RS485 применен китайский чип CS48520S:

-8

Схема вполне стандартная, разве что добавлены перемычки для подтяжки сигнальных линий к +5В и земле. Китайцы с такими вещами не заморачиваются, а иногда и TVS-диоды не ставят. Здесь с базовой защитой все в полном порядке.

-9

Имеется на плате и парочка светодиодов. Зелёный светодиод начинает равномерно мигать сразу после подачи питания, показывая, что устройство работает. Красный светодиод вспыхивает на короткое время если устройство получило команду со своим адресом. Как по мне – в практическом применении Горыныча это лишний расход электроэнергии (пусть и очень небольшой), особенно если адаптер где-то в коробке на пыльном чердаке. Но при настройке и подключении они очень даже полезны. Поэтому я попросил автора добавить служебный регистр, который управляет их состоянием.

Для интересующихся электроникой приведу полную схему рассматриваемого устройства:

-10

Регистры modbus

Вообще регистры и способы получения информации с адаптера очень хорошо описаны в документации автора, например здесь etrivia.ru/goods/TE-GORYNYCH. Как говориться, ни убавить, ни прибавить. Да и со временем в новых версиях прошивки могут появиться новые регистры. Но я всё-таки скопирую их список “для полноты картины”.

На Dzene нет места таблицам - исходный вариант на https://kotyara12.ru/iot/te_gorynych/
На Dzene нет места таблицам - исходный вариант на https://kotyara12.ru/iot/te_gorynych/
На Dzene нет места таблицам - исходный вариант на https://kotyara12.ru/iot/te_gorynych/
На Dzene нет места таблицам - исходный вариант на https://kotyara12.ru/iot/te_gorynych/
На Dzene нет места таблицам - исходный вариант на https://kotyara12.ru/iot/te_gorynych/
На Dzene нет места таблицам - исходный вариант на https://kotyara12.ru/iot/te_gorynych/

Про то, как читать регистры modbus, я думаю, не нужно рассказывать, я уже описывал этот процесс например здесь. Оставлю только скриншот обмена данными с помощью программы Modbus Poll

-14

Как обновить прошивку

Со временем в прошивку автором могут быть внесены изменения. Например вы сами можете стать их инициатором, написав в группу telegram @etrivia. И вам понадобиться перепрошить адаптер. В отличие от подобных китайских устройств вы таки сможете это сделать.

Для этого вам понадобится:

  • USB-программатор WCH-LinkE, например тут aliexpress.ru
  • IDE для программирования “MounRiver Studio“: mounriver.com/download
  • файл прошивки, который лежит в “закрепе” канала @etrivia
  • немного времени и терпения

Описание есть у автора продукта здесь. Но если кратко, то последовательность следующая:

1. Скачиваем студию и устанавливаем на ваш компьютер. В это время должны установиться драйвера и на программатор.

2. Подключаем программатор к адаптеру. Всего двумя проводками. А программатор – к компьютеру.

-15

Программатор должен определиться в системе и занять какой-либо COM-порт. Номер порта можно узнать, посмотрев в диспетчере устройств.

3. Запускаем WCH-LinkUtility. Найти её можно здесь ?\MounRiver_Studio\ExTool\SWDTool\WCH-LinkUtility.exe. Интерфейс, как китайцы любят – множество кнопочек и органов управления. Чем не Боинг?

-16
  • Вначале выбираем из списка микроконтроллер ch32v003
  • В поле Firmware указываем путь к распакованному файлу прошивки
  • Нажимаем кнопку на панели “Connect” или в меню TargetConnect WCH-Link
  • Для проверки можно запросить информацию о чипе через Query Chip Info
  • Если утилита успешно достучалась до МК, последовательно выбираем команды Erase chip -> Program -> Verify -> Reset
-17

У меня почему-то после первой прошивки адаптер как будто перестал отвечать, но после повторной попытки заработал как ни в чем не бывало. Бывает.

Выводы

Лично на мой взгляд, получился очень даже удобный продукт,  с набором защиты по всем направлениям и максимумом настроек. Недостаток по сравнению с китайскими конкурентами только один – сравнительно высокая цена. Но тут следует понимать, что у китайских аналогов более массовое производство, более дешевые компоненты и экономия на всем и вся, в том числе и на надежности. Ни о каких "защитах" там говорить не приходится...

Ссылка на адаптер: etrivia.ru/goods/TE-GORYNYCH
Канал автора: dzen.ru/etrivia
Группа telegram, где вы можете задать вопросы: @etrivia

Исходный вариант статьи: https://kotyara12.ru/iot/te_gorynych/