
Пример:минимальный чек-лист перед стартом:

1. **Установите поддержку ESP32 в Arduino IDE.** Откройте Arduino IDE → Settings → Additional Board Manager URLs и добавьте URL пакета ESP32, затем в Tools → Board → Board Manager найдите «esp32» и установите пакет. Ожидаемый результат: в списке плат появится «ESP32 Dev Module». Это работает потому, что IDE скачивает компилятор и библиотеки именно из этого URL.
2. **Проверьте связь с платой.** Подключите ESP32 по USB, выберите плату и порт в меню Tools, загрузите стандартный пример Blink (File → Examples → Basics → Blink). Ожидаемый результат: светодиод на плате мигает — значит, прошивка и порт работают.
Пример:в мониторе порта (Tools → Serial Monitor, скорость 115200) при старте платы появляется строка `rst:0x1 (POWERON_RESET)` — это нормальный вывод загрузчика.
3. **Подключите ESP32 к Wi-Fi.** В скетче добавьте библиотеку `WiFi.h` и вызовы `WiFi.begin("ИмяСети", "Пароль")`, затем дождитесь статуса `WL_CONNECTED`. Это нужно, чтобы плата могла отправлять запросы к API нейросети через интернет.
Пример:
#include <WiFi.h>
WiFi.begin("HomeWiFi", "password123");
while (WiFi.status() != WL_CONNECTED) { delay(500); }
Serial.println("WiFi OK");
В мониторе порта должно появиться `WiFi OK` — значит, плата получила IP-адрес от роутера.
4. **Настройте связь ESP32 с iPhone по Bluetooth.** ESP32 поддерживает Bluetooth Classic и BLE (BLE — Bluetooth Low Energy, экономичный протокол для гаджетов). iPhone корректно работает с BLE, поэтому используйте BLE-библиотеку для ESP32: плата объявляется как периферийное устройство (peripheral), а iPhone видит её в списке Bluetooth-устройств. Ожидаемый результат: ESP32 появляется в настройках Bluetooth iPhone как доступное устройство.
5. **Организуйте «мост» нейросеть → ESP32.** Схема такая: команда пользователя (текст или голос) уходит на сервер с LLM, модель возвращает структурированное действие (например, JSON с командой), а ESP32 получает его по HTTP и выполняет — мигает светодиодом, включает реле или шлёт BLE-сигнал iPhone. Про то, как превратить простой чат с моделью в полноценного агента с инструментами, читайте в гайде Как превратить обычный чат с LLM в полноценного AI-агента.
Пример:ответ модели в формате JSON, который парсит ESP32:
{"action": "notify", "device": "iphone", "text": "Дверь открыта"}
6. **Добавьте голосовой ввод (опционально).** Если хотите управлять голосом, поднимите на компьютере или сервере голосового ассистента, который переводит речь в текст и передаёт её модели. Пошаговый разбор инструментов — в гайде Как сделать голосового ИИ-ассистента на компьютере: обзор инструментов и настройка. Ожидаемый результат: фраза «включи уведомление» превращается в текст и уходит в цепочку из шага 5.
7. **Протестируйте всю цепочку.** Отправьте тестовую команду через API, убедитесь, что ESP32 получил её по HTTP и выполнил действие на iPhone (например, отобразилось BLE-уведомление или сработало подключённое устройство). Ожидаемый результат: время от команды до реакции — секунды, а не минуты; если дольше, проверяйте сеть и таймауты.
Пример:запрос к плате из терминала Mac:
curl http://192.168.1.50/command -d '{"action":"notify"}'
Если в мониторе порта ESP32 появилась строка `Command received: notify` — мост работает.

Можно ли управлять iPhone с ESP32 напрямую без нейросети?
Нет, iOS ограничивает внешнее управление устройством. Реалистичная схема — ESP32 как BLE-периферия (уведомления, сигналы), а «умные» решения принимает нейросеть на сервере.
Нужен ли отдельный сервер для LLM?
Практичнее да: ESP32 слаб для локального запуска моделей, поэтому модель вызывают через API с сервера-посредника, а плата только выполняет команды.
Какой протокол выбрать: Bluetooth Classic или BLE?
BLE — он лучше поддерживается iPhone и экономит заряд; Bluetooth Classic на iOS работает ограниченно.
Где научиться делать агента, который сам решает, какую команду отправить?
Начните с гайда про превращение чата с LLM в полноценного AI-агента (ссылка в шаге 5) — там разобраны инструменты и цикл «мысль → действие → результат».