Embedded-разработка для IoT-устройств: STM32, ESP32, embedded Linux
Гайд для CTO IoT-стартапа и главного инженера: выбор MCU (STM32 / ESP32 / NXP), RTOS vs bare-metal, embedded Linux, OTA-обновления. Бюджет 2-12 млн ₽, срок 3-9 месяцев.
Embedded-разработка для IoT — это создание прошивки, работающей на ограниченных по ресурсам микроконтроллерах или одноплатных компьютерах, обеспечивающей сбор данных с датчиков, обмен с другими системами по промышленным протоколам, защищённую связь с облаком и удалённое обновление. От качества embedded-разработки зависит, проработает ли устройство 5-10 лет в промышленной среде, выдержит ли температурные и электромагнитные нагрузки, и можно ли его обновить без выезда сервисной бригады.
Эта статья — для CTO IoT-стартапа, главного инженера производства, founder’а hardware-стартапа с прототипом. Без академической теории, с реальными платформами 2026 года, выбором между bare-metal, RTOS и embedded Linux, бюджетами 2-12 млн ₽ и типовыми ошибками embedded-проектов.
Выбор микроконтроллера
Выбор MCU — первое решение проекта, определяющее границы возможностей устройства.
STM32 (STMicroelectronics) — отраслевой стандарт для промышленных и измерительных задач.
- STM32F4 — базовый уровень, ARM Cortex-M4, до 180 МГц, 1-2 МБ flash. Цена модулей 200-600 ₽. Подходит для большинства промышленных датчиков и контроллеров.
- STM32H7 — производительные задачи, Cortex-M7, до 480 МГц, до 2 МБ flash. Цена 800-2000 ₽. Подходит для сложных алгоритмов, DSP, нескольких параллельных протоколов.
- STM32L4 / L5 — ультра-энергоэффективные, для устройств с батарейным питанием. Подходит для удалённых датчиков, носимой электроники.
Доступность STM32 в РФ в 2026 году нормализована, поставки идут через параллельный импорт и официальных дистрибьюторов.
ESP32 (Espressif) — самый массовый MCU для подключённых устройств.
- Встроенные Wi-Fi и Bluetooth — не нужны дополнительные модули
- Мощный двухъядерный процессор, до 240 МГц
- Цена 200-500 ₽ за модуль
- Большое сообщество, библиотеки для всего, развитая экосистема
Варианты:
- ESP32-S3 — для AI-нагрузок (vector extensions для inference)
- ESP32-C3 — бюджетный, RISC-V, для простых задач
- ESP32-C6 — последнее поколение с поддержкой Wi-Fi 6 и Bluetooth 5.4
ESP32 удобен для прототипирования и для устройств, где Wi-Fi или Bluetooth — основной канал связи.
NXP i.MX RT — для задач между MCU и SoC. ARM Cortex-M7/M33, до 1 ГГц, расширенная периферия. Цена 1000-3000 ₽. Подходит для сложных устройств с требованиями к производительности.
Raspberry Pi RP2040 — для прототипов и hobby-проектов. ARM Cortex-M0+, 133 МГц. Низкая цена, простая работа, но ограниченная производительность.
Отечественные MCU. К1986, К1921 (Миландр), КОМДИВ (НИИЭТ) — для специфических задач, где требуется отечественное происхождение. Реальная экосистема и инструментарий пока уступают зарубежным аналогам.
Bare-metal, RTOS или embedded Linux
Выбор «операционной среды» — второе ключевое решение.
Bare-metal (без операционной системы).
- Прямое программирование на голом железе, без планировщика
- Минимальное энергопотребление и память
- Гарантированная отзывчивость
- Сложно поддерживать рост функциональности
Подходит для:
- Простых датчиков с одним протоколом (например, термопара с Modbus)
- Устройств с батарейным питанием и долгим временем работы
- Критичных по времени задач (управление в реальном времени)
RTOS (Real-Time Operating System).
- FreeRTOS — самая массовая, бесплатна, портирована на сотни МК. Простая, документация и комьюнити в порядке.
- Zephyr — современная альтернатива от Linux Foundation. Более развитая экосистема драйверов и подсистем (Bluetooth, USB, файловые системы), модульная архитектура. Активно развивается.
- ThreadX — RTOS от Microsoft (бывший Express Logic), коммерческая, сертифицирована для медицинских и автомобильных применений.
Подходит для:
- Устройств средней сложности
- Параллельной работы нескольких задач (опрос датчиков + сетевой обмен + локальная логика)
- Реализации нескольких протоколов
Embedded Linux.
- Полноценная ОС для устройств с высокой производительностью
- Платформы: Raspberry Pi CM4, NXP i.MX, Allwinner H, Rockchip
- Доступны все возможности Linux (драйверы, сеть, файловые системы, графика)
- Контейнеризация (Docker), удобный OTA
Подходит для:
- Шлюзов (edge gateway), агрегирующих данные с многих устройств
- Сложных терминалов с дисплеями и GUI
- Устройств с тяжёлой обработкой (ML inference, видео)
Стандартный выбор:
- Простой датчик → bare-metal на STM32 или ESP32
- IoT-устройство среднего класса → FreeRTOS или Zephyr
- Шлюз или сложное устройство → embedded Linux
Buildroot vs Yocto для embedded Linux
Если выбрано embedded Linux — нужен инструмент сборки кастомного дистрибутива под целевое устройство.
Buildroot.
- Простой и быстрый
- Описание системы — один или несколько config-файлов
- Сборка 30-60 минут первая, инкрементально быстрее
- Подходит для команд 2-5 разработчиков и проектов сроком до года
- Документация компактная, легко освоить
Yocto / OpenEmbedded.
- Мощный и гибкий, но сложный
- Описание системы — рецепты (recipes) и слои (layers)
- Сборка 2-8 часов первая, далее инкрементально
- Подходит для сложных проектов, нескольких поколений устройств, корпоративных процессов
- Стандарт для крупных производителей (Bosch, Siemens, Toradex)
Стандартный выбор для стартапа и среднего проекта — Buildroot. Для крупного промышленного проекта или нескольких поколений устройств — Yocto.
OTA-обновления: обязательная инфраструктура
OTA (Over-The-Air) — удалённое обновление прошивки через сеть, без физического подключения программатора. В современном IoT — обязательная часть архитектуры.
Зачем нужно:
- Экономика. Без OTA любая ошибка требует физического выезда. На тысячах устройств это разорительно.
- Безопасность. Критические патчи (CVE в сетевых стеках, криптобиблиотеках) должны раскатываться оперативно.
- Развитие. Добавление функциональности без замены железа.
Стандартная архитектура OTA:
-
Bootloader с поддержкой A/B-разделов или fallback. Прошивка имеет два слота: текущий и резервный. Обновление пишется в свободный слот, после успешной проверки происходит переключение. При сбое — возврат к предыдущему рабочему слоту.
-
Подписанные прошивки. Каждый бинарник подписывается секретным ключом (ECDSA или HMAC), bootloader проверяет подпись перед прошивкой. Защищает от подделок.
-
Проверка целостности. Хеш-сумма прошивки сверяется перед запуском.
-
Отказоустойчивый процесс. Watchdog проверяет, что новая прошивка стартует. Если нет — автоматический откат.
-
Транспорт. HTTPS (для устройств с подключением к серверу обновлений) или MQTT (для устройств в pub-sub архитектуре). Для embedded Linux — Mender, RAUC, SWUpdate.
На MCU — обычно реализуется с использованием библиотек MCUBoot или собственного бутлоадера. На embedded Linux — Mender, RAUC, SWUpdate.
Промышленные протоколы
Современная embedded-прошивка для IoT поддерживает 2-4 протокола для гибкости интеграций.
| Протокол | Использование | Сложность реализации |
|---|---|---|
| Modbus RTU (RS-485) | Обмен с PLC и SCADA | Минимум 5-10 КБ кода |
| Modbus TCP | То же по Ethernet | 5-15 КБ |
| OPC UA | Серьёзные промышленные системы | 100-500 КБ на embedded |
| CAN / CANopen | Автомобильная и промышленная техника | 10-30 КБ |
| Profinet | Оборудование Siemens-совместимое | Лицензия + 30-80 КБ |
| MQTT | IIoT, pub-sub | 5-15 КБ |
| CoAP | REST-like для constrained устройств | 5-20 КБ |
| LoRaWAN | Агро, утилиты, дальняя связь | Радио + библиотека |
| HTTPS | Прямая связь с облаком | 30-100 КБ |
| WebSocket | Real-time связь | 10-30 КБ |
| gRPC (на embedded Linux) | Современный микросервисный обмен | На Linux — без проблем |
Подробнее по каждому протоколу — гайд по промышленным протоколам.
Безопасность: Secure Boot, шифрование, ключи
Безопасность в IoT — не «добавим потом», а архитектурное решение с первого дня. Стандартный набор мер:
Secure Boot. Бутлоадер прошит в OTP-памяти MCU (или защищённой flash), проверяет подпись прошивки перед запуском. Защищает от подмены прошивки. Реализуется с использованием встроенных средств MCU (STM32 Secure Bootloader, ESP32 Secure Boot) или собственного решения.
Шифрование прошивки. Бинарник зашифрован, ключ хранится в защищённой памяти MCU. Защищает от reverse engineering. Реализуется встроенными средствами MCU.
Защищённое хранение ключей. Серверные сертификаты, ключи криптографии хранятся в защищённой памяти (Secure Element, eFuse, специальный регион flash). На embedded Linux — Trusted Execution Environment (TEE), HSM.
TLS для всех сетевых соединений. Никаких HTTP, MQTT без шифрования, plain Modbus TCP по интернету. Только TLS 1.2+ с разрешёнными шифронаборами.
Уникальные ключи на устройство. Каждое устройство имеет свой набор ключей, привязанных к серийному номеру. При компрометации одного устройства — не компрометируется флот.
Для объектов КИИ дополнительно — сертифицированные СКЗИ (КриптоПро, ViPNet), специальные требования ФСТЭК. См. защита КИИ на it-fusion.ru.
Промышленные условия эксплуатации
Embedded-устройства для производства должны выдерживать:
- Температурный диапазон -40..+85°C для индустриальных, до +125°C для специфических
- EMI (электромагнитные помехи) — A class для промышленных условий, специальные требования для электростанций и подстанций
- Защита от ESD (электростатические разряды) — минимум 8 кВ contact discharge
- Влажность — 0-95% non-condensing, для уличных применений с конденсатом
- Вибрации и удары — по требованиям конкретного применения
- Пыль и влага — корпус с защитой IP54-IP67 в зависимости от размещения
Эти требования влияют на выбор компонентов, схемотехнику, разводку PCB, корпус. Дешёвые консьюмерские компоненты с диапазоном 0-70°C не подходят для промышленных условий — нужны индустриальные версии.
Сроки и бюджет
| Тип устройства | Срок | Бюджет |
|---|---|---|
| Простая прошивка датчика (1 протокол, RTOS опционально) | 2-4 мес | 0.8-2 млн ₽ |
| IoT-устройство среднего класса (RTOS, 2-3 протокола, OTA) | 4-7 мес | 2-5 млн ₽ |
| Сложное устройство (embedded Linux, web-интерфейс, сложная логика) | 6-12 мес | 5-12 млн ₽ |
| Разработка с нуля включая железо (схемотехника, PCB) | +2-4 мес | +1-4 млн ₽ |
| Сертификация (ЕАС, ФСТЭК при необходимости) | +2-4 мес | +0.5-2 млн ₽ |
Связь с другими блоками
См. подробнее:
- Промышленный IoT — общий контекст архитектуры IIoT
- Промышленные протоколы — Modbus, OPC UA, MQTT и другие
- Edge computing — обработка данных на устройстве и шлюзе
- Разработка SCADA-систем — серверная сторона связки с прошивкой
- Защита промышленных устройств — it-fusion.ru/zashchita-kii/
Типовые ошибки
Ошибка 1: Прототип на консьюмерских компонентах, продакшен на тех же. Прототип работает на ESP32 в офисе, на производстве отказы из-за EMI и температуры. Лечение — индустриальные компоненты с самого начала разработки прошивки.
Ошибка 2: Игнор OTA на старте. «Сделаем потом, когда будут тысячи устройств». На 100 устройствах любой баг требует выезда. Лечение — OTA в архитектуре с первого дня.
Ошибка 3: Plain-текстовые протоколы по интернету. Modbus TCP, MQTT без TLS прямо в облако. Любой может перехватить и подменить данные. Лечение — TLS обязателен для всех сетевых соединений.
Ошибка 4: Один ключ на весь флот. Все устройства подписаны и шифруются одним ключом. Утечка с одного — компрометация всех. Лечение — уникальные ключи на устройство.
FAQ об embedded-разработке
См. блок FAQ ниже — 7 главных вопросов CTO и главных инженеров.
Embedded-разработка для IoT — это не «прошить контроллер», а 3-12-месячный проект с правильным выбором MCU, RTOS, инфраструктуры OTA, безопасности, протоколов. Реальный диапазон — 2-12 млн ₽ для разных уровней сложности. Главные риски — консьюмерская элементная база, игнор OTA, plain-текстовые протоколы. Если планируете embedded — начните с архитектурного обследования: 2-3 недели на выбор платформы, оценку периферии, проектирование OTA. Это окупится на этапе масштабирования флота в разы.
Стандарты и регуляторы
Архитектура и реализация описанных систем опирается на международные и российские стандарты. Эти документы — обязательный справочный фундамент для проектирования и эксплуатации:
- IEC 62541 (OPC UA) — индустриальный стандарт безопасного и совместимого обмена данными между промышленным оборудованием и системами верхнего уровня (SCADA, MES, ERP).
- IEC 61131-3 (Programmable controllers) — стандарт языков программирования промышленных контроллеров (Ladder Diagram, Function Block Diagram, Structured Text, Instruction List, Sequential Function Chart). Российский эквивалент — ГОСТ Р МЭК 61131-3-2016.
- IEC 62443 (Industrial cybersecurity) — серия стандартов кибербезопасности промышленных автоматизированных систем (IACS), включая защиту АСУ ТП, SCADA, PLC. Базовый стандарт для построения защищённой архитектуры объектов КИИ.
- IEC 61511 (Functional safety — SIS) — функциональная безопасность приборных систем безопасности (Safety Instrumented Systems) на технологических объектах: нефтегаз, химия, энергетика.
FAQ о embedded
Какие микроконтроллеры использовать для IoT-устройств в 2026?
Зависит от задачи. STM32 (STMicroelectronics) — отраслевой стандарт для промышленных и измерительных задач: F4 для базового уровня, H7 для требовательных вычислений, L4 для энергоэффективности. ESP32 (Espressif) — самый массовый для подключённых устройств: встроенный Wi-Fi и Bluetooth, мощный двухъядерный процессор, цена 200-500 ₽ за модуль. Варианты — S3 для AI-нагрузок, C3 для бюджетных решений. NXP i.MX RT — для задач, где нужна мощность ARM Cortex-M7/M33 с advanced peripheral set. Raspberry Pi RP2040 — для прототипов и hobby-проектов. На российском рынке также — отечественные К1986, К1921 (Миландр) для специфических задач. Доступность ESP32 и STM32 в 2026 году нормализована, поставки идут через параллельный импорт и официальных дистрибьюторов.
RTOS, bare-metal или embedded Linux — что выбрать?
Зависит от сложности приложения и требований к времени отклика. Bare-metal — без операционной системы, прямое программирование на голом железе. Подходит для простых задач (датчик с одним протоколом), минимальное энергопотребление, гарантированная отзывчивость, но сложно поддерживать рост функциональности. RTOS (Real-Time Operating System) — лёгкая ОС с приоритетным планировщиком. FreeRTOS — самая массовая, бесплатна, портирована на сотни МК. Zephyr — современная альтернатива от Linux Foundation, более развитая экосистема драйверов и подсистем. Подходит для устройств средней сложности (несколько задач, протоколы, состояния). Embedded Linux — полноценная ОС для сложных устройств с высокой производительностью (Raspberry Pi CM4, NXP i.MX, Allwinner). Подходит, когда нужны графика, сложные сетевые стеки, контейнеры, OTA. Стандартный выбор: bare-metal для простых датчиков, FreeRTOS/Zephyr для большинства IoT-устройств, embedded Linux для шлюзов и сложных терминалов.
Чем отличаются Buildroot и Yocto для embedded Linux?
Оба инструмента служат для сборки кастомного дистрибутива Linux под целевое embedded-устройство. Buildroot — простой и быстрый. Описание системы — один или несколько config-файлов. Быстрая сборка (30-60 минут на первое полное собрание, потом инкрементально). Подходит для проектов до средней сложности, для команд без специализированного embedded-Linux инженера. Yocto / OpenEmbedded — мощный и гибкий, но сложный. Описание системы — рецепты (recipes) и слои (layers). Сборка значительно дольше (2-8 часов первая, далее инкрементально). Подходит для сложных проектов, где нужна тонкая настройка, поддержка множества платформ, корпоративные процессы. Стандартный выбор: Buildroot — для команд 2-5 разработчиков и проектов сроком до года. Yocto — для крупных проектов, нескольких поколений устройств, когда нужны воспроизводимость и масштабирование.
Что такое OTA-обновления и почему они критичны?
OTA (Over-The-Air) — удалённое обновление прошивки устройства через сеть, без физического подключения программатора. Критично, потому что. 1. Без OTA любая ошибка в прошивке требует физического выезда к устройству — на тысячах устройств это разорительно. 2. Безопасность: критические патчи (CVE в сетевых стеках, криптобиблиотеках) должны раскатываться оперативно. 3. Развитие функциональности: добавление фич без замены железа. Стандартная архитектура OTA. Bootloader с поддержкой A/B-разделов или fallback. Подписанные прошивки (HMAC или ECDSA). Проверка целостности перед прошивкой. Отказоустойчивый процесс: при неудаче — откат к предыдущей рабочей версии. Транспорт — HTTPS или MQTT. На MCU — обычно реализуется с использованием библиотек MCUBoot или собственного загрузчика. На embedded Linux — Mender, RAUC, SWUpdate.
Сколько стоит embedded-разработка прошивки для IoT?
Реальный диапазон. Простая прошивка датчика на MCU с одним протоколом (Modbus RTU или MQTT, без сложной обработки) — 800 тыс. — 2 млн ₽, срок 2-4 месяца. Прошивка IoT-устройства среднего класса (RTOS, несколько протоколов, OTA, защищённая связь) — 2-5 млн ₽, срок 4-7 месяцев. Сложное устройство (embedded Linux, web-интерфейс, сложная логика, кастомное железо) — 5-12 млн ₽, срок 6-12 месяцев. Если разработка идёт с нуля включая железо (схемотехника, разводка PCB, прототипирование) — добавляется 1-4 млн ₽ и 2-4 месяца. Сертификация (декларация соответствия, ЕАС, при необходимости ФСТЭК) — 0.5-2 млн ₽ и 2-4 месяца.
Какие промышленные протоколы поддерживают современные embedded-устройства?
Зависит от назначения. Промышленные устройства. Modbus RTU — обмен с PLC и SCADA по RS-485, минимальная реализация — 5-10 КБ кода. Modbus TCP — то же по Ethernet. OPC UA — современный стандарт для серьёзных промышленных систем, требует 100-500 КБ кода на embedded. CAN / CANopen — для автомобильной и промышленной техники. Profinet — для оборудования Siemens-совместимого. MQTT — лёгкий pub-sub протокол для IIoT, минимальная реализация 5-15 КБ. CoAP — REST-like для constrained устройств. LoRaWAN — широко в агро, утилитах. HTTPS — для прямой связи с облаком. На embedded Linux дополнительно — gRPC, WebSocket, расширенные стеки MQTT с QoS 2. Современная прошивка обычно поддерживает 2-4 протокола в одном устройстве для гибкости интеграций.
Что входит в полный стек embedded-разработки для IoT?
Стандартный набор работ. 1. Архитектурное проектирование — выбор MCU/SoC, RTOS, разбиение на задачи. 2. Драйверы периферии — UART, SPI, I2C, ADC, специфические сенсоры. 3. RTOS-инфраструктура — задачи, очереди, мьютексы. 4. Реализация протоколов — Modbus, OPC UA, MQTT (что нужно по ТЗ). 5. Сетевой стек — TCP/IP (lwIP или вендорский), TLS для безопасности. 6. Локальное хранение — flash-файловая система (LittleFS, SPIFFS) или EEPROM. 7. Бутлоадер с поддержкой OTA — MCUBoot или кастомный. 8. Защита (Secure Boot, шифрование прошивки, ключи в HSM). 9. Тестирование — модульные тесты, unit testing на железе, нагрузочные тесты. 10. Документация для производства (как прошить, как настроить, как откалибровать). 11. Поддержка после релиза. Полный цикл одного устройства — обычно 6-12 человек-месяцев работы embedded-инженера.