Перейти к содержанию

Почему BluetoothSerial не работает на ESP32-C3?

Обновлено Редакция GAW

ESP32-C3 часто ставят вместо ESP32, ожидая ту же «двойную» связь Wi-Fi и Bluetooth. Но по даташиту Espressif радио у C3 — Wi-Fi 802.11 b/g/n и Bluetooth 5 LE, без классического Bluetooth (BR/EDR). А библиотека BluetoothSerial, по её описанию в arduino-esp32, — это последовательный порт поверх классического профиля SPP.

ESP32 и ESP32-C3: что есть, чего нет

ESP32ESP32-C3
Bluetooth Classic (BR/EDR, SPP)есть, v4.2нет
Bluetooth LEестьесть, v5
Ядро1 или 2 × Xtensa LX61 × RISC-V
ЦАПдва 8-битныхнет
Сенсорные входы10нет
Ethernet MACестьнет

Данные — по даташитам ESP32 v5.3 и ESP32-C3 v2.4.

Как передать данные по Bluetooth с C3

Вместо SPP используют сервис BLE, который ведёт себя как последовательный канал: одна характеристика для приёма, другая для передачи. В библиотеке BLE arduino-esp32 для этого есть готовый пример UART. Наш вывод об ограничениях такого канала: данные идут небольшими пакетами, а на стороне телефона или компьютера нужна программа, которая работает с BLE, а не с COM-портом.

Если проекту нужен именно классический Bluetooth — гарнитуры, модули вроде HC-05, COM-порт на компьютере, — берут оригинальный ESP32. Сравнение всех чипов Espressif — в разделе ESP32, выводы и периферия C3 — на странице ESP32-C3, а сравнение с предшественником — в ответе «Чем ESP32-C3 отличается от ESP8266».

Похожие вопросы

Подключится ли телефон к ESP32-C3 как к Bluetooth-модулю HC-05?

Не как к HC-05: тот работает через классический Bluetooth SPP, а у C3 только BLE. Телефону нужно приложение, которое умеет работать с BLE-сервисами, например терминал с поддержкой UART-сервиса BLE. Со стороны ESP32-C3 такой сервис реализует пример UART из библиотеки BLE arduino-esp32.

Будет ли BLE работать на компьютере с Windows?

Да, если у адаптера компьютера есть Bluetooth LE, но виртуального COM-порта, как у SPP, система не создаст: к устройству обращаются программой, работающей с BLE-характеристиками. Если нужен именно COM-порт по Bluetooth, выбирайте оригинальный ESP32 с Bluetooth Classic.

Каких ещё функций ESP32 нет у ESP32-C3?

По даташитам Espressif у C3 нет второго ядра, ЦАП и сенсорных входов, которые есть у ESP32, а также контроллера Ethernet MAC. Поэтому dacWrite и touchRead на C3 не применяют, а для Ethernet берут внешний контроллер по SPI вроде W5500.

Источники

  1. Espressif. ESP32-C3 Series Datasheet v2.4 и ESP32 Series Datasheet v5.3 — ESP32-C3: Wi-Fi 802.11 b/g/n и Bluetooth 5 (LE), Bluetooth mesh; одно ядро RISC-V; два 12-битных АЦП; ЦАП и сенсорных входов в списке периферии нет. ESP32 (https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf): Bluetooth v4.2 BR/EDR и Bluetooth LE, двухрежимный контроллер, соединения Classic и LE; одно или два ядра Xtensa LX6; два 8-битных ЦАП, 10 сенсорных входов, Ethernet MAC
  2. Espressif. arduino-esp32 3.3.12: libraries/BluetoothSerial (README, BluetoothSerial.h) и libraries/BLE/examples (GitHub, LGPL-2.1) — README: библиотека с интерфейсом Serial поверх классического Bluetooth Serial Port Profile (SPP) ESP32; заголовок собирается только при SOC_BT_SUPPORTED, CONFIG_BT_ENABLED и CONFIG_BLUEDROID_ENABLED; в libraries/BLE/examples есть пример UART

Нашли ошибку?