# Как сделать ИИ-агента для iPhone на ESP32: управление телефоном через нейросеть

> AI Release · @ai_release1 · https://ai-release.org/guides/kak-sdelat-ii-agenta-dlya-iphone-na-esp32-upravlenie-te.html

## Требования и подготовка
![Иллюстрация к разделу «Требования и подготовка»](https://ai-release.org/guides/img/kak-sdelat-ii-agenta-dlya-iphone-na-esp32-upravlenie-te-ru-1.jpg)

- Компьютер с macOS (для работы с iPhone) и установленной средой Arduino IDE или PlatformIO.
- Плата ESP32 (например, ESP32 DevKit) и кабель micro-USB/USB для прошивки.
- iPhone с включённым Bluetooth и доступом к «Настройкам».
- Базовые знания: ESP32 — это недорогой микроконтроллер с Wi-Fi и Bluetooth, который можно программировать как мини-компьютер; LLM — большая языковая модель, которая понимает текстовые команды.
- Аккаунт у провайдера нейросети с API-ключом (строка вида `sk-...`, даёт программам доступ к модели).

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

- [ ] Arduino IDE установлена, плата ESP32 добавлена в менеджер плат
- [ ] ESP32 видна в списке портов (например, `/dev/cu.usbserial-0001` на Mac)
- [ ] API-ключ от нейросети сохранён в переменной окружения
- [ ] iPhone и ESP32 находятся в одной Wi-Fi-сети (для тестов)

## Пошаговая инструкция
![Иллюстрация к разделу «Пошаговая инструкция»](https://ai-release.org/guides/img/kak-sdelat-ii-agenta-dlya-iphone-na-esp32-upravlenie-te-ru-2.jpg)

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 нейросети через интернет.

**Пример:**

```cpp
#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-агента](https://ai-release.org/guides/kak-prevratit-obychnyy-chat-s-llm-v-polnotsennogo-ai-ag.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

**Пример:** ответ модели в формате JSON, который парсит ESP32:

```json
{"action": "notify", "device": "iphone", "text": "Дверь открыта"}
```

6. **Добавьте голосовой ввод (опционально).** Если хотите управлять голосом, поднимите на компьютере или сервере голосового ассистента, который переводит речь в текст и передаёт её модели. Пошаговый разбор инструментов — в гайде [Как сделать голосового ИИ-ассистента на компьютере: обзор инструментов и настройка](https://ai-release.org/guides/kak-sdelat-golosovogo-ii-assistenta-na-kompyutere-obzor.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide). Ожидаемый результат: фраза «включи уведомление» превращается в текст и уходит в цепочку из шага 5.

7. **Протестируйте всю цепочку.** Отправьте тестовую команду через API, убедитесь, что ESP32 получил её по HTTP и выполнил действие на iPhone (например, отобразилось BLE-уведомление или сработало подключённое устройство). Ожидаемый результат: время от команды до реакции — секунды, а не минуты; если дольше, проверяйте сеть и таймауты.

**Пример:** запрос к плате из терминала Mac:

```bash
curl http://192.168.1.50/command -d '{"action":"notify"}'
```

Если в мониторе порта ESP32 появилась строка `Command received: notify` — мост работает.

## Возможные проблемы и решения
![Иллюстрация к разделу «Возможные проблемы и решения»](https://ai-release.org/guides/img/kak-sdelat-ii-agenta-dlya-iphone-na-esp32-upravlenie-te-ru-3.jpg)

- **Плата не видна в списке портов.** Симптом: в Tools → Port нет `/dev/cu.usbserial-...`. Решение: проверьте кабель (некоторые кабели только заряжают), установите драйверы USB-UART чипа вашей платы (CP210x или CH340) и переподключите плату.

- **ESP32 не подключается к Wi-Fi.** Симптом: в мониторе порта бесконечный цикл попыток, статус не `WL_CONNECTED`. Решение: убедитесь, что роутер работает в диапазоне 2,4 ГГц — ESP32 не видит сети 5 ГГц; проверьте пароль; перезагрузите плату.

- **iPhone не видит ESP32 по Bluetooth.** Симптом: устройство не появляется в списке или сразу «отключено». Решение: используйте именно BLE, а не Bluetooth Classic (iPhone с ним работает нестабильно); выключите и включите Bluetooth на iPhone; убедитесь, что ESP32 активно анонсирует (advertise) свой сервис.

- **API нейросети отвечает ошибкой авторизации.** Симптом: ответ вида `401 Unauthorized`. Решение: проверьте, что API-ключ передан в заголовке запроса и не истёк; не храните ключ прямо в скетче на плате — держите его на сервере-посреднике.

## FAQ

**Можно ли управлять iPhone с ESP32 напрямую без нейросети?**
Нет, iOS ограничивает внешнее управление устройством. Реалистичная схема — ESP32 как BLE-периферия (уведомления, сигналы), а «умные» решения принимает нейросеть на сервере.

**Нужен ли отдельный сервер для LLM?**
Практичнее да: ESP32 слаб для локального запуска моделей, поэтому модель вызывают через API с сервера-посредника, а плата только выполняет команды.

**Какой протокол выбрать: Bluetooth Classic или BLE?**
BLE — он лучше поддерживается iPhone и экономит заряд; Bluetooth Classic на iOS работает ограниченно.

**Где научиться делать агента, который сам решает, какую команду отправить?**
Начните с гайда про превращение чата с LLM в полноценного AI-агента (ссылка в шаге 5) — там разобраны инструменты и цикл «мысль → действие → результат».
