В предыдущей статье я дал общее описание контроллера Lavritech V7.1 Lite и остановился на том, что для разбора схемотехники, распиновки и организации «материнской» платы потребуется отдельная статья. Сегодня мы разберём «матрицу» соединений и интерфейсов Lavritech V7.1 Lite и составим представление об этом, без преувеличения, чуде инженерной мысли.
Для тех, кто не читал первую статью, или не совсем понял о чём там идёт речь, напомню, что Lavritech V7.1 Lite является воплощением очень интересной и перспективной концепции «модульных» контроллеров, когда функционал конкретного контроллера набирается из стандартных модулей и блоков, почти как в конструкторе Lego.
Разумеется, чтобы такое стало возможным, нужно было создать и проработать очень нетривиальную концепцию интерфейсов и соединений, с которой я и приглашаю вас познакомиться.
Основные блоки (регионы)
Для начала разберём назначение и расположение основных блоков (регионов) материнской платы микроконтроллера. Так сказать, познакомимся с основными действующими лицами. А затем будем постепенно углубляться в описание и разбирать назначение самих разъёмов и интерфейсов.
На иллюстрации ниже обозначены основные функциональные блоки Lavritech V7.1 Lite и их расположение на плате.
Регион 1. Главный микроконтроллер (место установки рефренсной платы ESP32).
Регион 2. Разъём и колодка питания, а также место для установки опционального модуля питания.
Регион 3. Два 12-pin разъёма Wirenboard и две 4-pin колодки для них, а также 10-pin разъём EUHP для установки внутренних модулей.
Регион 4. Две многофункциональные 4-pin колодки, 12-pin SPI разъём Wirenboard+ и контакты для установки Ethernet модуля на W5500.
Регион 5. Внешний 10-pin разъём для подключения дополнительных блоков на DIN-рейку по стандарту Wirenboard.
Регион 6. Кнопки USER и RESET, дополнительная кнопка с фиксацией и контакты для подключения внешних кнопок.
Регион 7. Разъём для подключения LoRa антенны (и с обратной стороны платы сам модуль LoRa).
Теперь перейдём к более подробному описанию внутреннего устройства, назначения и способов применения всех представленных функциональных блоков Lavritech V7.1 Lite.
(«О сколько нам открытий чудных...»)
Регион 1. Главный микроконтроллер
Тут всё довольно просто — производитель уже обо всём подумал за нас, развёл все соединения, нам остаётся только вставить рефренсный модуль ESP32 (ESP32-WROOM-32) в разъём и залить необходимое программное обеспечение (свою или общедоступную прошивку).
В данном случае применён так называемый «Socket 38pin», он поддерживает подключение различных рефренсных (и не очень, но совместимых) плат. С полным списком поддерживаемых плат можно ознакомиться на сайте производителя.
Кроме данного сокета, в некоторых модификациях плат Lavritech поддерживаются и другие форматы, например, «Socket 30pin» и т. п., но мы сейчас не будем на этом останавливаться.
Два раза по 19 (как раз 38)
Сделаю только несколько замечаний и пояснений по подключению микроконтроллерной платы:
1. Если вы предполагаете использовать Lavritech V7.1 Lite в жёстких условиях эксплуатации, например, при вибрации, то плату ESP32 можно не устанавливать в разъём, а вместо этого просто припаять к материнской плате. Это, кстати, касается и всех других соединений и разъёмов — никто не мешает модули расширения при необходимости впаивать прямо в плату.
2. В будущем производитель планирует делать специальные переходники в этот сокет для плат на других (не ESP32) микроконтроллерах. Если ему удастся развить это направление, то нас ожидают очень интересные решения (ждём с нетерпением).
3. Обратите внимание, что плата ESP32 развёрнута вертикально, что позволяет (относительно удобно) подключать к ней USB кабель для программирования и даже (при необходимости) нажимать кнопки RESET/BOOT, не разбирая корпус контроллера.
Регион 2. Подсистема питания
Как и всё в Lavritech V7.1 Lite, подсистема питания довольно оригинальна и отличается от привычных нам решений. Начнём с того, что в базовом варианте подсистема питания в Lavritech V7.1 Lite… просто отсутствует.
Плата не содержит никаких активных элементов регуляторов и стабилизаторов напряжения. Предполагается, что пользователь просто подаст напряжение питания 5 В с внешнего блока питания. Это совершенно необычное и, на первый взгляд, вызывающее недоумение решение, ведь качество вашего конкретного блока питания, на котором написано Uout 5V может быть каким угодно и на его выходе может быть всё, что угодно (например, 4 или 6 вольт) и с какими угодно пульсациями и помехами.
Производитель объясняет своё решение тем, что если использовать качественный 5-вольтовый блок питания, например MEAN WELL, то с качеством питания проблем не будет, но зато мы избавляемся от лишних (требующих распайки и потенциально могущих выйти из строя) элементов, тем самым повышая надёжность и снижая стоимость контроллера.
На такой подход сразу хочется возразить, но потом, подумав, приходишь к мнению, что в этом подходе что-то есть.
В этой же области на плате видны отверстия 10-контактного разъёма — это место для установки того самого недостающего модуля питания (на входе 12-24 В). Другими словами, если вам не подходит вариант с прямым питанием 5 В, то вы можете заказать вариант контроллера с дополнительным модулем преобразователя напряжения.
Китайский вариант модуля с входными напряжениями 12-24 В
Кроме китайских вариантов, компанией Lavritech разработан собственный модуль питания, который устанавливается в разъём J17. Путём манипуляций с выпаиванием резисторов R56 и R82 можно задать режим питания с т. н. «изолированной землёй». Два ряда отверстий разъёма дублируют друг друга, это сделано для возможности установки специального модуля, напрямую впаиваемого между ними, без отдельных пинов (штырьков).
Примечание: полная схема контроллера на данный момент недоступна, производитель мотивирует это тем, что разработка ещё не завершена и пользователям достаточно схем и пояснений на официальном сайте для успешной работы с контроллером. Возможно, схема станет доступна в будущем.
Питание на контроллер Lavritech V7.1 Lite может быть подано тремя способами: через круглый разъём (а-ля Arduino), через 2-пиновую колодку или напрямую от USB на плате модуля ESP32 (последний режим не является полноценным и может использоваться только для программирования контроллера).
Предупреждение: круглый разъём а-ля Arduino и привычка запитывать подобные платы от ардуиновских 9-вольтовых блоков питания может сыграть здесь злую шутку — помните, что в базовой версии контроллера на этот разъём можно подавать только 5 вольт.
Регион 3. Разъёмы Wirenboard и EUHP для модулей и колодки для них
Тут мы уже подходим непосредственно к главному — разбору распиновки и назначения разъёмов для установки внутренних модулей. А скорее даже к разбору самой концепции организации модульной структуры контроллеров Lavritech. Сразу скажу, что тема эта не из простых и вам может понадобиться вся ваша способность к абстрактному мышлению, чтобы понять тонкости нетривиального хода мысли разработчиков Lavritech.
Итак…
Типичный регион (область) разъёмов для установки внутренних модулей состоит из трёх частей: двух разъёмов (с колодками для внешних подключений) Wirenboard (выделены жёлтым цветом) и одного разъёма EUHP (выделен синим цветом). В старших версиях контроллеров Lavritech таких регионов (по 3 разъёма) может быть несколько.
Разъёмы Wirenboard
Оба разъёма Wirenboard идентичны, только развёрнуты на плате по отношению друг к другу на 180 градусов. Это значит, что в эти разъёмы вы можете установить до двух стандартных Wirenboard модулей. При установке в разъём такого модуля, его выходы (если таковые есть) автоматически появляются на контактах в соответствующих колодках.
Другими словами: часть контактов разъёма используется для связи с контроллером и получения/отправки данных (зависит от типа модуля), а часть контактов соединена с выходной 4-pin колодкой для подключения внешних проводов.
Выходные пины обозначены как OUT1, OUT2 и OUT3, причём OUT3 в базовой спецификации разъёма объединяет 2 пина. В некоторых модулях Lavritech эти пины используются отдельно и делятся на OUT3 и OUT4.
Типовой пример установки Wirenboard модуля в плату
На распиновке разъёма видно, что некоторые контакты могут иметь различное назначение (TX/SDA, RX/SCL). Это зависит от типа используемого Wirenboard модуля (работает он с UART или I2C) и конфигурируется при помощи резисторов-перемычек на материнской плате (R17-R20 и R21-R24).
На фото видно, что один разъём сконфигурирован как UART (WB1.1), а другой — как I2C (WB1.2). Здесь первая цифра (1) обозначает регион (в старших версиях контроллера их может быть больше одного), а вторая (1/2) — номер Wirenboard разъёма в составе региона.
Сами модули, кроме пинов, имеют ещё цокольные выступы (а материнская плата — вырезы под них), поэтому вставленный модуль держится вполне надёжно и просто так из разъёма не вывалится.
Типовой вид Wirenboard модуля
Разъём EUHP
Разъём EUHP — это самопровозглашённый компанией Lavritech стандарт для подключения внутриконтроллерных модулей, наподобие выше рассмотренных разъёмов Wirenboard. Разница заключается в большем количестве задействованных пинов и, соответственно, в большей функциональности EUHP модулей.
Типовой вид EUHP модуля
Вынос мозга в данном случае заключается в том, что EUHP модуль использует для своего подключения… «чужие» боковые разъёмы Wirenboard! Это очень в стиле компании Lavritech, я бы до такого никогда не додумался.
Как следствие такой ширины (длины) EUHP модуля, при его установке уже нельзя использовать боковые разъёмы для подключения Wirenboard модулей.
Типовой пример установки EUHP модуля в плату. Кстати, тут можно попробовать установить ещё и Wirenboard модуль (только осторожно, чтобы ничего не замкнуть).
С точки зрения электрических соединений, разъём EUHP является несколько переработанным стандартным разъёмом Wirenboard для подключения внешних блоков (об этом разъёме мы подробно поговорим ниже). Только здесь пины шины адресов заменены на линии GPIO, что даёт большую свободу в определении функционала подключаемых модулей.
Ещё один момент: снова в духе «свежих решений Lavritech», EUHP разъём может быть не вертикальным (как в случае моей платы), а горизонтальным, для боковой стыковки специально для этого предназначенных EUHP блоков.
И ещё одно замечание: в формате EUHP модулей могут выпускаться (уже имеются прототипы) модули, содержащие в себе другие микроконтроллеры, например STM32. Это открывает просто необозримые перспективы наращивания функциональности контроллеров Lavritech.
Чтобы вы окончательно не запутались и не потеряли нить повествования, на этом я закончу (общее) описание региона разъёмов для подключения внутренних модулей. На самом деле это только вершина айсберга и подробный разбор распределения GPIO между разъёмами и их иерархии тоже требует отдельного повествования.
Регион 4. SPI разъём, Ethernet модуль и две колодки
Здесь мы видим две многофункциональные 4-pin колодки (частично скрыты под сетевым модулем), 12-pin SPI разъём Wirenboard (тоже частично скрыт под ним) и две линейки контактов для установки Ethernet модуля на W5500 (куда он и впаян на фото).
Все эти разъёмы соединены с SPI интерфейсом и фактически являются «запараллеленными». То есть мы можем использовать SPI разъём Wirenboard, выводы SPI GPIO на колодках или установить сетевой Ethernet модуль. В моём случае установлен сетевой модуль на W5500.
Но и это ещё не всё, выводы (GPIO) в колодках могут переводиться в режимы «выход с открытым коллектором» или «PWM выход» и использоваться соответствующим образом. Получается, что этот (4-й) регион может использоваться как минимум 5-ю разными способами, то есть имеет как минимум 5 слоёв хардверной абстракции.
SPI разъём Wirenboard (обозначен как WB SPI на плате) имеет распиновку близкую к стандартной и частично совместим с «нативными» модулями Wirenboard. Разница заключается в наличии 2-х дополнительных пинов, зарезервированных на будущее для расширения базового функционала SPI модулей.
Рассмотрение всех тонкостей настройки и конфигурирования 4-го региона тоже выходит за рамки этой статьи, здесь я даю только общее представление о принципах организации схемотехники Lavritech V7.1 Lite. Замечу только, что если вы покупаете контроллер в какой-либо заказанной конфигурации, то производитель сам производит все настройки на плате и вам об этом не придётся беспокоиться.
Регион 5. Внешний 10-pin разъём Wirenboard
Это внешний 10-pin разъём для подключения дополнительных блоков на DIN-рейку по стандарту Wirenboard, то есть к этому разъёму можно подключать оригинальные блоки Wirenboard на DIN-рейку, ассортимент которых просто поражает — там есть блоки на любой случай из жизни автоматизатора.
Положительным моментом является то, что компания Lavritech не стала вносить никаких изменений и дополнений в этот разъём и наша задача по его изучению несколько упрощается.
Ниже представлено фото боковой стороны контроллера Lavritech V7.1 Lite с межблочным разъёмом для подключения Wirenboard-совместимых блоков на DIN-рейку
И, в качестве примера, наглядно показано соединение платы контроллера Lavritech V7.1 Lite и блока Wirenboard WBIO-DO-R10A-8 с 8-ю реле на борту. Разумеется, в реальных условиях контроллер должен быть в собранном виде, а не в виде отдельной платы.
Распиновка бокового межблочного разъёма содержит линии земли (GND) и питания 3,3 и 5 В, а также контакт INT (прерывание) и пины интерфейса I2C (SCL и SDA).
Далее идут 4 контакта выбора адреса дополнительного блока на шине. В базовом варианте при помощи этих пинов можно задать 4 адреса, то есть в «гирлянде» на DIN-рейке может быть подключено до 4-х блоков одного типа. За подробностями по этой теме отсылаю вас к официальной документации Wirenboard.
Регион 6. Кнопки USER, RESET и кнопка с фиксацией
Здесь собраны стандартные (типичные) кнопки для подобных контроллеров — USER и RESET. Кнопка USER на плате обозначена как SAFE — эта маркировка связана функцией перевода контроллера в т. н. «безопасный» режим точки доступа при первоначальной настройке и в последующих ревизиях платы будет заманена на более правильное по смыслу USER, то есть свободно программируемая пользователем кнопка.
Контактные отверстия под пины P5 и P6 — это дублирование кнопок USER и RESET для внешних подключений. Надо сказать, это полезное дополнение, можно без проблем вынести управляющие кнопки, если вы используете какой-то нестандартный корпус для контроллера.
Кнопка SW1 имеет фиксацию и (постоянно) притягивает GPIO либо к земле, либо к плюсу питания. Это может использоваться для «железного» переключения какого-то режима работы контроллера, а соответствующая реакция должна быть запрограммирована в коде прошивки.
Ну и не надо забывать, что плата модуля ESP32 расположена так, что, не разбирая корпус, доступны ещё две кнопки — RESET и BOOT. Здесь кнопка RESET дублирует такую же кнопку на материнской плате, а кнопка BOOT может использоваться по её прямому назначению для манипуляций с загрузкой прошивок.
Регион 7. Разъём для подключения LoRa антенны
Тут в общем-то и комментировать особенно нечего, 7-й регион это разъём для подключения LoRa антенны (SMA) и с обратной стороны платы сам модуль LoRa. Единственное пожелание к разработчикам, чтобы они не ограничивались использованием LoRa связи, а добавили на плату поддержку и других популярных модулей, например, nRF24 и т. п.
Распиновка
В заключение этой статьи я приведу распиновку платы ESP32, чтобы было понятно что и как подключено внутри контроллера Lavritech V7.1 Lite. Замечу только, что речь идёт о моей конкретной плате ревизии V7.1.5, в других версиях платы GPIO могут быть распределены по-другому.
Контакты I36, S1_RX, S1_TX, S3_RX, S3_TX, S3_G1, S3_G2 — это многофункциональные линии GPIO, выведенные в различные разъёмы на платах и подключаемые (отключаемые) при помощи перемычек-резисторов. Такие, на первый взгляд, странные названия — это рудимент от маркировки полной версии платы Lavritech V7.1, где присутствуют регионы («Sockets» в терминологии производителя) S1, S2, S3 (в версии Lite есть только S1). Распределение этих GPIO в разъёмах можно посмотреть на сайте производителя.
Теперь немного об интерфейсе (интерфейсах) SPI на плате и самостоятельном программировании его в среде Arduino.
На распиновке видно, что для обслуживания LoRa модуля и 4-го (SPI) региона со всем его содержимым используются различные SPI пины, причём распределение этих GPIO нестандартно для Arduino, где основным (дефолтным) SPI используются GPIO 18 (SCK), 19 (MISO) и 23 (MOSI).
Учитывая, что на ESP32 нам доступны для программирования VSPI и HSPI, то нам придётся распределить эти интерфейсы между LoRa и Ethernet (4-м регионом) и вдобавок умудриться переопределить их дефолтные пины MISO, MOSI, SCK и CS на соответствующие пины платы Lavritech V7.1 Lite, что само по себе является нетривиальной задачей и хорошим примером для повышения вашей квалификации в программировании.
Заключение
В этой статье мы немного приоткрыли крышку ящика Пандоры под названием схемотехника Lavritech V7.1 Lite, чтобы окончательно разобраться что и как там конкретно подключено и работает, нужно написать ещё не одну статью. Если у аудитории Хабра будет интерес, то можно будет продолжить исследование этого замечательного контроллера.
Комментарии (7)
sav13
04.10.2022 13:19А зачем такого ужасного франкенштейна создавать?
Гораздо проще встроиться в готовую экосистему - их навалом всяких модульных:
Тот же Arduino Uno со своими шилдами, LiLiGO, WeMos для тех кто любит поминиатюрнее.
DFRobot реализовал универсальное соединения Gravity. Ну и можно продолжать до бесконечности.
А что будете делать, когда на алиэкспрессе перестанут продаваться платки именно в таком формфакторе?
Как быстрый прототип решение годиться. Типа соединить барахло что у меня валяется в что-то работающее. Но для концепции как то слабовато.И на какую такую статью там разбирать схемотехнику, если плата кроме разъемов ничего не имеет? Все остальное это сторонние модули
smart_alex Автор
04.10.2022 13:55Я здесь выступаю не как разработчик и идеолог, а как заинтересованный пользователь - ваши вопросы и сомнения нужно адресовать создателям этого контроллера.
Лично мне нравятся и идея и концепция и чем больше я с этим разбираюсь, тем больше мне нравится этот контроллер.
W_Lander
05.10.2022 13:26И где тут контроллер? Почти голая несущая кросс-плата. Я бы, например, по интерфейсу питания поставил LC фильтр с полосой до 1 МГц, а не надеялся на качественный модуль питания, тем более китайские шильды часто экономят на обвязке.
Albert2009ru
Эээ, немного позанудствую, но в том же Ардуино концепции модульных плат "сто лет в обед". Даже наборы разные продаются из готовых плат датчиков и переходников и многое другое, типа "собери сам робота" - там все на модулях... Ну вообще не ноу-хау, это моё личное впечатление от вступления. В остальном статья годная.
smart_alex Автор
Платы для прототипирования (Arduino и т. п.) и контроллеры — это немного разные вещи. Большинство контроллеров монолитные и не предусматривают таких вольностей как разборка корпуса пользователем и самостоятельное добавление каких-то частей. А в случае с Lavritech модульность возведена в принцип, там материнская плата практически лишена активных элементов — это одна сплошная матрица соединений и разъёмов.
Albert2009ru
Да я и на производстве с применением FPGA и других МК под конкретные изделия, в корпусах под рейку ту же самую концепцию встречаю постоянно, да ежедневно. Пример плата управления Schrittmotor'ами от фирмы Vitronic (Висбаден, Германия), изделия стоят на всех дорогах, меряют скорость...
Хотите Вам лично такое разведу (только BOMчик скиньте), прям вот сплошную матрицу соединений и разъемов. Прям напугали.
smart_alex Автор
Спасибо, мне лично разводить пока ничего не нужно :)