Перейти к содержимому

Доброго здравия, уважаемые читатели!

Китайская компания Waveshare в последнее время совсем распоясалась и завалила интернет-площадки довольно интересными решениями (иногда не очень) на базе SoC ESP32. Представляю вам обзор довольно интересного модуля на DIN-рейку Waveshare ESP32-S3-RS485-CAN. Данное устройство представляет собой готовое к монтажу на DIN-рейку решение для создания узлов сбора данных с сенсоров RS485, шлюзов и прочего подобного оборудования. А также на его основе можно создавать модульные решения для “умного дома”, постепенно наращивая функционал и устанавливая датчики и исполнительные устройства там, где это необходимо.

Одно важное уточнение: приложение (прошивку, скетч) для этого модуля вы должны будете написать сами – точно так, как вам это нужно, а не сделал кто-то другой. Например можно воспользоваться статьей [Arduino ESP32 шаг за шагом]. Ну а в этой небольшой статье рассмотрим только “железную” начинку и схему.

Реальное фото

Например у меня сейчас он работает в качестве личной метеостанции – собирает данные с различных Modbus датчиков и отправляет их на локальный MQTT-сервер (для остальной автоматики), на “Народный мониторинг” и т.д. Но это временно, потом я найду ему другое, более полезное применение.

В продаже можно найти две версии – со встроенной антенной и с разъемом для внешней антенны (с индексом -U на конце). Встроенная антенна, несмотря на опасения, очень даже не плоха – работает уверенно.

Изображение взято с сайта производителя


Основные технические характеристики

Модуль создан основе SoC ESP32-S3R8 с 32-разрядным двухъядерным процессором Xtensa LX7, способным работать на частоте 240 МГц.  По умолчанию в вашем распоряжении имеется 16 МБ Flash-памяти и 8 МБ PSRAM (дополнительной оперативной памяти) на интерфейсе OPI. Этого хватит для самых требовательных приложений.

На борту имеются следующие интерфейсы:

  • изолированный интерфейс RS485 для подключения к различным промышленным модулям или датчикам RS485 Modbus
  • изолированный CAN-интерфейс обеспечивает легкий доступ к различным CAN-устройствам
  • порт USB Type-C для подключения питания 5В, загрузки прошивки и отладки
  • встроенный DC-DC блок питания с клеммами с поддержкой широкого диапазона входного напряжения 7–36 В
  • дополнительный разъем SH1, на который выведены GPIO1, GPIO2 и 3.3В – его можно использовать для управления нагрузкой и подключения других датчиков, например для шины I2C.

Изображение взято с сайта производителя

Назначение клемм и разъемов, выведенных на корпус

На плате также имеется чип часов реального времени (RTC) для корректной работы по расписаниям в случае отсутствия подключения к интернету. Кроме того есть еще один встроенный внутри корпуса штыревой разъем для подключения пользовательских внешних устройств, если это будет необходимо.

Всё это упаковано в защитный корпус, крепящийся на стандартную DIN-рейку, его размеры указаны ниже. По высоте он нормально входит в стандартный бокс, а вот по ширине он занимает 1½ модуля, поэтому придется “поколдовать” закрывая оставшееся окно.

Размеры корпуса

Потребляемая мощность от источника питания 12В в при подключенном WiFi около 0,5 ~ 1 Вт, но все, конечно, зависит от сценария применения. В момент опроса шины потребляемый ток от источника питания:


Плата

Вскрывается корпус довольно легко, достаточно поддеть отверткой две защелки по бокам корпуса. И мы получаем доступ к плате и всему, что на ней находится.

  1. ESP32-S3 – микроконтроллер (точнее SoC) с рабочей частотой до 240 МГц, поддержкой Wi-Fi и BLE на частоте 2,4 ГГц.
  2. Импульсный преобразователь питания DC-DC, обеспечивает стабилизированное выходное напряжение 5В с током до 2 А для неизолированных цепей.
  3. Гребенка для подключения к другим модулям или периферии. На нее выведены некоторые контакты SoC.
  4. Винтовые клеммы питания, сюда можно подавать постоянное напряжение от 7 до 36 В.
  5. Порт USB Type-C для питания модуля 5 В, загрузки прошивки и отладки по USB JTAG, это не USB-UART преобразователь
  6. Разъем для подключения перезаряжаемой батареи часов реального времени RTC (SH1.0), и это должна быть именно перезаряжаемая батарейка, а не обычная литиевая.
  7. Встроенная керамическая антенна для версии ESP32-S3-RS485-CAN; переключение встроенной антенны на разъем для внешней можно выполнить путем перепайки резистора, об этом подробнее ниже.
  8. Разъем IPEX1 для подключения внешней антенны, для версии ESP32-S3-RS485-CAN-U он подключен по умолчанию.
  9. Микросхема flash-памяти объемом 16 МБ.
  10. Цифровой изолятор сигналов π163E31 – защищает микроконтроллер от помех и одновременно позволяет согласовать логические уровни сигналов.
  11. Микросхема приемопередатчика CAN-шины
  12. Светодиодные индикаторы: 
    • PWR – индикатор питания
    • RS485 – загорается зеленым, когда порт RS485 отправляет данные; загорается синим, когда порт RS485 принимает данные
    • CAN: мигает во время передачи данных
  13. Кнопка загрузки прошивки ESP32
  14. Кнопка сброса ESP32
  15. DC/DC изолятор питания – преобразователь питания 5В → 5В, но с гальванической развязкой.
  16. Перемычка для подключения согласующего резистора шины RS485.
  17. Перемычка для подключения согласующего резистора шины CAN.
  18. Клеммная колодка для шин RS485 и CAN.
  19. Микросхема часов RTC PCF85063.
  20. Импульсный DC-DC преобразователь – стабилизатор входного напряжения
  21. Низковольтный линейный стабилизатор напряжения ME6217C33M5G на 3,3В для изолированной части схемы, выходной ток до 800 мА (макс.)
  22. Микросхема приемопередатчика RS485
  23. Защитные TVS-диоды – эффективно подавляют импульсные перенапряжения и переходные скачки напряжения в цепи.

 


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

Схема питания достаточно сложная:

  • На первом этапе импульсный DC-DC преобразователь на микросхеме XL1509-ADJE1 понижает входное напряжение до 5В (5V на схеме) с током до 2А (макс.). Непосредственно не используется.
  • Затем напряжение 5В проходит через еще один DC-DC преобразователь B0505LS-1W (K-CUT) с гальванической развязкой и током до 200 мА. Таким образом мы получаем “изолированные” 5В (Relay-5V и SGND на схеме). “Изолированное” напряжение используется для питания приемопередатчиков шин RS485 и CAN.
  • Затем неизолированное напряжение 5В понижается до 3,3В еще одним DC преобразователем на микросхеме MP1605GTF-Z (3V3 на схеме) с током до 2А (макс.) – используется для питания микроконтроллера, часов и прочего оборудования.
  • Изолированное напряжение 5В, в свою очередь, понижается LDO-стабилизатором ME6217C33M5G и мы получаем 3,3В с током до 800 мА (Relay-3V3 на схеме) – используется для питания приемопередатчиков шин RS485 и CAN.

Входные цепи дополнительно защищены диодами от перенапряжения и переполюсовки.

Основной стабилизатор

К точке 5V (неизолированные 5В) через защитный диод подключено напряжение 5В с USB-разъема. Таким образом, можно вполне безопасно одновременно подключать и внешний источник питания и USB-разъем от компьютера, но схема компьютера будет гальванически связана со внешним источником питания (по общей “земле”).

Входной преобразователь и изолятор питания

Неизолированный стабилизатор 3,3В

Изолированный стабилизатор 3,3В

 


SoC

Модуль построен на базе чипа ESP32-S3R8, то есть с интегрированной 8 МБ PSRAM в одном и том же корпусе микросхемы. Здесь использован именно чип, а не модуль, поэтому необходимая обвязка (кварц, FLASH-память и т.д.) распаяны где-то рядом.

 

Я проверил чип утилитой Flash Download Tool, результаты соответствуют заявленным характеристикам:

start detect chip...please wait
chip sync ...
Chip is ESP32-S3 (QFN56) (revision v0.2)
Features: Wi-Fi, BT 5 (LE), Dual Core + LP Core, 240MHz, Embedded PSRAM 8MB (AP_3v3)
Crystal is 40MHz
MAC: 288485b7451d
Manufacturer: 20
Device: 4018
Status value: 0x200200
Detected flash size: 16MB

 


Антенна

На плате установлена керамическая SMD-антенна C3 на частоту 2,4 ГГц, и одновременно с ней рядом установлен разъем IPEX для подключения внешней антенны. Для переключения режима работы требуется перепаять резистор 0 Ом, обведенный зеленым. Резистор очень маленький, без микроскопа перепаять его сложно, а и с микроскопом тоже, поэтому проще купить готовый вариант: в модификации ESP32-S3-RS485-CAN этот резистор припаян как на фото, для модификации ESP32-S3-RS485-CAN-U – в другом положении.

 

Стоит отметить, что именно в данном изделии установлена достаточно качественная антенна (в отличие от дешевых плат типа ESP32-C3-MINI), которая обеспечивает сигнал не хуже внешних антенн “от роутера”. Например сигнал от роутера на расстоянии примерно 45 метров, данным модулем ESP оценен на уровне примерно -70 dBi, а на другом контроллере на точно таком-же удалении с внешней антенной – 72 dBi. Лично я не ожидал такого успеха после неудач с дешевыми китайскими платками.

 


GPIO

Выводы ESP, которые задействованы в схеме либо выведены на разъемы:

Изображение из официальной документации

Темно-зеленым цветом выделены GPIO, которые уже где-то используются. Светло-зеленые вы можете использовать по своему усмотрению. Питание на гребенку выведено не изолированное. Но на рисунке выше указаны не все GPIO.

Таблица выводов из официальной документации

Выводы ESP и микросхема памяти

 


Аппаратные контроллеры I2C и UART

Если вы решите подключать к рассматриваемой плате что-то по шине I2C, то вам следует учитывать, что один из двух аппаратных контроллеров I2C уже задействован – он занят RTC на выводах GPIO38 – RTC_SCL, GPIO39 – RTC_SDA (см. следующий абзац). Но на ESP32-S3 имеется ещё один I2C, и его вы можете использовать на любых свободных выводах для своих целей.

С UART немного иная картина. ESP32-S3 имеет три аппаратных контроллера UART. UART0 частно занят портом прошивки и отладки, но на данной плате он не используется. Допустим вы решили собрать шлюз RS485 ↔ CAN и вам нужны оба интерфейса одновременно. И нужен еще один, например чтобы подключить какое-то устройство. Тогда вы можете, используя конфигуратор sdkconfig, перенастроить вывод консоли исключительно на USB JTAG и использовать третий UART контроллер по своему усмотрению. Ну а если вы используете только один интерфейс (RS485 или CAN), то у вас и вовсе в запасе целых два UART.


Часы реального времени

Для обеспечения бесперебойной работы по расписанию, например в автономном режиме или в режиме сна, модуль оснащен микросхемой часов реального времени PCF85063AT. Он подключен к SoC по шине I2C 0 и использует выводы GPIO38 – RTC_SCL, GPIO39 – RTC_SDA, GPIO40– RTC_INT (выход прерывания от часов). Прерывание может быть использовано для того, чтобы “будить” процессор по расписанию, когда тот находится в режиме сна.

Микросхема и кварцевый резонатор расположены на нижней стороне платы, разъем для подключения батареи резервного питания – на верхней.

 

Важно! Вставлять в разъем обычную CR2032 опасно! Плата будет её заряжать, что может привести к перегреву и возгоранию.

Для корректной работы в этом устройстве нужна перезаряжаемая батарейка 3В, например LIR2032, в продаже они есть – но почти все без провода и разъема. Можно купить вариант с выводами на плату и самому припаять нужный разъем.

Другой вариант: можно просто выпаять диод D7, через который, собственно и идет зарядка. Расположен он, по всей видимости, на верхней стороне платы, около разъема (но нужно проверить! плата уже стоит и работает, я уже этого сделать не могу). В этом случае вы сможете подключить обычную CR2032 для ноутбуков (с проводом и разъемом), в продаже их много и разных.


Изоляция “внешних” шин RS485 и CAN

Отдельный изолированный источник питания для внешних интерфейсов – это еще половина проблемы. Нужно еще “развязать” и цифровые сигналы. Этим занимается микросхемка π163E31.

На плате она выглядит так:

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

 


Шина RS485

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

На этой части схемы показаны не все элементы

Сторона шины RS485 имеет хорошо продуманную двухступенчатую систему защиты, в которой учтен стандарт шины RS-485, у которой диапазон синфазного напряжения на линии может быть в пределах -7…+12 В.

Во-первых на входе установлен газовый разрядник B32-150-LF на 150 В — для отвода основной энергии мощных дифференциальных («линия-линия»), но относительно «медленных» импульсов, например грозовых. Но в данном включении он никак не защитит от синфазных импульсов («линия-земля»). Газовый разрядник  — это относительно «медленный» прибор, ему нужно время, чтобы ионизировался газ и он перейдет в проводящее состояние. За это время импульс может успеть дойти до микросхемы и сжечь её, но за это отвечает вторая линия защиты.

Второй эшелон защиты – TVS-диоды SMF6.5СА (дифференциальная защита «линия-линия») и SMF12СА (защита «линия-земля»). TVS-диоды это по сути очень мощные стабилитроны (в данном случае симметричные), они обеспечивают необходимое быстродействие и «подрезают» остаточное напряжение до безопасного для трансивера уровня. Это достаточно мощная и энергоемкая защита, но не самая “быстрая”. 

Параллельно им включена SM712 — это специально разработанный асимметричный быстродействующий TVS-массив: внутри у него два диода на 12 В и два на 7 В. Это позволяет ему идеально попадать в рабочий диапазон напряжений RS-485 и не мешать связи, но при этом быстро и точно «срезать» опасные выбросы (ESD, короткие импульсы), не давая им дойти до микросхемы трансивера.

Между разрядником и TVS-защитой включены PPTP BSMD1206-050 – самовоcстанавливающиеся предохранители, которые призваны защитить сами TVS-диоды от длинных импульсов или постоянного напряжения, если таковое случайно попадет на линии связи.

На плате присутствует необязательный терминатор (подключаемый перемычкой) – оконечный резистор 120 Ом, который вы можете подключить, если это крайнее устройство на линии.

 

Интерфейс RS485 (UART) имеет теоретическую скорость передачи до 5 Мбит/с. Однако из-за добавления схем изоляции, преобразования уровней и защиты на плате фактическая рабочая скорость будет несколько ниже. Производитель рекомендует устанавливать значение не выше 115200 бит/с. Точное значение скорости передачи следует проверять в зависимости от реальной среды связи и приложения.

 


Шина CAN

Шина CAN 2,0 (TWAI) реализована на микросхеме TJA1051T/3/1J – это быстродействующий современный трансивер для шины сети контроллеров производства NXP, совместимый с 3.3 В и 5 В логикой. Версия /3 означает, что VIO (вывод 5) питается от 3.3 В, а VCC (вывод 3) — от 5 В. Это позволяет напрямую подключать его к ESP32 (3.3 В) без согласования логических уровней. Но здесь, также, как и в случае с RS485, здесь и питание и линии данных изолированы от основной схемы микроконтроллера. 

Сторона шины защищена специализированной TVS сборкой на 24В – SM24CANB-02HTG.

На плате присутствует необязательный терминатор (подключаемый перемычкой) – оконечный резистор 120 Ом, который вы можете подключить, если это крайнее устройство на линии связи.

 

Интерфейс CAN (TWAI) имеет теоретическую скорость передачи до 1 Мбит/с.


Настройка платы в IDE

По сути это обычная ESP32-S3, поэтому программировать ее можно в любой удобной вам IDE и с любым фреймворком: Arduino, PlatformIO или ESP-IDF. На сайте производителя есть специальная статья, посвященная этому (на английском).

Я за полчаса запустил на этой плате из старых проектов – “метеостанция”, собранный в PlatformIO и для платформы ESP-IDF. Всё заработало “с полпинка” – все заработало сразу и без каких либо проблем. Мне потребовалось только изменить разметку флеш памяти, дабы иметь возможность использовать весь доступный размер.

Для работы вам понадобится USB-кабель, компьютер и установленная IDE. Сайт разработчика рекомендует также иметь RS485↔USB и CAN↔USB адаптеры для отладки передачи данных, но можно просто воспользоваться каким-то датчиком.

Настройка платы в Arduino IDE

Если вы планируете работать с данным модулем в Arduino IDE, то в списке доступных плат этот модуль вы вряд ли найдете. Рекомендуется выбрать универсальный профиль ESP32S3 Dev Module и вручную установить параметры платы:

Разумеется, COM порт нужно выбрать тот, к которому подключена ваша плата

Руководство по настройке Arduino IDE для работы с микроконтроллерами семейства ESP32 вы найдете по ссылке.

Демонстрационных примеров “не густо”, но для удобства освоения модуля компания Waveshare разработала несколько простых библиотек, которые вы можете найти в архиве с демо-скетчами:

  • WS_Information – информация о плате
  • WS_GPIO – выводы, жестко привязанные к интерфейсам платы
  • WS_Struct – общие типы данных
  • WS_RTC – утилиты для работы с часами
  • WS_CAN – простейшая библиотечка для работы с CAN поверх UART
  • WS_RS485 – простейшая библиотечка для работы с RS485 поверх UART
  • WS_PCF85063 – работа с микросхемой часов
  • WS_WIFI – WEB-интерфейс для работы с платой

Так же в архиве можно найти несколько популярных библиотек.

 

Настройка платы в ESP-IDF

Демонстрационных примеров для ESP-IDF нет. В Waveshare, видимо, посчитали, что они никому не нужны.

В ESP IDE необходимо выбрать TARGET = esp32s3 и соответствующий порт, все остальные параметры платы настраиваются через систему конфигурации проекта sdkconfig.


Источники информации

Страница описания продукта на сайте производителя

Справочные материалы от производителя (Wiki)

 

 

Оцените по шкале от 1 до 5 - насколько эта статья была Вам полезна?
[ 0 из 5, всего 0 оценок ]

-= Каталог статей (список по разделам) =-   -= Архив статей (плитки, все подряд) =-

Небольшой анонимный опрос: какие статьи вы предпочитаете?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

14  −    =  9