Идея → FLProg → ИИ → UBI → реальное устройство

ecoins
Администратор
Сообщения: 4493
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 228 раз
Поблагодарили: 388 раз

Идея → FLProg → ИИ → UBI → реальное устройство

Сообщение ecoins »

И теперь это возможно
FLProg + ИИ — от идеи до собственного блока

До недавнего времени создание собственного блока FLProg обычно означало достаточно глубокое погружение во внутреннее устройство программы, библиотеки, генерацию C++ и формат пользовательских UBI-блоков.

Но сегодня появляется другой подход.
Пользователю уже не обязательно начинать с написания большого количества кода.
Достаточно понимать, какое устройство мы хотим получить и как оно должно работать.
А дальше начинается совместная инженерная работа человека, FLProg и ИИ.

Реальный пример: создаём блок измерения температуры NTC

Задача была совершенно практической.
Есть обычный NTC-термистор.
Нужно получить для FLProg нормальный законченный блок измерения температуры:

• NTC 10 кОм или 100 кОм;
• подключение термистора к GND или VCC;
• работа как от обычного ADC микроконтроллера, так и от внешнего АЦП;
• настройка параметров термистора;
• периодический опрос без блокировки программы;
• отключаемый вход EN;
• результат как FLOAT и как целое значение;
• оформление и поведение в привычном стиле FLProg.

При этом хотелось не писать всё с нуля.
Шаг 1. Берём уже существующие решения FLProg

В качестве примера был выбран уже работающий блок ADS1115 и соответствующие библиотеки в стиле FLProg.
ADS1115.png
NTC.png
----------------------------------------------------------------------------------------------------------

То есть мы не просим ИИ:
«Напиши мне какой-нибудь код для NTC».

Мы говорим совсем иначе:
«Вот как в FLProg принято строить библиотеки и блоки. Вот рабочий пример ADS1115. Новый блок должен быть построен по тем же принципам».

Это принципиально важная разница.
ИИ получает не только техническое задание, но и образец архитектуры проекта.

Шаг 2. Описываем задачу обычным инженерным языком
Первоначальные требования могут быть совсем простыми.
Например:
«Нужен блок измерения температуры NTC 10 кОм. Делитель питается от 3.3 В. Хочу получить температуру в градусах».

После первой реализации появляются уточнения.
Нужен выбор 10 кОм / 100 кОм.
Нужно задавать Beta.
Нужна опорная температура T0.
Нужно учитывать номинал постоянного резистора.
Нужно поддерживать две схемы включения NTC — к GND и к VCC.
Нужна возможность передавать в библиотеку не только значение ADC, но и уже измеренное напряжение, например от ADS1115.
Нужен вход EN.
Нужна регулируемая периодичность измерений.
И так, итерация за итерацией, первоначальная идея превращается в законченный компонент.

Именно здесь ИИ оказывается особенно полезен.

Не обязательно заранее составлять идеальное техническое задание на десятки пунктов.
Можно построить первую версию, посмотреть на неё глазами пользователя FLProg и сказать:
«Вот этого не хватает».

После чего изменить архитектуру и повторить цикл.

Шаг 3. Не просто код — библиотека в стиле FLProg
В результате появилась отдельная библиотека:
RT_HW_FLProg_pin_NTC.hpp

При её создании задача состояла не только в вычислении температуры по формуле NTC.
Важно было сохранить принципы, уже используемые внутри FLProg и RT_HW:
• неблокирующая работа;
• периодический вызов из основного цикла;
• настройка через параметры блока;
• отделение библиотеки от визуального UBI-блока;
• возможность дальнейшего расширения;
• единый стиль с другими библиотеками FLProg.
Это уже не случайный фрагмент Arduino-кода из Интернета.
Это компонент экосистемы FLProg.

Шаг 4. Создаём пользовательский UBI-блок
Следующий этап — превратить библиотеку в настоящий визуальный блок FLProg.
У блока появляются:
• вход измеряемого значения;
• EN;
• параметры NTC;
• выбор схемы подключения;
• период опроса;
• выход температуры FLOAT;
• выход температуры в целочисленном формате.

После импорта блока пользователь уже не видит всю внутреннюю работу.
Для него это обычный элемент FLProg.
Перетащил на схему.
Задал параметры.
Соединил входы и выходы.
Работаем.

А дальше начинается самое интересное
Сегодня мы сделали NTC.
Но тот же подход можно применять практически к любому новому устройству или алгоритму.

Есть новый датчик?
Новый I2C-чип?
Расширитель входов/выходов?
Контроллер двигателя?
Дисплей?
Необычный промышленный интерфейс?

Берём документацию устройства.
Находим наиболее близкий по архитектуре существующий блок FLProg.
Описываем, что хотим получить.
И начинаем проектирование.

ИИ помогает:
• разобраться с документацией микросхемы;
• подобрать существующие решения FLProg в качестве основы;
• написать библиотеку;
• привести её к стилю проекта;
• создать UBI-блок;
• искать ошибки компиляции;
• изменять интерфейс блока по результатам тестирования;
• готовить документацию и примеры.

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

FLProg + ИИ превращает пользователя из потребителя готовых блоков в участника их проектирования.

Не обязательно быть профессиональным разработчиком библиотек.
Если вы хорошо знаете оборудование, с которым работаете, понимаете задачу и можете объяснить, каким должен быть удобный блок FLProg, — этого уже достаточно, чтобы начать.

Нам особенно интересны реальные задачи

Если у вас есть устройство, датчик, контроллер или интерфейс, которого пока нет в FLProg, — предлагайте.
Лучше всего, если у вас есть само устройство и возможность проверить результат на реальном оборудовании.

Именно такой цикл:
идея → первая версия → компиляция → реальное устройство → замечания → новая версия
позволяет получать действительно качественные блоки.

FLProg + ИИ. Теперь создать новый блок может не только разработчик FLProg.
Теперь в этом может участвовать каждый инженер, который знает, что именно ему нужно от своего устройства.
--------------------------------------------------------------------------

Результаты: готовые библиотеки и блок.
RT_HW_FLProg_pin_NTC.hpp
01.Сенсор_температуры_NTC_(Code_-_Professional).ubi
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
DerAlex
Лейтенант
Сообщения: 509
Зарегистрирован: 06 сен 2015, 08:39
Откуда: Новосибирск
Благодарил (а): 5 раз
Поблагодарили: 23 раза

Re: Идея → FLProg → ИИ → UBI → реальное устройство

Сообщение DerAlex »

ИИ напишет код который редактор сразу забракует. Его нужно переделывать раз двадцать прежде чем он встанет как надо
аврора
Аватара пользователя
Phazz
Полковник
Сообщения: 3521
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 384 раза
Поблагодарили: 265 раз

Re: Идея → FLProg → ИИ → UBI → реальное устройство

Сообщение Phazz »

Я как-то об этом уже говорил, но скажу еще раз. Нужно менять синтаксис блоков и проектов с XML на Json. Тогда у ИИ будет возможность делать проекты в флпрог писать блоки и тд.
Editor
Рядовой
Сообщения: 42
Зарегистрирован: 17 авг 2025, 17:33
Имя: Ашот
Благодарил (а): 4 раза
Поблагодарили: 3 раза

Re: Идея → FLProg → ИИ → UBI → реальное устройство

Сообщение Editor »

Хорошо бы какой-нибудь видеоурок создать как это всё делается. Хоть я и не часто творю что то новое, но иногда хочется просто чему то научиться ещё. Конечно изучить бы этот С++ ,но в моём возрасте это как бы уже поздно, да и платить за онлайн уроки, когда не знаешь полезет ли он в мою голову тоже не хочется. А так бы видеоурок и может с этим ИИ проще было бы что то сделать новое.)
Dmabst
Сержант
Сообщения: 200
Зарегистрирован: 08 дек 2018, 16:49
Имя: Дмитрий
Благодарил (а): 6 раз
Поблагодарили: 6 раз

Re: Идея → FLProg → ИИ → UBI → реальное устройство

Сообщение Dmabst »

Phazz писал(а): 23 авг 2026, 20:59 Я как-то об этом уже говорил, но скажу еще раз. Нужно менять синтаксис блоков и проектов с XML на Json. Тогда у ИИ будет возможность делать проекты в флпрог писать блоки и тд.
Интересно, можно ли верить DeepSeek, который утверждает, что Antropic лучше работает с XML, а OpenAI с JSON?
Аватара пользователя
Phazz
Полковник
Сообщения: 3521
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 384 раза
Поблагодарили: 265 раз

Re: Идея → FLProg → ИИ → UBI → реальное устройство

Сообщение Phazz »

Сомневаюсь если честно) Дипсик вообще довольно примитивный и очень склонен к фантазиям. С чего он вообще это взял
baibradarBG
Рядовой
Сообщения: 23
Зарегистрирован: 26 дек 2022, 12:23
Имя: Dimitar
Благодарил (а): 10 раз
Поблагодарили: 4 раза

Re: Идея → FLProg → ИИ → UBI → реальное устройство

Сообщение baibradarBG »

Вот реализация моей идеи с использованием только ИИ. Я сделал термометр на базе ESP01s и датчика SHT 45. Я не программист. Всё это я сделал за несколько часов. С помощью Flprog мне не удалось добиться такой функциональности.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Ilich
Рядовой
Сообщения: 58
Зарегистрирован: 12 авг 2024, 11:56
Имя: Игорь
Благодарил (а): 17 раз
Поблагодарили: 29 раз

Re: Идея → FLProg → ИИ → UBI → реальное устройство

Сообщение Ilich »

Я делал по такому принципу - Идея -> ИИ -> Проверка и отладка -> Блок FlProg с помощью утилиты ув. Phazz.
Образцы блоков выложу чуть позже
vitalik9
Рядовой
Сообщения: 53
Зарегистрирован: 22 авг 2021, 12:08
Имя: Виталий
Благодарил (а): 5 раз
Поблагодарили: 5 раз

Re: Идея → FLProg → ИИ → UBI → реальное устройство

Сообщение vitalik9 »

при помощи ИИ Жемени создается код для конвертора уважаемого Phazz за что ему огромная благодарность.
Инструкции для ии при написании кода
Инструкция по написанию кода для конвертера ino2ubi
Код пишется строго сверху вниз в рамках фиксированной 7-зонной структуры. Перемешивание разделов, создание локальных статических переменных или скрытие логики внутри функций запрещено — парсер считывает код линейно.
1. Структура программы: Код обязан разделяться на блоки: // 1. HEADER COMMENT (краткое описание) и описание входов и выходоа, // 2. INCLUDES (подключение библиотек), // 3. DEFINES (только аппаратные пины, лимиты массивов и константы), // 4. VARIABLES (все глобальные переменные), // 5. FUNCTIONS (дополнительные функции пишутся до setup), // 6. SETUP (исключительно базовая инициализация), // 7. LOOP (основная линейная логика).
2. Маркировка переменных (Раздел 4):
Парсер формирует клеммы и теги на основе комментариев в конце строки. Каждая глобальная переменная должна быть подписана строго одним из маркеров: // in (входной сигнал), // out (выходной сигнал), // par (статический параметр) или // variable (рабочая переменная/буфер). Запрещено использовать префиксы in_ или out_ в именах переменных — тип определяется только по комментарию. Имена должны быть короткими но читаемыми.
3. Аппаратные ограничения и стабильность:
* Запрещен delay(): Любые интервалы времени реализуются через millis() с обязательной защитой от переполнения путем вычитания сохраненного времени из текущего (if (curTm - tmr >= prd)).
* Динамический сброс: Если входные параметры (например, количество замеров) изменяются «на лету» из FLProg, код должен отслеживать это через проверку предыдущего состояния (lstLmt != limit) и мгновенно сбрасывать текущие индексы и счетчики в ноль для перезаполнения буфера.
4. Строгие запреты вывода:
* Категорически запрещен Serial.print (блокирует потоковый обмен данными конвертера).
* Запрещен любой код инициализации Wi-Fi, веб-серверов или OTA (сетью управляет внешний блок FLProg).
* Запрещено сокращать генерируемый код фразами вроде // остальной код без изменений (ломает автосборку конвертера) и Запись в EEPROM: происходит только тогда, когда. Всегда делаешь текстовое описание входов и выходов пользователь действительно изменил значение на экране (входная переменная // in изменилась).
* Запрещено использовать фильтр для скользящего среднего
КАТЕГОРИЧЕСКИ ЗАПРЕЩЕНО использовать директиву return; прямо внутри функции loop(), потому что она обрывает выполнение всех последующих плат и блоков программы!
Если нужно отключить или пропустить отдельный блок, делать через if (enBlock) { ... } else { ... }, чтобы остальные платы и блоки продолжали выполняться.
golloper
Сержант
Сообщения: 270
Зарегистрирован: 28 сен 2018, 17:16
Имя: Дмитрий
Благодарил (а): 33 раза
Поблагодарили: 74 раза

Re: Идея → FLProg → ИИ → UBI → реальное устройство

Сообщение golloper »

При всём моём уважении к FLprog, при использовании ИИ он тут не уместен. Топикстартер немного опоздал со своим постом минимум на пол года. Надеюсь что код FLProg пишет до сих пор Сергей а не ИИ из города Верхней Пижмы.
Engineer200
Рядовой
Сообщения: 56
Зарегистрирован: 19 дек 2025, 06:16
Имя: Александр
Благодарил (а): 18 раз
Поблагодарили: 5 раз

Re: Идея → FLProg → ИИ → UBI → реальное устройство

Сообщение Engineer200 »

golloper писал(а): 25 авг 2026, 19:06 При всём моём уважении к FLprog, при использовании ИИ он тут не уместен. Топикстартер немного опоздал со своим постом минимум на пол года. Надеюсь что код FLProg пишет до сих пор Сергей а не ИИ из города Верхней Пижмы.
Вы конечно умный. Будьте добры, объясните популярно, что Вы имели в виду?
Люблю делать то, что потом само работает.
Engineer200
Рядовой
Сообщения: 56
Зарегистрирован: 19 дек 2025, 06:16
Имя: Александр
Благодарил (а): 18 раз
Поблагодарили: 5 раз

Re: Идея → FLProg → ИИ → UBI → реальное устройство

Сообщение Engineer200 »

Я использовал ИИ для создания блока для старой микросхемы управления четырёхразрядным семисегментным индикатором. Просил сделать код, разбитый на разделы, для внесения в редактор блоков. По разделам "Объявления", "Setup", "Loop", "Функции". Получилось.
В статье ecoins фактически предлагает перейти на другой язык программирования задания задачи машине. Правильно сделать промт (или промпт?), по русски "задание" - это искусство, не проще программистского. Да, не на птичьем языке операндов машинных языков как и у фармацевтов (название Ибупрофен запомнил только после анекдота). На читаемом и понимаемом простым человеком языке, да. Вот и вся разница. Проблема остаётся в выражении (описании) того, чего хочешь добиться.
Я за! Давайте учиться выражаться так, чтоб нас понимали ... машины. :D
Люблю делать то, что потом само работает.
Аватара пользователя
badr555
Рядовой
Сообщения: 18
Зарегистрирован: 09 май 2022, 12:04
Откуда: Bytom, Poland
Имя: Andrey
Благодарил (а): 1 раз
Поблагодарили: 4 раза

Re: Идея → FLProg → ИИ → UBI → реальное устройство

Сообщение badr555 »

Я использовал ИИ для создания блока для старой микросхемы управления четырёхразрядным семисегментным индикатором. Просил сделать код, разбитый на разделы, для внесения в редактор блоков. По разделам "Объявления", "Setup", "Loop", "Функции".
Я поступил так-же. Попробовал конвертор уважаемого Phazz, ни чего путного не вышло, или я тупой :smile14: .
При генерации кода ИИ ему надо прямо говорить, чтобы он указывал где вход, выход и настр.параметр, а ещё ему надо указать что код должен быть не блокирующим и тогда он сам вырежет все delay и заменит на millis.
И тогда всё становится легко и просто :smile9: .
golloper
Сержант
Сообщения: 270
Зарегистрирован: 28 сен 2018, 17:16
Имя: Дмитрий
Благодарил (а): 33 раза
Поблагодарили: 74 раза

Re: Идея → FLProg → ИИ → UBI → реальное устройство

Сообщение golloper »

Engineer200 писал(а): 26 авг 2026, 06:41
golloper писал(а): 25 авг 2026, 19:06 При всём моём уважении к FLprog, при использовании ИИ он тут не уместен. Топикстартер немного опоздал со своим постом минимум на пол года. Надеюсь что код FLProg пишет до сих пор Сергей а не ИИ из города Верхней Пижмы.
Вы конечно умный. Будьте добры, объясните популярно, что Вы имели в виду?
А что тут непонятного, зачем просить ИИ писать код для одного блока, когда можно сразу ему озвучить всю задачу и получить элегантное решение,
Вот человек выше выложил проект для датчика температуры, плюс к нему ВЭБ интерфейс, могу уверить, такое сделать чисто в FLProg, упаришься.
А тут сразу, залил и работает.
Аватара пользователя
Phazz
Полковник
Сообщения: 3521
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 384 раза
Поблагодарили: 265 раз

Re: Идея → FLProg → ИИ → UBI → реальное устройство

Сообщение Phazz »

Совершенно верно, нужна возмозможность более глубокой интеграции ии в флпрог. Для этого нужен более понятный синтаксис файла проекта. В идеале конечно апи для прямого доступа агентов.
Аватара пользователя
Ilich
Рядовой
Сообщения: 58
Зарегистрирован: 12 авг 2024, 11:56
Имя: Игорь
Благодарил (а): 17 раз
Поблагодарили: 29 раз

Re: Идея → FLProg → ИИ → UBI → реальное устройство

Сообщение Ilich »

badr555 писал(а): 26 авг 2026, 08:14
Я использовал ИИ для создания блока для старой микросхемы управления четырёхразрядным семисегментным индикатором. Просил сделать код, разбитый на разделы, для внесения в редактор блоков. По разделам "Объявления", "Setup", "Loop", "Функции".
Я поступил так-же. Попробовал конвертор уважаемого Phazz, ни чего путного не вышло, или я тупой :smile14: .
При генерации кода ИИ ему надо прямо говорить, чтобы он указывал где вход, выход и настр.параметр, а ещё ему надо указать что код должен быть не блокирующим и тогда он сам вырежет все delay и заменит на millis.
И тогда всё становится легко и просто :smile9: .
Я поступал иначе - входы и выходы должны объявляться, как глобальные переменные, а уже в конвертере назначать входы и выходы.
Также переменную можно определить и как параметр, ИИ это понимает.
И да, все delay убирать.
Аватара пользователя
DerAlex
Лейтенант
Сообщения: 509
Зарегистрирован: 06 сен 2015, 08:39
Откуда: Новосибирск
Благодарил (а): 5 раз
Поблагодарили: 23 раза

Re: Идея → FLProg → ИИ → UBI → реальное устройство

Сообщение DerAlex »

ИИ уже знает про delay и сам об этом напоминает
аврора
Аватара пользователя
DerAlex
Лейтенант
Сообщения: 509
Зарегистрирован: 06 сен 2015, 08:39
Откуда: Новосибирск
Благодарил (а): 5 раз
Поблагодарили: 23 раза

Re: Идея → FLProg → ИИ → UBI → реальное устройство

Сообщение DerAlex »

Вот рекомендации от ИИ.
Вот пошаговое руководство, как заставить ИИ писать рабочий код для пользовательских блоков (Code / Custom Blocks) без багов.
1. Главное правило: запретите ИИ использовать delay() и while()В FLProg всё работает на таймингах платы. Если ИИ вставит delay(), остановится вся схема (перестанут опрашиваться другие блоки, кнопки, экраны).Решение: Требуйте от ИИ код только на основе millis().
2. Разделяйте код на правильные секции FLProgВ редакторе пользовательского блока есть строго разделенные зоны. ИИ обычно вываливает всё в один текстовый файл. Скармливайте ИИ структуру FLProg и просите разложить код по полочкам:Declare (Объявление): Сюда идут библиотеки (#include) и глобальные переменные.Setup (Инициализация): Код, который выполнится один раз при старте (например, wire.begin()).Loop (Основной цикл): Код, который работает постоянно. Важно: здесь не должно быть объявлений переменных, только логика!
3. Дайте ИИ правильный Промпт (Инструкцию)ИИ выдаст идеальный код для блока, если вы скопируете ему этот шаблон запроса:«Напиши код для микроконтроллера Arduino. Этот код будет использоваться в среде FLProg в качестве пользовательского блока.Условия:Категорически запрещено использовать delay() и блокирующие циклы while.Используй millis() для любых задержек.
Входные переменные блока (которые приходят из FLProg) назови: in_param1, in_param2.
Выходные переменные блока (которые уходят в FLProg) назови: out_result.Раздели итоговый ответ на три четкие секции:
DECLARE (глобальные переменные и библиотеки),
SETUP (настройка при старте),
LOOP (основная циклическая логика, без объявления переменных внутри).»
4.
Избавьтесь от конфликта библиотекЧастая ошибка: ИИ использует стандартную библиотеку (например, для работы с дисплеем или датчиком), а внутри FLProg уже вшита другая версия этой же библиотеки. Происходит конфликт компилятора.Решение: Проверьте в ИИ, какую именно библиотеку он взял. Лучше загрузить её внутрь самого блока FLProg во вкладке «Библиотеки», чтобы программа не искала её по всему компьютеру.
аврора
Аватара пользователя
DerAlex
Лейтенант
Сообщения: 509
Зарегистрирован: 06 сен 2015, 08:39
Откуда: Новосибирск
Благодарил (а): 5 раз
Поблагодарили: 23 раза

Re: Идея → FLProg → ИИ → UBI → реальное устройство

Сообщение DerAlex »

По большому счету FLPROG становится не нужен. Поясню: ИИ пишет код для всего устройства и если делать их этого кода блок пользователя на выходе получается квадрат в котором все функции заключены. А смысл его делать ? Можно сразу код загрузить и пользоваться
аврора
Аватара пользователя
DerAlex
Лейтенант
Сообщения: 509
Зарегистрирован: 06 сен 2015, 08:39
Откуда: Новосибирск
Благодарил (а): 5 раз
Поблагодарили: 23 раза

Re: Идея → FLProg → ИИ → UBI → реальное устройство

Сообщение DerAlex »

FLPROG имеет смысл когда есть набор готовых профессиональных контроллеров и к нему графическая система программирования из стандартных блоков как в Овене.
аврора
Ответить

Вернуться в «Команда ecoins»

Кто сейчас на конференции

Сейчас этот форум просматривают: badr555, Di1000, fsergei70, tolochko и 1 гость