Управление ESP32 с телефона: BlueGrays IoT за 5 шагов
Управление ESP32 с телефона через BlueGrays IoT: подключение реле и DHT22, код от Ohmi, 5 шагов настройки, графики и решение частых ошибок.
Управление ESP32 с телефона означает, что реле, светодиод или мотор на плате можно включать и выключать со смартфона в кармане, а показания датчиков видеть прямо на экране. Это самый увлекательный первый шаг в IoT. В ESP32 уже встроены Wi-Fi 2,4 GHz и Bluetooth, поэтому дополнительный модуль не нужен. Главный вопрос в том, какой путь выбрать. Для управления ESP32 через приложение можно написать свой веб-сервер, подключиться по Bluetooth или завести Telegram-бота. Есть и облачные панели вроде Blynk и Arduino IoT Cloud. У каждого способа своё время настройки, дальность и ограничения.
В этом руководстве шаг за шагом настроим самый короткий путь: функцию BlueGrays IoT в приложении BlueGrays. Код для тебя готовит Ohmi. Остаётся собрать схему и загрузить код в ESP32 из Arduino IDE. Плата подключается к серверу BlueGrays по зашифрованному соединению, поэтому телефону и плате не нужно быть в одной сети. Лампу дома можно включить с работы даже через мобильный интернет. Сначала сделаем выключатель лампы на реле. Потом добавим в схему DHT22 и выведем температуру и влажность на телефон в виде живых значений и графиков. В конце статьи есть сравнение с другими способами и таблица решений самых частых ошибок.

5 способов управлять ESP32 с телефона
- Локальный веб-сервер: ESP32 отдаёт веб-страницу, а ты открываешь IP-адрес платы в браузере телефона. Аккаунт не нужен, но обычно доступ есть только из той же сети Wi-Fi. Подробности в статье ESP32 Async Web Server.
- Bluetooth Classic и BLE: интернет и роутер не нужны, телефон подключается к плате напрямую. Дальность в помещении обычно около 10 метров. Оба вида разобраны в руководстве ESP32 и Bluetooth.
- Telegram-бот: отправляешь плате команды сообщениями и получаешь от неё уведомления. Работает и вне дома, но панели с графиками или ползунками нет. Настройка описана в статье Telegram-бот на ESP32.
- Облачные панели (Blynk, Arduino IoT Cloud): в веб-консоли задаёшь шаблон и переменные, код пишешь вручную, панель на телефоне тоже проектируешь сам процесс за процессом. Путь гибкий, но придётся освоить несколько экранов и понятий. Для Blynk есть готовое руководство Blynk для ESP32.
- BlueGrays IoT: в приложении выбираешь один из 8 готовых шаблонов. Ohmi готовит код с твоими настройками пинов и ключом устройства. Переключатели, ползунки, выбор цвета и графики появляются на телефоне автоматически в зависимости от шаблона. Проектировать панель или поднимать сервер не нужно.
Что понадобится: компоненты и программы
| Компонент | Зачем нужен | Примечание |
|---|---|---|
| Отладочная плата ESP32 | Контроллер с Wi-Fi | Поддерживаются ESP32 Dev Module, WROOM, S3 и C3 |
| USB-кабель с передачей данных | Загрузка кода и питание | С кабелем только для зарядки порт не появится |
| Модуль реле на 5 V | Коммутация лампы | Выбирай модуль с оптопарой, срабатывающий от сигнала 3,3 V |
| Светодиод + резистор 220 Ω | Безопасная первая проверка вместо реле | В коде ставится RELAY_ACTIVE_LOW = false |
| DHT22 (по желанию) | Измерение температуры и влажности | Для шаблона «Комнатная станция» |
| Макетная плата и провода-перемычки | Сборка соединений | Для модулей удобны провода «папа–мама» |
| Сеть Wi-Fi 2,4 GHz | Выход платы в интернет | К сети 5 GHz плата не подключится |
| Arduino IDE | Загрузка кода в плату | Нужен пакет esp32 от Espressif версии 3.x |
| Приложение BlueGrays | Настройка и управление с телефона | iOS и Android; первое устройство бесплатно |
Как работает управление ESP32 через приложение
В BlueGrays IoT телефон и ESP32 не соединяются напрямую. После включения плата сначала подключается к домашней сети Wi-Fi 2,4 GHz. Затем она открывает зашифрованное соединение WebSocket (TLS) с сервером BlueGrays через порт 443 и держит его постоянно открытым. Приложение на телефоне подключается к тому же серверу. Когда ты нажимаешь выключатель лампы, команда идёт с телефона на сервер, а с сервера на плату. Соединение уже открыто, поэтому команда доходит без задержки. Значение температуры от платы проходит тот же путь в обратную сторону. Порт 443 используют и обычные сайты. Поэтому не нужны ни проброс портов на роутере, ни свой сервер, ни знание IP-адреса платы.
Плату для сервера опознаёт ключ устройства. Это секретная строка, начинающаяся с bgd_, которую приложение создаёт вместе с устройством. Открывая соединение, плата передаёт ключ в заголовке, и сервер пересылает команду с телефона нужной плате. В монитор порта ключ не выводится. Если связь пропадает, библиотека BlueGraysIoT сама пробует переподключиться с растущими интервалами. Значения, измеренные офлайн, она отправляет после подключения, а после отключения электричества восстанавливает последнее состояние переключателей. Достаточно, чтобы у платы и телефона был интернет: плата может быть в домашнем Wi-Fi, а телефон в другом городе на мобильном интернете.
Схема: подключение модуля реле к ESP32
В шаблонах выключателя лампы и комнатной станции пины по умолчанию такие: вход IN реле идёт на GPIO26, вывод данных DHT22 на GPIO4. Эти пины можно поменять на 3-м шаге настройки. Расположение выводов своей платы проверь в утилите распиновки. На одних платах у пина 5 V написано VIN, на других 5V.
| Деталь | Пин детали | Пин ESP32 | Примечание |
|---|---|---|---|
| Модуль реле | VCC | 5V (VIN) | Катушке нужно 5 V; при питании платы от USB на этом пине около 5 V |
| Модуль реле | GND | GND | Общая земля |
| Модуль реле | IN | GPIO26 | Управляющий сигнал 3,3 V |
| Светодиод (для проверки) | Длинная ножка (+) | GPIO26 | Через резистор 220 Ω; короткая ножка на GND, в коде RELAY_ACTIVE_LOW = false |
| DHT22 | VCC | 3V3 | Для комнатной станции |
| DHT22 | DATA | GPIO4 | Для голого датчика нужна подтяжка (pull-up) 10 kΩ; на модулях она уже есть |
| DHT22 | GND | GND | Общая земля |
Настройка BlueGrays IoT: 5 шагов в приложении
В приложении открой Мастерская › Мои устройства › Добавить устройство. Вверху экрана появится счётчик вроде «Шаг 1 из 5». Первые три шага проходят на телефоне, четвёртый на компьютере, пятый снова на телефоне.
- Плата и шаблон: на вопрос «Какая у тебя плата?» выбери ESP32, на вопрос «Что она будет делать?» отметь один из 8 шаблонов. Для первой попытки хорошо подойдут «Лампа с реле» или «Комнатная станция» с датчиком. Дай устройству понятное имя, например «Лампа в гостиной».
- Детали и схема: список «Подготовь детали» показывает нужные шаблону компоненты. Схема «Подключи провода» рисует, какой вывод на какой пин идёт. В шаблонах с реле появится предупреждение «Если будешь работать с 220 V, делай это с тем, кто в этом разбирается. Сначала попробуй со светодиодом».
- Wi-Fi и код: введи имя сети Wi-Fi и пароль. Имя сети должно совпадать точно и относиться к диапазону 2,4 GHz. При желании в разделе «Пины подключения» замени GPIO26 и GPIO4 на другие. Затем нажми «Создать устройство и подготовить код». Ohmi подготовит код с твоим ключом устройства; перенеси его на компьютер кнопкой «Копировать код» или «Поделиться».
- Загрузка в Arduino IDE: загружаешь код в ESP32. Подшаги из приложения подробно разобраны в следующем разделе.
- Подключение: экран «Ждём твою плату» сам переходит дальше, как только плата подключится к серверу.
Шаги 4 и 5: загрузка кода и проверка подключения
- Если Arduino IDE не установлена, установи её. Шаги описаны в статье Установка Arduino IDE.
- В «Менеджере плат» (Boards Manager) найди «esp32» и установи пакет esp32 от Espressif. Нужна версия 3.x; если стоит старая 2.x, обнови её. Установка пакета есть и в статье Что такое ESP32?
- Подключи плату кабелем с передачей данных. В меню «Инструменты › Плата» (Tools › Board) выбери ESP32 Dev Module (или модель своей платы), в «Инструменты › Порт» (Tools › Port) выбери появившийся порт. Если порта нет, замени кабель. Затем установи драйвер CP210x или CH340 в зависимости от USB-микросхемы на плате.
- В «Менеджере библиотек» (Library Manager) найди BlueGraysIoT и нажми «Установить» (Install). На вопрос о зависимостях выбери «Установить все» (Install all): так установятся и WebSockets, ArduinoJson и DHT sensor library. Если не получается, загляни в руководство Как добавить библиотеку в Arduino.
- Открой новый скетч, удали содержимое, вставь скопированный из приложения код и нажми «Загрузка» (Upload). Если в нижнем окне всё зависло на «Connecting…», зажми кнопку BOOT на плате. Отпусти её, когда появятся проценты записи.
- Открой «Монитор порта» (Serial Monitor) и выставь скорость 115200. Сначала должна появиться строка «Wi-Fi connected», а через несколько секунд «BlueGrays IoT: connected».
Как только в мониторе порта появится сообщение о подключении, экран «Ждём твою плату» на телефоне сменится на «Подключено: значения теперь приходят в реальном времени». Теперь нажми выключатель лампы: должен раздаться щелчок реле или загореться светодиод. Если плата не подключится за 2 минуты, приложение попросит проверить три вещи. Выбрана сеть 2,4 GHz? В мониторе порта есть «Wi-Fi connected»? Регистр букв в пароле верный? Если даже первая строка не появляется, проблема на стороне Wi-Fi. Тогда поможет чек-лист из статьи ESP32 не подключается к Wi-Fi.
Первый код: включаем и выключаем лампу с телефона
Код, который приложение готовит для шаблона «Лампа с реле», похож на приведённый ниже. Первые три строки приходят уже заполненными твоим ключом устройства, именем сети и паролем; здесь они показаны заглушками. Остальной код короткий: функция реле, описание переключателя и loop() в одну строку.
1/*
2 * Salon lambası · BlueGrays IoT
3 * BlueGrays · bluegrays.com
4 * Bu kodu paylaşma: içinde cihaz anahtarın ve Wi-Fi şifren var.
5 * Do not share this code: it contains your device key and Wi-Fi password.
6 */
7
8#include <BlueGraysIoT.h>
9
10// Uygulama bu üç satırı senin bilgilerinle doldurur / The app fills these three lines with your details
11const char *DEVICE_KEY = "bgd_UYGULAMADAKI_ANAHTARIN";
12const char *WIFI_NAME = "EV_AGI_2_4_GHZ";
13const char *WIFI_PASSWORD = "WIFI_SIFREN";
14
15BlueGraysIoT bg(DEVICE_KEY);
16
17const int RELAY_PIN = 26;
18const bool RELAY_ACTIVE_LOW = true; // çoğu röle modülü LOW ile çeker / most relay modules switch on LOW
19void setRelay(bool on) { digitalWrite(RELAY_PIN, (on != RELAY_ACTIVE_LOW) ? HIGH : LOW); }
20
21void setup() {
22 Serial.begin(115200);
23 pinMode(RELAY_PIN, OUTPUT);
24 setRelay(false); // açılışta lamba kapalı / lamp off at power-up
25 bg.onSwitch("lamba", setRelay); // uygulamadaki "Lamba" anahtarı / the "Lamba" switch in the app
26 bg.setDebug(Serial); // durum mesajları Seri Port Ekranı'na / status messages to the Serial Monitor
27 bg.setLanguage(BG_LANG_TR);
28 bg.begin(WIFI_NAME, WIFI_PASSWORD);
29}
30
31void loop() {
32 bg.loop(); // burada uzun delay() kullanma / avoid long delay() calls here
33}
34| Строка | Что делает |
|---|---|
| #include | Подключает библиотеку; Wi-Fi, шифрованное соединение и переподключение берёт на себя библиотека |
| DEVICE_KEY, WIFI_NAME, WIFI_PASSWORD | Ключ устройства (начинается с bgd_), имя сети 2,4 GHz и пароль; заполняет приложение |
| BlueGraysIoT bg(DEVICE_KEY) | Создаёт объект bg с ключом; все остальные команды выполняются через него |
| RELAY_PIN = 26 | Пин, к которому подключён вход IN реле; если на 3-м шаге пин изменён, здесь будет другое число |
| RELAY_ACTIVE_LOW = true | Большинство модулей реле срабатывают от LOW; при проверке со светодиодом поставь false, иначе всё будет наоборот |
| setRelay(bool on) | Когда on равно true, выставляет активный уровень: LOW для модуля с активным LOW, HIGH для остальных |
| setRelay(false) (в setup) | После включения платы лампа выключена |
| bg.onSwitch("lamba", setRelay) | При каждом изменении переключателя «Лампа» в приложении вызывает setRelay с true или false |
| bg.setDebug(Serial) | Выводит сообщения о состоянии подключения в монитор порта |
| bg.setLanguage(BG_LANG_TR) | Сообщения о состоянии выводятся на турецком |
| bg.begin(WIFI_NAME, WIFI_PASSWORD) | Запускает подключение к сети Wi-Fi и серверу BlueGrays |
| bg.loop() | Обрабатывает входящие команды и поддерживает соединение; вызывать в loop() постоянно |
Добавляем датчик: комнатная станция (реле + DHT22)
Теперь добавим к той же плате DHT22 и будем отправлять данные на телефон. Если выбрать в приложении шаблон «Комнатная станция», рядом с выключателем лампы появятся температура (°C) и влажность (%) с графиками. DHT22 измеряет температуру от -40 до 80 °C с точностью около ±0,5 °C, влажность в диапазоне 0–100%, и опрашивать его можно не чаще раза в 2 секунды. Подключи вывод данных к GPIO4, VCC к 3V3, GND к GND. Как устроено семейство DHT, сравнительно разобрано в статье Датчик температуры и влажности DHT11.
1/*
2 * Oda istasyonu · BlueGrays IoT
3 * BlueGrays · bluegrays.com
4 * Bu kodu paylaşma: içinde cihaz anahtarın ve Wi-Fi şifren var.
5 * Do not share this code: it contains your device key and Wi-Fi password.
6 */
7
8#include <BlueGraysIoT.h>
9#include <DHT.h>
10
11const char *DEVICE_KEY = "bgd_UYGULAMADAKI_ANAHTARIN";
12const char *WIFI_NAME = "EV_AGI_2_4_GHZ";
13const char *WIFI_PASSWORD = "WIFI_SIFREN";
14
15BlueGraysIoT bg(DEVICE_KEY);
16
17const int RELAY_PIN = 26;
18const bool RELAY_ACTIVE_LOW = true; // çoğu röle modülü LOW ile çeker / most relay modules switch on LOW
19void setRelay(bool on) { digitalWrite(RELAY_PIN, (on != RELAY_ACTIVE_LOW) ? HIGH : LOW); }
20DHT dht(4, DHT22); // DHT22 veri ucu GPIO4 / DHT22 data on GPIO4
21unsigned long lastReadMs = 0;
22
23void setup() {
24 Serial.begin(115200);
25 pinMode(RELAY_PIN, OUTPUT);
26 setRelay(false);
27 bg.onSwitch("lamba", setRelay);
28 dht.begin();
29 bg.setDeadband("sicaklik", 0.1); // 0,1 °C değişmeden gönderme / send only after a 0.1 °C change
30 bg.setDeadband("nem", 1.0); // %1 değişmeden gönderme / send only after a 1 % change
31 bg.setDebug(Serial);
32 bg.setLanguage(BG_LANG_TR);
33 bg.begin(WIFI_NAME, WIFI_PASSWORD);
34}
35
36void loop() {
37 bg.loop(); // burada uzun delay() kullanma / avoid long delay() calls here
38 if (millis() - lastReadMs >= 2000) { // DHT22 en fazla 2 saniyede bir okunur / DHT22 reads at most every 2 s
39 lastReadMs = millis();
40 bg.send("sicaklik", dht.readTemperature());
41 bg.send("nem", dht.readHumidity());
42 }
43}
44Часть с реле такая же, как в первом коде; нового три вещи. Первая — строка bg.send("sicaklik", dht.readTemperature()): она отправляет значение с платы в приложение, а первый параметр — имя переменной в приложении. Вторая — строка bg.setDeadband("sicaklik", 0.1). Она задаёт минимальное изменение: пока температура не изменится на 0,1 °C, повторно она не отправится, для влажности порог 1%. Третья — проверка millis() - lastReadMs >= 2000 внутри loop. Датчик опрашивается раз в 2 секунды, а bg.loop() между опросами продолжает крутиться без ожидания. Библиотека отправляет значение только при изменении и не превышает скорость плана. Между двумя отправками одной переменной проходит не меньше 1 секунды на бесплатном плане и не меньше 0,2 секунды в Premium. Эти лимиты проверяются на сервере; изменение чисел в коде их не обойдёт. Если температура в комнате минутами держится на 23,4 °C, плата ничего нового не шлёт, а при 23,5 °C уйдёт одно сообщение. Если провод болтается или нет подтяжки, показание будет недействительным (NaN). Если значения не приходят, сначала проверь подключение GPIO4 и питание.
Что видно на телефоне
- Состояние: вверху экрана устройства написано «Онлайн» или «Офлайн», ниже — «Последние данные … назад». Здесь первым делом видно, действительно ли плата подключена.
- Управление: в шаблоне лампы появляется переключатель вкл/выкл. В шаблоне RGB-ленты — выбор цвета, яркость 0–100% и выбор эффекта. В шаблоне штор — ползунок угла 0–180°.
- Живые значения и графики: есть интервалы 1 ч, 24 ч, 7 дн. и 30 дн. В видах на 7 и 30 дней показывается среднее за час. На графике указаны минимум, максимум и последнее значение. Пока плата на связи, каждую минуту добавляется новая точка.
- Код и ключ: здесь же позже можно посмотреть весь код, ключ устройства и данные Wi-Fi. Если плату нужно перепрограммировать, скопируй код отсюда.
- Обновить ключ: используй, если кто-то увидел ключ или плата заменена. Старый ключ сразу перестаёт действовать, достаточно один раз загрузить в плату новый код.
- Удалить устройство: устройство и история графиков удаляются, место для устройства освобождается.
Бесплатно и Premium: сколько можно использовать
Первое устройство бесплатно. Для выключателя лампы или комнатной станции на одной ESP32 больше ничего не нужно. В комнатной станции температура и влажность — две отдельные переменные. На бесплатном плане живые значения обеих приходят на телефон, но история графика хранится только для одной переменной. Различия между планами ниже; подробности в статье Что открывает BlueGrays Premium?
| Возможность | Бесплатно | Premium |
|---|---|---|
| Количество устройств | 1 | 10 |
| Переменных с историей графиков | 1 | 20 |
| Срок хранения истории | 24 часа | 30 дней |
| Минимальный интервал между отправками одной переменной | 1 секунда | 0,2 секунды |
Сравнение с другими способами
| Способ | Доступ вне дома | Что нужно сделать | Панель и графики | Когда подходит |
|---|---|---|---|---|
| Локальный веб-сервер | Обычно нет, только из той же сети | Написать код ESP32 и HTML-страницу | Проектируешь сам | Домашняя панель управления без интернета |
| Bluetooth / BLE | Нет, около 10 м | Код платы и приложение на телефоне | Зависит от приложения | Места без роутера, управление вблизи |
| Telegram-бот | Есть | Создать бота и написать код | Сообщения и кнопки, без графиков | Уведомления и простые команды |
| Blynk | Есть | Шаблон, потоки данных, панель и код | Готовые виджеты и графики | Для тех, кто хочет свою панель |
| Arduino IoT Cloud | Есть | Задать Thing и переменные в аккаунте Arduino, дописать код | Виджеты Dashboard | Для тех, кто остаётся в экосистеме Arduino |
| BlueGrays IoT | Есть | Собрать схему и загрузить код | Готовые элементы управления и графики по шаблону | Быстрый старт и использование во время учёбы |
Правильный выбор зависит от задачи. Если интернета нет совсем, остаются только Bluetooth или локальный веб-сервер. BlueGrays IoT, Blynk и Arduino IoT Cloud требуют, чтобы у платы и телефона был интернет. Если нужна гибкость, например интерфейс с нуля или связка с Home Assistant, больше возможностей дают ESP32 и MQTT и облачные панели. Готовых шаблонов в BlueGrays IoT 8. Зато схема, список деталей, код и интерфейс на телефоне приходят готовыми и согласованными между собой. Во время учёбы шансов ошибиться где-то по пути меньше.
Безопасность: ключ, пароль Wi-Fi и код
- Ключ устройства — это удостоверение платы. Тот, кто знает ключ с bgd_, может выдать себя за твою плату. Поэтому не показывай ключ на скриншотах, в форуме или в чатах.
- Пароль Wi-Fi остаётся на телефоне. На сервер он не отправляется; имя сети хранится вместе с устройством, чтобы позже снова показать код. Но в коде, загруженном в плату, пароль записан.
- Не делись кодом. Как предупреждает и приложение, в коде есть ключ устройства и пароль Wi-Fi. Если показываешь код на форуме, чтобы попросить помощи, сначала удали строки DEVICE_KEY, WIFI_NAME и WIFI_PASSWORD.
- Соединение зашифровано. Трафик между платой и сервером идёт по TLS через порт 443, и кто-то в той же сети не прочитает команды.
- При подозрении обнови ключ. Кнопка «Обновить ключ» сразу делает старый ключ недействительным. Если отдаёшь плату другому человеку, тоже обнови ключ или удали устройство.
Частые ошибки и их решение
| Симптом | Возможная причина | Решение |
|---|---|---|
| В мониторе порта так и не появляется «Wi-Fi connected» | Выбрана сеть 5 GHz или ошибка в регистре букв пароля | Введи имя сети 2,4 GHz; если диапазоны на роутере с одним именем, раздели их; аккуратно введи пароль заново |
| В меню «Инструменты › Порт» нет порта | Кабель только для зарядки или нет драйвера | Возьми кабель с передачей данных; установи драйвер CP210x или CH340 под свою микросхему |
| Загрузка зависает на «Connecting…» | Плата не входит в режим загрузки | Зажми BOOT и отпусти, когда начнётся запись; подробнее в статье Код не загружается в Arduino |
| Компиляция останавливается с ошибками ядра ESP32 | Установлена старая версия пакета esp32 2.x | Обнови до версии 3.x в «Менеджере плат» |
| «No such file or directory» (нет такого файла) (BlueGraysIoT.h, DHT.h, WebSockets) | Не установлена библиотека или её зависимости | Переустанови BlueGraysIoT и выбери «Установить все»; недостающую найди отдельно по имени |
| Непонятные символы в мониторе порта | Скорость не 115200 | Выставь в мониторе порта скорость 115200 |
| «Wi-Fi connected» есть, а «BlueGrays IoT: connected» нет | Сеть не выходит в интернет, корпоративная сеть блокирует или загружен код до обновления ключа | Попробуй через точку доступа на телефоне; загрузи актуальный код с экрана «Код и ключ» |
| Плата перезагружается при щелчке реле | Не хватает питания (brownout) | Возьми качественный кабель и мощный адаптер, питай реле от 5V; см. ESP32 Brownout |
| Светодиод горит при выключенном переключателе | RELAY_ACTIVE_LOW оставлено true, как для реле | Если светодиод подключён напрямую, поставь RELAY_ACTIVE_LOW = false |
| Аналоговый датчик после включения Wi-Fi выдаёт одно и то же значение | Датчик на пине ADC2 | Используй один из пинов ADC1 (GPIO32–39); подробности в статье Что такое АЦП? |
| Температура и влажность не приходят | Вывод данных DHT22 не на том пине или нет подтяжки | Подключи DATA к GPIO4, VCC к 3V3; для голого датчика добавь подтяжку 10 kΩ |
Идеи IoT-проектов на ESP32
- Выключатель лампы: полная версия первой схемы из этой статьи — проект IoT-выключатель лампы на ESP32 (реле). Проект идёт со схемой и списком деталей.
- Комнатная станция: реле и DHT22 вместе, с графиком температуры: IoT-комнатная станция на ESP32 (реле + DHT22).
- Полив растений: датчик влажности почвы подключается к GPIO34 (пин ADC1). Когда влажность опускается ниже ползунка «Порог полива» на телефоне, насос включается, а когда поднимается на 10 пунктов выше порога, выключается. Страница проекта: IoT-полив растений на ESP32 (датчик влажности + насос). Про калибровку датчика смотри статью Датчик влажности почвы.
- RGB-лента: выбирай с телефона цвет, яркость и эффект (Статичный, Радуга, Дыхание, Мигание) ленты WS2812B на 30 светодиодов на GPIO13: IoT RGB-лента на ESP32 (WS2812B). 30 светодиодов на полном белом могут потреблять около 1,8 A; питай ленту от отдельного источника 5 V. Подробности в статье WS2812B NeoPixel.
- Открыватель штор: поворачивай сервопривод SG90 на GPIO18 ползунком 0–180°: IoT-открыватель штор на ESP32 (сервопривод SG90). Сервопривод тоже питай от отдельного источника 5 V и объедини земли.
- Другие шаблоны: проекты датчик двери, счётчик движения и температура и влажность описаны для Pico W. В приложении эти шаблоны можно выбрать и для ESP32.
Когда путь между платой, сервером и телефоном настроен один раз, новое устройство добавляется за пару минут. Начни с выключателя лампы, потом посмотри, как данные с DHT22 текут на телефон, а затем переходи к проектам побольше вроде полива или штор. В приложении BlueGrays эти IoT-проекты на ESP32 есть пошагово, со схемой и кодом. Можно воспользоваться фильтром IoT-проектов в «Обзоре», а карточкой «Настроить как IoT-устройство» на странице проекта подключить ту же схему прямо к телефону.
Частые вопросы
Как управлять ESP32 с телефона?
ESP32 можно управлять с телефона через локальный веб-сервер, Bluetooth, Telegram-бота или облачные панели. В BlueGrays IoT открой Мастерская › Мои устройства › Добавить устройство. Выбери плату и шаблон, введи данные Wi-Fi и загрузи код от Ohmi через Arduino IDE. Когда плата подключится, переключатели и значения появятся на телефоне.
Можно ли управлять ESP32 с телефона без интернета?
С BlueGrays IoT нельзя: интернет нужен и плате, и телефону, потому что команды идут через сервер. Для управления без интернета подойдёт Bluetooth (BLE) или веб-сервер на ESP32 в той же сети.
Можно ли управлять ESP32 из другого города?
Да. Плата и телефон подключаются к одному серверу, поэтому им не нужно быть в одной сети. Плата может быть в домашнем Wi-Fi 2,4 GHz, а телефон на мобильном интернете. Проброс портов, статический IP и свой сервер не нужны.
BlueGrays IoT платный?
Первое устройство бесплатно. На бесплатном плане доступны 1 устройство, история графика для 1 переменной и история за 24 часа. В Premium открываются 10 устройств, история графиков для 20 переменных и хранение до 30 дней.
Что лучше для ESP32: Bluetooth или Wi-Fi?
Bluetooth не требует интернета и роутера, но дальность в помещении обычно около 10 метров. При управлении через Wi-Fi и сервер плату можно контролировать из любой точки мира, а графики и история сохраняются. Если всегда дома и роутера нет, подойдёт Bluetooth, для удалённого доступа лучше Wi-Fi.
Сколько устройств можно подключить к BlueGrays IoT?
На бесплатном плане 1 устройство, в Premium 10. Поддерживаются платы ESP32 (Dev Module, WROOM, S3, C3) и Raspberry Pi Pico W. После удаления устройства место для него освобождается.
Что собрать после прочтения
Все проекты
IoT-выключатель лампы на ESP32 (реле)
Включай и выключай лампу с телефона откуда угодно. Этот проект — пошаговое руководство к IoT-шаблону «Лампа на реле» в приложении, собранному на ESP32 и модуле реле и сначала опробованному со светодиодом. Открой Мастерская › Устройства › Добавить устройство и выбери «Лампа на реле»; Ohmi подготовит код с твоим собственным ключом устройства. Код на этой странице — пример: ключ и данные Wi-Fi в нём заглушки.

IoT-комнатная станция на ESP32 (реле + DHT22)
Включай лампу с телефона и следи за температурой и влажностью в комнате вживую откуда угодно. Этот проект — пошаговое руководство к IoT-шаблону «Комнатная станция» в приложении, собранному на ESP32, модуле реле и DHT22. Открой Мастерская › Устройства › Добавить устройство и выбери «Комнатная станция»; Ohmi подготовит код с твоим собственным ключом устройства. Код на этой странице — пример: ключ и данные Wi-Fi в нём заглушки.

IoT-полив растений на ESP32 (датчик почвы + насос)
Пусть насос включается сам, когда земля в горшке пересыхает, а влажность почвы видна на телефоне вживую. Этот проект — пошаговое руководство к IoT-шаблону «Влажность почвы + насос» в приложении, собранному на ESP32, датчике влажности почвы, реле и мини-помпе для воды. Открой Мастерская › Устройства › Добавить устройство; Ohmi подготовит код с твоим собственным ключом устройства. Код на этой странице — пример: ключ и данные Wi-Fi в нём заглушки.

IoT RGB-лента на ESP32 (WS2812B)
Управляй светом в комнате с телефона: выбирай цвет, задавай яркость, включай эффект радуги или дыхания. Этот проект — пошаговое руководство к IoT-шаблону «RGB-лента» в приложении, собранному на ESP32 и ленте WS2812B из 30 светодиодов с тремя проводами. Открой Мастерская › Устройства › Добавить устройство и выбери «RGB-лента»; Ohmi подготовит код с твоим собственным ключом устройства. Код на этой странице — пример: ключ и данные Wi-Fi в нём заглушки.

IoT-открыватель штор на ESP32 (сервопривод SG90)
Нажми + или − на телефоне, и сервопривод в тот же миг повернётся на этот угол: управляй моделью шторы, тягой жалюзи или крышкой откуда угодно. Этот проект — пошаговое руководство к IoT-шаблону «Штора на сервоприводе» в приложении, собранному на ESP32 и сервоприводе SG90 всего с 3 проводами. Открой Мастерская › Устройства › Добавить устройство; Ohmi подготовит код с твоим собственным ключом устройства. Код на этой странице — пример: ключ и данные Wi-Fi в нём заглушки.

IoT-температура и влажность на Pico W (DHT22)
Следи за температурой и влажностью в комнате вживую на телефоне откуда угодно. Этот проект — пошаговое руководство к IoT-шаблону «Температура и влажность» в приложении, собранному на Raspberry Pi Pico W и DHT22. Открой Мастерская › Устройства › Добавить устройство, выбери плату Pico W и шаблон «Температура и влажность»; Ohmi подготовит код с твоим собственным ключом устройства. Код на этой странице — пример: ключ и данные Wi-Fi в нём заглушки.

IoT-датчик двери на Pico W (геркон)
Дверь или окно остались открытыми? Проверь на телефоне откуда угодно. Этот проект — пошаговое руководство к IoT-шаблону «Дверь / окно» в приложении, собранному на Raspberry Pi Pico W, герконе и маленьком магните с двумя проводами. Открой Мастерская › Устройства › Добавить устройство, выбери плату Pico W и шаблон «Дверь / окно»; Ohmi подготовит код с твоим собственным ключом устройства. Код на этой странице — пример: ключ и данные Wi-Fi в нём заглушки.

IoT-счётчик движения на Pico W (PIR)
Считай, сколько раз кто-то проходит через дверь или коридор, и смотри момент движения вживую на телефоне. Этот проект — пошаговое руководство к IoT-шаблону «Датчик движения» в приложении, собранному на Raspberry Pi Pico W и PIR-датчике движения всего с 3 проводами. Открой Мастерская › Устройства › Добавить устройство; Ohmi подготовит код с твоим собственным ключом устройства. Код на этой странице — пример: ключ и данные Wi-Fi в нём заглушки.
Другие статьи
Приложение BlueGrays
Собери эту схему шаг за шагом в телефоне
Схема подключения, код и список деталей на одном экране. 200+ проектов на Arduino, ESP32 и Pico готовы к сборке.
Наведи камеру телефона
Наведи камеру на код — откроется магазин приложений на телефоне.
или открыть магазин

