Главная страница платформы 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, куда можно будет загружать готовые датасеты с датчиков для продажи или бесплатного пользования и возможность обучения нейронок для микрокнтроллера.

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

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