Ты разрабатываешь устройство — термометр, браслет, датчик давления в шинах, или что-то ещё, что работает от батарейки и передаёт данные по Bluetooth LE. Ты уже поднял его на воздух, но батарея садится за два дня. Или устройство теряет связь, когда человек проходит мимо с телефоном. Или клиент жалуется: «Он не подключается, если я не держу телефон в 10 см от него».
Это не «баг», это проблема оптимизации соединения. И она решаема — если не гоняться за «максимальной скоростью», а думать о том, как устройство живёт в реальном мире: в кармане, на руке, в машине, под слоем одежды.
- Почему Bluetooth LE ломается на практике
- Что реально влияет на потребление энергии и стабильность
- Таблица: типичные сценарии и настройки
- Что выбрать в зависимости от ситуации
- Частые ошибки, которые ломают устройства
- Как лучше сделать — практические шаги
- Что делать, если устройство всё равно теряет связь
- Итог: что делать прямо сейчас
Почему Bluetooth LE ломается на практике
Bluetooth LE — не Wi-Fi. Он не создан для потоковой передачи видео. Он создан для того, чтобы один раз в 10 секунд отправить 20 байт данных и заснуть на 500 мс. Если ты пытаешься заставить его работать как «маленький Wi-Fi» — он сгорит.
Вот что реально ломает соединение в периферийных устройствах:
- Слишком частые обновления — каждые 100 мс вместо 1–5 секунд
- Слишком длинные интервалы связи — устройство ждёт 10 секунд, пока телефон не «заглянет»
- Неправильный выбор мощности передачи — 0 дБм вместо -20 дБм, если ты не в поле
- Отсутствие адаптации к условиям — устройство не знает, что оно в металлическом корпусе или в толпе людей
- Плохая обработка ошибок — при потере связи устройство пытается переподключиться 10 раз подряд, а не ждёт 30 секунд
Все эти ошибки — следствие того, что разработчик думает о «технической идеальности», а не о том, как устройство живёт в руках у пользователя.
Что реально влияет на потребление энергии и стабильность
В Bluetooth LE есть три ключевых параметра, которые ты можешь контролировать — и они влияют друг на друга:
- Интервал связи (Connection Interval) — как часто телефон и устройство обмениваются пакетами. Минимум — 7.5 мс, максимум — 4 секунды.
- Скважность (Slave Latency) — сколько интервалов подряд устройство может пропустить, не теряя соединение. Может быть от 0 до 499.
- Таймаут мониторинга (Supervision Timeout) — через сколько времени соединение считается разорванным, если ничего не пришло. Обычно 2–6 секунд.
Вот как они работают вместе:
- Если ты ставишь интервал 20 мс — устройство просыпается 50 раз в секунду. Это жрёт батарею.
- Если ты ставишь интервал 2 секунды, а скважность — 0 — устройство ждёт каждый интервал. Это стабильно, но медленно.
- Если ты ставишь интервал 2 секунды, а скважность — 5 — устройство может пропустить 5 циклов. То есть, оно спит 10 секунд подряд, а потом «всплывает» на 100 мс, чтобы проверить, есть ли данные.
Вот тут и начинается магия: скважность — это твой главный инструмент экономии энергии.
Пример: датчик температуры в ботинке. Он измеряет температуру раз в 10 секунд. Зачем ему соединяться каждые 100 мс? Достаточно интервала 2 секунды, скважности 5, таймаута 4 секунды. Тогда он просыпается 1 раз в 10 секунд — и только если телефон «заглянул» в этот момент. Остальное время — глубокий сон. Батарея живёт 6–12 месяцев.
Таблица: типичные сценарии и настройки
| Сценарий | Интервал | Скважность | Таймаут | Мощность | Почему так |
|---|---|---|---|---|---|
| Датчик температуры в ботинке | 2000 мс | 5 | 4000 мс | -20 дБм | Данные редкие, батарея — главное. Устройство в толстой обуви — слабый сигнал, но не нужен мощный. |
| Браслет с сердцебиением | 150 мс | 2 | 3000 мс | -6 дБм | Нужна задержка <1 секунды. Скважность 2 — компромисс между отзывчивостью и энергопотреблением. |
| Датчик давления в шине | 5000 мс | 10 | 6000 мс | -10 дБм | Измеряется раз в 1–5 минут. Может ждать, пока машина подъедет к телефону. Скважность 10 — экономия на 80%. |
| Умная клавиатура | 11.25 мс | 0 | 2000 мс | 0 дБм | Требует минимальной задержки. Пользователь ждёт реакции. Энергия не критична — батарея заряжается. |
| Метка для поиска ключей | 1000 мс | 3 | 3000 мс | -6 дБм | Должна быть найдена в пределах комнаты. Слишком низкая мощность — не слышно. Слишком высокая — садит батарею за неделю. |
Обрати внимание: мощность передачи не всегда должна быть максимальной. В 80% случаев -6 дБм или -10 дБм — идеально. Максимум (0 дБм) — только если ты в поле, в металлическом контейнере или у тебя 10 метров до телефона.
Что выбрать в зависимости от ситуации
Ты не выбираешь «лучшие настройки». Ты выбираешь подходящие под твою задачу. Вот как принимать решение:
- Если устройство работает от маленькой батарейки (CR2032, 220 мАч) — ставь интервал от 1 до 5 секунд, скважность 3–10, мощность -10 дБм. Данные отправляй раз в 10–60 секунд. Это даст 6–18 месяцев жизни.
- Если устройство должно реагировать мгновенно (клавиатура, пульт, игровой контроллер) — интервал 7.5–15 мс, скважность 0–1, таймаут 2–3 секунды. Батарея сядет за 1–3 месяца — но это нормально, если устройство заряжается.
- Если устройство в металлическом корпусе или в толпе — мощность -6 дБм, интервал 500–1000 мс, скважность 2–5. Не пытайся «пробить» через помехи — просто увеличь частоту проверок, а не мощность.
- Если устройство — «пассивный» датчик (например, в холодильнике) — интервал 10–30 секунд, скважность 10–20, таймаут 6 секунд. Оно может не отвечать 2–3 минуты — это нормально. Главное — не садить батарею.
Если ты не знаешь, с чего начать — возьми за основу: интервал 2000 мс, скважность 5, таймаут 4000 мс, мощность -10 дБм. Это универсальный старт для 70% периферийных устройств.
Частые ошибки, которые ломают устройства
Вот что я видел десятки раз — и каждый раз это приводило к возвратам, отзывам и тратам на поддержку:
- «Сделаем соединение как в Wi-Fi» — пытаемся отправлять данные каждые 50 мс. Результат: батарея садится за 8 часов. Bluetooth LE не для этого.
- «Скважность = 0 — надёжнее» — нет, это значит, что устройство не может спать. Оно тратит энергию на постоянную активность. Это как держать лампочку включённой 24/7.
- «Максимальная мощность — всегда лучше» — нет. Слишком сильный сигнал — это помехи, больше энергии, и телефон может не «видеть» устройство, если оно слишком «громкое» в шумной среде.
- «При потере связи сразу переподключаемся» — если устройство пытается переподключиться 10 раз за 2 секунды — оно сжигает батарею и создаёт помехи для других устройств. Делай задержку 10–30 секунд между попытками.
- «Не проверяем RSSI» — если ты не знаешь, насколько слабый сигнал, ты не можешь адаптироваться. Например, если RSSI ниже -85 дБм — уменьши частоту передачи вдвое. Это экономит энергию и улучшает стабильность.
Особенно коварна ошибка: «Мы тестировали в лаборатории — всё работает». В лаборатории нет металлических шкафов, нет толпы, нет стиральных машин, нет пластиковых стен. В реальности — всё иначе.
Как лучше сделать — практические шаги
Вот пошаговая инструкция, которую я использую сам:
- Определи частоту данных. Как часто устройство должно отправлять информацию? Раз в минуту? Раз в 5 секунд? Это определяет минимальный интервал. Не делай его короче, чем нужно.
- Выбери скважность. Скважность = (частота данных) / (интервал). Если данные раз в 10 секунд, а интервал 2 секунды — скважность 5. Это идеально.
- Установи таймаут на 1.5–2x интервал × (скважность + 1). Например: интервал 2000 мс, скважность 5 → таймаут = 2000 × 6 = 12 000 мс → ставь 6000 мс. Это безопасный порог.
- Запусти с мощностью -10 дБм. Если устройство не видят на расстоянии 3 метров — подними до -6 дБм. Больше — не надо.
- Добавь RSSI-мониторинг. Если сигнал ниже -85 дБм — уменьши частоту передачи вдвое. Если выше -60 дБм — можно включить более частую синхронизацию.
- Добавь «снижение активности» при низком заряде. При заряде <10% — увеличь интервал вдвое. Это продлит жизнь на 2–3 дня.
- Тестируй в реальных условиях. Не на столе. В кармане. На руке. Под курткой. В машине. С телефоном в другой руке. Проверь, как работает соединение при движении.
Не забывай: тесты на 100% успешности — это миф. Ты не можешь протестировать все сценарии. Но ты можешь протестировать 5 реальных ситуаций, которые повторяются в 90% случаев — и сделать их надёжными.
Что делать, если устройство всё равно теряет связь
Если ты всё сделал правильно — но связь всё равно пропадает — это не всегда проблема устройства. Вот что проверить:
- Фоновые приложения на телефоне — некоторые приложения (особенно на Android) блокируют Bluetooth, если не в белом списке.
- Разрешения на фоновую работу — если приложение не имеет разрешения на фоновую передачу, соединение разрывается через 30–60 секунд.
- Батарея телефона — если телефон в «экономии», он может отключать Bluetooth для «неприоритетных» устройств.
- Помехи от Wi-Fi 2.4 ГГц — если рядом стоит роутер, попробуй сменить канал Wi-Fi на 1 или 11 — они дальше от Bluetooth-каналов.
- Антенна устройства — если ты используешь печатную антенну, убедись, что она не закрыта металлом и не прижата к корпусу. Даже 2 мм пластика могут ухудшить сигнал.
Если ты уверен, что проблема — не в телефоне, а в устройстве — проверь логи Bluetooth-соединения. Ищи: Connection Update Request, LL Connection Parameter Update, Disconnect с кодами 0x08 (connection timeout) или 0x13 (remote user terminated connection).
Итог: что делать прямо сейчас
Если ты читаешь это — значит, твоё устройство либо не работает, либо садит батарею. Не ищи «идеальные настройки». Ищи подходящие.
Вот твой план на сегодня:
- Открой код устройства. Найди параметры: connectionInterval, slaveLatency, supervisionTimeout, txPower.
- Запиши, как часто устройство отправляет данные. Это твой ключ.
- Поставь интервал = 2000 мс, скважность = 5, таймаут = 4000 мс, мощность = -10 дБм.
- Протестируй в трёх реальных сценариях: в кармане, на руке, в 2 метрах от телефона.
- Если связь стабильна — оставь так. Если нет — увеличь мощность до -6 дБм. Если батарея садится слишком быстро — увеличь интервал до 5000 мс.
- Добавь RSSI-мониторинг и снижение активности при низком заряде.
Это не теория. Это то, что работает на устройствах, которые продаются и не возвращаются.
Ты не создаёшь «технологию». Ты создаёшь инструмент, который должен жить в реальном мире. И в реальном мире важна не скорость, а стабильность. Не мощность, а долговечность. Не идеальная связь, а та, которая работает, когда человек этого ждёт.
Информация в этой статье носит ознакомительный характер. Настройки Bluetooth LE зависят от конкретного чипа, прошивки, устройства и условий эксплуатации. Для критически важных применений (медицинские, промышленные, безопасность) рекомендуется консультация с инженером по радиочастотным системам.
