Наткнулся я тут недавно на ролик презентации проекта next.module — это продолжение задумки автора Руслана, известного по замечательному проекту «Электроника в объективе», о которой он год назад рассказал в статье на Хабре.

То есть проект развивается и уже перешёл в фазу создания реальных прототипов. Это не может не радовать — как говорится, больше проектов хороших и разных, тем более, что автор на деле доказал свою компетентность и «креативность» (в хорошем смысле этого слова).

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

Всех желающих также приглашаю высказать своё мнение в комментах.

Концепция


Прежде всего нужно определиться с концепцией того, что же собственно разрабатывается и чётко эту концепцию сформулировать. Если это система прототипирования, наподобие Arduino — это одно, если это модульная система для создания устройств в корпусе — это второе, если эта система предполагает практическое применение для реальной автоматизации — это третье.

Если это продукт для профессионалов, способных работать в ESP32 SDK — это одно, если это продукт для массового рынка (а-ля Arduino) — это совсем другое.

От выбора той или иной концепции зависят и все последующие принимаемые архитектурные и маркетинговые решения и успешность самого проекта в целом.

Геометрия


Принцип соединения путём установки одного модуля в другой очень быстро (после соединения 3-4 модулей) приводит к тому, что вся конструкция приобретает «вертикальный» формат в виде столбика. И чем больше модулей, тем больше этот «гаджет» похож на отпиленный кусок квадратного бруса. Вертикально его не поставишь, горизонтально это тоже будет смотреться несуразно.


Такая «столбиковая» компоновка девайсов широко используется, только не в человеческой цивилизации и не на планете Земля

Отсюда вывод: если уж использовать 1х формат компоновки модулей, то это должно быть соединение максимум 3-4 модулей и никак не больше.

Отсюда же и второй вывод: для всей системы базовыми должны быть горизонтальные компоновки 2х, 4х, 6х и так далее.


Уже лучше, возможно стоит подумать о прямоугольных модулях на два квадрата, без двух центральных разъёмов

Корпус и конструкция


Если посмотреть на Lego, то можно обнаружить, что от принципа создания общего из однотипных «кирпичиков» почти ничего не осталось: практически все наборы чуть ли не на 80 процентов комплектуются кастомными деталями для этого конкретного набора.

Рано или поздно next.module придётся отойти от «стройной» концепции квадратных модулей и начать делать «нестандартные» по геометрии детали, например, дисплейные платы для установки в корпус. И лучше быть к этому готовым заранее и заранее закладывать это в дизайн системы.

Корпуса должны иметь место для установки стандартных квадратных сборок, но сами при этом иметь привлекательный дизайн и посадочные места для «внешних» расширений, наподобие дисплейной платы или платы интерфейсов.

Платы


На мой взгляд, в размерах плат экосистемы next.module 42х42 мм заложена бомба замедленного действия, которая уже сейчас является тормозом для развития и успешности проекта и грозит похоронить его в будущем.

42х42 это критически мало. Если посмотреть презентационное видео, то на нём хорошо видно, что автор (задумчиво) крутит на экране рендеры модулей и через раз говорит, что тут не уместилось то, а тут не уместилось это и так далее чуть ли не по каждому модулю.

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


Всё уже заполнено под завязку, больше ничего не добавишь, даже если очень надо — остаются только костыли

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

И здесь каждый миллиметр играет роль: 44х44 лучше чем 42х42, 46х46 лучше чем 44х44, 48х48 лучше чем 46х46 и т. д. Оптимальным размером будет скорее всего что-то вроде 48х48, 50х50 или 52х52.

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

Архитектура


Смотрел я видео презентации и как только дело дошло до фраз «модули можно поворачивать на 180 градусов», «маркировка и назначение GPIO совпадают, только если модуль ориентирован одинаково с модулем MCU» и «тут перемычки, тут паяем, а тут — не паяем», меня посетило сильнейшее дежавю: где-то я всё это уже видел…

А видел я это на проекте Lavritech, где я уже два года наблюдаю ровно то же самое: создана многослойная архитектура со множеством слоёв хардверной абстракции, которая позволяет творить чудеса на плате, но проблема только в том, что модель этой архитектуры существует только в голове у автора, и нескольких адептов, наподобие меня. Что драматическим образом сказывается на популярности проекта — народ просто не понимает как это работает и что со всем этим делать (что не удивительно).

Тут вступают в противоречие две вещи: соблазн автора добавить «ещё одну перемычку» для «ещё одной крутой функции» и простота и прозрачность использования системы для конечного пользователя (что напрямую влияет на её популярность).

Поэтому, мой добрый совет: никаких «переворотов платы на 180 градусов» и никаких «маркировка и назначение GPIO совпадают только если вы правильно вставили модуль», даже если это несколько ограничит функционал. Наоборот, на платах должен быть ключ, однозначно определяющий правильную её установку.

Иначе «переворачивать платы на 180 градусов» автор будет в одиночестве или в компании 10-20 адептов (вместо 10-20 миллионов заинтересованных пользователей во всём мире).

Шины


На соединительные разъёмы выведен более-менее вменяемый набор интерфейсов, GPIO и питающие напряжения 3,3 и 5 В. Если немного увеличить площадь платы, как было описано выше, то можно либо добавить пины 12 В в разъёмы (возможно не по одному, а по 2-3-4 пина) или дополнительно установить какие-то детали, например кнопки, на боковую поверхность модуля.


Всем, кому идея повернуть эту конструкцию на 180 градусов в массовом продукте кажется удачной, рекомендуется подумать ещё раз

Наличие «легитимной» передачи 12 В на модули через разъёмы, без костылей в виде шлейфов, благоприятно скажется на всей архитектуре системы, её внешнем виде и простоте использования.

Контакты


По своему обширному опыту могу сказать, что соединение «а-ля шилд Ардуино» с тонкими и длинными пинами имеют тенденцию к потере контакта. У меня много подобных бутербродов, например, трёхэтажный Mega + Ethernet Shield + GSM Shield и каждый раз работу с ним приходится начинать с пересборки всей конструкции (иначе система не стартует из-за пропадания контактов между шилдами). Иногда пересобирать приходится по несколько раз и это полный кошмар и совершенно неприемлемо.

Поэтому, если уж делать всю систему по принципу «бутерброда», то вопрос с межплатными соединениями нужно рассматривать отдельно и очень внимательно: «просто как в Ардуино» точно не пойдёт — нужны либо «толстые квадратные» пины, либо покрытие их чем-то вроде золотого напыления, обеспечивающее надёжный контакт.

Внешние интерфейсы


Без внешних интерфейсов никуда — рано или поздно они точно понадобятся. Нужно предусмотреть платы — переходники (куда вставляются шлейфы) от бутербродов к внешним колодкам.

Что и как выводить — вопрос дискуссионный, как минимум, набор разных напряжений, земля, I2C, SPI, GPIO/UART, возможно отдельный разъём для RS485.

MCU


В качестве ядра системы автор презентует ESP32S3 и процессорные сборки MicroMod. Так и хочется спросить, а нельзя ли что-нибудь попроще? и поближе к народу, наподобие «простых» ESP32 или ESP8266? Для которых есть целый вагон готовых прошивок, кода и программных наработок у всех, кто занимается этой темой.


MicroMod? Ну, ок, только верните, пожалуйста, простые и привычные ESP32 и ESP8266

Arduino


На мой взгляд, это ещё один эпик фейл прямо на старте. Автор в своих материалах упоминает разные программные системы, как предполагаемые для работы с платформой next.module, но при этом не упоминает Arduino.

Цитата:
Для ESP32S3 у меня следующая картина по софту:

- ESP-IDF от Espressif,
- мой SDK с поддержкой всех модулей (поверх ESP-IDF),
- код пользователя на C/C++ либо (возможно) интерпретатор LUA, MicroPython или JavaScript.

Вне зависимости от того, как автор относится к Arduino и каким профессионалом он себя считает, игнорировать 98% потенциальной аудитории — это непозволительная роскошь для любого проекта. Я думаю не нужно быть дипломированным маркетологом, чтобы это понимать.

В целом


В целом, складывается впечатление, что это «ещё одна Arduino» или «ещё один M5Stack», только на свой лад. Принципиальных отличий и технологических прорывов я здесь не вижу.

С другой стороны, и у Arduino и у M5Stack и у всех прочих подобных есть огромное количество косяков в архитектуре системы и в её реализации. Почему бы next.module наконец-то не сделать всё правильно и стать системой, которая завоюет популярность во всём мире?

Надеюсь, что мои замечания (и замечания комментаторов) помогут сделать next.module немного лучше и помогут ей стать «системой нашей мечты» и основой для наших проектов.



Возможно, захочется почитать и это:


Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале

Комментарии (63)


  1. SeyranGV
    21.05.2024 08:42

    И здесь каждый миллиметр играет роль: 44х44 лучше чем 42х42, 46х46 лучше чем 44х44, 48х48 лучше чем 46х46 и т. д. Оптимальным размером будет скорее всего что-то вроде 48х48, 50х50 или 52х52.

    смею предположить что размер заточен под заказ плат на JLCPCB. Там платы меньше чем 50х50 то ли только за доставку оплата, толи за копейки.


    1. smart_alex Автор
      21.05.2024 08:42
      +1

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


      1. Indemsys
        21.05.2024 08:42

        Да не трудно, размер минимизирован настолько чтобы на него помещались модули M.2 https://www.sparkfun.com/search/results?term=m.2

        И все притензии по поводу ESP32S3 по ходу мимо.
        Там большое разнообразие микроконтроллеров со своими экосистемами.
        По сути next.module - это хардварная оболочка вокруг M.2
        Вполне нормальный бизнес. Вокруг Arduino и Pi возникло много оболочек и неплохо живут.

        Вот только модульность добавляет головной боли с логистикой. Думаю больше десятка плат в проекте не появится, да и то не все будут доступны. В этом плане придется делать как Flipper, предлагая шаблоны для сторонних плат.


        1. smart_alex Автор
          21.05.2024 08:42

          Если это система прототипирования, то на модулях придётся размещать много чего, кроме М.2 и площадь платы должна быть достаточна для этого.

          M5Stack не зря выбрала формат 5х5.


          1. Indemsys
            21.05.2024 08:42

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

            M5Stack, полагаю, был выбран из анализа размеров аккумуляторов и дисплеев на тот момент. И у них обособленная экосистема. Я бы не брал с них пример.
            Завтра аккумуляторы, модули и дисплеи станут меньше и они сами пожалеют о выбранных габаритах.


            1. smart_alex Автор
              21.05.2024 08:42

              Аккумуляторы - да, но дисплеи?! :)

              Дисплеи уже сейчас приходится рассматривать через лупу. Я однозначно предпочту 5- сантиметровый дисплей 3-сантиметровому.

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


              1. VRyabchevsky
                21.05.2024 08:42

                Аккумуляторы - да

                касательно next.module - действительно не просто будет подобрать аккумулятор в таких габаритах и достаточно емкий (хотя бы на час работы стойки)


                1. smart_alex Автор
                  21.05.2024 08:42

                  Ну конечно, - это же очевидно.


              1. Indemsys
                21.05.2024 08:42

                Возможно автор и не планирует дисплей.
                У него для дисплея даже нет подходящего интерфейса.
                Скорее всего планирует управлять со смартфона через браузер.
                Это ж всё упирается в сценарии использования. Хотя без дисплея их станет сильно меньше.


                1. smart_alex Автор
                  21.05.2024 08:42

                  Планирует (см. мой коммент выше).


                  1. Indemsys
                    21.05.2024 08:42

                    Но интерфейса то нет! Значит не планирует.

                    А то сразу бы озаботился вместо Ethernet контроллера поставить тачскин контроллер или клавиатурный контроллер.


                    1. smart_alex Автор
                      21.05.2024 08:42

                      Он то ли в ролике, то ли в Телеграме говорит, что собирается размещать микро-дисплеи между модулями.


                      1. Indemsys
                        21.05.2024 08:42

                        Если он думает вывести пару линий из M.2,

                        https://cdn.sparkfun.com/assets/learn_tutorials/1/2/0/6/SparkFun_MicroMod_Interface_v1.0_-_Pinout.pdf

                        то конечно микродисплей типа такого по I2C подключит без проблем.

                        Но как он из этого сделает открытый фреймворк для разработчиков будет интересно.
                        Конструкторы - нереально сложная вещь в плане программного фреймворка, да еще на ограниченных ресурсах памяти. Придется делать невероятно абстрактный и запутанный слой. Достаточно посмотреть на HAL известных производителей.


                      1. smart_alex Автор
                        21.05.2024 08:42

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


                      1. Indemsys
                        21.05.2024 08:42

                        Дисплей на I2C выносится в любое место и на любое расстояние на раз-два. Например дисплей моего ПЛК выносят на два метра. А он работает между тем по SPI на 20 МГц!


                      1. smart_alex Автор
                        21.05.2024 08:42

                        И я о том же - нечего ему делать сбоку между плат.

                        Посмотрел ссылку - круто - как это я раньше пропустил эту статью?..


                      1. Indemsys
                        21.05.2024 08:42
                        +1

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

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


                      1. rnadyrshin
                        21.05.2024 08:42

                        Да, конечно. Я собираюсь рассматривать все возможные варианты.
                        Микродисплей сбоку это, безусловно, не основной вариант, но почему собственно нет?


                1. rnadyrshin
                  21.05.2024 08:42

                  Компактному конструктиву - компактные дисплеи.
                  Дисплеи планируются небольшие. OLED, IPS и монохромные. С SPI или I2C интерфейсом.
                  Для больших экранов можно разработать отдельный модуль с RGB-интерфейсом, но я сомневаюсь, что это будет востребовано.


          1. rnadyrshin
            21.05.2024 08:42

            Для прототипирования можно использовать самую простую и дешевую макетку. Не обязательно 42х42 мм, можно 85х85 или любую другую. В нее модули next.module вставляются без проблем


        1. rnadyrshin
          21.05.2024 08:42

          Есть 2 варианта модулей CPU на старте:
          - ESP32S3 - основной вариант, мощный и недорогой.
          - MicroMod с M.2 - был добавлен по просьбам трудящихся, позволяет выбрать из 10 разных платформ.

          Помимо этого возможно появление (в том числе силами сообщества) модулей CPU с любыми другими процессорами от древних и дешевых МК до систем на чипе на linux. Лишь бы они обеспечивали работу межмодульного интерфейса и успешно компоновались в модуль (не обязательно 1х1)


      1. rnadyrshin
        21.05.2024 08:42

        Про выбор размера плат расписал в отдельном комментарии ниже


    1. rnadyrshin
      21.05.2024 08:42
      +1

      Нет, нет. Размер выбран эмпирически после множества экспериментов с размером модуля и перепроектированием всей линейки модулей. С ограничениями производителей плат это не связано


  1. NutsUnderline
    21.05.2024 08:42

    в ведении, еще до ката хотелось бы в 2 словах понять что это такое и зачем


    1. smart_alex Автор
      21.05.2024 08:42

      Там до ката ссылка на оригинальную статью автора, где он подробно рассказывает о проекте.


  1. VRyabchevsky
    21.05.2024 08:42

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

    В идеале не только ключ, но и "заглушить" один контакт и вынуть ножку с ответной части. Да, меньше питания или gpio, но за то надежность и защита.

    Автор в своих материалах упоминает  ... но при этом не упоминает Arduino.

    как раз готовлю материал на схожую тему. Действительно, упускается большой рынок. Помимо этого можно просто сделать условный переходник с nano на next.module или просто avr контроллер на такую же плату. Так что не факт что потерял, может это еще в планах:)

    каждый миллиметр играет роль: 44х44 лучше чем 42х42

    если толщина платы 2мм, а стойка 10 мм, то самый интересный размер стороны будет 48мм - тогда сложив 4 платы будет куб


  1. rnadyrshin
    21.05.2024 08:42
    +5


    Я автор проекта next.module. Хочу сразу сказать спасибо за публикацию. Это сигнал для меня, что я недостаточно понятно рассказываю о проекте, так что буду навёрстывать.

    Если это система прототипирования, наподобие Arduino — это одно, если это модульная система для создания устройств в корпусе — это второе, если эта система предполагает практическое применение для реальной автоматизации — это третье.

    Это всё вместе. И конструктор для настольного прототипирования (с этого всё начиналось), и платформа для сборки устройств в корпусе, и система для реальной автоматизации.

    Модули жестко крепятся друг к другу стойками, а межмодульные разъёмы достаточно надёжны. Это даёт мне надежду на надежную работу всего в целом, даже если вы собрали из модулей систему автоматизации для более-менее ответственной задачи. Все разъёмы, элементы управления и индикации расположены так, чтобы их легко было вывести из корпуса, они выглядели эстетично и были удобны. Корпус предполагается печатаемый на 3D-принтере, я предложу решения и проекты корпуса когда они будут готовы, пока до этого далеко. Для автоматизации уже представлен ряд модулей с промышленными интерфейсами и входами-выходами, распространенными в автоматизации. Так что да, для реальной автоматизации next.module тоже подойдет.

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

    Если это продукт для профессионалов, способных работать в ESP32 SDK — это одно, если это продукт для массового рынка (а-ля Arduino) — это совсем другое.

    Электрически next.module - это микроконтроллер и набор микросхем, с которыми МК взаимодействует. Программировать МК можно на чём угодно. Кто хочет - в Arduino IDE, кто хочет на bare metal. Тут конструктив не накладывает ограничений, а все принципиальные схемы модулей открыты.

    Но, от меня для модуля CPU ESP32S3 точно будет разработан SDK на базе ESP-IDF с простым API доступа к ресурсам всех модулей. С синхронными и асинхронными способами обращения к модулям. С возможностью сконфигурировать девайс человекочитаемой конфигурацией. Он будет доступен в исходниках.

    Наличие этого SDK вовсе не отрицает возможных альтернатив, включая Arduino. Более того, планируется адаптация прошивки IoT Manager под next.module, который сам по себе разработан в Arduino IDE.


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


    1. smart_alex Автор
      21.05.2024 08:42

      Отлично, я только высказал свои соображения со стороны, надеюсь они чем-то помогут. А так - ждём модули в продаже (и желательно по гуманной цене :)


    1. vassabi
      21.05.2024 08:42

      скажите - а в чем великое отличие ESP32S3 от ESP32 ?
      Или там просто "чуть лучше характеристики" ?

      (я - профан в микроконтролллерах, поэтому непонятно изза чего спор %) )


      1. rnadyrshin
        21.05.2024 08:42

        • Внутрисхемная отладка и прошивка без необходимости использования отладчика или специального адаптера. Нужен только USB-кабель

        • Более быстрые ядра

        • Более быстрый интерфейс с ОЗУ

        • Наличие RGB-интерфейса


        1. copych
          21.05.2024 08:42

          Поддерживаю выбор ESP32S3, однако, ядра там не быстрее. Зато там 500 кб ОЗУ можно почти как угодно сегментировать (компилятор не ругнется, что данные в сегмент не влезают), т.к. оно на железном уровне не поделено, как у ESP32. И PSRAM быстрее, и адресуется больше. Опять же, USB OTG имеется, хоть и недопиленный до сих пор.

          По поводу Arduino vs ESP-IDF не вижу больших противоречий, можно любое использовать. Но для массовости и доходчивости, конечно Arduino нужно приводить в качестве базы. Особо продвинутые про IDF всё и так поймут.


          1. rnadyrshin
            21.05.2024 08:42

            Ядра XTensa LX7 быстрее, чем LX6 примерно на 20% на тех же тактовых частотах.
            Из 512 Кб SRAM доступно около 320 Кб


            1. copych
              21.05.2024 08:42

              Сорри, не собирался спорить, уточнял на основе эмпирических данных. Просто, я ждал эти 20%, но не смог их увидеть, по крайней мере, в вычислениях (собственно, где и ждешь прироста). Всё копейка-в-копейку как на ESP32. Тут у товарищей такие же наблюдения https://www.esp32.com/viewtopic.php?t=800&start=20 . Ну, да ладно, может, это еще какие-то сырые библиотеки, кривые руки и т.п. Не хуже ведь... А с памятью - я не про 320, а про то, что гибче стало с data, bss, IRAM, DRAM.


              1. smart_alex Автор
                21.05.2024 08:42

                Я конечно извиняюсь, но какие 20% вы тут обсуждаете? Для каких таких задач вам не хватает мощности ESP32?


                1. rnadyrshin
                  21.05.2024 08:42

                  Нам для всех хватает, но помериться CoreMark'ами всё равно интересно


                  1. smart_alex Автор
                    21.05.2024 08:42

                    По поводу ESP32 я бы больше переживал не о мощности MCU, а о том, что это колосс на глиняных ногах с десятком рахитичных GPIO.


                1. copych
                  21.05.2024 08:42

                  Я для синтеза звука использую, а что, i2s имеется ))) Да, вот так. Но Teensy дороже раз в 5. И потом, это просто мое хобби. И ESP32 мне нравятся, не скрываю.


              1. rnadyrshin
                21.05.2024 08:42

                Да понятно. По скорости я опирался на оценку производительности от самих Espressif в CoreMark. Можете найти их на 3 странице даташитов на ESP32 и ESP32S3


    1. tigreavecdesailes
      21.05.2024 08:42

      smart_alex предложил контакт в шине для 12В. А если ещё больше абстрагироваться, то в шине нужен "определяемый пользователем" контакт. Который не завязан ни на какие gpio основного процессорного модуля и не используется по-умолчанию и который может быть использован как для сквозной передачи 12В от модуля который это напряжение создает, так и для любого напряжения/сигнала.


      1. smart_alex Автор
        21.05.2024 08:42

        Мне ещё на ум приходит пин Vref :)


  1. rnadyrshin
    21.05.2024 08:42

    Отсюда вывод: если уж использовать 1х формат компоновки модулей, то это должно быть соединение максимум 3-4 модулей и никак не больше.

    Верно, так и есть

    Отсюда же и второй вывод: для всей системы базовыми должны быть горизонтальные компоновки 2х, 4х, 6х и так далее.

    Так и есть, во многих случаях большие горизонтальные компоновки будут выгоднее. Модули вплоть до 3x3, 3x2, 4x1, 4x2 уже разработаны. Просто они не попали в первую партию прототипов, поэтому в видео о них ни слова.


  1. rnadyrshin
    21.05.2024 08:42

    На мой взгляд, в размерах плат экосистемы next.module 42х42 мм заложена бомба замедленного действия, которая уже сейчас является тормозом для развития и успешности проекта и грозит похоронить его в будущем.

    42х42 это критически мало. Если посмотреть презентационное видео, то на нём хорошо видно, что автор (задумчиво) крутит на экране рендеры модулей и через раз говорит, что тут не уместилось то, а тут не уместилось это и так далее чуть ли не по каждому модулю.

    На самом деле нет никакого идеального размера для модулей. Какой размер ни выбери - всегда что-нибудь не поместится. А если выберешь очень крупный формат, то будут полупустые платы модулей и громоздкий девайс в результате.
    Я много экспериментировал с форматами модулей от 40х40 до 50х50 и эмпирически выбрал 42х42 мм. На сегодня я считаю его идеальным балансом, хотя руки чешутся сделать чуть компактнее.
    В видео я всегда рассказываю про технические нюансы и сложности, видео с презентацией - не исключение. При любом другом формате модулей нюансы и сложности тоже были бы, но уже другие.


    1. smart_alex Автор
      21.05.2024 08:42

      У меня только один вопрос остался: а в чём смысл миниатюризации? Почему хочется сделать ещё компактнее?

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


      1. rnadyrshin
        21.05.2024 08:42

        Смысл миниатюризации в удобстве пользования и эстетике


  1. rnadyrshin
    21.05.2024 08:42

    Поэтому, мой добрый совет: никаких «переворотов платы на 180 градусов»

    next.module широко использует боковые поверхности девайса для вывода разъёмов, индикаторов и кнопок. Представьте, что модули нельзя поворачивать. То есть модуль с разъёмом на боку будет всегда располагать свой разъём только с одной стороны девайса и никак иначе. Все девайсы будут иметь разъёмы с одной стороны) Либо придётся делать разные платы чтобы вывести разъём в ту или иную сторону. Все эти варианты плохие. Либо распишите вашу концепцию, возможно я не понял.

    и никаких «маркировка и назначение GPIO совпадают только если вы правильно вставили модуль», даже если это несколько ограничит функционал

    Маркировка пинов есть только на плате модуля DBG LED, на котором есть LED-индикаторы, которые хочется подписать. Его всегда без проблем можно повернуть, ориентируясь на стрелочки. На других модулях нет маркировки и нужно только обратить внимание на 1-3 перемычки снизу, ориентируясь на подсказки стрелками.

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

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


    1. smart_alex Автор
      21.05.2024 08:42

      Это всё понятно, у меня встречный вопрос: на какую аудиторию рассчитан проект и какое количество пользователей предполагается охватить?

      Возможности - это обратная сторона сложности. Вы уверены, что массовый пользователь обладает таким уровнем абстрактного мышления, чтобы пересчитывать номера GPIO по таблицам и вообще думать в такой плоскости?


      1. rnadyrshin
        21.05.2024 08:42

        Это хороший вопрос
        Да, next.module в текущем его виде целится в более узкую и более продвинутую аудиторию, чем arduino, m5stack и многие другие.
        На тех, кому распределить пины и распределить модули по шинам оптимальным образом - по приколу и в кайф.


        1. smart_alex Автор
          21.05.2024 08:42

          Я уже года два имею дело с проектом и архитектурой Lavritech, которая ушла на этом пути гораздо дальше next.module - у вас 2, а там до 6-7 слоёв хардверной абстракции.

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


          1. rnadyrshin
            21.05.2024 08:42

            Бесспорно


  1. rnadyrshin
    21.05.2024 08:42
    +1

    нужны либо «толстые квадратные» пины, либо покрытие их чем-то вроде золотого напыления, обеспечивающее надёжный контакт.

    Пины уже квадратные и с покрытием. Впрочем, и их тоже нужно еще тестить на надежность


  1. rnadyrshin
    21.05.2024 08:42
    +1

    Что и как выводить — вопрос дискуссионный, как минимум, набор разных напряжений, земля, I2C, SPI, GPIO/UART, возможно отдельный разъём для RS485.

    Можете объяснить, зачем нужно выводить эти шины наружу? Я не понял идею


    1. smart_alex Автор
      21.05.2024 08:42

      Тут зависит от концепции вашей системы. Нет документа, который чётко формализует что же вы делаете.

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

      Это то, что у Wiren Board и Lavritech называется WBIO.


      1. rnadyrshin
        21.05.2024 08:42

        Ааа, нее. Концепция такая:
        Всё, что на межмодульном интерфейсе - всё остаётся внутри корпуса устройства. Модули могут выводить разъёмы наружу - GPIO, дискретные и аналоговые входы и выходы, интерфейсы. Все выводимые наружу сигналы имеют минимально необходимые защиты (от статики, перегрузки и т.п.)


  1. rnadyrshin
    21.05.2024 08:42

    Если немного увеличить площадь платы, как было описано выше, то можно либо добавить пины 12 В в разъёмы (возможно не по одному, а по 2-3-4 пина) или дополнительно установить какие-то детали, например кнопки, на боковую поверхность модуля.

    Если посмотрите на подсистему питания и на реализацию, например, транзисторных выходов, то обнаружите, что в next.module создательно сделано так, чтобы все потенциально мощные потребители не нагружали питание девайса. Потому что если их питать от девайса, то это решение тяжело масштабировать и тяжело объяснить пользователю почему питание проседает и как это исправить. Ведь транзисторных выходов может быть 8, а может быть 256 и нагрузки пользователь подключит к ним разнообразные.

    Почему кстати именно 12В по вашему необходимы? Почему не 24В или любое другое напряжение?


    1. smart_alex Автор
      21.05.2024 08:42

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

      12 - это не догма, просто один из возможных и востребованных вариантов.


      1. rnadyrshin
        21.05.2024 08:42

        Смотрите какая концепция.

        Дополнительные напряжения нужны для входов и выходов, кол-во которых и потребляемая мощность заранее неизвестны.

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

        Мощность этого отдельного блока питания и выходное напряжение выбирается исходя из требований потребителя. Если есть группа реле на 24В, то ставим блок питания на 24В с соответствующей мощностью.

        Посмотрите на типовые схемы подключения к DI и DO. В них блок питания, питающий датчики и реле - внешний по отношению к девайсу.


        1. smart_alex Автор
          21.05.2024 08:42
          +1

          Понятно.

          Может быть имеет смысл потратить немного времени и формализовать концепцию системы - просто в текстовом документе описать её архитектуру и основные принципы построения и работы.

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


        1. Indemsys
          21.05.2024 08:42

          Однако и тут опять выбран самый дорогой путь.

          В промышленных устройствах делают так:

          Не нужен никакой внешний источник питания. Какой ток будут потреблять входы определяет сам контроллер, он же и ограничивает ток. Он же и контролирует замыкания во внешних цепях. Т.е. добавляет диагностику.

          Диод в схеме управления реле не лучший вариант. Он замедляет отключение реле в 10 раз.


          1. rnadyrshin
            21.05.2024 08:42

            Ну как то однобоко вы на всё смотрите, очень категорично.
            В промышленных устройствах делают и так, и так, и эдак. У каждого подхода свои плюсы и минусы.

            У отдельного источника питания, естесственно, тоже есть свои плюсы:
            - Возможность поделить питание нагрузок на группы по уровню ответственности.
            - Возможность совмещать нагрузки с разным напряжением питания.
            - Простота ремонта в случае выхода из строя источника питания.
            - Возможность наращивать кол-во выходов заменяя источник питания выходов на более мощный.
            - Отсутствие "грязного" питания с индуктивными всплесками на внутренней цифровой шине. Про количество межмодульных соединений тоже не забываем.


            1. Indemsys
              21.05.2024 08:42

              Про "уровни отвественности" - какой-то непонятное определение. Если дивайс планируется для реально ответственных применений, то там вот такие делают схемы. В вашей архитектуре об ответственности явно думалось меньше всего.

              Когда бывают разные напряжения питания, то сразу специфицируют верхнюю границу, делают аналоговые входы с делителями и работают во всем диапазоне.

              Про удобство ремонта тоже не понял логику. Какое это удобство если надо заниматься двумя источниками вместо одного.

              Вы там не нарастите так количестов выходов что прям понадобится более мощный источник для управления оптосемисторами или реле. Поставили источник на пару ампер и хватит за глаза для такой системы. Один пин на ваших разъемах специфицирован на 3 ампера.

              "Грязное" питание по полной программе вы получите когда подключите два источника питания (особенно если они на разных фазах сидят) с двух концов этой этажерки. Даже оптроны не спасут от FTB помех. Кстати, не забывайте ставить резисторы и в подключенных к земле ногах оптронов.


  1. Indemsys
    21.05.2024 08:42
    +1

    Все же такая многоплатная архитектура вызывает вопросы по цене владения.
    Тут дорого все.
    - Небольшая модификация межмодульной шины приведет к необходимости переделки всех плат. Либо дизайн быстро морально устареет. Уже сейчас восходит I3C и другие перспективные интерфейсы.
    - Узкая межмодульная шина удорожает дизайн из-за допролнительных микросхем расширителей IO
    - Такое количество плат обойдется дороже чем одна или две.
    - Печать уникального корпуса тоже дорого.
    - Собирать и разбирать такую сборку - трудоёмко.
    - Отлаживать осциллографом тоже нереально трудоемко. До промежуточных плат просто не добраться.

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

    И только одинокий ESP32 как бы намекает, что по задумке наверно хотели сделать бюджетно.

    Думаю если бы был конкурс на худшую архитектуру, то эта бы победила.


    1. rnadyrshin
      21.05.2024 08:42
      +1

      Захотелось провести конкурс на худшую архитектуру


  1. nafikovr
    21.05.2024 08:42