Добрый день, уважаемый читатель! Сегодня я хочу познакомить вас базовым ESP32 контроллером в корпусе на DIN-рейку от Rocket Controller. То есть это небольшой обзорчик.
Мне уже поднадоело самому разводить платы, травить, сверлить, паять, искать корпус. На этот раз решил попробовать готовое изделие – в корпусе и с встроенным блоком питания, причем за вполне демократичную цену.
Не буду тянуть кота за фаберже, вот он, красавец:
А заодно познакомлю вас и с “комплектным” расширителем портов на 8 реле через I2C шину.
Для чего всё это нужно?
Заказывал этот комплект я не “просто так”, а вполне для конкретной цели – собрать контроллер для “гаража с зачатками разума”. Для реализации моих хотелок мне понадобятся:
- Внешняя антенна, так как уровень приема сигнала от WiFi роутера откровенно слабый, а ставить репитер желания пока нет
- Шина I2C для подключения датчиков микроклимата и освещенности
- Шина RS485 для подключения тех же датчиков, но “по длинному проводу”
- Пять цифровых входов для подключения датчиков дверей, ворот, движения (PIR) и датчика дыма.
- Два реле для управления вентиляцией и подогревом погреба. Мощность нагрузки невелика (тепловентилятор 250 ВА, вентилятор 20 ВА), поэтому китайские реле справятся с запасом.
- Ещё одно реле будет потенциально задействовано для управления вентиляцией в самом гараже. То есть три из четырех реле на основной плате я уже “занял”. Поэтому для реализации всех идей потребуется дополнительная плата с “внешними реле”
- Четыре реле на дополнительной плате для управления освещением – во дворе, в гараже, перед гаражом. Остальные реле пока остаются “про запас”, например пригодятся для подключения новогодних гирлянд.
Конечно, все хотелки реализовать без доработок не выйдет, потребуется спаять небольшую платку для проводных сенсоров и приколхозить переходник RS485 <-> TTL, но это уже меньшие проблемы.
Ссылка на магазин в конце статьи, всё таки это не реклама, а мини-обзор, призванный помочь вам определиться с выбором.
Основной контроллер ESP32R4 v3
Производитель (а следовательно и продавец) предлагает нам несколько вариантов контроллера:
- С питанием 7~36в постоянного тока или от сети 230В переменного тока. Поскольку у меня в гараже уже установлен промышленный резервный источник питания от ОПС на 13,5 В, я заказывал первую версию. Однако во многих случаях вариант со встроенным блоком питания на 230В будет удобнее.
- На базе ESP32-WROOM или ESP32-WROWER. Я ранее уже писал, чем они отличаются, но для простоты понимания немного повторюсь: более дешевая версия на WROOM имеет на борту 4Мб Flash и 520Kб RAM; а более дорогая версия на модуле WROWER имеет уже 16Мб Flash и дополнительные 8Мб SPIRAM. Я взял более дешевый модуль, так как для моего применения и этого будет вполне достаточно.
- С печатной антенной или с внешней. Повторюсь, что мне требуется модуль с внешней антенной из-за большого расстояния до роутера и слабого уровня сигнала.
- С защитным корпусом или без корпуса. Корпус – это просто чехол для монтажа на стену или стандартную DIN-рейку. Но все контакты и кнопки “наружу”, то есть для установки на улице точно не подойдет. В принципе, можно все это хозяйство смонтировать в пластиковый коммутационный шкаф, возможно я так и поступлю. Но тогда кнопки и светодиоды уже будут недоступны.
Какая-либо документация в комплекте с блоками отсутствует, все поясняющие надписи нанесены прямо на плате. Предполагается, что вы хорошо знакомы с контроллерами ESP32 и знаете “что почём”.
На контроллере использованы приличные винтовые терминаторы, гораздо лучше, чем обычно ставят на дешевых arduino-вских платах с реле. Провод держат гораздо лучше.
Верхняя часть корпуса закрыта от пыли достаточно хорошо, только в зажимах со временем её будет предостаточно. А вот нижняя часть открыта всем ветрам: здесь расположены два разъема формата RJ-12 (RS/SPI и I2C), четыре “пользовательские” кнопки со светодиодами, светодиод питания, светодиод индикации статуса и кнопка сброса.
Вскрываем корпус. На удивление половинки корпуса скреплены не саморезами, как обычно, а полноценными винтами, которые вкручены в запрессованные латунные гильзы. А это значит разбирать и собирать корпус вы сможете очень много раз.
Внутри обнаруживаем:
- преобразователь питания (стабилизатор) 5В на LM2596 и стабилизатор 3,3В для питания микроконтроллера
- четыре пятивольтовых реле SONGLE со схемами управления
- собственно модуль ESP32-WROOM-32U. Это несколько устаревшая модель, уже снятая с производства. Тем не менее их еще достаточно на складах и в продаже
- зуммер, откровенно дешманский и очень тихий (видимо впаяли на 5 или 12в в трехвольтовую плату)
- светодиод наличия питания
- светодиод статуса
- четыре “пользовательские” кнопки со светодиодами
- кнопка сброса и кнопка программирования
- разъем RJ-12 на 6 контактов – I2C, на него ещё выведен контакт IO12 для обработки прерываний – очень полезная вещь для расширителей GPIO. Подтяжка линий SDA и SCL к питанию резисторами отсутствует в принципе, вы должны сделать это самостоятельно. Почему так сделано – не совсем ясно, видимо резисторы в поднебесной дорогие и дефицитные, не иначе.
- разъем RJ-12 на 6 контактов – может быть использован либо как порт для RS232 / RS485 (при наличии дополнительного адаптера), либо как SPI шина
- штыревой разъем I2C 4 pin male 2.53 мм
- разъем для программирования 5 pin male 2.53 мм
- разъем для подключения периферии 2 х 10 pin male 2.53 мм
- разъем для подключения приемника 433 MHz (приемник в комплект не входит) 4 pin female 2.53 мм
- два внутренних миниатюрных разъема ( HEADER ) для преобразователя RS232/RS485-интерфейса 4 pin female 1,27 мм + 6 pin female 1,27 мм.
По умолчанию на один из “внешних” разъемов RJ-12 (левый, если смотреть с верхней стороны платы) выведен интерфейс SPI. Если вам необходимо переключить этот разъем на интерфейс RS232/RS485, необходимо перерезать и запаять на другую сторону печатные перемычки на плате.
И установить в соответствующие разъемы преобразователь интерфейса RS232 <-> TTL или RS485 <-> TTL.
К сожалению, в продаже сейчас имеется только преобразователь для RS232. Что ж, RS485 придется колхозить самостоятельно, благо адаптер легко помещается внутри корпуса.
UPD: Написал продавцу по поводу адаптера RS485, он ответил, что он уже в производстве, старт продаж ожидается через 2-3 недели. Что ж, это не срок, подождем
UPD2: Давно прошёл второй месяц, а обещанного адаптера нет и в помине. Опять обман!
С помощью таких же перемычек можно отключить кнопки, светодиод и зуммер.
Вся информация о разъемах сведена на оборотной стороне платы:
С обратной стороны платы считывать данные не очень удобно, поэтому я свел используемые выводы в таблицу:
Выводы GPIO14, GPIO15 не задействованы ни в каких “внутренних” интерфейсах, и вы можете использовать их в своих проектах, но следует учитывать, что GPIO15 – это “Strapping pin” и он по умолчанию “подтянут” к 3,3В.
Этого мало? Можно использовать и другие выводы, например если вы не планируете использовать приемник 433МГц, то вывод можно спокойно использовать. Точно так же можно использовать выводы SPI. Или “отрезать” кнопки, светодиод и зуммер – для этого предусмотрены печатные перемычки на плате.
Светодиоды маленькие, умеренной яркости. Питание и статус обозначены одним цветом – оранжевым. Лучше было бы, если бы цвета всё-таки отличались.
Особенности модуля
Плата отнюдь не идеальная, после первичного осмотра было выявлено достаточно много косяков и недостатков (по электрической схеме). Большинство из них можно исправить колхозным монтажом. Итак, необходимо учитывать следующие особенности:
- По умолчанию ESP32 прошита прошивкой Tasmota. То есть вы можете даже не программировать модуль, а сразу настроить её и начать пользоваться. Но можно перепрошить другой прошивкой про своему усмотрению.
- На плате нет преобразователя USB <-> TTL. Поэтому для программирования вам понадобится преобразователь интерфейса. Любой с поддержкой 3,3В на линиях RX и TX (например на адаптере CH340G с переключателем изменяется только питание, поэтому он не подходит). Для программирования используется порт UART0, который выведен на разъем программирования.
- Для перевода контроллера в режим программирования через UART0 нажмите одновременно кнопки RESET и PROG, затем отпустите RESET и только после этого PROG. Состояние кнопки PROG считывается только в момент отпускания кнопки RESET, поэтому на этот момент времени кнопка PROG должна быть нажата (для перехода в режим программирования). Не обязательно делать это непосредственно перед началом прошивки, вы можете сделать это загодя, и только после этого нажимать кнопку upload в Arduino IDE или PlatformIO.
- Если вы приобрели модель с внешней антенной, то включать устройство без подключенной антенны довольно опасно – можно спалить радиочастотный тракт ESP32, а выпаивать его из платы удовольствия мало.
- Все “аналоговые” GPIO (32-39), увы, заняты. Либо реле, либо кнопками. Не очень хорошо, конечно, но какой-то выход есть. С реле ничего не поделать, а вот кнопки при необходимости, можно и отключить. И переназначить на свободный GPIO с помощью проволочной перемычки.
- Если вам необходимо работать с RS485 шиной, то вам дополнительно потребуется преобразователь интерфейса TTL <->RS485. Напрямую подключать выводы RS485 к линии нельзя! Преобразователь подключается к двум внутренним разъемам female 1,27 мм (можно аккуратно подпаяться прямо к контактным перемычкам). RS232 и RS485 работает через порт UART2. Чтобы переключить использование RJ-12 на работу с RS485, необходимо изменить положение перемычек на плате.
- Если вы не планируете использовать кнопки, можно буквально “отрезать” их от схемы, для этого предусмотрены печатные перемычки. Точно так же можно “отрезать” встроенный светодиод и зуммер, если они не нужны.
- Почему-то “забыли” вывести GPIO27 ( RF433 ) на общий разъем периферии. Если вы не намерены использовать приемник, удобнее было бы подключиться к нему с общего разъема.
- Использовать разъемы I2C RJ12-6P6C (широкий “телефонный”) – на мой взгляд очень удачная идея, но только если у вас имеются клещи для опрессовки. Подключение и отключение периферии происходит за секунды, контакт достаточно надежен. Но если клещей и разъемов нет – грусть-печаль…
- Почему-то на разъем шины I2C RJ-12 не выведено питание. То есть вообще никак. Вот это для меня был небольшой шок. У разъема остались неразведенными 2 контакта, но ни +5, ни +3,3В разработчик не посчитал нужным подключить. Что, сенсоры питать не нужно, получается? Решить можно путем установки проволочных перемычек.
- Не выполнена подтяжка линий SDA и SCL к питанию. Придется ставить резисторы на другой стороне или “колхозить” поверх платы. Ну вот вообще не понимаю, почему нельзя было поставить подтяжку! Видимо резисторы сильно подорожали.
- На “боковой” разъем I2C питание подведено, но +5В вместо 3,3В. Вопрос к разработчикам (на который нет ответа) – ЗАЧЕМ? Конечно, многие сенсоры имеют встроенный стабилизатор, но резисторы подтяжки на стороне сенсора всё равно останутся подключенными к +5В, что может плачевно кончится для микроконтроллера.
- На разъем RJ-12 SPI выведено питание +3,3В, что вполне логично и правильно.
- На разъем шины I2C RJ-12 вывели контакт GPIO12 для обработки прерываний с сенсоров или расширителей портов. Это бывает нужно и удобно. Но, блин!, почему именно GPIO12? Это Strapping Pin, который управляет питанием Flash-памяти. А на MCP23017, например, выводы прерывания по умолчанию подтянуты к питанию, из-за этого плата не запускается с расширителем портов. Приходится перерезать проводник и колхозить на другой.
В ближайшее время попробую “по своему” его запрограммировать, по результатам, возможно, напишу ещё одну статью.
А теперь давайте распакуем вторую коробку – с расширителем портов для шины I2C
Расширитель портов для шины I2C на 8 реле
Первое, что я увидел, вскрыв коробку с расширителем портов – это торчащий из варварски проломанной (буквально, судя по всему кусачками) боковины корпуса шлейф.
Что это было!???
Понятно, что это тот самый I2C… Но при аккуратно сделанных остальных выводах так откровенно наколхозить… Мдя, не ожидал, не ожидал… Что это за безобразие?????
Внутри обнаруживаем такой-же стабилизатор питания, восемь тех же пятивольтовых реле SONGLE, микросхему расширителя портов и несколько групп перемычек. Про перемычки стоит упомянуть отдельно:
- Первая перемычка (слева-направо) управляет питанием блока
- Вторая большая группа (в середине) позволяет выбрать адрес расширителя портов на шине I2C
- Третья группа позволяет включить или отключить подтяжку линий SDA и SDC к питанию с помощью установленных резисторов.
Реле установлены самые обычные – пятивольтовые SONGLE. Большой ток пускать через них стрёмно, но для лампочек и резистивной нагрузки до 1кВт вполне сгодятся (бойлер на 1,5кВт проработал через такое много лет, пока бойлер не убрали совсем).
Винтовые терминаторы тоже порадовали – они заметно качественные дешевых китайских синих зажимов, которые обычно распаяны на модулях реле для Arduino. Соседние блоки выделены разным цветом, что несомненно удобнее для монтажа и ремонта.
К плате подключены две линейки светодиодов, которые призваны отображать включение реле. Светодиоды прикреплены к верней половинке корпуса.
“Сердцем” блока является самый обычный расширитель портов 8574T, хотя и не знакомого мне производителя. Не самая крутая микросхема, но для меня очень даже замечательно – проблем с прошивкой у меня не будет, драйвер для неё и ESP-IDF я написал уже довольно давно.
Разъемы. С правой стороны расположены 4 разъема.
Два “мелких” ведут к линейкам светодиодов на верхней половинке корпуса.
Два покрупнее – это и есть разъемы для шины I2C. Очень даже неплохо, что их два – это позволит включать устройства в шину цепочкой, параллельно друг другу. И перемычки, отключающие подтягивающие резисторы, очень даже пригодятся. Но вот если бы вместо XH2.54 были бы RJ-12 или RJ11, как на главном модуле, было бы гораздо удобнее подключать.
Моя оценка расширителя портов
На мой взгляд получился очень даже неплохой модуль расширителя сразу с 8 реле. Использовать его можно не только с указанным выше контроллером, а вообще с любым микроконтроллером, который поддерживает работу с шиной I2C. Немного подпортило впечатление проломанный сбоку корпус (выкусили часть решетки вентиляции), провод можно было пропустить и по другому, но не критично. Для себя сделал вывод, что буду заказывать такие модули, когда требуется управление многочисленными нагрузками, например в проекте умной теплицы.
UPD 2022-03-01: Опубликована статья, как работать с этой платой: Расширитель GPIO PCF8574
Мои пожелания к данному набору
Конечно же, вряд ли производитель (RobotDyn) когда-либо увидит эту статью, но я все-таки включу режим зануды…
<ЗАНУДА>
- Очень хочется увидеть в продаже не только платку для RS232, но и для RS485. Что-то в последнее время я активнее использую эту технологию.
- Хотелось бы видеть аналогичный блок расширения портов, но не “на выход”, а “на вход”. Можно на аналогичной PCF8574, а ещё лучше – на 16 канальной MCP23017. Вот тут и прерывание бы пригодилось. И вообще, ассортимент расширителей можно существенно расширить (каламбур-с)
- Если нет возможности запустить в производство новый ассортимент плат, хотелось бы иметь возможность купить хотя бы пустой корпус, дабы творить самому.
- На RJ-12 для RS485 нужно вывести не только 3.3 В, но и 12В (то есть по сути входное напряжение) – для питания удаленных датчиков и сенсоров.
- Добавить разъем для подключения DS18B20 / DHT22 – то есть прямой вывод с отключаемой подтяжкой 3,3В. Это несложно, но поможет очень многим.
- Зуммер могли бы поставить и получше, да и на 3,3В.
</ЗАНУДА>
Ссылки
Как и обещал, привожу ссылку на товар. Заказывал комплект здесь: https://aliexpress.ru/item/1005003153036762.html. Шел он довольно долго, но это претензия не к продавцу, а к нашей таможне, так как там посылка застряла довольно надолго, ну и к службам доставки. Упаковка достаточно качественная, блоки проложены вспененным полиэтиленом, при доставке ничего не помялось и не повредилось.
На этом пока всё, до встречи на сайте и на dzen-канале!
💠 Полный архив статей вы найдете здесь
Пожалуйста, оцените статью: