Embedded-development (или разработка встраиваемых систем) - это такая сфера, где паяльник и IDE находятся ближе всего. Естественно, туда пришёл ИИ: попросишь модель написать прошивку - выдаёт аккуратный код. Компилируется с первого раза, заливается без ошибок. Но внезапно, экран показывает цветной шум.

И код тут ни при чём. Внутри этого дисплея стоит контроллер ST7789, рассчитанный на матрицу 240×320, а стекло на плате обрезанное, 172×320: тот же чип, но видимые пиксели занимают только центральную часть его памяти. Поэтому драйвер обязан смещать область записи на 34 пикселя - без этого картинка уезжает вбок, треть контента уходит за край стекла, а с другого края лезет мусор. Плюс панель требует инверсии цвета и порядок от старшего к младшему байту. Этого нет ни в одном туториале: это припрятано в вики производителя между двумя предупреждениями мелким текстом. Модель туда не заглядывала.

Знакомо? Проблема не в том, что LLM глупые. Проблема в том, что знание о конкретной плате размазано тонким слоем по даташиту на стопицот страниц, мануалу на алике на китайском и вечеру отладки, который вы на это потратили. И у модели этого всего нет.

И как видите: плат на текущий момент целый зоопарк
И как видите: плат на текущий момент целый зоопарк

Зоопарк молчаливых фейлов

  • У Waveshare ESP32-C6-LCD-1.47 дисплей и слот microSD сидят на одном SPI - MOSI (GPIO6) и SCLK (GPIO7) общие. Модель, не знающая этого, спокойно разведёт их по разным шинам и получит конфликт на шине, который будет выглядеть как плохой контакт или дохлая карта памяти.

  • На Raspberry Pi Pico пины GPIO23, 24, 25 и 29 - самые настоящие GPIO в коде, но их физически нет на 40-пиновом разъёме. Проект с ними компилируется, заливается, "работает", а на макетке ничего не происходит, и вы часами ищете проблему в прошивке c красными глазами.

  • У ESP32 канал ADC2 полностью занят Wi-Fi, пока радио работает просто возвращает таймаут. Схема с аналоговыми датчиками на ADC2 не работает без единого объяснения - и узнать это из кода невозможно.

  • Частота на 100 МГц (нужно 96 МГц) молча убивает USB самого STM32F411, а HAL_Delay() вешает плату, потому что кто-то должен был вручную определить SysTick_Handler - но об этом почти нигде не написано.

    И много чего ещё...

Как это решать?

Я начал собирать открытую коллекцию скиллов для Claude Code - по одному скиллу на плату. Добавляю пока те, что есть у меня в коллекции (на фото выше). Скилл - это каталог с несколькими файлами, который Claude Code подгружает сам, когда вы работаете с соответствующей платой. Внутри только то знание, которого у модели нет, в трёх слоях:

  • SKILL.md - выжимка, которая читается всегда: карта пинов, характеристика чипа и правила, предотвращающие дорогие ошибки;

  • reference/ - глубокие детали, подгружаются по необходимости: полная разводка пинов с альтернативными функциями, периферия, таблица подводных камней;

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

По сути, это проблема нехватки контекста. Агент неплохо знает семейство микроконтроллеров - даташиты у него есть, но про вашу конкретную плату не знает ничего: как разведены пины, какое тактирование реально заводится, какие вызовы HAL молча не работают. Идея репозитория: собрать это знание - из даташитов, вики вендора и самостоятельной отладки на живом железе и запаковать в скиллы для агентов. Web Search MCP частично спасает, но гуглить на каждый чих - это сжечь контекст, а в довесок ещё и наловить туториалов для соседней ревизии платы.

Сейчас в репозитории 8 плат: два STM32, четыре ESP32, классический любимый всеми Arduino Nano на ATmega328P и Raspberry Pi RP2040.

Как этим пользоваться

git clone https://github.com/alexex1993/mcu-skills.git
cd mcu-skills
./scripts/install.sh --list
./scripts/install.sh stm32f411-blackpill

Дальше скилл подхватывается сам, когда вы работаете с этой платой в Claude Code (или по явному вызову, например /stm32f411-blackpill). Можно поставить и в область конкретного проекта просто скопировать каталог в .claude/skills/ внутри проекта с прошивкой.

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

Теперь юзает скилл
Теперь юзает скилл

А теперь про длинный проект

Настоящая боль embedded-разработки - проекты длиной в месяцы, где архитектура разрастается: FreeRTOS с кучей задач, свои драйверы, датчики на трёх шинах, и всё это делит между собой пины, таймеры, DMA-каналы и прерывания. Вот тут знание контекста решает больше, чем умение писать код.

Проблема: у ИИ амнезия, а у вас - нет. Каждая сессия с ассистентом начинается с чистого листа. На второй неделе проекта вы уже помните, что таймер 2 отдан под ШИМ подсветки, SPI2 делят дисплей и карта памяти, а A0/A1 заняты под аналоговый фронтенд. Модель - нет. И вы либо заново объясняете это в каждом диалоге (полчаса ритуалов перед каждой задачей), либо узнаёте о конфликте, когда свежесгенерированный драйвер спокойно перехватывает пин у рабочего модуля - и всё выглядит как будто само сломалось.

Скилл ломает этот цикл, потому что живёт не в чате, а в репозитории:

1. Знание переживает сессии. Скопируйте скилл в .claude/skills/ внутри проекта и каждая новая сессия, каждая задача, каждый вопрос начинается не с нуля, а с базы знаний о железе.

2. Знание версионируется вместе с кодом. Файлы скилла лежат в git рядом с прошивкой. Нашли новую граблю на шестой неделе проекта - дописали правило в скилл (можно кстати агента попросить это сделать), закоммитили. Теперь это знание доступно каждому в команде и каждому новому диалогу. Знание перестаёт жить в голове у одного человека и в логах мессенджеров оно становится артефактом проекта, как код.

3. Знание задаёт контракт с железом. Сложная встроенная архитектура - это в первую очередь разделение конечных ресурсов между модулями. Конфликты за эти ресурсы - особый класс багов: компилятор их не ловит, проявляются они далеко от причины. Скилл фиксирует, что чем занято и модель перестаёт предлагать код, нарушающий раздачу. Фактически это односторонний интерфейс между вашей архитектурой и платой: как API, только про железо.

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

5. Онбординг ускоряется - людей и сессий. Агент читает и делает так как это задумал производитель в даташите.

Честная оговорка: скилл хранит знание о плате, а не об архитектуре вашего приложения - проектные конвенции живут отдельно, в AGENTS.md репозитория. Но граница проходит ровно там, где должна: скилл - это контракт с железом, и его можно развивать вместе с проектом - скопировали, дописали свои занятые ресурсы и найденные грабли, и база знаний растёт вместе с прошивкой.

Мои любимые те что с экранчиками
Мои любимые те что с экранчиками

Планы и как помочь проекту

Планы расширять количество плат и скиллов в репозитории.

Хочется контрибьюторов. Пайплайн описан в репозитории: найдите спеку (даташит для платы), соберите hello world или мигалку, реально запускаемую на железе и пишите скилл с того, что узнали (или попросите агента написать). Лучшие скиллы - про платы, на которых вы уже обжигались.

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


  1. sintech
    29.08.2026 09:38

    Помогал делать недавно маленький проект на atmega + экранчик - midi trigger. Все отлично сгенерировалось и UI красивый нарисовался. Claude code.


    1. Alexex14 Автор
      29.08.2026 09:38

      Все индивидуально, в целом в 2/3 случаев оно пишет нормально. Но вот иногда, особенно на платах с переферией (экранчики, флешечки, wifi/bt-модули) начинаются сложноотлаживаемые траблы.


  1. ainu
    29.08.2026 09:38

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


    1. Alexex14 Автор
      29.08.2026 09:38

      А тут как раз в скиллах есть 100% работающие проекты, чтобы просто мигалка заработала. Для быстрого вката.


  1. asneg
    29.08.2026 09:38

    Сделал несколько проектов на RUST и FreeRTOS ESP32S3 , вообще не пользовался скилами , всегда просить запомнить что сделали в этой сессии , чаще просить пересмотреть память и сделать документацию , не все работает с первого раза проекты достаточно тяжелые но неделя работы и все работает как я хочу :)


    1. Alexex14 Автор
      29.08.2026 09:38

      This! Ровно также делал сначала, но потом надоело. Еще иногда просил написать .md чтобы в следующий проект перенести особенности платы, распиновку, etc. На тех фото выше только часть плат, их суммарно три десятка. Тяжело помнить особенности каждой.


      1. asneg
        29.08.2026 09:38

        Кстати если кому интересно работа с DSP инструкциями в RUST вчера победил


  1. SEVGENIUS
    29.08.2026 09:38

    Начал собирать мини проект, датчик обнаружения движения HLK-LD2410B на микроконтроллере ESP32 С6, в итоге собрался почти без ошибок, он их сам исправлял, видел в логах как он делал. Использовал DeepSeek потом, переделал на Claude.


    1. Alexex14 Автор
      29.08.2026 09:38

      ESP32 C6 которая с экранчиком? У меня там изображение нормально не заводилось


  1. VO_Obsidian
    29.08.2026 09:38

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

    Всё было с mcp доков espressif, пожалуй этого достаточно в 90% случаев.


    1. Alexex14 Автор
      29.08.2026 09:38

      В целом согласен, MCP с доками Espressif закрывает большую часть. Только это документация на SoC, а скилл - про плату. Всё, что не в даташите (разводки, пины за сетодиодами и проч), приходится добывать эмпирически - как вы и добывали с CYD.

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

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


  1. artalex
    29.08.2026 09:38

    Каждая сессия с ассистентом начинается с чистого листа.

    Настройте себе долговременную память по проектам, хотя бы в Obsidian (просто попросите клода это сделать, он справится) и не мучайтесь так больше :)


    1. Alexex14 Автор
      29.08.2026 09:38

      Да как будто можно юзать параллельно, одно другому не мешает.


    1. Qwest_Prozto
      29.08.2026 09:38

      Есть иной подход. Я отключаю память для меньшего размытия контекста. На каждый проект тащу универсальные правила и первым запросом составляю специфичные проекту. Также где то рядом кладу список файлов и краткое описание что в нем. Ну и файлы roadmap и последних действий по проекту. Больше агентская структура но пробовал в Claude web, тоже вполне работает - ИИшка смотрит только кусочек нужного ей файла, а не тащит огромную историю проектов.


  1. Aneugene
    29.08.2026 09:38

    D13 в Arduino nano, который не работает как GPIO input, пока не отпаять светодиод или резистор - молчаливый фейл, который познаётся новичками на собственной заднице (а старые версии нейросеток вешали input на d13 безо всяких предупреждений о выпаивании).

    Задумка отличная, спасибо за проект!


  1. ZX-ruban
    29.08.2026 09:38

    Не ленитесь давая задание ИИшнице, описывайте подробно что, когда и с кем, в плоть до конкретного Пина и размера дисплея.


    1. Qwest_Prozto
      29.08.2026 09:38

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


  1. Kwentin3
    29.08.2026 09:38

    Для тех, кто работает с железом, классический RAG вообще не прижился. Ошибка в распиновке, смещении регистра или тайминге на один такт в микроэлектронике обходится слишком дорого. Та же Nvidia в своём проекте ChipNeMo быстро упёрлась в то, что скармливать PDF-спецификации чипов в векторные базы бессмысленно: семантический поиск неизбежно теряет жёсткие связки и ограничения. Поэтому они сразу пошли по пути нормализации проектной документации в строгие машиночитаемые графы, AST и типизированные структуры.

    Самой модели «сырой» текст больше не отдают. Ей показывают только схемы метаданных, под которые она генерирует точечный исполняемый код — чаще всего на Python или Tcl, который стандартно используется в EDA-инструментах для проектирования чипов. Скрипт выполняется в рантайме, забирает из базы хирургически точный срез данных и прогоняет его через валидаторы. Если код упал с ошибкой, модель получает traceback и правит запрос сама. В итоге всю критичную проверку правил берёт на себя детерминированный софт, а за LLM остаётся только логика формулирования запроса.

    • IP-XACT (IEEE 1685 / XML/JSON): Мировой промышленный стандарт описания регистров, шин, адресов и интерфейсов микросхем. PDF переводят в IP-XACT, а уже по нему агент делает точечный парсинг и сборку контекста.

    • SystemRDL: Специализированный язык описания регистровых карт устройств. Компиляторы SystemRDL (PeakRDL, rdl-compiler) позволяют генерировать C-заголовки, Verilog и Python API на лету.

    • Tcl / Pyverilog / cocotb:

      • Tcl — стандарт де-факто для скриптинга всех промышленных САПР (Synopsys, Cadence, Xilinx Vivado).


    1. Alexex14 Автор
      29.08.2026 09:38

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


  1. Kiryl_Kurtsou
    29.08.2026 09:38

    При помощи ИИ я спалил RPI PICO H


    1. Alexex14 Автор
      29.08.2026 09:38

      Расскажите каким образом и что привело к этому? :)


    1. Alexex14 Автор
      29.08.2026 09:38

      Расскажите как это произошло и что к этому привело? :)


      1. Kiryl_Kurtsou
        29.08.2026 09:38

        Решил протестировать плату, как метеостанция на дому (комнатного типа). Я понимал что PICO очень критична к перепадам питания, но доверился ИИ полностью. Вставил код, поправил провода как говорил ИИ, запустил. Светодиод моргнул. Ни дыма, ни искр, одна тишина. Отсоединил плюс от батарейки и снова подал. В голове осознание, что-то не то. Проверил цепь, проверил код. Всё нормально. Прозвонил мультиметром и тут все началось. Спросил у ИИ про питание, и тут она выдала, что допустила ошибку. Но предложила заменить плату на новую и поменять питание. Но плата была одна. После этого, проверяю ИИ по несколько раз и дополнительно пропускаю через другой ИИ.


        1. sav13
          29.08.2026 09:38

          А что, PICO может программно напряжением управлять?

          Что то очень сомнительно, что даже ИИ это может )))

          Может батарейка у вас была 9 или 12В ? Или питание перепутали?

          А потом на ИИ всех собак повесили


          1. Kiryl_Kurtsou
            29.08.2026 09:38

            В том то и дело, что были у меня крона , блок на 2 батарейки и 12В блок . В се стояло на пальчиковых, как надо. Но в тексте от ИИ, говорилось, возьмите 9В. Но мое критическое мышление не сработало.


          1. Kiryl_Kurtsou
            29.08.2026 09:38

            А если говорить еще глубже, я не особо силен в этой стихии плат, есть ESP32-C6-lcd1.47. Но в ней брак, дисплей не работает.


            1. Alexex14 Автор
              29.08.2026 09:38

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


              1. Kiryl_Kurtsou
                29.08.2026 09:38

                Закладку оставил, кттс.