Esp32 connect to bluetooth

ESP32 Classic Bluetooth AT Examples

This document provides detailed command examples to illustrate how to utilize ESP32 Classic Bluetooth® AT Commands on ESP32.

The default firmware does not support Classic Bluetooth commands. For how to enable support for those commands, please refer to Introduction to Classic Bluetooth .

Establish SPP connection between phone (or PC) and ESP32 in Normal Transmission mode with IO capability set to NoInputNoOutput

In this example, mobile phone or PC is master and ESP32 is slave. The example shows how to establish SPP connection.

    Classic Bluetooth initialization. Command:

The symbol > indicates that AT is ready for receiving serial data and you can enter data now. When the requirement of data length determined by the parameter is met, the writing starts. Input 4 bytes, for example, test , then AT will respond the following message.

  • If the number of bytes inputted are more than the length (n) set by AT+BTSPPSEND , the system will reply busy p. , and send the first n bytes. And after sending the first n bytes, the system will reply OK .
  • After AT outputs the > character, the special characters in the data does not need to be escaped through the escape character, and it does not need to end with a new line (CR-LF).
+BTSPPDISCONN:0,"e0:24:81:47:90:bc" OK

Establish SPP connection between phone (or PC) and ESP32 in Passthrough mode with IO capability set to NoInputNoOutput

In this example, mobile phone or PC is master and ESP32 is slave. The example shows how to establish SPP connection.

    Classic Bluetooth initialization. Command:

  • After the AT enters Passthrough Mode, data received from serial port will be transmitted to the mobile phone or PC.

Important The aim of ending the packet with +++ is to exit Passthrough Mode and to accept normal AT commands. However, you can also use command AT+BTSPPSEND to go back into Passthrough Mode.

+BTSPPDISCONN:0,"e0:24:81:47:90:bc" OK

Establish SPP connection between phone (or PC) and ESP32 with IO capability set to KeyboardOnly

The process is basically the same as in the Establish SPP connection between phone (or PC) and ESP32 in Normal Transmission mode with IO capability set to NoInputNoOutput. The only difference lies in security parameters settings.

Читайте также:  Беспроводной наушник bluetooth music

    Classic Bluetooth initialization. Command:

  • The PIN code you entered may be different from those in the above command. Please use the real PIN instead.
  • The address you obtained may be different from that in the above response.
+BTSPPDISCONN:0,"e0:24:81:47:90:bc" OK

Establish SPP connection between two ESP32 development boards

Below is an example of using two ESP32 development boards, one as master, the other one as slave.

In the following steps, the operations starting with Master only need to be executed at master, and the operations starting with Slave only need to be executed at slave. If the operation is not specified on which side it is executed, it needs to be executed on both the master side and the slave side.

+BTSTARTDISC:"10:f6:05:f9:bc:4f",realme V11 5G,0x2,0x3,0x2d0,-34 +BTSTARTDISC:"24:0a:c4:d6:e4:46",EXAMPLE. -27 +BTSTARTDISC:"10:f6:05:f9:bc:4f",realme V11 5G,0x2,0x3,0x2d0,-33 +BTSTARTDISC:"24:0a:c4:d6:e4:46",EXAMPLE. -25 +BTSTARTDISC:"ac:d6:18:47:0c:ae",,0x2,0x3,0x2d0,-72 +BTSTARTDISC:"24:0a:c4:d6:e4:46",EXAMPLE. -26 +BTSTARTDISC:"10:f6:05:f9:bc:4f",,0x2,0x3,0x2d0,-41 +BTSTARTDISC:"24:0a:c4:2c:a8:a2". -50 +BTSTARTDISC:"24:0a:c4:d6:e4:46",EXAMPLE. -26 +BTSTARTDISC:"10:f6:05:f9:bc:4f",realme V11 5G,0x2,0x3,0x2d0,-39 +BTSTARTDISC:"24:0a:c4:d6:e4:46",EXAMPLE. -23 +BTSTARTDISC:"10:f6:05:f9:bc:4f",realme V11 5G,0x2,0x3,0x2d0,-36 +BTSTARTDISC:"10:f6:05:f9:bc:4f",realme V11 5G,0x2,0x3,0x2d0,-41 +BTSTARTDISC:"b4:a5:ac:16:14:8c",,0x2,0x3,0x2d0,-57 +BTSTARTDISC:"24:0a:c4:2c:a8:a2" +BTSTARTDISC:"b4:a5:ac:16:14:8c" OK
AT+BTSPPCONN=0,0,"24:0a:c4:d6:e4:46"
+BTSPPCONN:0,"24:0a:c4:d6:e4:46" OK
  • When entering the above command, replace the address with slave address.
  • If the SPP connection is established successfully, message +BTSPPCONN:0,»30:ae:a4:80:06:8e» will be prompted on the slave.
+BTSPPDISCONN:0,"30:ae:a4:80:06:8e" OK
  • Both master and slave can actively terminate the SPP connection.
  • If the SPP connection is ended successfully, message +BTSPPDISCONN:0,»24:0a:c4:d6:e4:46″ will be prompted on the master.

Establish A2DP connection and enable A2DP Sink to play music

  • To use A2DP Sink , you need to add the code of the I2S part by yourself. For the code to initialize the I2S part, please refer to a2dp sink example.
  • The driver code of the decoder chip part also needs to be added by yourself or use an off-the-shelf development board.

Источник

Использование Bluetooth в модуле ESP32

Bluetooth модули HC-05 и HC-06 просты в использовании и находят достаточно широкое применение в радиоэлектронных проектах. Однако к их недостаткам можно отнести сравнительно большое энергопотребление и использование уже сильно устаревшей версии Bluetooth V2.0. На их фоне модули ESP32, обладающие встроенными Wi-Fi и Bluetooth, контактами для АЦП и ЦАП, поддержкой аудио устройств, спящего режима и многими другими возможностями, смотрятся весьма неплохо для конструирования различных проектов тематики интернета вещей (Internet of Things, IoT).

Внешний вид проекта использования Bluetooth в модуле ESP32

В данной статье мы рассмотрим использование классического Bluetooth в модуле ESP32 – мы будем управлять включением/выключением встроенного светодиода модуля с помощью смартфона. В дальнейших статьях на нашем сайте мы также рассмотрим использование в модуле ESP32 более «продвинутой» версии Bluetooth – технологии BLE (Bluetooth Low Energy – Bluetooth с низким энергопотреблением).

Читайте также:  Сетевой адаптер bluetooth tp link ub500

Принципы использования классического Bluetooth и BLE в ESP32

Технология BLE (Bluetooth Low Energy), как следует из ее названия, потребляет значительно меньше энергии чем классический (classic) Bluetooth. Это достигается при помощи передачи данных по требованию с заранее определенными периодическими обновлениями. Но в отличие от классического Bluetooth технология BLE не используется для передачи файлов или музыки. Наверное, вы были неоднократно удивлены тем, что когда вы подключаете к вашему смартфону какой-нибудь фитнес браслет или умные часы, то вы в своем смартфоне можете посмотреть и уровень заряда батареи подключенного устройства – этот функционал становится доступен благодаря использованию технологии BLE. Данная технология работает вместе с версией Bluetooth V4.0 и может использоваться в серверных или клиентских устройствах, что делает ее чрезвычайно удобной для применения в умных часах, фитнес браслетах и т.д.

Классический Bluetooth, в то же время, достаточно удобен для передачи файлов и других данных. Практически все BLE устройства поддерживают и функционал классического Bluetooth.

Символ Bluetooth

Bluetooth, который используется в модулях подобных HC-05, является версией классического Bluetooth и называется Bluetooth SSP (Serial Port Protocol – протокол последовательного порта), что означает то, что в данном случае Bluetooth использует стандартный последовательный протокол.

В данной статье мы будем использовать функционал Serial Bluetooth (последовательного) в модуле ESP32 для его соединения со смартфоном, на котором запущено приложение Bluetooth Terminal. Из данного приложения мы будем передавать команды, с помощью которых мы будем включать/выключать встроенный светодиод модуля ESP32.

Подготовка Arduino IDE для работы с модулем ESP32

Имейте ввиду что Arduino IDE по умолчанию не поддерживает модуль ESP32 – вам необходимо скачать и установить библиотеку для его использования с помощью менеджера библиотек. Более подробно про все эти процессы вы можете прочитать в статье про программирование модуля ESP32 с помощью Arduino IDE.

Программирование модуля ESP32 с помощью Arduino IDE

Объяснение программы для модуля ESP32 для использования Bluetooth

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты. Если вы ранее работали с Bluetooth модулями HC-05 или HC-06, то в программах для данных модулей вы найдете много общего с программой, которую мы рассмотрим в данном проекте.

Основная идея нашей программы состоит в том, что соединение Serial Bluetooth в модуле ESP32 «слушает» данные, поступающие от подключенных устройств (в нашем случае смартфона). Если мы будем принимать ‘1’, то мы будем включать встроенный светодиод модуля, а если мы будем принимать ‘0’, то мы будем выключать данный светодиод.

Начнем нашу программу мы с подключения библиотеки BluetoothSerial, которая позволяет Bluetooth модулю ESP32 работать в качестве Bluetoth SSP (Bluetoth с протоколом последовательного порта).

Источник

Bluetooth¶

This is a work in progress project and this section is still missing. If you want to contribute, please see the Contributions Guide.

Читайте также:  Bluetooth гарнитуры система шумоподавления

Examples¶

To get started with Bluetooth, you can try:

Serial To Serial BT¶

//This example code is in the Public Domain (or CC0 licensed, at your option.) //By Evandro Copercini - 2018 // //This example creates a bridge between Serial and Classical Bluetooth (SPP) //and also demonstrate that SerialBT have the same functionalities of a normal Serial #include "BluetoothSerial.h" //#define USE_PIN // Uncomment this to use PIN during pairing. The pin is specified on the line below const char *pin = "1234"; // Change this to more secure PIN. String device_name = "ESP32-BT-Slave"; #if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED) #error Bluetooth is not enabled! Please run `make menuconfig` to and enable it #endif #if !defined(CONFIG_BT_SPP_ENABLED) #error Serial Bluetooth not available or not enabled. It is only available for the ESP32 chip. #endif BluetoothSerial SerialBT; void setup()  Serial.begin(115200); SerialBT.begin(device_name); //Bluetooth device name Serial.printf("The device with name \"%s\" is started.\nNow you can pair it with Bluetooth!\n", device_name.c_str()); //Serial.printf("The device with name \"%s\" and MAC address %s is started.\nNow you can pair it with Bluetooth!\n", device_name.c_str(), SerialBT.getMacString()); // Use this after the MAC method is implemented #ifdef USE_PIN SerialBT.setPin(pin); Serial.println("Using PIN"); #endif > void loop()  if (Serial.available())  SerialBT.write(Serial.read()); > if (SerialBT.available())  Serial.write(SerialBT.read()); > delay(20); > 

BT Classic Device Discovery¶

#include #if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED) #error Bluetooth is not enabled! Please run `make menuconfig` to and enable it #endif #if !defined(CONFIG_BT_SPP_ENABLED) #error Serial Bluetooth not available or not enabled. It is only available for the ESP32 chip. #endif BluetoothSerial SerialBT; #define BT_DISCOVER_TIME 10000 static bool btScanAsync = true; static bool btScanSync = true; void btAdvertisedDeviceFound(BTAdvertisedDevice* pDevice)  Serial.printf("Found a device asynchronously: %s\n", pDevice->toString().c_str()); > void setup()  Serial.begin(115200); SerialBT.begin("ESP32test"); //Bluetooth device name Serial.println("The device started, now you can pair it with bluetooth!"); if (btScanAsync)  Serial.print("Starting discoverAsync. "); if (SerialBT.discoverAsync(btAdvertisedDeviceFound))  Serial.println("Findings will be reported in \"btAdvertisedDeviceFound\""); delay(10000); Serial.print("Stopping discoverAsync. "); SerialBT.discoverAsyncStop(); Serial.println("stopped"); > else  Serial.println("Error on discoverAsync f.e. not workin after a \"connect\""); > > if (btScanSync)  Serial.println("Starting discover. "); BTScanResults *pResults = SerialBT.discover(BT_DISCOVER_TIME); if (pResults) pResults->dump(&Serial); else Serial.println("Error on BT Scan, no result!"); > > void loop()  delay(100); > 

Источник

Оцените статью
Adblock
detector