
Начинающие разработчики электроники обычно проходят классический путь: сначала берут Arduino, подключают датчик, пишут десяток строк кода и радуются результату. Потом переходят на ESP32: там уже есть Wi‑Fi, можно делать более интересные вещи.
Но рано или поздно возникает задача, которая требует настоящего интернета: TCP/IP, SSH-доступ, запись данных в базу, удобная отладка. Тут оказывается, что микроконтроллеру для всего этого не хватает мощности: по сути, пришлось бы писать половину операционной системы с нуля.
Тогда возникает закономерный вопрос: а что если взять одноплатный Linux-компьютер и работать с ним так же просто, как с Arduino? Подключил датчик, написал скрипт, и готово. Именно так мы и придумали NAPI-C.
Прежде чем рассказывать о нашей плате, давайте разберёмся, в чём разница между двумя подходами.
Микроконтроллер (как в Arduino) незаменим, когда нужна:
Linux-платформа (одноплатный компьютер вроде Raspberry Pi или нашего NAPI-C) выигрывает там, где нужны:
Если вы делаете прототип, который в будущем станет интернет-устройством - будет отправлять данные на сервер, присылать уведомления и позволять управлять собой удаленно, Linux-платформа сокращает время разработки в разы. Вам не нужно реализовывать с нуля TCP/IP, шифрование, протоколы обмена данными и работу с файлами - всё это уже есть в системе.

NAPI-C — это компактный одноплатный компьютер на четырехъядерном процессоре. На нём установлен Linux, есть Ethernet, USB и самое главное — гребёнка с шагом 2,54 мм.
Этот шаг такой же, как у Arduino, Raspberry Pi и большинства популярных модулей. Это значит, что готовые платы расширения и датчики вставляются напрямую, без переходников и пайки.
На ножках доступны все основные интерфейсы:
Чтобы проверить идею, мы собрали макет на монтажной плате. В центре вместо Arduino - NAPI-C, вставленный в панельку (чтобы можно было легко снять и переставить на другую плату). Вокруг расположились:
Все модули вставлены в панельки или надеты на штырьки. Хотите заменить датчик температуры на другой? Сняли один, поставили другой - разводка остаётся прежней. Именно так и должен выглядеть удобный макет для прототипирования.
На обратной стороне платы соединения сделаны проводниками выглядит как «лапша» у радиолюбителя, но это рабочий и проверенный способ, когда нужно быстро собрать и проверить концепцию.

Монтаж на проводах - хороший способ для экспериментов, но не самый удобный для повторения. Через пару недель уже не помнишь, какой провод куда шёл.
Поэтому мы сделали готовую плату NapiSci по тому же принципу, что и конструкторы на базе Arduino. Вы просто берете готовые модули, вставляете их в посадочные места, и всё работает. Паяльник не нужен.
На плате есть всё необходимое:
Всё, что описано дальше в статье про работу с интерфейсами, на NapiSci работает точно так же. Разница только в том, что паяльник больше не нужен.
Здесь и есть главное отличие от Arduino. Там вы просто пишете в коде, что хотите использовать I2C или SPI, и всё сразу работает.
В Linux всё чуть иначе: интерфейсы описываются в специальном файле — Device Tree, который система читает при загрузке. Чтобы включить нужный интерфейс, нужно добавить одну строку в конфигурационный файл и перезагрузить плату.
В нашей сборке NapiLinux это делается максимально просто: открываете файл, добавляете названия нужных интерфейсов и перезагружаетесь. После перезагрузки появляются устройства, с которыми можно работать из Python или командной строки.
Звучит сложно, но на практике это одна строчка. И писать Device Tree с нуля нужно только в самых нестандартных случаях - для всего остального есть готовые файлы.
Пример 1: читаем датчик температуры через I2C
BMP280 — один из самых популярных датчиков в мире Arduino и ESP32. Он измеряет температуру, давление и влажность. Для Linux есть готовая Python-библиотека.
Что нужно сделать:
Единственное, что нужно поменять в стандартном примере, - номер шины. На NAPI-C датчик подключён к третьей шине, а на Raspberry Pi обычно к первой. Всё остальное работает без изменений.
Пример 2: измеряем высокую температуру через SPI
MAX6675 — это микросхема для работы с термопарой типа K. Она может измерять температуру до 1024°C с точностью 0,25°C. Часто используется в печах, паяльных станциях и на производстве.
В Linux работа с SPI выглядит так: открываете специальное устройство /dev/spidev2.0, читаете из него данные и преобразуете их в температуру. Данные приходят в виде 16-битного пакета, из которого нужно выделить 12 бит температуры и умножить на 0,25.
Вся работа — несколько строк кода на Python. И пример из интернета для Raspberry Pi работает на NAPI-C без изменений, кроме номера шины.
Пример 3: управляем светодиодами и читаем кнопку через GPIO
Работа с GPIO в Linux — отдельная история. Раньше использовали один способ (sysfs), теперь есть более современный (gpiod). Мы покажем оба.
Как расшифровать номер GPIO
Например, GPIO2_B5 означает:
Итоговый номер для современного интерфейса: 8 + 5 = 13.
Для старого интерфейса номер считается иначе: 2 × 32 + 8 + 5 = 77.
Управление реле
Одна команда в терминале, и реле включается или выключается. Ещё одна команда - можно прочитать текущее состояние.
Мигание светодиодов
Можно задать период переключения прямо в командной строке. Например, один светодиод мигает 2 раза в секунду, другой - 5 раз, третий - 10 раз. И всё это работает в фоновом режиме.
Чтение кнопки
Активируете нужный GPIO, читаете его состояние и узнаёте, нажата кнопка или нет.
NAPI-C решает проблему выбора между «сделать быстро на монтажке» и «сделать как полноценный сетевой узел». Вы получаете тот же удобный подход с модулями на штырьках, что и в мире Arduino, но внутри - полноценный Linux с SSH, Python и всеми сетевыми возможностями.
Главное, что нужно запомнить при переходе с микроконтроллеров на Linux:
Весь код из этой статьи взят с реально работающей демонстрационной платы, и вы можете повторить это на своём NAPI-C или NapiSci.
Напомним, что у нас действует специальная программа — тест-драйв для одноплатных компьютеров NAPI. Заполните анкету, и мы свяжемся с вами.