Главная страница платформы AIoT Инноватор
Главная страница платформы AIoT Инноватор

Привет, Хабр! Меня зовут Александр Воробьев. За моими плечами разработка более 100 электронных устройств, пуско-наладка АСУ ТП и множество проектов, где нужно было "прикрутить" датчик к микроконтроллеру, написать веб-интерфейс и заставить это всё работать вместе. Каждый раз — это горы кода, даташитов и времени. В какой-то момент я задался вопросом: а можно ли автоматизировать этот процесс? Чтобы инженер думал над архитектурой, а не над синтаксисом? В этом посте я поделюсь своим путем создания инструмента, который позволяет собирать сложные IoT-системы за минуты с помощью AI-агента, и покажу это на реальных кейсах.

Боли разработки

Тем, кто разрабатывал своё IoT устройство знаком этот процесс, который состоит из: выбор датчика, чтение даташита, поиск библиотек, написание кода для опроса, отладка протоколов (I2C, RS-485), написание веб-интерфейса. Это временные затраты (недели, а иногда даже и месяцы), необходимость держать в голове кучу информации, сложность интеграции "железа" от разных вендоров. У меня многие интересные IoT проекты так и не дошли до логического завершения ((( и были отправлены пылиться в ящик до лучших времён.

Приход ChatGPT и облегчение жизни программистам микроконтроллеров

Проектов, которые хотелось запустить копилось много, а времени на это не было от слова - совсем. И тут появился ОН! Искусственный Интеллект! Точнее его продукт - ChatGPT. И тут понеслось. Я начал писать промпты для arduino и esp32 только в путь. Каждый день создавал новый проект. Какие проекты я не мог выполнить в связи с отсутствием скиллов я стал реализовывать за несколько часов. Но потом стал видеть ограничения - определенные библиотеки не подходили для определенных микроконтроллеров. Та библиотека, которая работала с Arduino UNO, не работала с ESP32C6 в связи с разностью архитектур и даже библиотека, которая без проблем компилировалась для ESP32 WROOM не работала с ESP32C6, например AsyncTCP и ESPAsyncWebServer. А тут я решил ещё разработать плату на базе ESP32C6 с основными интерфейсами - RS485, I2C, 0-10V, с аналоговыми входами, цифровыми входами (для индуктивных датчиков 12V) и аналоговыми выходами, ну и с 3мя реле.

Плата на базе ESP32C6 и ИИ агент к ней

Для ESP32C6 ситуация была жуткая - ИИ писал код, который не компилировался - то библиотека не работает, то плата уходит в watchdog, то по I2C нет передачи данных, так как у ESP32C6 - LowPower I2C, то ещё какая то фигня. Меня это стало бесить очень сильно. Плюс ко всему нужно было писать каждый раз порты в скетче для работы с моей платой. ИИ же не знал к какому конкретно порту подключен датчик. И тут я пришёл к тому, что нужно создавать своего ИИ агента с инструкциями, в которых я указал правила написания кода. Такие как -

  • Не используй библиотеки AsyncTCP и ESPAsyncWebServer

  • HTML должен быть валидным, адаптивным и быстрым

  • Для датчика DS18B20 используй только библиотеку OneWireNg
    от Piotr Stolarz

  • При работе с I2C используй шину I2C Low Power (частота 100 кГц, питание 3.3 V).
    Питание датчиков по шине I2C: 3V3_I2C и GND_I2C. Подтягивающие резисторы SDA/SCL (4.7–10 kΩ) к 3.3 V уже есть на плате, о них не надо писать пользователю

  • Пиши код без использования delay()

  • Для аналоговыех входов V_adc = (adc_value / 4095.0) 3.3;
    V_sensor = V_adc
    (5100 + 10000) / 10000; // реальное напряжение 0–5 В

    И так далее, естественно правил намного больше, чем я тут перечислил. ИИ агента я сделал на одной платформе, название которой пока не буду писать, ибо пока всё работает в тестовом режиме без коммерционализации.

ИИ агент написал код по промпту для подключения датчика BME280
ИИ агент написал код по промпту для подключения датчика BME280
Плата собственной разработки.
Плата собственной разработки.

Новые фишки моей платформы

Далее я стал добавлять новые фишки на сайт, такие как -

  • схема подключения датчиков к плате

  • описание библиотек, используемых в скетче

  • выбор датчика (DHT11, DHT22, DS18B20, BME280,.....), при выборе которого создаётся промпт для агента автоматически

  • выбор модуля (DS1307 RTC, LN298, WS2812B, ......), при выборе которого создаётся промпт для агента автоматически

  • Интеграция с Алисой Яндекса

  • Выбор кейсов (умная теплица, умный дом, метеостанция, умная кормушка, мониторинг энергии и т.д....) в котором уже предусмотрена работа с определёнными датчиками и модулями.

Выбор датчик из списка датчиков
Выбор датчик из списка датчиков
Выбор кейса из списка
Выбор кейса из списка
При написании скетча для датчика, высвечиваются клеммы для его подключения
При написании скетча для датчика, высвечиваются клеммы для его подключения

Так же я добавил возможность видеть сколько памяти микроконтроллера прошивка занимает

Маркетплейс датасетов и обучение нейронок TinyML на платформе

Ну и главной изюминкой всего этого проекта явлется - Маркетплейс данных IoT, куда можно будет загружать готовые датасеты с датчиков для продажи или бесплатного пользования и возможн��сть обучения нейронок для микрокнтроллера.

Но это уже другая история....

Спасибо за внимание.

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


  1. smart_alex
    21.02.2026 07:37

    Пиши код без использования delay()

    М-да... А без ваших инструкций он бы сам не догадался? :)

    Ну и в целом: если пойти по этому пути, то остатки квалификации в программировании MCU очень быстро испарятся и останется одна зависимость от AI.


    1. graff59 Автор
      21.02.2026 07:37

      К сожалению нет. Писал код с delay().


      1. rodial
        21.02.2026 07:37

        Я для коротких скетчей недавно использовал AI Mode search от Гугла, там простенький ИИ, но в основе контекста лежит релевантный(в большинстве случаев) поиск в интернете. Результат для esp32c6 с использованием wifi мне выдавал без delay() сразу, без просьб. Вполне может учитывать нюансы платы и датчиков. Если нужно много кода - то проще попросить его выписать все нюансы и закинуть их в более мощный ИИ.


    1. vanesk
      21.02.2026 07:37

      Сложно сказать, как влияет на квалификацию использование аи. По моим ощущениям она только растет. Качество продукта вот падать может. И даже тут я сказал бы, что может падать, а может и не падать.


      1. smart_alex
        21.02.2026 07:37

        Микроконтроллер мало "знать", его еще нужно "чувствовать" в динамике. При "промтинге" целой системы, как это делал автор статьи, все эти навыки полностью вырождаются.

        Я уж не говорю о качестве кода ИИ, и что от него в любой момент можно ожидать чего угодно (любых косяков на ровном месте).


    1. Volodrippa
      21.02.2026 07:37

      Что мешает сохранить квалификацию закинув вопрос к ИИ все объяснить с ссылками на источники, и для уверенности закинуть код в более умные сетки для code review?


      1. gaussssss
        21.02.2026 07:37

        Теория без практики мертва, так что квалификацию это не сохранит.


  1. sdegtyarev
    21.02.2026 07:37

    Еще нужно научить его esp_log использовать вместо serial.print.


  1. sozdatel-ed
    21.02.2026 07:37

    Когда за плечами более сотни разработанных устройств, плата, как правило, уже не собирается на Devboard ESP32-WROOM, а проектируется как законченный промышленный узел с продуманной топологией, защитой и технологичностью. Так же хочу отметить что по RS485 сначала ставят клеммную колодку -> терминатор 120 Ом с переключателем -> самовосстанавливающиеся предохранители -> ударные диоды -> на микросхему интерфейса. Смысл в том, что при срабатывании TVS-диодов через них начинает течь значительный импульсный ток. Если перед ними стоит ограничительный элемент, то при затяжной перегрузке он уйдёт в защиту и разорвёт цепь, разгрузив TVS по теплу. В противном случае весь ударный ток ложится непосредственно на TVS, и при серьёзном surge его ресурс может быть исчерпан за один инцидент. Ещё фраза "Напряжение нагрузки реле до 16VDC" режет глаз. Реле не имеет «напряжения нагрузки» - корректно указывать максимальное коммутируемое напряжение и ток нагрузки. Указание только напряжения без допустимого тока не даёт понимания реальных ограничений.


    1. graff59 Автор
      21.02.2026 07:37

      "Максимальное коммутируемое напряжение нагрузки" не влезет на плату. Максимальный ток нагрузки знает ИИ агент и он консультирует по этому вопросу при написании кода. Возможно не стоило писать ничего не шелкографии, но люди разные бывают....


  1. sozdatel-ed
    21.02.2026 07:37

    Автор немного лукавит, когда пишет, что за его плечами «более 100 разработанных устройств».

    Любой желающий может самостоятельно проверить открытую информацию следующим образом:
    1. Ввести в Google запрос: «Александр Воробьев разработка устройств на esp32»
    2. В результатах поиска выбрать страницу с сайта TenChat (обычно это одна из первых ссылок, публикация с темой «Распознавание жестов рукой (Python + ESP32 + …)»).
    3. Перейти в профиль автора и пролистать ленту публикаций.
    4. Найти материал примерно восьмимесячной давности с темой «Импортозамещение по RUSS-ки».
    5. В тексте публикации можно увидеть формулировку о «многолетнем опыте разработки серийных радиоэлектронных устройств (свыше 200)».

    Остаётся только восхититься скромностью автора — оказывается, за его плечами уже более 200 устройств.


    1. graff59 Автор
      21.02.2026 07:37

      Инфоцыгане могут приукрашать свои достижения, а я нет? Один раз приукрасил опыт и то "вычислили".


      1. CyberDriver666
        21.02.2026 07:37

        Так может и сейчас (со 100 устройствами) тоже приукрасили - все как в старой доброй сказке про пастуха, овец и волков.


        1. graff59 Автор
          21.02.2026 07:37

          Нет, разработал около 100 устройств различной сложности, может 98, может 104


  1. LDiga
    21.02.2026 07:37

    Я тоже пробовал напечатал куб из Minecraft купил модуль с диодом РГБ и датчиком приближения , вкл выкл норм он написал а вот по расстоянию так и не смог .


  1. gaussssss
    21.02.2026 07:37

    Тем, кто разрабатывал своё IoT устройство знаком этот процесс, который состоит из: выбор датчика, чтение даташита, поиск библиотек, написание кода для опроса, отладка протоколов (I2C, RS-485), написание веб-интерфейса

    Читать даташиты полезно и при использовании ии. А то многие воспринимают ии как волшебный черный ящик и в итоге время на решение проблем через ии кратно больше времени на анализ даташита.


  1. samponet
    21.02.2026 07:37

    Ох уж эта ESPAsyncWebServer.. кровушки попила)) В результате использовал esphttpserver. Но вылезали другие странности- код компилировался, но не работал, то точка доступа не поднималась, то ещё что то. Отложил в результате разработку, пока не появится интерес допилить до рабочего варианта.


  1. Markgresilov
    21.02.2026 07:37

    Микроконтроллеры это такое дело, что если в обычном программировании ИИ провоцирует утечки памяти и зависания, то в МК с памятью в доли мегабайта, где всё в один момент может взорваться, трудно представить, что будет...


    1. isNikita
      21.02.2026 07:37

      Первое где активно начал применять chatgpt, еще версии 3.5, - так это поиск утечек памяти в коде для контролеров.


  1. pistoletov
    21.02.2026 07:37

    Пробовал кодить с deep seek. Для arm. Результат то получал но не факт что быстрее чем если бы читал рефы. Вы абсолютно правы, я переделал и так N итераций...а это все трата времени и опыта не добавляет


  1. Antonzlo
    21.02.2026 07:37

    Подскажите, а почему бы не использовать какую-то прослойку, например ESPHome? Там много готовых компонентов, если научить ИИ читать код и документацию, мне кажется получится неплохо


  1. igrunov
    21.02.2026 07:37

    А можно немножко про разработку платы? Предполагается ли корпусирование и как будет производиться фиксация платы? И чем обусловлено использование devboard - для удобства повторения желающими или с целью сократить разработку за счёт упрощения этапа проектирования обвязки / универсальности? Компоненты на плате сами размещали или на проеводстве?


    1. graff59 Автор
      21.02.2026 07:37

      Доброго времен суток. Плата разработана для корпуса на дин рейку DM6G. Использование devboard связано со скоростью разработки и себестоимостью. Схемотехнику и PCB разрабатывал полностью сам, SMT монтаж и производство платы заказывал в Китае.


  1. Shura_m
    21.02.2026 07:37

    Я то же попробовал так писать. Сначала - Вау, круто !!!

    За пару дней можно сделать то, что делал бы две недели.

    А через месяц я начал понимать, что что-то не то.

    Да, я написал проект, но я толком не понимаю, как оно работает. Проект вроде мой, но и не мой. Код какой-то чужой.

    Плюс, когда сам пишешь, читаешь документацию, разбираешься в чем-то, думаешь, развиваешься. А тут у меня появилось чувство, что поглупел и обленел.

    Поэтому для себя я пока решил отложить эту технологию в долгий ящик.

    Может быть потом, когда я поглупею, я и вернусь к ней, но пока- нет.