Овладение инструментарием разработчика встроенного IoT
Шкала 5-к-1
План обучения embedded-разработчика должен повторять спецификацию компонентов. Мы усвоили это на собственном опыте, развёртывая солнечный узел мониторинга почвы на базе ESP32, SIMCom сотового бэкхола и AWS IoT Core: прошивка, железо, радиоканалы и облачные workflow должны были сойтись все сразу, и пропуск даже одного элемента превращал «быструю» правку прошивки в недели отладки.
Чтобы сохранить фокус, мы оцениваем каждую компетенцию по шкале 5-к-1 — фреймворку, полностью независимому от технологий:
| Уровень | Что означает | Почему важно |
|---|---|---|
| 5 = Must-have | Язык ядра, необходимый инструментарий, фундаментальные концепции | Без этого не получится выпустить продукт |
| 4 = Оптимизаторы | CI/CD, автоматизированное тестирование, усиление безопасности, performance tuning | Превращают прототипы в надёжные продукты |
| 3 = Ускорители workflow | Дашборды, продвинутая отладка, cloud ops | Упрощают повседневную разработку |
| 2 = Nice-to-have | Специализированные возможности, которые пригодятся позже | Добавляют полировку, когда есть время |
| 1 = Специализации | Углублённые темы для нишевых областей или будущего масштабирования | Браться, когда use-case требует |
Как применять где угодно
- Определите конечную цель. Что означает «готов к работе» или «готов к продакшену»?
- Перечислите 5-ки. Абсолютный набор выживания.
- Определите 4-ки. Практики, которые закаляют и масштабируют решение.
- Заполните 3-ки. Инструменты качества жизни и оптимизации.
- Добавьте 2-ки и 1-ки. Специализированная глубина для больших команд или продвинутых функций.
Быстрое доказательство универсальности
- Front-end web-разработка → 5-ки: HTML/CSS, современный JS, Git… • 4-ки: React/Vue, TypeScript, Jest, CI/CD… • 3-ки: Storybook, e2e-тесты… • 2-ки: PWA, анимации… • 1-ки: WebGL, data-viz.
- Data Science / MLOps → 5-ки: Python, NumPy/Pandas, статистика… • 4-ки: TensorFlow/PyTorch, Docker, unit-тесты… • 3-ки: feature stores, MLflow… • 2-ки: edge inference… • 1-ки: federated learning.
Оценивая влияние и частоту каждой темы, вы вычерчиваете чёткий путь и избегаете перегрузки.
Как выглядят 5-ки для нашего стека ESP32 + SIM + AWS
- Владение C/C++ — язык ESP-IDF и FreeRTOS hooks.
- Освоение ESP-IDF (или Arduino-ESP32) — Wi-Fi, BLE, ADC, API deep sleep.
- Основы электроники — level-shifting SIM UART, чтение NPK-зондов, EMI-гигиена.
- Расчёт power budget и Li-ion/солнечная зарядка — поддержание жизни 4 А·ч 18650 в пасмурные недели.
- Надёжная связность (Wi-Fi, SIM AT, MQTT/TLS) — безопасная передача данных сенсоров в AWS.
Освойте эти пять — и вы можете выпустить работающий прототип. Поднимитесь в 4-ки — CI pipeline, продвинутый FreeRTOS, OTA, безопасность — и у вас будет продукт, который выживет в поле. 3-ки, 2-ки и 1-ки завершают профессиональный инструментарий: дашборды, compliance и доменная глубина.
Последующая статья — не чек-лист; это последовательная дорожная карта, привязанная к реальным аппаратным решениям. Начните с 5-ок, пройдите через 4-ки, и к тому моменту, когда вы доберётесь до территории 3–1, у вас будет и уверенность, и контекст, чтобы применять их там, где они важнее всего, — от макетной платы до продакшена.
Навыки для embedded-разработчиков
Легенда – Важность
5 = Незаменим (must-have для повседневной работы)
4 = Очень важен (нужен в большинстве проектов)
3 = Полезен (часто помогает, выучить скоро)
2 = Nice-to-have (выучить, когда будет время)
1 = Специализированный / ситуационный
| # | Навык / инструмент | Зачем нужен для продукта на базе ESP32, измеряющего почву | Важность |
|---|---|---|---|
| 1 | C / C++ | Основные языки для ESP-IDF, Arduino core и драйверов периферии. | 5 |
| 2 | ESP-IDF (native) или Arduino-ESP32 | Даёт прямой доступ к Wi-Fi, BLE, GPIO, ADC, UART, I²C и API FreeRTOS. | 5 |
| 3 | Основы FreeRTOS | Планирование задач, watchdog, очереди и энергоэффективные режимы сна. | 4 |
| 4 | Git & GitHub / GitLab | Контроль версий, code review и CI hooks. | 5 |
| 5 | VS Code | Лёгкая кросс-платформенная IDE с сильными расширениями ESP-IDF & PlatformIO. | 4 |
| 6 | PlatformIO | Сборка, прошивка, unit-тесты и статический анализ embedded-проектов из VS Code. | 4 |
| 7 | Linux CLI / WSL | Тулчейны, скрипты сборки, отладка OpenOCD и контейнеризированные CI-раннеры. | 3 |
| 8 | Фреймворк unit-тестирования (Unity / CppUTest) | Регрессионные тесты для сенсорной математики, парсеров связи, логики состояния батареи. | 3 |
| 9 | Continuous Integration (GitHub Actions / GitLab CI) | Автоматизация сборки, тестов, линтинга и проверок размера прошивки при каждом push. | 3 |
| 10 | Jira (issues) & Confluence (docs) | Отслеживание задач, багов, требований и заметок по дизайну в команде. | 3 |
| 11 | Цифровая и аналоговая электроника | Чтение выходов NPK-датчиков, level-shifting UART SIM-модуля, EMI-мигация. | 5 |
| 12 | Проектирование печатных плат (KiCad / Altium) | Кастомная плата для ESP32, NPK-интерфейса, Li-ion зарядного устройства и солнечного MPPT. | 4 |
| 13 | Расчёт power budget и зарядка Solar-Li-ion | Подбор панели, зарядной ИС, преобразователей и малопотребляющих состояний прошивки. | 5 |
| 14 | Управление аккумулятором (18650, безопасность и coulomb counting) | Защита от перенапряжения/глубокого разряда и оценка SoC. | 4 |
| 15 | Сотовая связь (AT-команды SIMCom, PPP, TCP/IP) | Облачная связность, когда в поле нет Wi-Fi. | 5 |
| 16 | IoT-протоколы (MQTT / HTTPS) | Лёгкий, безопасный uplink данных на сервер или в облако. | 4 |
| 17 | Основы безопасности TLS / mbedTLS | Шифрование данных и аутентификация устройства облачных endpoint. | 4 |
| 18 | Калибровка и компенсация датчиков | Влияние температуры/влажности на показания NPK; полевые калибровочные кривые. | 5 |
| 19 | Логирование данных и OTA-хранилище (SPIFFS, LittleFS, SD) | Локальный бэкап при потере связности; staging обновления прошивки. | 3 |
| 20 | Поток удалённого OTA-обновления | Поддержка тысяч развёрнутых устройств. | 4 |
| 21 | Теория управления и оценки состояний | Опционально — помогает с продвинутой фильтрацией (Kalman, PID) или адаптивной выборкой. | 2 |
| 22 | Python / Bash скрипты | Парсинг логов, прошивка на производственной линии, автоматизация тестов. | 3 |
| 23 | Основы облака и дашбордов (AWS IoT Core, Azure IoT, InfluxDB + Grafana) | Хранение, визуализация и алерты по метрикам почвы. | 3 |
| 24 | Регуляторные и экологические требования (CE, FCC, IP-рейтинг) | Обеспечивают легальное развёртывание и полевую robustness. | 3 |
| 25 | Инструменты документирования (Markdown, Doxygen) | Генерация поддерживаемой API и HW-документации. | 3 |
Как читать таблицу
- Начните с 5-ок: владение языком, SDK микроконтроллера, основы железа, проектирование питания, знание датчиков и сотовая связь — критичны для надёжного полевого устройства.
- Далее 4-ки: среда разработки, оптимизация питания, OTA, RTOS и безопасность превращают работающий прототип в продакшен-продукт.
- 3-ки дополняют профессиональный workflow (CI, unit-тесты, облачные бэкенды, PCB CAD).
- 2-ки и 1-ки добавляют глубину для больших команд или продвинутых функций и могут быть отложены при жёстком графике.
- Используйте это как дорожную карту навыков: двигайтесь слева направо по шкале важности по мере созревания проекта.
1 – C/C++
Уровень: 1 – Абсолютный новичок
– Синтаксис и структура C: модель компиляции (source → object → executable), функция main()
– Базовые типы данных: int, char, float, double, bool
– Переменные и константы: объявление, инициализация, квалификатор const
– Операторы: арифметические (+, –, *, /, %), присваивание, инкремент/декремент
– Управление потоком: if/else, switch, циклы for/while/do-while
– Простой ввод/вывод: printf, базовый консольный вывод
– Введение в указатели: объявление указателя, разыменование
– Сборка и отладка: компиляция с gcc -o, интерпретация базовых ошибок компилятора
Уровень: 2 – Новичок
– Память и указатели: арифметика указателей, указатели vs массивы, введение в malloc/free
– Структурированные типы: struct, union, typedef
– Основы препроцессора: #define, #include, include guards
– Классы хранения: auto, static, extern, правила области видимости и линковки
– Строки и массивы: char[], строковые функции (strcpy, strlen и др.)
– Модульный код: разделение на несколько .c/.h файлов, основы makefile (правила, цели)
– Базовые инструменты отладки: шаги gdb, breakpoints, просмотр переменных
Уровень: 3 – Средний
– Динамическое управление памятью: heap vs stack, типичные паттерны утечек, использование инструментов вроде Valgrind
– Файловый ввод/вывод: fopen/fread/fwrite/fclose, файловые указатели, обработка ошибок
– Побитовые операции: маски, сдвиги, установка/сброс битов, enum и bit-fields
– Указатели на функции: callbacks, dispatch tables
– Обработка ошибок: return-codes, errno
– Основы C++: классы и объекты, конструкторы/деструкторы, спецификаторы доступа
– Основы STL: std::vector, std::string, простое использование std::map и итераторов
– Пространства имён и организация заголовков
Уровень: 4 – Продвинутый
– Особенности Embedded C: volatile, memory-mapped I/O, const во flash vs RAM
– Линкер и система сборки: кастомные linker scripts, размещение секций, флаги оптимизации (-O2, -Os), кросс-компиляционные тулчейны
– Возможности C++11/14/17: lambdas, auto, range-based for, constexpr, nullptr
– Умные указатели и RAII: unique_ptr, shared_ptr, управление ресурсами
– Основы шаблонов: function & class templates, template specialization
– Многопоточность: std::thread, мьютексы, condition variables, atomic types
– Концепции реального времени: interrupt service routines (ISRs), критические секции, mitigation priority inversion
Уровень: 5 – Эксперт
– Продвинутое метапрограммирование шаблонов: variadic templates, SFINAE, type traits
– Глубокая модель объектов C++: vtables, layout объектов, ABI-соображения
– Lock-free и low-latency concurrency: atomics, memory orderings, wait-free алгоритмы
– Внутреннее устройство компилятора и тулчейна: конвейеры проходов GCC/Clang, написание кастомных плагинов компилятора
– Performance tuning: выравнивание кэша, предсказание ветвлений, глубокий профайлинг (например, gprof, hardware counters)
– Bare-metal porting: реализация newlib stubs, минимальный C runtime, bring-up code
– Стандарты и безопасность: соответствие MISRA-C/C++, инструменты статического анализа (Coverity, Cppcheck)
– Вклад во фреймворки: написание/оптимизация драйверов для FreeRTOS или внутренностей ESP-IDF
2 – ESP-IDF (native) или Arduino-ESP32
Уровень: 1 – Абсолютный новичок
– Установка тулчейна ESP-IDF (Python, Git, скрипты ESP-IDF) или ядра Arduino-ESP32
– Настройка VS Code (или Arduino IDE) для разработки под ESP32
– Сборка и прошивка примера «blink»
– Изучение структуры проекта (CMakeLists.txt, sdkconfig или platformio.ini)
– Использование базовых команд idf.py (или Arduino): build, clean, flash, monitor
Уровень: 2 – Новичок
– GPIO: конфигурация пинов, чтение входов, управление светодиодами
– ADC: сэмплирование аналоговых каналов, преобразование raw-значений в напряжение
– UART и I²C: отправка/приём простых строк или байтов
– Wi-Fi station mode: сканирование AP, подключение, получение IP
– BLE peripheral: advertisement, подключение с телефонного приложения
– Настройка menuconfig (partition table, log level) или настроек платы Arduino
Уровень: 3 – Средний
– Задачи FreeRTOS, очереди и таймеры в рамках ESP-IDF
– Wi-Fi events API: обработка connect/disconnect, логика переподключения
– BLE client и GATT: обнаружение сервисов, чтение/запись характеристик
– SPI и I²C: интеграция и калибровка реального датчика (например, влажности почвы)
– HTTP(S) OTA-обновления: настройка разделов, запуск обновлений
– Использование esp_timer, детального логирования (ESP_LOG*) и кодов ошибок
Уровень: 4 – Продвинутый
– Создание reusable components (CMake Component API) или кастомных Arduino-библиотек
– Создание кастомной partition table и переключение разделов во время выполнения
– Безопасное provisioning: SmartConfig, BLE-based Wi-Fi setup
– Примеры продвинутого BLE (L2CAP, mesh)
– Оптимизация SPI DMA и настроек скорости/таймаута I²C шины
– Интеграция mbedTLS для MQTT over TLS
– Автоматизация сборки/прошивки/тестов в CI (GitHub Actions, скрипты ESP-IDF CI)
Уровень: 5 – Эксперт
– Контрибуция новых драйверов или исправлений багов в ядре ESP-IDF (например, калибровка ADC)
– Разработка кастомного bootloader или оптимизаций на уровне ISR
– Тонкая настройка heap-регионов FreeRTOS и параметров планировщика
– End-to-end secure boot и шифрование flash
– Real-time tracing и профайлинг (ESP-Trace, Perfcnt)
– Архитектура multi-project CMake workspaces
– Менторство: определение best practices ESP-IDF и внутренних component libraries
3 – Основы FreeRTOS
Уровень: 1 – Абсолютный новичок
– Понять, что такое RTOS и зачем он нужен
– Установить FreeRTOS (через ESP-IDF или PlatformIO) и изучить демо-пример «hello world» task
– Изучить базовый API создания и запуска одной задачи (xTaskCreate, vTaskStartScheduler)
– Разобрать system tick и как планировщик переключается между задачами
– Использовать vTaskDelay для блокировки задачи на фиксированное время
Уровень: 2 – Новичок
– Создавать несколько задач с разными приоритетами и размерами стека
– Использовать vTaskDelayUntil для периодического тайминга задач
– Понимать и применять критические секции (taskENTER_CRITICAL / taskEXIT_CRITICAL)
– Изучить состояния задач (Running, Ready, Blocked, Suspended)
– Использовать vTaskSuspend / vTaskResume для простого управления задачами
Уровень: 3 – Средний
– Обмен данными между задачами через очереди (xQueueCreate, xQueueSend, xQueueReceive)
– Синхронизация задач с помощью binary и counting semaphores (xSemaphoreCreateBinary, xSemaphoreTake)
– Координация событий через Event Groups (xEventGroupSetBits, xEventGroupWaitBits)
– Использование software timers (xTimerCreate, callback)
– Обнаружение и обработка stack overflows
Уровень: 4 – Продвинутый
– Оптимизация распределения памяти: выбор и настройка heap-схем (heap_1…heap_5) и понимание фрагментации
– Использование task notifications как лёгких binary semaphores или прямых сообщений в задачу
– Настройка tickless idle mode для малопотребляющих приложений
– Генерация и интерпретация run-time статистики (vTaskGetRunTimeStats)
– Интеграция FreeRTOS+Trace или Percepio Tracealyzer
Уровень: 5 – Эксперт
– Портирование FreeRTOS на кастомное железо или модификация port layer для продвинутых сценариев
– Реализация и настройка кастомных scheduler policies или hook-функций (vApplicationIdleHook, vApplicationMallocFailedHook)
– Проектирование сложных state machines с использованием продвинутых примитивов синхронизации (мьютексы с priority inheritance, recursive mutexes)
– Менторство команд по best practices, safety (MISRA-compliant code) и детерминированному поведению
4 – Git & GitHub/GitLab
Уровень: 1 – Абсолютный новичок
– Установить Git; настроить user.name и user.email
– Инициализировать репозиторий (git init) и клонировать существующие (git clone)
– Базовое отслеживание файлов: git status, git add, git commit
– Просмотр истории через git log, изменений через git diff
– Простой .gitignore для исключения файлов
Уровень: 2 – Новичок
– Создание и переключение веток: git branch, git checkout/git switch
– Настройка remote: git remote add, git fetch, git pull, git push
– Понимание origin/main vs локальных веток
– Разрешение простых merge-конфликтов через редактор или CLI
– Использование веб-интерфейса GitHub/GitLab для просмотра коммитов и веток
Уровень: 3 – Средний
– Merge vs rebase: git merge, git rebase; знать, когда что использовать
– Interactive rebase (git rebase -i) для причёсывания коммитов
– Тегирование: создание annotated и lightweight tags; push с git push –tags
– Работа с pull requests (GitHub) или merge requests (GitLab): создание, ревью, merge
– Базовый CI stub: простой YAML GitHub Actions или GitLab CI
Уровень: 4 – Продвинутый
– Управление submodules (git submodule) и subtrees
– Написание client-side hooks (pre-commit, pre-push) и простых server-side GitLab/GitHub hooks
– Защита веток и enforcement merge checks (status checks, approvals)
– Построение multi-stage CI/CD pipelines с кэшированием и артефактами
– Использование git bisect для локализации багов; cherry-pick конкретных коммитов
Уровень: 5 – Эксперт
– Администрирование настроек GitLab/GitHub org: permissions пользователей/групп, protected branches
– Архитектура monorepo-стратегий; управление большими файлами через Git LFS
– Разработка кастомного Git-инструментария или скриптов (libgit2, hooks, automation)
– Глубокое погружение во внутренности Git: object storage, packfiles, refs, index
– Определение и enforcement workflows (Gitflow, trunk-based, GitOps); менторство команды по best practices
5 – VS Code
Уровень: 1 – Абсолютный новичок
Темы:
- Установить VS Code на Windows, macOS или Linux
- Изучить интерфейс: Activity Bar, Side Bar, Editor Panes, Status Bar
- Открывать папки и файлы; базовое редактирование текста (вкладки, split views)
- Использовать встроенный терминал для запуска shell-команд
- Вызывать Command Palette (Ctrl+Shift+P) для частых действий
- Выполнять простой Find & Replace (Ctrl+F / Ctrl+H)
Уровень: 2 – Новичок
Темы:
- Находить и устанавливать расширения: C/C++ (ms-vscode.cpptools), ESP-IDF, Arduino-ESP32, PlatformIO IDE
- Настраивать User vs Workspace settings через settings.json
- Использовать встроенный Source Control view: stage, commit, push/pull
- Настраивать базовые Tasks (tasks.json) для сборки и прошивки ESP32 «Hello World»
- Навигировать по коду с Outline и Breadcrumbs views
- Вставлять и использовать простые code snippets
Уровень: 3 – Средний
Темы:
- Настраивать IntelliSense: задавать include paths и макросы в c_cpp_properties.json
- Создавать launch configurations (launch.json) для GDB-отладки через OpenOCD или JTAG
- Определять composite Tasks: build → flash → monitor → lint
- Работать в multi-root workspaces (code + docs + tests)
- Интегрировать линтеры и форматтеры (clang-format, cppcheck) как pre-save actions
- Отлаживать задачи FreeRTOS с thread-aware debugging и Debug view
- Использовать панель Problems и Test Explorer для unit-тестов
Уровень: 4 – Продвинутый
Темы:
- Использовать Remote Development: SSH, WSL и Docker container workspaces
- Создавать и делиться кастомными code snippets и file templates для ESP-IDF/PlatformIO
- Автоматизировать CI: экспортировать VS Code Tasks в GitHub Actions или GitLab CI pipelines
- Настраивать keybindings и использовать Settings Sync для синхронизации конфигурации между машинами
- Разрабатывать reusable Task Providers через VS Code Tasks API
- Использовать conditional и function breakpoints, logpoints и watch expressions
Уровень: 5 – Эксперт
Темы:
- Разрабатывать и публиковать полноценные VS Code extensions (TypeScript & Extension API) для ESP32 workflows
- Архитектура больших multi-project workspaces с shared, versioned configurations
- Оптимизация производительности IDE: тонкая настройка активации расширений, сокращение времени запуска и потребления памяти
- Внедрение корпоративного распространения настроек (Settings Cycler, GPO-based deployment)
- Менторство команды по best practices VS Code и troubleshooting сложных workflow
- Вклад в сообщество VS Code: написание гайдов, sample repos, выступления на митапах или воркшопах
6 – PlatformIO
Уровень: 1 – Абсолютный новичок
Темы:
- Установить расширение PlatformIO IDE в VS Code (или PIO Core CLI)
- Создать новый PlatformIO проект (
pio init --board esp32dev) - Изучить структуру проекта:
platformio.ini,src/,lib/ - Собрать (
pio run) и загрузить (pio run --target upload) дефолтный пример «blink» - Открыть serial monitor (
pio device monitor) для просмотра вывода
Уровень: 2 – Новичок
Темы:
- Использовать Library Manager:
pio lib install,pio lib list, добавлять библиотеки вplatformio.ini - Настраивать несколько environments (
env:sections) для разных плат или режимов сборки - Задавать
build_flags,monitor_speedиupload_speedвplatformio.ini - Запускать clean builds (
pio run --target clean) и verbose builds (pio run --target verbose) - Использовать Unified Debugger (
pio debug) для установки breakpoints и пошагового прохождения
Уровень: 3 – Средний
Темы:
- Управлять Debug и Release сборками и OTA-enabled environments в одном
platformio.ini - Интегрировать unit-тесты с PlatformIO Test Runner и фреймворком Unity
- Добавлять статический анализ: включать
cppcheckилиclang-tidyчерез extra scripts или конфигиplatformio.ini - Автоматизировать кастомные pre- или post-build шаги с помощью
extra_scripts - Публиковать и потреблять приватные библиотеки через PlatformIO Registry
Уровень: 4 – Продвинутый
Темы:
- Создавать и публиковать кастомные Platforms и Boards packages для внутреннего или сообщественного использования
- Реализовывать продвинутые upload protocols (JTAG, OTA, кастомные upload-скрипты)
- Строить CI pipelines с использованием
pio ciскриптов для GitHub Actions, GitLab CI или Jenkins - Генерировать и автоматизировать code coverage отчёты для unit-тестов
- Профилировать размер прошивки и использование RAM через PlatformIO IDE Dashboard
Уровень: 5 – Эксперт
Темы:
- Контрибьютить улучшения или исправления в PlatformIO Core и официальные Community Platforms
- Разрабатывать кастомные PlatformIO plugins для расширения CLI и IDE возможностей
- Архитектура и поддержка больших monorepo или multi-project workspaces с использованием PIO Projects
- Написание продвинутых build hooks для интеграции корпоративных тулчейнов и deployment workflows
- Менторство команд по best practices PlatformIO и troubleshooting сложных кросс-платформенных задач сборки/отладки
7 – Linux CLI / WSL
Уровень: 1 – Абсолютный новичок
Темы:
- Открыть терминал в Linux или WSL
- Навигация по файловой системе:
ls,cd,pwd,mkdir - Просмотр и инспекция файлов:
cat,less,head,tail - Манипуляции с файлами:
cp,mv,rm,touch - Редактирование текста простым редактором (
nanoили базовыйvim)
Уровень: 2 – Новичок
Темы:
- Права доступа к файлам и владельцы:
chmod,chown, понимание битовrwx - Wildcards, globbing, piping (
|) и redirection (>,>>,<) - Поиск текста в файлах: основы
grep - Управление переменными окружения и shell profile (
.bashrc,.profile) - Установка и обновление пакетов пакетным менеджером дистрибутива (
apt,yum,pacman) - Подключение к удалённым хостам через
sshи передача файлов черезscp
Уровень: 3 – Средний
Темы:
- Написание Bash-скриптов: shebang, переменные, циклы, условия, функции
- Обработка текста с помощью
find,xargs,awk,sed - Управление процессами и задачами:
ps,top/htop,kill,jobs,bg/fg - Настройка udev rules для ESP32 USB/JTAG адаптеров
- Вызов кросс-компиляционных тулчейнов и систем сборки (
make,cmake,idf.py) из CLI - Запуск OpenOCD из командной строки для прошивки и отладки через JTAG/SWD
Уровень: 4 – Продвинутый
Темы:
- Разработка robust shell-скриптов: обработка ошибок, логирование, unit-тесты (ShellCheck)
- Автоматизация полных pipeline build–flash–test в shell и интеграция в CI (GitHub Actions, GitLab CI)
- Контейнеризация build-окружения с Docker или Podman; написание Dockerfiles для воспроизводимых сборок
- Удалённая отладка и синхронизация файлов:
sshport forwarding,rsync,tmux/screenдля сохранения сессий - Профилирование и отладка нативных инструментов:
strace,ltrace,perf
Уровень: 5 – Эксперт
Темы:
- Сборка и поддержка кастомных Linux-ядер или модулей для embedded-таргетов
- Архитектура и эксплуатация выделенных CI-раннеров (bare-metal или контейнеризированных), оптимизированных для embedded cross-compiles
- Внедрение продвинутого кэширования и распределённых сборок (ccache, distcc)
- Проектирование собственных CLI-фреймворков или тулчейнов, управление dotfiles между командами (Git-driven)
- Менторство других по best practices использования shell, терминальных workflow и автоматизации задач тестирования и деплоя железа
8 – Фреймворк unit-тестирования (Unity / CppUTest)
Уровень: 1 – Абсолютный новичок
Темы:
- Понять назначение и пользу unit-тестирования
- Установить Unity или CppUTest (через PlatformIO library, pip package или из исходников)
- Создать минимальный тестовый файл и включить заголовки фреймворка
- Написать простую тестовую функцию с использованием макроса TEST (Unity) или TEST_GROUP/TEST (CppUTest)
- Запускать test runner из командной строки и интерпретировать вывод PASS/FAIL
- Использовать базовые assertion macros (например, TEST_ASSERT, CHECK_EQUAL)
Уровень: 2 – Новичок
Темы:
- Организовывать тесты в suites или groups
- Реализовывать setUp() и tearDown() для test fixtures
- Использовать более широкий набор assertions: floats, strings, сравнения памяти
- Параметризовать тесты или циклически проходить по тестовым данным
- Интегрировать компиляцию и выполнение тестов в сборку PlatformIO или CMake
- Генерировать простые данные покрытия кода (например, через gcov) и просматривать базовые проценты покрытия
Уровень: 3 – Средний
Темы:
- Создавать stubs и fakes для hardware-зависимых функций (I²C reads, ADC conversions)
- Внедрять mocking library (CppUMock или CMock для Unity) для симуляции зависимостей
- Писать тесты для асинхронного кода: симуляция callbacks, прерываний или таймеров FreeRTOS
- Автоматизировать запуск тестов shell-скриптами или базовой CI job
- Собирать и анализировать детальные метрики покрытия (branch, function coverage)
- Тщательно тестировать граничные и ошибочные условия
Уровень: 4 – Продвинутый
Темы:
- Разрабатывать кастомные mock-реализации для low-level драйверов и абстракций периферии
- Использовать memory-leak detection plugins (CppUTest MemoryLeak detector)
- Портировать test runner на устройство для on-target unit-тестов
- Писать тесты для concurrency primitives: семафоры, очереди, task notifications в FreeRTOS
- Интегрировать отчёты покрытия и тестов в CI dashboard (JUnit/XUnit XML output)
- Использовать продвинутые assertion macros и возможности параметризации тестов
Уровень: 5 – Эксперт
Темы:
- Расширять или кастомизировать тестовый фреймворк: писать плагины, custom reporters или новые assertion macros
- Архитектура масштабируемой тестовой инфраструктуры across multiple projects и platforms
- Реализация hardware-in-the-loop (HIL) или firmware-in-the-loop (FIL) test harnesses с автоматизированным управлением fixtures
- Менторство команд по TDD, паттернам проектирования тестов и enforcement testing policies
- Контрибуция в open-source проекты Unity или CppUTest (исправления багов, новые функции)
- Оптимизация параллельного выполнения тестов, контейнеризированных тестовых окружений и минимизация overhead времени тестов
9 – Continuous Integration (GitHub Actions / GitLab CI)
Уровень: 1 – Абсолютный новичок
Темы:
- Узнать, что такое Continuous Integration (CI) и зачем она нужна (автоматизированная сборка и тесты)
- Определить популярные CI-сервисы: GitHub Actions vs. GitLab CI
- Создать простейший CI-config файл (
.github/workflows/ci.ymlили.gitlab-ci.yml) - Добавить job, который checkout код (
actions/checkoutилиgit clone) и печатает hello message - Триггерить workflow при каждом push в main и просматривать базовые логи в веб-интерфейсе
Уровень: 2 – Новичок
Темы:
- Расширить CI job установкой зависимостей (например, Python/pip, PlatformIO, ESP-IDF)
- Добавить шаги сборки: компиляция прошивки (
idf.py buildилиpio run) - Запускать unit-тесты через
pio testили custom test runner и интерпретировать pass/fail - Учиться читать и фильтровать лог для ошибок и предупреждений
- Коммитить и пушить изменения для триггера CI; исправлять простые ошибки сборки
Уровень: 3 – Средний
Темы:
- Разделять build, test, lint и static-analysis на отдельные jobs или stages
- Использовать built-in actions (или GitLab templates) для кэширования артефактов тулчейна (
actions/cache) - Реализовывать matrix build для параллельного тестирования нескольких плат или версий тулчейна
- Архивировать артефакты сборки (бинарники прошивки, отчёты тестов, данные покрытия) для скачивания
- Настраивать зависимости jobs и условное выполнение (
needs:в GitHub Actions,stage:в GitLab CI)
Уровень: 4 – Продвинутый
Темы:
- Интегрировать инструменты покрытия кода (gcov, lcov) и публиковать coverage badges
- Автоматизировать проверки размера прошивки и использования памяти; fail, если пороги превышены
- Деплоить OTA-ready прошивку на staging-устройство через SSH или custom runner
- Безопасно управлять секретами и токенами (GitHub Secrets, GitLab CI/CD variables)
- Использовать self-hosted runners или Docker-контейнеры для кастомных build-окружений
Уровень: 5 – Эксперт
Темы:
- Разрабатывать кастомные reusable CI actions или Docker images, оптимизированные для ESP32-сборок
- Архитектура multi-project pipelines: shared libraries, обработка submodules, cross-repo triggers
- Реализация продвинутых workflow: feature-branch previews, canary deployments, automatic rollbacks
- Обеспечение compliance с политиками protected branches, signed commits и audit logs
- Менторство и документирование best practices CI/CD across teams; обучение troubleshooting сложных pipeline failures
10 – Jira & Confluence
Уровень: 1 – Абсолютный новичок
Темы:
- Понять назначение issue tracking vs. документирования
- Зарегистрироваться в Jira Cloud (или подключиться к существующему инстансу)
- Навигация по интерфейсу Jira: проекты, issues, backlog, board
- Создавать базовую issue: выбрать проект, тип issue, summary, description
- Переводить issue через простой workflow (To Do → In Progress → Done)
- Добавлять комментарии и вложения к issue
- Зарегистрироваться в Confluence (или получить доступ к командному space)
- Создавать страницу Confluence: title, body text, save и edit
Уровень: 2 – Новичок
Темы:
- Работать с разными типами issues (Task, Bug, Story, Epic) и полем priority
- Использовать базовые Jira boards: Scrum и Kanban, перемещать карточки по колонкам
- Фильтровать issues простым JQL (например, project = “XYZ” AND status = “Open”)
- Настраивать простые email-уведомления и watch issues
- В Confluence организовывать страницы в Spaces и иерархии parent-child
- Использовать общие macros: Code Block, Table, Panel, Image
- Вставлять ссылки на Jira issues и списки issues в страницы Confluence
Уровень: 3 – Средний
Темы:
- Кастомизировать issue screens и добавлять custom fields
- Определять и изменять простые workflows: statuses, transitions, validators
- Создавать и делиться dashboards с gadgets (Filter Results, Burndown Chart)
- Писать продвинутые JQL-запросы для сложных фильтров и boards
- Настраивать board swimlanes по запросам или assignees
- В Confluence создавать и использовать Templates и Blueprints
- Управлять permissions страниц, labels и restrictions страниц
- Использовать Include Page, Excerpt и Page Properties macros для динамических отчётов
Уровень: 4 – Продвинутый
Темы:
- Строить Jira Automation rules: triggers, conditions, actions (например, auto-assign, send alerts)
- Настраивать SLAs, service desks и отслеживать метрики с Jira Service Management
- Архитектура multi-project boards и cross-project releases
- Использовать Portfolio for Jira (Advanced Roadmaps) для планирования таймлайнов и зависимостей
- В Confluence создавать custom Blueprints и Theme overrides
- Встраивать динамический контент: charts из Jira, Gliffy diagrams, Live macros
- Анализировать page analytics и user activity для оптимизации контента
Уровень: 5 – Эксперт
Темы:
- Администрировать глобальные настройки Jira: permissions, issue type schemes, workflow schemes
- Проектирование сложных enterprise-grade workflows с branching, approvals и automation
- Интеграция Jira с внешними инструментами (CI/CD, Slack, GitHub) через webhooks и apps
- Лидировать ITSM implementation: change management, incident/problem workflows
- В Confluence разрабатывать custom plugins или использовать ScriptRunner для automation
- Определять space templates, global look-and-feel и продвинутые permission schemes
- Менторство и обучение команд best practices и governance policies Jira/Confluence
11 – Цифровая и аналоговая электроника
Уровень: 1 – Абсолютный новичок
Темы:
- Понять базовые электрические единицы: напряжение (V), ток (A), сопротивление (Ω), мощность (W)
- Выучить закон Ома (V = I∙R) и базовые расчёты последовательных/параллельных цепей
- Распознавать пассивные компоненты: резисторы, конденсаторы, индуктивности
- Использовать мультиметр для измерения напряжения, тока и сопротивления в простых DC-цепях
- Читать и интерпретировать базовые символы схем и электрические схемы
Уровень: 2 – Новичок
Темы:
- Собирать и анализировать последовательные и параллельные резистивные цепи и делители напряжения
- Введение в конденсаторы: кривые заряда/разряда, RC-постоянные времени, простые low-pass/high-pass фильтры
- Понимать цифровые логические уровни (TTL vs CMOS) и как они соотносятся с GPIO ESP32
- Методы level-shifting: резистивные делители, MOSFET-based level shifters для UART-сигналов
- Использовать макетные платы и перемычки для прототипирования схем интерфейсов датчиков
Уровень: 3 – Средний
Темы:
- Проектировать analog front-end для датчиков: выбор и конфигурация op-amps (инвертирующий, неинвертирующий)
- Реализовывать instrumentation amplifiers для дифференциальных сигналов датчиков (например, NPK-зонды)
- Интерфейс ADC: понимание full-scale range, разрешения, частоты дискретизации и выбора reference voltage
- Основы EMI/EMC: декуплирующие конденсаторы, стратегии заземления, базовые правила компоновки
- Анализ и снижение шума: экранирование, витая пара, ферритовые бусины
Уровень: 4 – Продвинутый
Темы:
- Создавать precision measurement circuits: методы калибровки, компенсация температурного дрейфа
- Продвинутый дизайн фильтров: active filter topologies (second-order Butterworth, Bessel)
- Проектирование источников питания: выбор и компоновка DC-DC преобразователей, LDO, bulk/ceramic декуплирование
- Компоновка PCB для mixed-signal: разделение аналоговых/цифровых земель, controlled impedance traces, star grounding
- Проведение базовых проверок EMI compliance: near-field probing, спектральный анализ
Уровень: 5 – Эксперт
Темы:
- Архитектура low-noise analog front-ends: кастомные discrete решения, noise budgeting и выбор компонентов
- Проектирование и интеграция mixed-signal ИС: high-resolution ADCs/DACs, цифровая изоляция и оптимизация тайминга SPI/I²C
- Разработка и валидация кастомных power management IC или PMIC конфигураций для battery-powered устройств
- Лидировать усилия по EMI/EMC сертификации: написание test plans, интерпретация стандартов CE/FCC, pre-compliance testing и remediation
- Менторство и review аналоговых и mixed-signal дизайнов команды, оптимизация manufacturability, стоимости и надёжности
12 – Проектирование печатных плат (KiCad / Altium)
Уровень: 1 – Абсолютный новичок
Темы:
- Понять, что такое PCB и зачем он используется (vs макетная плата или perfboard)
- Установить KiCad или Altium Designer и изучить интерфейс
- Создать новый schematic project и разместить базовые компоненты (резистор, светодиод, разъём)
- Запустить Electrical Rules Check (ERC) для поиска очевидных ошибок netlist
- Сгенерировать netlist и импортировать его в пустой PCB layout
- Разместить footprints на контуре платы и развести простые однослойные traces
- Экспортировать базовые Gerber и drill файлы
Уровень: 2 – Новичок
Темы:
- Создавать и управлять личной библиотекой символов и footprints
- Определять и применять design rules: ширины трасс, зазоры, annular rings
- Использовать ground и power planes для упрощения разводки и повышения надёжности
- Добавлять silkscreen text, обозначения компонентов и механические слои контура платы
- Работать с through-hole и surface-mount footprints, понимая pad и solder mask настройки
- Запускать Design Rule Check (DRC) и исправлять типичные ошибки зазора/перекрытия
- Генерировать полный fabrication package: Gerbers, NC drill, BOM
Уровень: 3 – Средний
Темы:
- Создавать multi-sheet (hierarchical) схемы и управлять connectivity nets
- Определять controlled stackup для 4- или 6-слойных плат, включая толщины диэлектриков
- Разводить дифференциальные пары и length-matched сигнальные пары (USB, SPI, high-speed lines)
- Использовать продвинутое управление planes: split planes, thermal reliefs, pour zones
- Интегрировать 3D-модели для проверок enclosure и механических зазоров
- Автоматизировать генерацию BOM с custom fields и экспорт в CSV или Excel
- Совместная работа через Git (или SVN) над файлами PCB-проекта и управление историей версий
Уровень: 4 – Продвинутый
Темы:
- Design for manufacturability (DFM): panelization, fiducials, assembly drawings
- Внедрение практик signal integrity для high-speed: impedance control, via stitching, return paths
- Создавать и переиспользовать project templates с company-wide design rules и layer stacks
- Выполнять базовые thermal и power-distribution анализы в ECAD-инструменте
- Писать и запускать скрипты (Python в KiCad или Altium scripts) для автоматизации повторяющихся задач
- Разрабатывать и управлять централизованными component libraries с lifecycle states и approved variants
- Интегрировать ECAD-данные с mechanical CAD для concurrent engineering
Уровень: 5 – Эксперт
Темы:
- Архитектура rigid-flex и multi-board (backplane) систем, определение flex bend areas и stiffeners
- Лидировать design reviews с фокусом на DFM, DFA (assembly) и DFT (test), менторство младших дизайнеров
- Разрабатывать кастомные IPC-compliant footprints и создавать in-house documentation стандартов дизайна
- Руководить интеграцией PLM/ERP для управления жизненным циклом деталей и procurement workflows
- Планировать и выполнять certification packages (UL, CE, FCC) со всей необходимой документацией
- Оптимизация продвинутых возможностей: buried/blind vias, controlled impedance, microvia HDI designs
- Контрибуция или кастомизация плагинов ECAD-инструментов и построение automated pipelines для валидации fabricator data
13 – Расчёт power budget и зарядка Solar-Li-ion
Уровень: 1 – Абсолютный новичок
Темы:
- Понять связь между напряжением, током и мощностью (P = V × I)
- Изучить базовые характеристики Li-ion батарей: номинальное напряжение (~3,7 В), ёмкость (мА·ч/А·ч), безопасные диапазоны напряжения
- Использовать мультиметр для измерения напряжения и тока в простых battery-powered цепях
- Идентифицировать базовые power rails на плате ESP32 и читать их обозначения (5 В, 3,3 В)
- Познакомиться с небольшой солнечной панелью: спецификации open-circuit voltage (Voc) и short-circuit current (Isc)
Уровень: 2 – Новичок
Темы:
- Составить простую таблицу power budget: перечислить каждую подсистему (ESP32, датчик, радио) с её рабочим током и duty cycle
- Рассчитывать средний и пиковый ток; оценивать время работы от заданной ёмкости батареи
- Сравнивать линейные регуляторы (LDO) и простые switching regulators для понижения до 3,3 В
- Собирать базовую Li-ion charge IC (например, MCP73831) на макетной плате и наблюдать за поведением charge LED
- Измерять выход панели при разных уровнях освещённости и учиться читать datasheet curves
Уровень: 3 – Средний
Темы:
- Введение в концепции Maximum Power Point Tracking (MPPT): почему MPPT улучшает сбор энергии по сравнению с пассивным затенением
- Выбирать и конфигурировать off-the-shelf solar charge controller (например, Adafruit Solar LiPo Charger)
- Подбирать солнечную панель и батарею для целевого времени работы и worst-case погоды; включать safety margins
- Проектировать dual-power-input схему: батарея плюс солнечная панель, с ideal-diode ORing или Schottky диодами
- Реализовывать малопотребляющие состояния прошивки (deep sleep, light sleep) и измерять quiescent current
Уровень: 4 – Продвинутый
Темы:
- Оценивать и выбирать между различными MPPT IC или модулями для embedded применений (например, STSPIN, TI BQ series)
- Проектировать кастомное дерево питания PCB: buck/boost преобразователи, load switches, power-good индикаторы
- Моделировать кривые заряда/разряда батареи и тепловые эффекты; симулировать в SPICE или spreadsheet
- Реализовывать динамическое управление питанием в прошивке: адаптация частоты сэмплирования или радио duty cycle на основе SoC батареи
- Добавлять аппаратную защиту: over-voltage, under-voltage, over-current и temperature monitoring
Уровень: 5 – Эксперт
Темы:
- Архитектура полностью кастомного MPPT алгоритма в прошивке или FPGA, настройка под локальные солнечные профили
- Разработка или модификация прошивки power-management IC (например, для кастомного BMS) и оптимизация КПД выше 98%
- Лидирование дизайна для extreme-environment energy harvesting: low-light, температурные экстремумы, анализ partial shading
- Интеграция продвинутой диагностики здоровья батареи: coulomb counting, impedance tracking, предиктивные SoC/SoH алгоритмы
- Менторство команд в trade-offs power-system, подготовка документации для UL/IEC safety certifications и оптимизация manufacturing yield и надёжности.
14 – Управление аккумулятором (18650)
Уровень: 1 – Абсолютный новичок
Темы:
- Изучить базовые спецификации Li-ion ячеек 18650: номинальное напряжение, ёмкость, максимальный ток заряда/разряда
- Понять базовую безопасность ячеек: никаких коротких замыканий, правильная полярность, избегать глубокого разряда
- Измерять напряжение ячейки мультиметром; распознавать полную (4,2 В) vs пустую (≈3,0 В) точки
- Идентифицировать общие функции protection IC: отсечка по over-voltage, under-voltage, over-current
- Практиковать безопасное обращение: использовать правильный holder, никогда не прокалывать или раздавливать ячейки
Уровень: 2 – Новичок
Темы:
- Собирать простой single-cell charger module (например, TP4056) и следить за charge status LEDs
- Понять CC-CV профиль заряда: constant-current до порога, затем constant-voltage с уменьшением тока
- Добавлять protection PCB к ячейке: понимать, как работает MOSFET-based protection
- Читать charge/discharge curves и derating guidelines из datasheet ячейки
- Грубо рассчитывать State of Charge (SoC) по кривой voltage vs SoC
Уровень: 3 – Средний
Темы:
- Введение в основы coulomb-counting: измерение заряда в/через токоизмерительный резистор и ADC
- Выбирать и интегрировать current-sense amplifier (например, INA219 или dedicated coulomb-counter IC)
- Калибровать систему coulomb-counting: offset, gain и компенсация дрейфа
- Комбинировать voltage-based SoC и coulomb-counting для повышения точности
- Реализовывать базовые проверки здоровья батареи: cycle count, оценка fade ёмкости
Уровень: 4 – Продвинутый
Темы:
- Проектировать multi-cell (2–4 ячейки) balance-charge схему с cell-balancing резисторами или active balancer IC
- Интегрировать полноценную BMS IC (например, серия TI BQ769x0): over-voltage, under-voltage, over-current, temperature monitoring
- Реализовывать in-firmware SoC и SoH алгоритмы: Kalman filter или adaptive Coulomb counter
- Добавлять temperature sensing (NTC или цифровой) и компенсацию кривых заряда/разряда
- Валидировать безопасность в fault conditions: моделировать КЗ, over-current, over-temperature и логировать fault events
Уровень: 5 – Эксперт
Темы:
- Архитектура кастомной BMS прошивки: продвинутые алгоритмы cell balancing, adaptive charge profiles
- Оптимизация точности Coulomb-counting в долгосрочной перспективе: коррекция дрейфа, температурная компенсация, self-learning алгоритмы
- Лидирование усилий по сертификации: IEC 62133, UL 2054, UN 38.3 testing documentation и создание test plan
- Проектирование redundant safety features: dual-IC monitoring, watchdogs, hardware failsafe states
- Менторство и review дизайнов батарейных подсистем: failure-mode analysis, manufacturability и планы reliability testing
15 – Сотовая связь (SIMCom AT, PPP, TCP/IP)
Уровень: 1 – Абсолютный новичок
Темы:
- Изучить базовые концепции сотовой связи: GSM vs LTE vs NB-IoT
- Определить pinout SIM-карты и как вставлять/извлекать SIM
- Запитать и подключить SIMCom модуль к микроконтроллеру или USB-to-UART адаптеру
- Открыть serial terminal (minicom, PuTTY) на правильной скорости baud
- Отправлять простые AT-команды: AT, ATI, AT+CSQ
- Интерпретировать ответы: OK, ERROR и базовые коды качества сигнала
Уровень: 2 – Новичок
Темы:
- Проверять регистрацию в сети: AT+CREG? и AT+CGREG?
- Конфигурировать PDP context: AT+CGDCONT=1,”IP”,””
- Использовать PPP для поднятия IP-линка: написать chat script и вызвать pppd
- Проверять IP-связность через PPP: ping известного хоста или использовать socket test tool
- Отправлять и читать SMS: AT+CMGF=1, AT+CMGS=””, AT+CMGR=
- Обрабатывать базовые коды ошибок: читать и декодировать +CME ERROR:
Уровень: 3 – Средний
Темы:
- Открывать и управлять TCP-сокетами: AT+CIPSTART=”TCP”,”host”,”port”
- Отправлять и получать данные через сокет: AT+CIPSEND и AT+CIPRXGET
- Мониторить unsolicited result codes (URCs): +CIPSTATUS, +TCP_CLOSED
- Реализовывать автоматическую логику переподключения в прошивке при обрыве сокета или PPP
- Использовать sleep modes модуля для экономии энергии: AT+CFUN, AT+CSCLK
- Защищать линк базовыми TLS-командами, если поддерживается (например, AT+SSLOPT)
Уровень: 4 – Продвинутый
Темы:
- Интегрировать PPP bring-up в RTOS-задачи с event callbacks на connect/disconnect
- Управлять несколькими APN и fallback contexts для resilience в роуминге
- Запускать MQTT-клиент через сотовый сокет с использованием AT-based команд
- Запрашивать GNSS/location данные, если модуль поддерживает: AT+CGPS=1, AT+CGPSINFO
- Профилировать throughput и latency: измерять data rates и оптимизировать буферизацию прошивки
- Диагностировать RF и сетевые проблемы с помощью extended network info commands (например, AT+QENG)
Уровень: 5 – Эксперт
Темы:
- Разрабатывать или оптимизировать AT-command parser library с state machines и robust buffering
- Проектировать кастомный PPP daemon или lightweight IP stack для deeply embedded систем
- Реализовывать driver-level интеграцию: DMA-based UART transfers, hardware flow control
- Поддерживать продвинутые data modes: raw sockets, UDP multicast/broadcast, SMS data mode
- Обрабатывать secure certificate provisioning во flash и управлять TLS-сессиями end-to-end
- Менторство команд по best practices cellular IoT: cost optimization, regulatory compliance и antenna/RF design considerations
16 – IoT-протоколы (MQTT / HTTPS)
Уровень: 1 – Абсолютный новичок
Темы:
- Понять, что такое IoT-протоколы и зачем они нужны для constrained devices
- Изучить основы MQTT: publish/subscribe модель, роль broker, topics, уровни QoS (0, 1, 2)
- Изучить основы HTTPS: клиент-сервер request/response, REST-принципы, URL, методы (GET, POST)
- Установить десктоп MQTT-клиент (MQTT.fx, MQTT Explorer) и подключиться к публичному broker (например, test.mosquitto.org )
- Использовать
curlдля простых HTTPS GET-запросов к публичным API
Уровень: 2 – Новичок
Темы:
- Писать прошивку для подключения ESP32 к MQTT broker с помощью простой библиотеки (например,
PubSubClientдля Arduino илиesp_mqtt_clientдля ESP-IDF) - Публиковать сенсорные показания в тестовый topic; подписываться и логировать сообщения из другого topic
- Конструировать базовые JSON payloads и парсить входящий JSON в прошивке
- Выполнять HTTPS-запросы из ESP32: настроить
HTTPClient(Arduino) илиesp_http_client(ESP-IDF) - Обрабатывать certificate validation на базовом уровне (начать с insecure mode, затем переключиться на правильный root CA)
Уровень: 3 – Средний
Темы:
- Реализовывать MQTT session persistence: retain messages, clean session = false
- Использовать MQTT Last Will and Testament (LWT) для сигнализации неожиданных отключений
- Организовывать topic hierarchies с wildcards (
+,#) для масштабируемого обмена сообщениями устройств - Управлять TLS-сертификатами во flash: конвертировать PEM в DER, встраивать в partition
- Обрабатывать HTTPS POST с JSON bodies и парсить JSON-ответы; управлять заголовками
Уровень: 4 – Продвинутый
Темы:
- Проектировать и реализовывать безопасную MQTT-архитектуру: client certificates, mutual TLS authentication
- Оптимизировать MQTT performance: batch publishes, appropriate QoS, минимизация keepalive overhead
- Реализовывать HTTPS mutual authentication (client certs) и управлять rotation сертификатов
- Интегрировать MQTT over WebSockets для browser-based dashboards или constrained networks
- Строить лёгкий stateful REST-клиент на ESP32 с retry, backoff и circuit breaker паттернами
Уровень: 5 – Эксперт
Темы:
- Архитектура кастомного protocol bridge: трансляция между CoAP, MQTT и HTTPS для гетерогенных IoT-сетей
- Разработка in-house MQTT broker plugin или extension для custom authorization, filtering или transformation
- Прототипирование и оценка альтернативных IoT-протоколов (например, MQTT-SN, AMQP, LwM2M) для специализированных сценариев
- Лидирование security audits: threat modeling, vulnerability assessments стеков коммуникаций IoT
- Менторство команд по проектированию large-scale, secure и resilient IoT messaging architectures с гибридными протоколами
17 – Основы безопасности TLS / mbedTLS
Уровень: 1 – Абсолютный новичок
Темы:
- Изучить базовые концепции криптографии: plaintext vs ciphertext, symmetric vs asymmetric encryption, hashing
- Понять, что обеспечивает TLS: конфиденциальность, целостность, аутентичность
- Изучить high-level TLS handshake flow: ClientHello, ServerHello, key exchange, record layer
- Установить mbedTLS и изучить директорию
programs/sslс примерами - Собрать и запустить примеры
ssl_client1иssl_server2на десктопе
Уровень: 2 – Новичок
Темы:
- Конфигурировать mbedTLS через
config.h: включать только нужные модули (SSL/TLS, X.509, crypto primitives) - Генерировать self-signed certificate и key с OpenSSL; конвертировать между PEM и DER форматами
- Модифицировать и запустить
ssl_client2для выполнения HTTPS GET к публичному серверу - Задавать minimum TLS version и выбирать базовые cipher suites в SSL configuration
- Включать debug logging mbedTLS для трассировки шагов handshake и кодов ошибок
Уровень: 3 – Средний
Темы:
- Реализовывать PSK (Pre-Shared Key) authentication в mbedTLS для constrained devices
- Встраивать сертификаты и ключи во flash или читать их из filesystem partition во время выполнения
- Использовать X.509 parser mbedTLS для валидации server certificates против root CA bundle
- Инициализировать random-number generator hardware TRNG (например,
esp_hardware_pollESP32) черезmbedtls_ctr_drbg - Интегрировать mbedTLS как component в ESP-IDF и вызывать TLS connects из FreeRTOS task
Уровень: 4 – Продвинутый
Темы:
- Реализовывать mutual TLS (сертификаты клиента и сервера) в embedded окружении
- Проектировать безопасный механизм rotation сертификатов с rollback protection прошивки
- Оптимизировать memory footprint: отключать неиспользуемые модули, настраивать heap vs stack usage в
mbedtls_platform_set_calloc_free - Подключать hardware crypto accelerator (RSA/ECC offload) и регистрировать его в PK layer mbedTLS
- Безопасно хранить private keys: использовать flash encryption или внешний secure element (ATECC608A)
Уровень: 5 – Эксперт
Темы:
- Контрибьютить исправления или новые функции в ядро mbedTLS (например, добавить новый cipher suite или улучшить constant-time code)
- Проводить security audits и fuzz testing handshake и crypto primitives
- Строить FIPS 140-2–compliant конфигурацию mbedTLS и документировать module validation
- Разрабатывать side-channel–resistant реализации и усиление против timing или power analysis атак
- Определять и менторить enterprise-grade security policies: threat modeling, key-lifecycle management, vulnerability disclosure processes
18 – Калибровка и компенсация датчиков
Уровень: 1 – Абсолютный новичок
Темы:
- Понять, что означают «sensor calibration» и «compensation» и зачем они важны
- Научиться читать raw ADC значения от датчика в коде (например,
adc1_get_raw) - Логировать raw выходы датчика в ambient conditions с помощью serial print или простого data logger
- Познакомиться с базовыми reference standards: известные фиксированные резисторы, известные reference voltages
- Строить графики raw readings vs expected values в spreadsheet для оценки линейности или offset errors
Уровень: 2 – Новичок
Темы:
- Выполнять two-point (offset & gain) калибровку: собирать показания при двух известных концентрациях или нагрузках
- Рассчитывать и реализовывать простую формулу линейного отображения в прошивке
- Документировать шаги и результаты калибровки: включать test conditions (температура, влажность)
- Вводить метрики ошибок: mean error, standard deviation, max error
- Автоматизировать сбор калибровочных данных скриптами или простыми shell-командами
Уровень: 3 – Средний
Темы:
- Характеризовать отклик датчика по всему диапазону с multi-point данными (минимум 5–10 точек)
- Подбирать higher-order curves (полиномиальная регрессия) или piecewise linear segments в инструменте вроде Python или Excel
- Реализовывать температурную и влажностную компенсацию: читать environmental sensors и применять correction formulas
- Валидировать компенсацию сравнением compensated readings с reference instruments в разных условиях
- Хранить калибровочные коэффициенты в non-volatile memory (RTC memory, NVS partition или flash)
Уровень: 4 – Продвинутый
Темы:
- Разрабатывать robust calibration protocols: рандомизация порядка тестов, контроль environmental variables, логирование metadata
- Использовать статистические техники: outlier detection, confidence intervals, repeatability/reproducibility studies
- Автоматизировать калибровочные routines на устройстве: interactive calibration mode с user prompts
- Реализовывать self-calibration или auto-zero routines для удаления дрейфа во время длительных развёртываний
- Управлять и версионировать калибровочные данные в backend system или calibration database
Уровень: 5 – Эксперт
Темы:
- Архитектура multivariate compensation algorithms (например, sensor fusion или machine-learning regressors для сложных cross-sensitivities)
- Проектирование и сборка automated calibration rigs или test fixtures для high-volume production calibration
- Определять и обеспечивать calibration standards и процедуры (ISO 17025-style documentation)
- Мониторить in-field calibration drift и удалённо запускать re-calibration или firmware updates
- Менторство и обучение команды продвинутым метрологическим концепциям; публикация internal calibration guidelines и white papers
19 – Логирование данных и OTA-хранилище
Уровень: 1 – Абсолютный новичок
Темы:
- Узнать, что означает persistent storage на ESP32 и зачем она полезна для логирования или OTA staging
- Понять разницу между внутренними flash file systems (SPIFFS, LittleFS) и внешними SD-картами
- Монтировать SPIFFS в Arduino (
SPIFFS.begin()) или ESP-IDF (esp_vfs_spiffs_register) - Перечислять файлы, открывать файл для записи (
"w"), писать строку, закрывать, затем открывать для чтения и печатать содержимое - Инициализировать и монтировать SD-карту (Arduino
SD.begin(), ESP-IDFesp_vfs_fat_sdspi_mount), открывать файл и выполнять базовое чтение/запись
Уровень: 2 – Новичок
Темы:
- Использовать append mode (
"a") для добавления новых log entries без перезаписи существующих данных - Обходить директории: открывать директории, читать имена файлов, фильтровать по расширению или timestamp
- Конфигурировать размер раздела SPIFFS/LittleFS в
platformio.iniилиsdkconfig, перепрошивать и проверять - Изучать отличия LittleFS: faster mounts, built-in wear leveling, metadata operations
- Обнаруживать и обрабатывать mount errors, проверять free space перед записью, восстанавливать повреждённую file system
Уровень: 3 – Средний
Темы:
- Реализовывать log rotation: когда файл превышает размер или возраст, закрывать его и начинать новый; удалять самые старые логи
- Эффективно логировать бинарные сенсорные данные: сериализовать structs или floats, писать/читать обратно в память
- Монтировать и использовать FAT на SD с поддержкой long filenames; управлять несколькими SD partitions
- Создавать abstraction layer, чтобы код мог переключаться между SPIFFS, LittleFS или SD по конфигурации
- Stage большие данные или чанки прошивки в выделенном разделе «ota_data» с помощью raw flash writes
Уровень: 4 – Продвинутый
Темы:
- Понимать и редактировать ESP32 partition table: factory, ota_0, ota_1, data (spiffs/littlefs) entries
- Использовать OTA APIs ESP-IDF:
esp_ota_begin(),esp_ota_write(),esp_ota_end(),esp_ota_set_boot_partition() - Скачивать и записывать полный firmware image в неактивный OTA partition, проверять его целостность, переключать загрузку
- Обрабатывать прерванные обновления: обнаруживать partial writes, откатываться к last known-good firmware
- Оптимизировать resilience file system: atomic file operations, journaling strategies или double-buffering
Уровень: 5 – Эксперт
Темы:
- Проектировать custom partition layouts: multiple data partitions, dynamic resizing, off-chip flash integration
- Реализовывать encrypted и/или compressed file systems для защиты данных at rest и снижения износа
- Разрабатывать delta-OTA или patch-based updates для минимизации размера загрузки и времени обновления
- Собирать automated test harnesses для симуляции повреждения file system и валидации OTA recovery flows
- Менторство по best practices: partition alignment, flash-wear management, secure-boot integration и полный lifecycle management хранимых данных и firmware updates
20 – Поток удалённого OTA-обновления
Уровень: 1 – Абсолютный новичок
Темы:
- Понять, что такое OTA (Over-The-Air) updates и зачем они полезны
- Изучить простой пример OTA в Arduino (
ArduinoOTA) или ESP-IDF (ota_https_simple) - Настроить development environment для включения OTA: включить OTA library/component
- Прошить пример «blink» с включённым OTA и подтвердить, что он анонсирует сервис или HTTP endpoint
- Запускать ручное OTA-обновление из VS Code или Arduino IDE и наблюдать перезагрузку прошивки
Уровень: 2 – Новичок
Темы:
- Хостить firmware binary на локальном HTTP(S) сервере или простом file server
- Писать код прошивки для получения version manifest или binary URL через HTTP с помощью
HTTPClientилиesp_http_client - Скачивать и применять обновление во вторичный раздел с использованием ESP-IDF OTA API (
esp_ota_begin,esp_ota_write,esp_ota_end) - Проверять целостность нового image с помощью встроенных checksums или HTTP ETag headers
- Реализовывать базовый rollback: если новая прошивка не загружается или сигнализирует об ошибке, возвращаться к предыдущему разделу
Уровень: 3 – Средний
Темы:
- Автоматизировать OTA triggers: проверка обновлений при загрузке или по периодическим таймерам, сравнение текущей версии с manifest
- Защищать канал обновления: переход с HTTP на HTTPS, валидация server certificates, pinning CA во flash
- Поддерживать delta-OTA (binary diffs) для уменьшения размера загрузки: интегрировать и применять patches вместо полных образов
- Использовать MQTT или MQTT-SN для уведомления устройств о доступных обновлениях и управления rollout per device или group
- Хранить update metadata (version, timestamp, status) в non-volatile storage (NVS) для audit
Уровень: 4 – Продвинутый
Темы:
- Интегрироваться с cloud-based OTA service (например, AWS IoT Device Management, Azure IoT Hub) через их REST/MQTT APIs
- Реализовывать staged rollouts: сначала rollout на маленький процент устройств, мониторинг здоровья, затем расширение rollout
- Проектировать A/B partition scheme с golden image fallback и automated health checks при старте
- Автоматизировать сборку, подпись и публикацию прошивок в CI/CD; встраивать signatures и верифицировать в устройстве
- Обрабатывать multi-component updates (bootloader, partition table, application, filesystem) в одной транзакции
Уровень: 5 – Эксперт
Темы:
- Архитектура кастомного OTA management backend: versioning, device groups, differential updates, telemetry integration
- Реализация end-to-end security: code signing с асимметричными ключами, secure boot integration, replay protection
- Оптимизация механизмов обновления для low-bandwidth или intermittent networks: chunked delivery, resume support, adaptive rate control
- Построение redundant update paths: multiple servers, peer-to-peer sharing, fallback CDN strategies
- Менторство по best practices: compliance с industry standards (например, IEC 62443), robust error-handling и полный lifecycle management версий прошивки
21 – Теория управления и оценки состояний
Уровень: 1 – Абсолютный новичок
Темы:
- Ухватить базовую идею control loop: setpoint, measurement и error
- Различать open-loop и closed-loop системы
- Реализовывать простой on/off (bang-bang) controller в псевдокоде или C
- Понимать понятие system response: rise time, overshoot, settling time (концептуально)
- Узнать, что означает «estimation»: использование шумных измерений для вывода истинного значения
Уровень: 2 – Новичок
Темы:
- Выводить и кодировать proportional (P) controller: output = Kₚ·error
- Добавлять integral (I) и derivative (D) terms для построения PID controller; настраивать Kₚ, Kᵢ, K_d пробным путём
- Реализовывать first-order low-pass filter (дискретный) для шумных сенсорных показаний
- Моделировать простые системы как difference equations (например, дискретная RC-цепь)
- Писать moving-average filter или exponential smoothing в прошивке
Уровень: 3 – Средний
Темы:
- Представлять системы в state-space форме (ẋ = Ax + Bu; y = Cx + Du) и дискретизировать для прошивки
- Проектировать и реализовывать discrete-time Kalman filter для 1D constant-velocity model
- Анализировать stability PID-controlled системы с root locus или Bode plots (MATLAB/Python)
- Реализовывать anti-windup для I-term и derivative filtering в PID алгоритме
- Встраивать control & estimation code в FreeRTOS tasks с детерминированным таймингом
Уровень: 4 – Продвинутый
Темы:
- Проектировать optimal state-feedback controllers (LQR) и discrete Kalman observers
- Расширять до Extended Kalman Filters (EKF) для nonlinear systems (например, простая kinematics мобильного робота)
- Выполнять frequency-domain design: gain & phase margin, notch filters, PID tuning через Ziegler–Nichols и relay methods
- Кодировать model predictive control (MPC) prototype на C или C++ с маленьким horizon
- Профилировать execution time и память control loops; оптимизировать под real-time constraints
Уровень: 5 – Эксперт
Темы:
- Архитектура nonlinear control schemes: sliding-mode, adaptive control, robust H∞ controllers
- Лидировать разработку кастомных EKF/UKF libraries или MPC solvers для embedded targets
- Менторство команды по продвинутой estimation: multi-sensor fusion (IMU + GPS + soil probes) с использованием simultaneous localization and mapping (SLAM) techniques
- Публикация internal design guidelines по best practices control/estimation и safety verification
- Контрибуция новых алгоритмов или улучшений обратно в open-source control/estimation проекты или академические статьи
22 – Python / Bash скрипты
Уровень: 1 – Абсолютный новичок
Темы:
- Установить Python 3 и pip; проверить
python3 --versionиpip3 --version - Открыть bash shell; запустить
bash --version - Создать и запустить «hello world» Python-скрипт (
hello.py) и простой bash-скрипт (hello.sh) - Добавлять shebang строки (
#!/usr/bin/env python3и#!/usr/bin/env bash) и делать скрипты исполняемыми (chmod +x) - Использовать базовые bash-команды:
echo,ls,pwd,cd; и Pythonprint(), простые присваивания переменных
Уровень: 2 – Новичок
Темы:
- Типы данных Python (int, float, string, list, dict) и control flow (
if,for,while); определять простые функции - Переменные bash, positional parameters (
$1,$2), quoting rules, базовыеif [ ]иforциклы - File I/O: open/read/write в Python; redirect (
>,>>) и чтение строк в bash (while read) - Импортировать и использовать встроенные модули Python (
os,sys); source smaller bash helper scripts с помощьюsource - Базовая обработка ошибок: Python
try/except; bashset -eиtrap '…' ERR
Уровень: 3 – Средний
Темы:
- Python virtual environments (
python3 -m venv),requirements.txt, установка сторонних пакетов через pip - Bash argument parsing с использованием
getoptsилиgetoptи написание reusable bash functions - Скрипты автоматизации сборки: вызов
make,idf.pyилиpioиз Python (subprocess) или bash - Использовать Python
argparseдля robust CLI interfaces иloggingmodule для structured logs - Продвинутый shell I/O: pipes (
|), process substitution (<(),>()), here-docs (<<EOF) и command substitution
Уровень: 4 – Продвинутый
Темы:
- Писать Python unit-тесты с
pytestилиunittest; enforcement style сflake8/pylintи type hints сmypy - Укреплять bash-скрипты:
set -euxo pipefail, валидация параметров, trap cleanup functions, debug mode (set -x) - Использовать Python для concurrent tasks:
threading,multiprocessingи high-level инструменты вродеconcurrent.futures - Собирать reusable Python modules и устанавливать их через
setup.py/pyproject.toml; управлять версиями и зависимостями - Автоматизация шагов CI/CD: писать Python или bash скрипты, оркестрирующие GitHub Actions или GitLab CI jobs
Уровень: 5 – Эксперт
Темы:
- Разрабатывать и публиковать standalone Python CLI tools с использованием фреймворков Click или Typer; публиковать пакеты на PyPI
- Архитектура large bash frameworks: modular scripts, plugin systems, coprocesses, продвинутый I/O redirection
- Профилирование и оптимизация Python-скриптов (например,
cProfile,line_profiler), использованиеasyncioдля high-throughput задач - Интеграция скриптов с system services: написание systemd unit files, container entry-point scripts, Docker-Compose automation
- Определять и обучать команду best practices скриптинга: security (input sanitization, avoiding injection), documentation и maintainable code templates
23 – Основы облака и дашбордов
Уровень: 1 – Абсолютный новичок
Темы:
- Ухватить концепцию cloud-based IoT platforms vs on-premise solutions
- Зарегистрировать бесплатный trial AWS IoT Core или Azure IoT Hub
- Навигация по порталу AWS IoT или Azure: explore Things/Devices section и overview dashboards
- Установить и запустить десктопный инструмент (AWS IoT Explorer или Azure IoT Explorer) для подключения и отправки sample telemetry message
- Понять, что такое InfluxDB: установить локальный InfluxDB 2.x через Docker или binary, запустить встроенный CLI и записать одну точку данных
Уровень: 2 – Новичок
Темы:
- Зарегистрировать устройство («Thing») в AWS IoT Core или device в Azure IoT Hub; скачать и изучить сгенерированные сертификаты или SAS tokens
- Использовать AWS IoT SDK (C/Python) или Azure Device SDK для публикации простого JSON telemetry over MQTT
- Установить Grafana, добавить InfluxDB как data source и создать базовую time-series panel, отображающую одно поле
- Писать данные в InfluxDB из командной строки (используя
curlили Influx CLI) и проверять их в InfluxDB UI - Изучать концепции Grafana: dashboards, panels, queries, time-range picker
Уровень: 3 – Средний
Темы:
- Реализовывать production-style device code: persistent MQTT connections, reconnect logic, structured JSON payloads, topic hierarchies
- Определять AWS IoT Rule для пересылки входящего telemetry в Lambda function, DynamoDB table или Kinesis stream
- Конфигурировать InfluxDB tasks или Telegraf для автоматического ingestion и transformation входящих data streams
- Строить multi-panel Grafana dashboards с использованием Flux или InfluxQL queries: добавлять gauges, graphs и stat panels
- Настраивать простые alert rules в Grafana на основе thresholds и конфигурировать email или Slack notification channel
Уровень: 4 – Продвинутый
Темы:
- Усиливать аутентификацию: lock down IoT policies в AWS, fine-tune Azure IoT Hub RBAC, rotate certificates/SAS tokens по расписанию
- Использовать AWS IoT Device Shadows или Azure Digital Twins для синхронизации desired/reported state между облаком и устройством
- Масштабировать InfluxDB с retention policies, continuous queries или Tasks и shard groups для долгосрочного хранения
- Реализовывать Grafana provisioning (as code) для управления dashboards и alerts через JSON/YAML файлы в Git
- Интегрировать Grafana с внешними alert managers или notification services (PagerDuty, OpsGenie, Microsoft Teams)
Уровень: 5 – Эксперт
Темы:
- Архитектура глобального, resilient IoT backbone: multi-region AWS IoT Core или Azure IoT Hub failover, edge-gateway integration с Greengrass или Azure IoT Edge
- Автоматизация всей инфраструктуры: писать Terraform modules или ARM/Bicep templates для деплоя IoT ресурсов, InfluxDB clusters, Grafana instances и IAM policies
- Оптимизация high-volume data ingestion: batch writes, compression techniques, backpressure strategies и backfill procedures
- Проектирование multi-tenant dashboards в Grafana с granular RBAC и filtering data sources
- Менторство по best practices: cost control, security compliance (GDPR, HIPAA), data retention policies и operational monitoring IoT analytics stack
24 – Регуляторные и экологические требования
Уровень: 1 – Абсолютный новичок
Темы:
- Узнать, почему regulatory approval и environmental ratings важны для коммерческого устройства
- Понять область применения CE marking (EU) vs FCC certification (US) vs базовые IP codes
- Определить, какие директивы применяются (например, EMC, LVD для CE; Part 15 для FCC) и что означает IP67 rating
- Найти и добавить в закладки официальные ресурсы: EU’s NANDO database, FCC equipment authorization portal
Уровень: 2 – Новичок
Темы:
- Изучить основные стандарты: EMC immunity/emissions (EN 61326-1 / FCC Part 15 Subpart B), safety (EN 61010‑1)
- Узнать, как тестируются IP ratings (water jet, dust chamber) и что означает каждая цифра
- Собирать datasheets и supplier declarations of conformity для каждого модуля или компонента
- Документировать ожидаемый compliance path в простой spreadsheet или checklist
Уровень: 3 – Средний
Темы:
- Составлять Technical File (CE) или FCC test plan: включать block diagrams, schematics, BOM, risk assessment
- Внедрять базовую EMI/EMC mitigation: добавлять ferrites, common-mode chokes, PCB ground pours
- Проводить in-house pre-compliance tests: near-field EMI probing, ESD gun testing, базовые проверки изоляции
- Подготавливать artwork маркировки устройства: CE mark, FCC ID, WEEE symbols, warnings безопасного использования
Уровень: 4 – Продвинутый
Темы:
- Управлять формальным процессом сертификации с Notified Body (CE) или FCC-accredited lab: подача samples, witness testing
- Анализировать test reports, драйвить design changes для устранения failures (например, модификации компоновки, уплотнения корпуса)
- Координировать environmental и mechanical tests: thermal cycling, vibration, ingress testing для достижения целевого IP rating
- Составлять и подписывать Declaration of Conformity (CE) и подавать FCC Form 731 для equipment authorization
Уровень: 5 – Эксперт
Темы:
- Определять глобальную compliance strategy, охватывающую CE, FCC, UL/CSA, RoHS, REACH, WEEE и другие при необходимости
- Архитектура модульного железа и прошивки для упрощения re-testing и regional variants
- Лидирование supplier compliance programs: enforcement component change-control, audit manufacturer QMS
- Поддерживать и обновлять Technical Files и FCC exhibits across product revisions; управлять periodic surveillance audits
- Выступать в роли primary liaison с регуляторными органами, обрабатывать non-compliance findings и corrective actions, менторить команду по best practices ongoing regulatory stewardship.
25 – Инструменты документирования (Markdown, Doxygen)
Уровень: 1 – Абсолютный новичок
Темы:
- Понять назначение проектной документации: READMEs, API references, how-tos
- Установить Markdown-редактор или использовать встроенную поддержку VS Code
- Писать базовый синтаксис Markdown: заголовки (
#–###), bold/italic, bullet и numbered lists - Вставлять ссылки и изображения через Markdown (
[text](url),) - Предпросматривать
README.mdв VS Code или на GitHub
Уровень: 2 – Новичок
Темы:
- Создавать tables, blockquotes и fenced code blocks в Markdown
- Использовать relative links и anchor links для multi-page docs
- Установить Doxygen и сгенерировать дефолтный
Doxyfile - Аннотировать C/C++ исходники Doxygen-комментариями (
///,/** ... */) для функций и типов - Запускать Doxygen для получения HTML output и просматривать сгенерированную документацию
Уровень: 3 – Средний
Темы:
- Кастомизировать настройки
Doxyfile: input paths,EXTRACT_ALL,EXTRACT_PRIVATE, diagram support, output formats - Встраивать Markdown content в Doxygen-комментарии и включать внешние Markdown файлы через
\include - Организовывать документацию в модули и группы с помощью
@defgroupи@addtogrouptags - Интегрировать запуск Doxygen в сборку CMake или PlatformIO, чтобы документация обновлялась при каждой сборке
- Использовать VS Code extensions для предпросмотра combined Markdown и Doxygen comments inline
Уровень: 4 – Продвинутый
Темы:
- Расширять Doxygen с помощью custom tag filters или input pre-processors (например, Python scripts)
- Автоматизировать сборки документации в CI pipelines и публиковать на GitHub Pages, GitLab Pages или Confluence через конвертеры
- Генерировать PlantUML или Graphviz diagrams из code annotations и включать их в docs
- Поддерживать doc-coverage metrics: писать скрипты для обнаружения недокументированных функций/типов и fail CI, если ниже threshold
- Определять и публиковать style guide для Markdown и Doxygen usage across the team
Уровень: 5 – Эксперт
Темы:
- Разрабатывать custom Doxygen layouts и themes (XSLT, custom CSS/HTML templates) в соответствии с corporate branding
- Архитектура hybrid documentation pipeline с использованием Sphinx или MkDocs alongside Doxygen, с versioned outputs и search
- Автоматизировать cross-repository inclusion документации через Git submodules, composite Doxyfiles или tag-based linking
- Лидировать documentation reviews, enforcement CI quality gates на docs и менторить команду по best practices
- Контрибуция в open-source documentation tools или авторинг plugins/extensions (например, для продвинутого рендеринга диаграмм или live code examples)