Как я перестал писать код для микроконтроллеров вручную и подружил ESP32C6 с AI (Опыт создания платформы) — АСУ ТП: сообщество инженеров

Как я перестал писать код для микроконтроллеров вручную и подружил ESP32C6 с AI (Опыт создания платформы)

Меня зовут Александр Воробьев. За моими плечами разработка более 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
Плата собственной разработки.

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

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

  • схема подключения датчиков к плате
  • описание библиотек, используемых в скетче
  • выбор датчика (DHT11, DHT22, DS18B20, BME280,…..), при выборе которого создаётся промпт для агента автоматически
  • выбор модуля (DS1307 RTC, LN298, WS2812B, ……), при выборе которого создаётся промпт для агента автоматически
  • Интеграция с Алисой Яндекса
  • Выбор кейсов (умная теплица, умный дом, метеостанция, умная кормушка, мониторинг энергии и т.д….) в котором уже предусмотрена работа с определёнными датчиками и модулями.
Выбор датчик из списка датчиков
Выбор кейса из списка
При написании скетча для датчика, высвечиваются клеммы для его подключения

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

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

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

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

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

Источник: https://habr.com/ru/articles/1002110/

🔗 Как я перестал писать код для микроконтроллеров вручную и подружил ESP32C6 с AI (Опыт создания платформы)

Оставьте комментарий

Войти

Зарегистрироваться

Сбросить пароль

Пожалуйста, введите ваше имя пользователя или эл. адрес, вы получите письмо со ссылкой для сброса пароля.

Прокрутить вверх