Когда речь идет о промышленном сборе данных, даже компьютер-одноплатник иногда избыточен по габаритам. Если устройство встраивается в щиток, в корпус датчика или в готовый прибор стороннего производителя, каждый лишний сантиметр платы —  это переделка корпуса. Для таких случаев мы разработали миниатюрный модуль — NAPI Slot, и еще несколько решений на его основе (мини-компьютер, коммутатор, мини-мрашрутизатор, шлюз). А сторонние разработчики могут сконструировать нужную плату с таким SOM под свои задачи.

Кратко про SOM

SOM (System on Module) — это модуль, на котором собраны процессор, оперативная память, флеш-память и обвязка вокруг них, но без разъемов под конкретную периферию. Такой модуль устанавливается на несущую плату (baseboard, ее еще называют carrier board), где уже разведены конкретные интерфейсы — Ethernet, USB, GPIO, слоты под SIM и так далее. 

Есть стандарты модулей, такие как SMARC, также есть известный формат SO-DIMM, RaspberryPI Computer Module, Orange PI CM4\CM5. Но для процессора RK3308 мы можем позволить себе меньший размер и не беспокоится за большой радиатор. Поэтому мы придумали “половинчика” с разъемом PIC-E. Притом этот формат появился не “сверху” как копия западного решения, а внутри команды как инициативная разработка, как попытка максимально уменьшить размер, но оставить полнофункциональный модуль. 

Фото микроминиатюрного SOM на базе Linux (NAPI Slot)
Фото микроминиатюрного SOM на базе Linux (NAPI Slot)

Идея миниатюрного SOM в том, что сам вычислительный модуль можно переиспользовать в разных устройствах, вставлять в проектные платы, не сильно их изменяя. Например, вы делаете сложное радиорелейное  оборудование, но вам нужен чип, который собирает телеметрию, дает веб интерфейс, статистику, обрабатывает внештатные ситуации. Napi-Slot не займет много места на плате, не потребует отдельного теплоотвода и будет выполнять все перечисленные функции и даже больше. 

Теперь почему задумались о NAPI Slot как о миниатурном SOM. Одноплатные компьютеры NAPI-C и NAPI-P с самого начала проектировались как самостоятельные устройства — с сетевыми интерфейсами, USB-разъемами, по сути они сразу готовы к работе при подаче питания в разъем Type-C.  

SOM-компьютер NAPI Slot устроен иначе. Этот System-on-Module имеет свое вычислительное ядро: процессор RK3308, 4 ядра ARM Cortex-A35, оперативную память, eMMC. И это собрано как отдельный модуль где вся периферия собрана на одном двустороннем разъеме PCI-E. Сам модуль вставляется в несущую плату, которая уже берет на себя питание, защиту, , датчики и остальную обвязку под конкретный проект.

Конфигурация модуля — 4-ядерный процессор Rockchip RK3308, 512 Мб ОЗУ и до 32 Гб eMMC в зависимости от исполнения. Этого хватает под Linux с Веб-сервером, Telegraf-комбайном, MQTT-брокером, Modbus-шлюзом или Zigbee-координатором  — т.е. задачи, для которых микроконтроллер уже мал, а полноценный Industrial PC избыточен. С NapiLinux или OpenWRT на борту устройство будет иметь не только полноценный Linux, но и Веб-интерфейс управления. 

Совместимость NAPI Slot с NAPI-C реализована на уровне архитектуры, интерфейсов  и программного стека. В обоих устройствах реализованы Ethernet, USB, UART, I2C, SPI.  Если вы сделали отладку вашего софта для NAPI-C, то он заработает и в Napi-Slot, что удобно. Пока инженеры делают плату под Napi-Slot — можно заранее подставить Armbian, NapiLinux или OpenWrt и отладить программную часть. Есть, конечно и нюансы которые надо знать потому что физически выводов в NAPI-Slot меньше, чем в Napi-C и нужно сверять карту GPIO. Но с точки зрения цифровых интерфейсов устройства идентичны. 

А вот распиновка и механическое крепление у NAPI Slot свои.  Спецификация NAPI Slot:

  • RK3308 processor (Cortex- A35 quad core)

  • Armbian Linux / NAPI Linux

  • Современное Linux ядро (kernel 6.1)

  • 512 Мб ОЗУ

  • 16/32 Гб ПЗУ (eMMC)

  • 1 × Ethernet 100 Мбит

  • 2 × USB 2.0

  • Питание +5 В

  • 3 × UART

  • SPI

  • 2 × I2C

Плата разработчика для быстрого прототипирования

Чтобы прошить и погонять NAPI Slot до того, как заказывать несущую плату под серийное изделие, мы сделали компактную плату разработчика (DevBoard). Модуль защелкивается в разъем без пайки, а питание платы приходит через обычный USB-C - отдельный блок питания искать не нужно.

Фото платы разработчика с подключенным в разъем NAPI Slot
Фото платы разработчика с подключенным в разъем NAPI Slot

На плате выведены все базовые интерфейсы модуля — UART, I2C, SPI, Ethernet, USB и слот microSD. Этого достаточно, чтобы поднять Linux, прошить eMMC и погонять GPIO с Modbus прежде, чем городить собственную разводку под конкретный проект.

Устройства на основе NAPI-Slot — полет фантазии

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

Собственный пример — мы сделали вариант промышленного компьютера «Сборщик‑универсал линейки FCU», где мы поставили NAPI Slot вместо NAPI-C и получили больше возможностей — второй Ethernet и встроенную консоль  (ниже будет раздел о сборщике подробнее).

Пример1. Готовый сборщик данных с 2-мя Ethernet и RS485

Как первый полноценный рабочий продукт мы сделали FCCM3308 (Сборщик-компакт) — промышленный компьютер, ориентированный на роль шлюза и сборщика данных. Основные характеристики включают крепление на DIN-рейку, работу без активного охлаждения, доступ по SSH и через веб. На этой платформе реализовано несколько ПАК-ов: modbus шлюз, snmp-шлюз, сбор метрологии и датчиков с хранением.

Фото компьютера-сборщика на основе SOM
Фото компьютера-сборщика на основе SOM

Ключевое отличие от базовой модели FCC3308 — два порта Ethernet вместо одного, консоль, дополнительное питание type-c  На практике это  устройство появилось из требования разделения сетей. Как это может быть в производственной практике: один интерфейс смотрит в цеховой сетевой сегмент с датчиками и Modbus-линией (промышленная сеть), второй — в корпоративную  сеть или во внешний канал связи.

Разделение снимает с сети обширный трафик датчиков и закрывает цеховой сегмент от остальной инфраструктуры фаерволом на самом сборщике, а не на отдельном маршрутизаторе.

Фото платы компьютера-сборщика данных с обозначением компонентов
Фото платы компьютера-сборщика данных с обозначением компонентов

Также два Ethernet-порта в  промышленности используются для резервирования линков (как на уровне Ethernet, так и на уровне IP).

Пример 2. Маршрутизатор (router) с 6-ю интерфейсами

Еще один пример того, что можно собрать на NAPI-Slot — демонстрационная плата, которую назвали NapiRouter. Идея такова — взять один модуль и вывести из него максимум сетевых интерфейсов, ничего не коммутируя аппаратно.

На плате распаяно шесть портов Ethernet — пять на 100 Мбит/с и один на 10 Мбит/с, плюс классический RS-485 для Modbus. Питание приходит через клеммник на изолированный DC/DC-преобразователь (9-36 В на входе, 5 В на выходе) — это стандартная практика для промышленных плат, когда напряжение в электрощитке нестабильно или в сети возможны просадки. Есть батарейка RTC для часов реального времени — полезно, когда устройство не всегда в сети и нужны корректные метки времени в логах даже после перезагрузки без NTP.

Ключевой момент — это именно маршрутизатор, а не свитч вопреки названию на плате. На ней нет отдельного коммутирующего чипа с аппаратной switching-фабрикой, как в обычном сетевом свитче. Каждый порт подключен к своему физическому трансиверу и в Linux виден как самостоятельный netdev - eth0, eth1, eth2 и так далее, каждый со своим IP, своей таблицей маршрутизации и своими правилами firewall. По сути NAPI-Slot здесь работает как маршрутизатор на шесть плечей, а не как коммутатор на шесть портов — разница принципиальная, если нужно развести независимые сегменты сети или изолировать друг от друга группы устройств.

На фото видно, как проверяли именно эту логику — последовательно пингуя разные подсети через разные порты (10.11.3.254, 10.22.2.254, 10.33.4.254, 10.44.3.254) и записывая результат от руки. Каждый порт действительно отвечает как отдельный интерфейс со своим адресом, а не как один свитч с общим broadcast-доменом.

На фото: первая “боевая” версия маршрутизатора — в процессе разработки 
На фото: первая “боевая” версия маршрутизатора — в процессе разработки 

Скоростей 100 Мбит/с и 10 Мбит/с здесь хватает — в промышленных сетях с Modbus и похожими протоколами, трафик редко превышает несколько килобайт в секунду на устройство, и упираться в пропускную способность канала на такой задаче практически невозможно.

Устройство собрано как демонстрация возможностей разнообразия плат и интерфейсов на NAPI-Slot, а не как готовый коммерческий продукт — но схему и подход можно взять за основу и адаптировать под свою задачу, если нужен многопортовый маршрутизатор компактных размеров и промышленные интерфейсы в одном устройстве. Я готов поделиться схемами и разводкой такой платы.

Пример 3. Коммутатор (switch) с 7-ю интерфейсами

На фото: коммутатор- база под Napi-Slot

На фото: коммутатор- база под Napi-Slot
На фото: коммутатор с установленным Napi-Slot
На фото: коммутатор с установленным Napi-Slot

Разнообразие компактных устройств на NAPI-Slot может быть больше, чем кажется на первый взгляд  — один и тот же модуль идет в основу и простого маршрутизатора, и полноценного управляемого коммутатора, в зависимости от того, что стоит на плате вокруг него.

Пример устройства №3 интересен с инженерной точки зрения. Здесь на плату добавлена отдельная микросхема управляемого гигабитного свитча Microchip [из линейки KSZ98xx с несколькими гигабитными портами и CPU-портом] — получился полноценный промышленный коммутатор на шесть гигабитных портов с аппаратной коммутацией, а сам NAPI-Slot через 100-мегабитный аплинк выполняет функцию управления и маршрутизации поверх этой switch-фабрики.

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

Разница с маршрутизатором в Примере №2 — там каждый порт независим и трафик между портами всегда идет через CPU, здесь же коммутация между шестью портами происходит на уровне отдельной микросхемы без нагрузки на процессор, а NAPI-Slot включается только когда нужно что-то маршрутизировать наружу или перенастроить конфигурацию портов и также для дополнительных функций по типу резервирования линков и функции точного времени. .

Еще один вариант сейчас в тестах  — концентратор RS-485/RS-232 в Ethernet, по сути расширение той же идеи, что и в Modbus-шлюзе на FCCM3308, но заточенное под работу с несколькими последовательными линиями одновременно, а не с одной.  Что объединяет все три примера устройств  — это скорость разработки и компактность. Периферия NAPI-Slot (I2C, USB и UART в первую очередь) устроена так, что позволяет "натянуть" поверх модуля практически любую функциональность — от дополнительного порта до готового датчика или модема, не переделывая вычислительное ядро. Программный стек при этом остается тем же самым, что и на других устройствах линейки NAPI, — меняется только обвязка вокруг модуля.

Три прошивки ОС на выбор

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

Прошивка

Что внутри и для чего

Armbian

Полноценный Debian-совместимый дистрибутив,с большим комьюнити. 

Debian

Классический Debian с пакетным менеджером.

NapiLinux + NapiConfig

Компактный линукс для Embedded с настройками через ssh и   браузер и функциями backup / restore.

NapiWRT (OpenWrt)

Компактный дистрибутив для маршрутизаторов. дополненный  Modbus-пакетами

ROSA-Linux

Официальная российская сборка с сертификатом ФСТЭК.
Содержит пакетный менеджер в стиле RedHat.


Все варианты готовых прошивок: https://napiworld.ru/downloads/images/

Репоитории по самостоятельной сборки: https://napiworld.ru/downloads/github/

Добавлю немного про NapiWRT. Сборка сделана поверх ванильного дерева OpenWrt — самого компактного дистрибутива Linux под встраиваемые устройства, в первую очередь роутеры и прочий сетевой hardware. Несмотря на комактность, система включает пакетный менеджер (opkg) и веб-интерфейс LuCI для управления через браузер.

Что стоит учитывать при конструировании устройств на SOM по типу NAPI Slot

●   512 Мб ОЗУ — достаточно для большинства задач, но надо быть осторожными с тяжелыми пакетами, такими как Grafana и InfluxDB.

●   Совместимость с NAPI-C -это совместимость софта, архитектуры и процессора, а не платы. В Napi-Slot меньше GPIO и нужно внимательно смотреть, чтобы не задействовать «несуществующие» пины.

Поведем итоги

SOM "NAPI Slot" закрывает нишу между микроконтроллером и полноразмерным одноплатником там, где под компьютер имеются очень ограниченные габариты, а пример сборщика данных FCCM3308 показывает, как этот модуль превращается в законченный промышленный шлюз — с DIN-рейкой, двумя Ethernet-портами и выбором из трех программных платформ под конкретную роль устройства. 

Весь стек снизу доверху,— Linux, OpenWrt, Zigbee2MQTT, Mosquitto, mbusd, Telegraf, InfluxDB — открытый (open source), и ни один из компонентов не завязан на закрытый стандарт производителя. Документация по модулю и устройствам доступна на  napiworld.ru/docs, инструкция по сборке NapiWRT и патчи — в ленте знаний.

Если будут вопросы, дополнения — пишите мне на почту (предпочтительно) или в ЛС Хабра.

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