Уроки / Урок 12

Bluetooth: связь с телефоном

Беспроводной последовательный порт: команды с Android-телефона.

Классическая ESP32 умеет то, чего не умеют S3 и C3: классический Bluetooth с профилем SPP — беспроводной последовательный порт. Для программы он выглядит как обычный Serial, только данные идут на телефон.

#include <BluetoothSerial.h>

#if !defined(CONFIG_BT_SPP_ENABLED)
#error "Нужна плата ESP32 с классическим Bluetooth (ESP32 Dev Module)"
#endif

BluetoothSerial SerialBT;
const int LED = 2;

void setup() {
  Serial.begin(115200);
  pinMode(LED, OUTPUT);
  SerialBT.begin("ESP32-duino");  // имя, которое увидит телефон
  Serial.println("Bluetooth запущен, ищите ESP32-duino");
}

void loop() {
  if (SerialBT.available()) {
    String cmd = SerialBT.readStringUntil('\n');
    cmd.trim();
    Serial.println("Получено: " + cmd);
    if (cmd == "on")  { digitalWrite(LED, HIGH); SerialBT.println("Светодиод включён"); }
    else if (cmd == "off") { digitalWrite(LED, LOW); SerialBT.println("Светодиод выключен"); }
    else SerialBT.println("Команды: on, off");
  }
  // всё, что пишем в мониторе порта, уходит на телефон
  if (Serial.available()) SerialBT.write(Serial.read());
}

Подключение телефона

  • Загрузите скетч. В настройках Bluetooth телефона найдите ESP32-duino и выполните сопряжение.
  • Установите из Google Play приложение Serial Bluetooth Terminal (автор Kai Morich).
  • В приложении: меню → Devices → ESP32-duino, затем кнопка подключения вверху.
  • Отправьте on или off. Ответы платы появятся в окне терминала.

iPhone не поддерживает Bluetooth SPP, поэтому этот урок работает только с Android и компьютерами. Для iPhone используют Bluetooth LE — его умеют все ESP32.

Ошибка «Sketch too big» при сочетании Bluetooth и Wi-Fi в одном скетче? Выберите Инструменты → Partition Scheme → Huge APP (3MB No OTA).