Коробка с призраками
Вы нашли на чердаке старый жесткий диск. На нем - папка 'ESP32_Weather_Station_2023'. Внутри: скетч Arduino с комментариями на китайском, файл .stl без названия, фотография собранного устройства и больше ничего. Ни схемы, ни BOM, ни readme.md. Классика.
Раньше такой проект отправлялся в корзину. Сейчас - это идеальный полигон для ИИ. Не для генерации нового кода, а для археологии. Для восстановления утерянного контекста по обломкам.
Это не про 'напиши мне код'. Это про 'объясни, что этот код ДЕЛАЕТ, и как из этого собрать железку'. Фундаментальная разница. Если первое - это копирайтинг, то второе - полноценный реверс-инжиниринг с элементами детектива.
Почему старые инструкции умирают (и как ИИ их воскрешает)
Документация устаревает не потому, что технологии меняются. Она умирает от контекстной энтропии. Автор помнил, что 'пин 12 - это DHT22', но не записал. Он знал, что синий провод идет на 5V, но на фото провод черный. Он использовал библиотеку 'Adafruit_Sensor', которая с тех пор обновилась трижды и сломала обратную совместимость.
ИИ здесь работает как супер-линза, собирающая рассеянный контекст. Он скрещивает данные из:
- Структуры кода (include, define, инициализации)
- Комментариев (даже на другом языке)
- Названий файлов и переменных
- Визуальных артефактов (скриншоты, фото прототипа)
- 3D-моделей (отверстия под разъемы, монтажные точки)
И выдает гипотезу: 'Устройство - это метеостанция на ESP32 с DHT22, BMP280, OLED-дисплеем 0.96" и веб-интерфейсом. Корпус печатается в двух частях, крепление под дисплей - сверху'.
1 Первая ошибка: закинуть все в чат и ждать чуда
Так не работает. ИИ заглохнет в галлюцинациях. Вы получите красивый, но бесполезный текст. Проблема в том, что у нейросети нет иерархии важности. Она не отличает критичный пин reset от декоративного LED.
Вместо этого - методичный допрос. Слой за слоем.
2 Шаг 1: Анализ кода - не 'что', а 'зачем'
Не проси: 'Объясни этот код'. Это слишком широко. Спроси конкретнее:
У меня есть скетч Arduino для ESP32. Ответь по пунктам:
1. Какие датчики или устройства подключены? Найди все #define, константы и инициализации объектов.
2. Какой интерфейс отображения используется (Serial, OLED, LCD, веб-сервер)?
3. Есть ли Wi-Fi подключение? К каким сетям/сервисам подключается?
4. Найди все GPIO пины, которым назначена функция. Составь таблицу: Пин - Назначение - Устройство.
5. Есть ли в коде явные указания на конструкцию (например, комментарии про корпус, питание)?
Вот код:
[вставь код]
Этот промпт заставляет ИИ работать как статический анализатор. Он вытащит факты, а не интерпретации.
3 Шаг 2: Дешифровка 3D-модели - когда .stl молчит
Файл .stl - это просто сетка треугольников. Никаких метаданных. Но ИИ может 'посмотреть' на него и сделать выводы.
Самый эффективный способ: сгенерировать несколько ракурсов (вид сверху, снизу, сбоку) и скормить их Vision-модели вместе с промптом:
Перед тобой 3D-модель корпуса для электронного устройства. Проанализируй изображения и ответь:
1. Из скольких частей состоит сборка? Есть ли крышка, основание, крепления?
2. Где расположены монтажные отверстия для платы? Сколько их и какого примерно диаметра?
3. Есть ли вырезы под разъемы (USB, кнопки, дисплей, датчики)? Опиши их расположение.
4. Каковы примерные габариты корпуса (в мм)?
5. Предположи, для какой платы предназначен корпус (Arduino Uno, ESP32 DevKit, Raspberry Pi Pico)?
Здесь работает ключевое правило: не спрашивай 'что это', спрашивай 'как это устроено'. Разница в том, что первое может привести к фантазиям ('это корпус для квантового компьютера'), а второе - к структурному анализу.
4 Шаг 3: Синтез - сборка пазла из разрозненных данных
Теперь у тебя есть две независимые гипотезы: от анализа кода и от анализа модели. В 70% случаев они будут противоречить друг другу. Код говорит 'дисплей на пинах 21 и 22', а в модели вырез под дисплей с другой стороны.
Вот где нужен третий раунд - синтезирующий. Собери все данные в один промпт:
На основе двух источников составь инструкцию по сборке устройства.
ИСТОЧНИК 1 - Анализ кода:
- Датчики: DHT22 (пин 12), BMP280 (I2C: SDA-21, SCL-22)
- Дисплей: OLED 128x64, подключен по I2C к тем же пинам 21,22
- Wi-Fi: подключается к сети 'HomeNet', передает данные на thingspeak.com
- Питание: от USB 5V
ИСТОЧНИК 2 - Анализ 3D-модели:
- Корпус из двух частей: основание и крышка
- На крышке прямоугольный вырез 30x15 мм (под дисплей?)
- На боковой стенке круглое отверстие диаметром 8 мм (под датчик?)
- 4 монтажных отверстия диаметром 3 мм по углам
- Габариты: примерно 80x60x30 мм
Задачи:
1. Предложи схему соединения компонентов. Где возможны противоречия?
2. Предположи, как расположены компоненты внутри корпуса.
3. Составь список необходимых деталей (кроме электроники).
4. Напиши пошаговую инструкцию сборки.
ИИ начнет разрешать противоречия. 'Круглое отверстие 8 мм - вероятно, для DHT22, чтобы датчик находился снаружи корпуса. Прямоугольный вырез - для OLED, но в коде дисплей на тех же пинах, что и BMP280, значит, они могут быть на одной шине I2C.'
Именно на этом этапе случаются галлюцинации. ИИ может 'уверенно' заявить, что отверстие диаметром 8 мм предназначено для светодиода, хотя для светодиода обычно хватает 5 мм. Всегда перепроверяй логику. Если что-то звучит странно - спроси 'Почему ты решил, что это для датчика, а не для вентиляции?' Заставляй нейросницу обосновывать каждое предположение.
Инструменты, которые спасли проект
Чистый ChatGPT или Claude недостаточны. Нужен стек:
| Задача | Инструмент | Почему |
|---|---|---|
| Анализ кода | Claude 3.5 Sonnet (через Cursor) | Лучшее понимание контекста, может работать с целыми файлами, не теряет нить. Как в статье про настройку Linux-сервера через ИИ. |
| Визуальный анализ 3D | GPT-4V или Gemini Pro Vision | Способны 'понимать' геометрию по скриншотам. GPT-4V точнее в технических деталях. |
| Синтез инструкции | DeepSeek Coder или локальная Llama 3.2 70B | Дешевле для длинных текстов. Можно итеративно править, не боясь лимитов. О выборе модели читай в сравнении Llama с другими. |
| Проверка электроники | Специализированные чат-боты (ElectroBuddy в Telegram) | Знают специфику пайки, распиновки, типичные ошибки. Узкая специализация beats общую модель. |
Типичные ловушки и как их обойти
Ловушка 1: 'Это очевидно'
ИИ видит в коде 'Serial.begin(115200)' и говорит: 'Устройство использует последовательный порт для отладки'. Пропускает, что в loop есть 'if(Serial.available())' - значит, порт еще и для управления. Всегда уточняй: 'Перечисли ВСЕ использования Serial, включая чтение и запись'.
Ловушка 2: Библиотечный анахронизм
Скетч использует библиотеку 'ESP8266WiFi', но плата - ESP32. Раньше это был dead end. Сейчас спрашиваешь ИИ: 'Библиотека ESP8266WiFi в коде для ESP32 - это ошибка или есть совместимость?' ИИ объяснит: 'В ранних версиях Arduino core для ESP32 использовали эту библиотеку для обратной совместимости. Нужно заменить на WiFi.h'.
Ловушка 3: Молчаливая конфигурация
В коде нет настройки пинов для SPI, но есть 'SPI.begin()'. ИИ может пропустить это. Спроси явно: 'Найди все шины (I2C, SPI, UART) и определи, какие пины для них назначены, даже если назначение не явное'.
Пост-AI сценарий: когда инструкция готова, но устройство молчит
Ты собрал все по инструкции. Плата мигает, но датчики не отвечают. Классика.
Вместо того чтобы гадать, используй ИИ как интерактивного дебаггера:
Устройство на ESP32 собрано по инструкции. Симптомы:
- ESP32 подключается к Wi-Fi (видно в роутере)
- OLED дисплей показывает 'Connecting...' и потом гаснет
- Датчик DHT22 не возвращает данные (проверял мультиметром - на пине 12 есть 3.3V)
- В Serial мониторе вижу: 'DHT error!'
Исходный код использует библиотеку DHTesp. Какие самые вероятные причины?
Дай пошаговый план диагностики.
ИИ предложит: 1) Проверить версию библиотеки DHTesp (старые версии глючили с ESP32), 2) Добавить pull-up резистор на линию данных, 3) Проверить, не конфликтует ли пин 12 с другим использованием.
Это уже не восстановление документации - это живая техническая поддержка. Ты переходишь от 'что это было' к 'почему это не работает'.
Что дальше? ИИ как архив будущего
Самый интересный вывод из этого кейса: мы теперь можем создавать документацию, которая не устаревает. Вернее, которая может быть восстановлена в будущем из минимальных артефактов.
Представь, что к каждому проекту ты добавляел не README.md, а 'context.bundle' - папку с:
- Исходным кодом с ЧЕТКИМИ комментариями (не 'пин 12', а 'GPIO12 - данные DHT22, нужен pull-up 10k')
- Несколькими фотографиями сборки с разных ракурсов
- Скриншотом схемы из Fritzing или KiCad
- Кратким текстовым описанием на 3-4 предложения: 'Метеостанция на ESP32, передает данные в Home Assistant, корпус печатается из PETG'
Этого достаточно, чтобы через 5 лет любой ИИ (или даже человек) восстановил проект. Ты создаешь не документацию, а контекстную капсулу времени.
Иронично, но чтобы ИИ хорошо восстанавливал старые проекты, нам нужно сейчас создавать новые проекты с учетом того, как ИИ будет их читать. Получается рекурсивное улучшение: мы учим ИИ понимать наши артефакты, чтобы потом ИИ помогал нам создавать артефакты, которые он лучше понимает. Круг замкнулся.
Следующий шаг - автоматизировать этот процесс. Напиши скрипт, который при коммите в Git анализирует изменения в коде и генерирует 'дельта-инструкцию': 'Было: DHT22 на пине 12. Стало: BME280 на I2C. Для обновления прошивки нужно перепаять 2 провода'. Но это уже тема для другой статьи.
А пока - открой свою папку 'Старые проекты'. Скоро там не будет безнадежных случаев. Только задачи для ИИ-археолога.