Нейросеть для Arduino: как писать скетчи с ИИ и не сжечь плату
Модель может набросать скетч, но не видит вашу схему. Показываем, как описать плату, проверить код до заливки и отладить по выводу Serial.
5 мин · · разработка · модели
Нейросеть для написания кода для Arduino помогает с рутиной: опрос датчика, мигание светодиодом, управление реле, работа с дисплеем. Но у модели нет доступа к вашей схеме и плате, поэтому она угадывает номера пинов, имена библиотек и напряжения. На софтовой ошибке максимум не заработает скетч, а вот ошибка в железе может вывести из строя пин или всю плату. Ниже показано, как ставить задачу, что проверять и как отлаживать.
Что модель знает, а что придумывает
Типовые конструкции вроде pinMode, digitalRead, millis(), Serial и вызовов популярных библиотек встречаются в открытом коде часто, а вот деталей вашего проекта модель не знает. Слабые места:
- Номера пинов. Если вы не назвали плату, модель выберет «типовые» пины, которые у вашей платы могут отсутствовать или иметь особую функцию.
- Названия и версии библиотек. Возможны выдуманные имена или функции, которых нет в вашей версии библиотеки.
- Напряжения и токи. Модель может подключить к пину нагрузку, которую он не вытянет, или соединить 5 В логику с 3,3 В платой.
- Память. На маленьких платах (например, Uno с 2 КБ оперативной памяти) ненужные
Stringи большие массивы приводят к нестабильной работе.
Как описать задачу
Чем точнее входные данные, тем меньше выдумок. В запрос включайте:
- Плату: Arduino Uno, Nano, Mega, ESP32 и т.д. Это определяет логические уровни и доступные пины.
- Схему подключения: какой компонент на каком пине, подтяжки, резисторы.
- Библиотеки: какие вы готовы использовать (или «без внешних библиотек»).
- Поведение: что должно происходить, при каких условиях, как часто.
- Ограничения: «без
delay()», «не использоватьString», «вывод отладки в Serial на 115200».
Шаблон запроса
Плата: Arduino Uno (ATmega328P, логика 5 В).
Подключено:
- кнопка между пином 2 и GND, используем INPUT_PULLUP;
- светодиод на пине 9 через резистор 220 Ом на GND.
Задача: по нажатию кнопки переключать светодиод.
Требования:
- антидребезг без delay(), через millis();
- печатай в Serial (115200) состояние светодиода;
- без внешних библиотек;
- экономь память: строки через F().
Не добавляй пины и компоненты, которых нет в списке. Если данных не хватает, задай вопрос.Пример результата
const uint8_t BUTTON_PIN = 2;
const uint8_t LED_PIN = 9;
const unsigned long DEBOUNCE_MS = 30;
bool ledOn = false;
bool lastReading = HIGH;
bool stableState = HIGH;
unsigned long lastChange = 0;
void setup() {
Serial.begin(115200);
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
Serial.println(F("Ready"));Скетч простой, поэтому его можно проверить глазами. Для более сложного кода понадобится система проверок.
Как проверить код до заливки в плату
- Компиляция. В Arduino IDE нажмите «Проверить» (Verify) или используйте
arduino-cli compile --fqbn arduino:avr:uno ВашСкетчдля Uno. Это ловит синтаксис и несуществующие функции. Для других плат нужен другой--fqbn, его подскажет документация arduino-cli. - Сверка пинов. Сопоставьте каждую константу с вашей схемой. Особенно у ESP32 и плат с ограничениями на некоторые пины.
- Сверка библиотек. Название и версию библиотеки проверьте в менеджере библиотек. Если модель использует функцию, которой нет в документации библиотеки, значит, она её придумала.
- Проверка электрики до питания. Убедитесь в таких вещах:
- у светодиода есть токоограничивающий резистор;
- ток с пина не превышает допустимый для вашей платы (сверяйтесь с документацией на микроконтроллер: нагрузки вроде моторов и реле питайте не напрямую с пина, а через драйвер или транзистор);
- сигналы 5 В не подаются на входы 3,3 В платы;
- индуктивные нагрузки (реле, моторы) защищены диодом.
- Первый запуск без нагрузки. Сначала проверяйте логику по Serial, а потом подключайте мощные компоненты.
Эти пункты не заменяет ни одна модель: именно здесь «сжигаются» платы.
Как отлаживать по Serial
Типовой цикл отладки с моделью:
- Попросите модель добавить в код вывод ключевых значений: состояние пинов, показания датчика, время.
- Залейте скетч и откройте монитор порта на той же скорости, что в
Serial.begin. - Скопируйте вывод вместе с описанием того, что ожидали увидеть, и отправьте модели.
- Попросите назвать две-три гипотезы и способ проверки каждой, а не сразу переписывать код.
Пример запроса: «Вот скетч и вывод Serial. Светодиод переключается дважды за одно нажатие. Предложи причины и как проверить каждую». Так вы получите диагностику, а не случайную правку.
Если модель поддерживает картинки (из каталога Zukko, например, claude-sonnet-5-5), можно приложить фото собранной схемы. Но ошибки в чтении проводов возможны, поэтому описание словами всё равно обязательно.
Какая модель и сколько это стоит
Для скетчей на 100–200 строк контекст небольшой. Допустим, запрос с описанием и кодом занимает 1 500 токенов, ответ — 1 200. Цены Zukko на 18 октября 2026, $ за 1M токенов (вход / выход):
claude-sonnet-5-5(0.4 / 2): 1 500 × 0.4 / 1 000 000 + 1 200 × 2 / 1 000 000 = $0.0006 + $0.0024 = $0.003gpt-6.1-sol(0.27 / 1.32): $0.000405 + $0.001584 = $0.001989deepseek-v4.1-flash(0.013 / 0.038): $0.0000195 + $0.0000456 = $0.0000651
Пять итераций отладки на claude-sonnet-5-5 обойдутся примерно в $0.015, если не накапливать длинную историю. Какая модель лучше знает Arduino, мы не утверждаем: возьмите две-три и проверьте на своих скетчах. Подсказки по составлению запросов есть в статьях 10 промптов для программиста и few-shot промптинг: пример вашего прежнего скетча в запросе помогает сохранить стиль.
Отправка запроса из Python
from openai import OpenAI
client = OpenAI(base_url="https://api.zukko.pro/v1", api_key="fetch_ваш_ключ")
prompt = open("prompt.txt", encoding="utf-8").read()
response = client.chat.completions.create(
model="claude-sonnet-5-5",
messages=[
{"role": "system", "content": "Ты помогаешь писать скетчи Arduino. Не придумывай пины и библиотеки."},
{"role": "user", "content": prompt},
],
)
print(response.choices[0].message.content)Формат запроса описан в документации по chat completions. Ключ создаётся в кабинете, баланс пополняется от $1. Из России баланс пополняется через СБП (к сумме добавится 8,5% комиссии платёжной страницы), MasterCard или криптовалютой.
Частые вопросы
Можно ли доверять скетчу, который написала нейросеть?
Как черновику, да. Перед заливкой скомпилируйте код, сверьте пины и библиотеки со схемой и проверьте электрику. Первый запуск лучше проводить без мощной нагрузки.
Какую нейросеть выбрать для программирования микроконтроллеров?
Универсального ответа нет. Для небольших скетчей может хватить недорогой модели, а сложную логику (прерывания, несколько устройств на шине) имеет смысл попробовать на более сильной. Решает тест на ваших задачах.
Что делать, если модель использует несуществующую библиотеку?
Проверьте название в менеджере библиотек. Если библиотеки нет, попросите переписать без неё или назвать альтернативу и сверьте с документацией библиотеки.
Подойдёт ли это для ESP32 и других плат?
Да, но указывайте плату явно: у ESP32 другие логические уровни (3,3 В), распределение пинов и ограничения на отдельные пины.
zukko
Платите в 25×
меньше
за Claude Code & ChatGPT
Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.
Похожие статьи
- Промпт-инжиниринг: примеры и 12 готовых шаблонов для работыДвенадцать шаблонов промптов для рабочих задач: что в них написано, почему именно так и сколько стоит один вызов по API.
- База данных для RAG: где хранить знания — векторная БД, поиск или контекстДля RAG не обязательно ставить векторную базу. Разбираем четыре способа хранить знания, считаем стоимость запроса и показываем рабочий пример на SQLite.
- Лучшая нейросеть для программирования на C#: выбор и настройкаРейтингов «лучшей модели для C#» мы не даём, зато показываем, как сравнить варианты по цене и индексу, настроить агента для .NET и проверить результат сборкой и тестами.
- Claude Opus 4.6: что это и как перейти на Opus 5.5 без сюрпризовOpus 4.6, 4.7 и 4.8 — прошлое поколение, а в каталоге уже Opus 5 и 5.5. Даём план миграции из четырёх шагов: id модели, прогон своих промптов, сравнение стоимости, откат.