Можно ли одновременно использовать Wi-Fi и Bluetooth на ESP32?
Обновлено Редакция GAW
У ESP32 один радиотракт 2,4 ГГц на Wi-Fi и Bluetooth. Одновременно в прямом смысле они работать не могут: пока один передаёт или принимает, другой ждёт. ESP-IDF распределяет время между ними, и для разных сочетаний режимов Espressif прямо указывает, насколько стабильно это работает.
Что пишет ESP-IDF
| Wi-Fi | BLE: сканирование | BLE: реклама | BLE: соединение |
|---|---|---|---|
| STA: сканирование, подключение, подключено | стабильно | стабильно | стабильно |
| SoftAP: только маяки | стабильно | стабильно | стабильно |
| SoftAP: подключение и подключено | нестабильно | нестабильно | нестабильно |
| Сниффер | нестабильно | нестабильно | нестабильно |
| ESP-NOW: приём | стабильно только в STA | то же | то же |
Вывод из таблицы (наш): связка «станция Wi-Fi + BLE», например настройка через телефон по BLE и работа через роутер, — штатный сценарий. А вот точка доступа с подключёнными клиентами плюс BLE — режим, на который Espressif стабильности не обещает.
Как настроить
- Включить совместную работу: опция CONFIG_ESP_COEX_SW_COEXIST_ENABLE в menuconfig — без неё механизм не действует.
- На двухъядерных ESP32 и ESP32-S3 разнести задачи Bluetooth и Wi-Fi по разным ядрам опциями привязки к ядру, как рекомендует руководство.
- Делать интервалы рекламы и соединения BLE не короче, чем нужно задаче: про параметры BLE — страница Bluetooth LE.
По току одновременная работа не суммирует пики: по даташиту передача Wi-Fi 802.11b — 240 мА, передача BLE на 0 дБм — 130 мА, и эти режимы чередуются. Но блок питания всё равно рассчитывают на пик Wi-Fi — что бывает при слабом питании, разобрано в ответе «Почему ESP32 перезагружается при включении Wi-Fi». Про последовательный порт через Bluetooth на ESP32-C3 — ответ «Почему BluetoothSerial не работает на ESP32-C3», сравнение радиоинтерфейсов — обзор беспроводных интерфейсов, модули — страница ESP32.
Похожие вопросы
Почему с включённым BLE упала скорость Wi-Fi?
Потому что радиотракт один, и, пока идут события Bluetooth, Wi-Fi не передаёт и не принимает. ESP-IDF распределяет время между ними; чем чаще соединение и реклама BLE, тем меньше времени остаётся Wi-Fi. Реже рекламировать и увеличивать интервал соединения BLE — обычный способ освободить эфир.
Хватит ли памяти на Wi-Fi и Bluetooth сразу?
На ESP32 часто впритык, особенно со стеком Bluedroid. В руководстве ESP-IDF перечислены опции, которые уменьшают память: меньше буферов приёма и передачи Wi-Fi, меньше окон Block Ack, динамическая память стека Bluetooth и отключение CONFIG_ESP_WIFI_RX_IRAM_OPT, которое освобождает около 17 КБ IRAM.
Работает ли ESP-NOW вместе с BLE?
По таблице ESP-IDF передача ESP-NOW вместе с BLE работает стабильно, а приём — стабильно только тогда, когда Wi-Fi работает в режиме станции. В остальных режимах Wi-Fi приём ESP-NOW при активном BLE не поддерживается.
Источники
- Espressif Systems. ESP-IDF v6.1 Programming Guide, API Guides: RF Coexistence (docs/en/api-guides/coexist.rst) — радиомодуль 2,4 ГГц один на Bluetooth, IEEE 802.15.4 и Wi-Fi, пока один передаёт или принимает, другой не может — разделение по времени; табл. Wi-Fi и BLE: STA (сканирование, подключение, подключено) со сканированием, рекламой и соединением BLE — Y (стабильно); SoftAP: передача маяков — Y, подключение и подключено — C1 (поддерживается, нестабильно); сниффер — C1; ESP-NOW: приём — S (стабильно только в режиме STA), передача — Y; такая же таблица для классического Bluetooth; нужно включить CONFIG_ESP_COEX_SW_COEXIST_ENABLE; на ESP32 и ESP32-S3 задачи Wi-Fi и Bluetooth рекомендуется разнести по разным ядрам (CONFIG_BTDM_CTRL_PINNED_TO_CORE_CHOICE, CONFIG_BT_NIMBLE_PINNED_TO_CORE_CHOICE, CONFIG_ESP_WIFI_TASK_CORE_ID); на ESP32 — CONFIG_BTDM_CTRL_FULL_SCAN_SUPPORTED для сканирования BLE; список опций для экономии памяти (буферы Wi-Fi, окна Block Ack, CONFIG_ESP_WIFI_RX_IRAM_OPT — около 17 КБ IRAM, буферы LwIP)
- Espressif Systems. ESP32 Series Datasheet, Version 5.3 — табл. 5-4: передача Wi-Fi 802.11b +19,5 дБм — 240 мА, передача BT/BLE 0 дБм — 130 мА, приём Wi-Fi и BT/BLE — 95–100 мА
Нашли ошибку?
Смотрите также
- Bluetooth LE для разработчикаPHY 1M/2M/Coded, каналы 37–39, реклама, GAP и GATT, MTU, интервал соединения, скорость
- ESP32: выводы и GPIO34 GPIO: функции, свободные выводы, только входы, флеш-память, strapping, JTAG, токи
- Беспроводные технологииWi-Fi, BLE, 802.15.4, nRF24, 433/868 МГц, LoRa: таблица параметров по даташитам
- Почему ESP32 перезагружается при включении Wi-Fi?Пики тока передатчика и просадка питания модуля
- Почему BluetoothSerial не работает на ESP32-C3?У C3 нет Bluetooth Classic: вместо SPP — сервис UART по BLE