ESP32 - это мощный недорогой микроконтроллер, который широко используется при разработке проектов Интернета вещей. Он популярен благодаря высокой вычислительной мощности, низкому энергопотреблению и встроенным возможностям Wi-Fi и Bluetooth.
Bluetooth Classic - это протокол беспроводной связи, который используется для подключения устройств на короткие расстояния. Он существует уже давно и широко используется в таких устройствах, как смартфоны, ноутбуки и аудиооборудование.
Использование встроенного модуля Bluetooth Classic от ESP32 может быть выгодным, поскольку позволяет разработчикам легко внедрять функциональность Bluetooth Classic в свои проекты без необходимости во внешнем модуле. Это может упростить процесс проектирования и снизить затраты, при этом обеспечивая надежное и высокопроизводительное соединение Bluetooth. Кроме того, поскольку ESP32 является универсальным микроконтроллером, его можно использовать для широкого спектра проектов Интернета вещей, требующих подключения по Bluetooth.
Работа с Bluetooth Classic на ESP32
Встроенный модуль Bluetooth Classic в ESP32 можно использовать для связи с другими устройствами Bluetooth Classic несколькими способами, в том числе:
- Работа в качестве сервера Bluetooth Classic: ESP32 можно настроить как сервер, который прослушивает входящие запросы на подключение от других устройств Bluetooth Classic. После установления соединения между устройствами можно обмениваться данными с помощью SPP или других профилей.
- Работа в качестве клиента Bluetooth Classic: ESP32 также можно настроить как клиент, который инициирует подключения к другим устройствам Bluetooth Classic. После установления соединения ESP32 может отправлять и получать данные на другое устройство и с него.
- Соединение Bluetooth и Wi-Fi: Встроенный модуль Bluetooth Classic ESP32 можно использовать в сочетании с его возможностями Wi-Fi для создания моста между сетями Bluetooth и Wi-Fi. Это позволяет устройствам взаимодействовать друг с другом по Bluetooth, сохраняя при этом возможность подключения к Интернету и другим сетевым ресурсам через Wi-Fi.
Материалы, которые нам понадобятся:
- Плата ESP32
- Светодиод
- Резистор (рекомендуется 220 Ом)
- Макетная плата
- Соединительные провода
Подключение тестового макета
- Подключите длинный конец светодиода (положительный) к одному из выводов GPIO ESP32. Например, вы можете подключить его к GPIO 12.
- Подключите короткую часть светодиода (отрицательную) к макетной плате.
- Подключите один конец резистора к короткому ответвлению светодиода, а другой конец - к контакту земли (GND) на ESP32.
Программирование ESP32
- Подключите ESP32 к компьютеру с помощью USB-кабеля.
- Откройте Arduino IDE, выберите соответствующую плату и порт и создайте новый эскиз.
- Скопируйте код из раздела Кода
- Загрузите код на плату
Код Arduino для интерфейса ESP32 Bluetooth Classic со светодиодом
#include <BluetoothSerial.h>
BluetoothSerial SerialBT;
Этот код включает библиотеку BluetoothSerial, которая обеспечивает поддержку связи Bluetooth Classic на ESP32. Затем создается объект BluetoothSerial для обработки связи по Bluetooth.
void setup()
{ SerialBT.begin("ESP32 LED"); //set the name of the Bluetooth module
pinMode(2, OUTPUT); //set GPIO 2 as output }
Это функция setup (), которая запускается один раз при включении питания платы ESP32 или сбросе настроек. Здесь мы используем функцию SerialBT.begin() для запуска связи Bluetooth Classic и устанавливаем имя модуля Bluetooth равным "ESP32". Мы также используем функцию pinMode () для установки GPIO 2 в качестве выходного вывода, что означает, что мы можем использовать его для отправки сигналов на светодиод.
void loop() {
if (SerialBT.available()) {
if (c == '1') { //if the data is '1'
digitalWrite(2, HIGH); //turn LED on 4
SerialBT.println("LED on"); //send message back to app }
if (c == '0') {
//if the data is '0' digitalWrite(2, LOW); //turn LED off
SerialBT.println("LED off"); //send message back to app
} } delay(20); //delay for stability
}
Это функция loop(), которая выполняется непрерывно при включенном питании платы ESP32. Сначала она проверяет, доступны ли какие-либо данные для считывания с модуля Bluetooth с помощью функции SerialBT.available(). Если имеются доступные данные, они считываются с помощью функции SerialBT.read() и сохраняются в переменной c. Если данные равны "1", индикатор включается с помощью функции digitalWrite (), а сообщение "Светодиод включен" отправляется обратно в приложение с помощью функции SerialBT.println (). Аналогично, если данные равны "0", индикатор гаснет и в приложение отправляется сообщение "LED off". Функция delay () используется для обеспечения стабильности работы программы.
Подключаемся с телефона к ESP32 по Bluetooth
- Загрузите приложение Bluetooth serial terminal
- Откройте приложение Bluetooth serial terminal на своем смартфоне.
- Подключитесь к плате ESP32, выбрав ее из списка доступных устройств.
- После подключения вы можете отправлять команды на плату ESP32, набрав "1", чтобы включить светодиод, или "0", чтобы выключить его в приложении последовательного терминала Bluetooth. Светодиод должен включаться и гаснуть соответственно
Полный код программы:
#include
luetoothSerial SerialBT;
void setup()
{
SerialBT.begin("ESP32 LED"); //set the name of the Bluetooth module
pinMode(2, OUTPUT); //set GPIO 2 as output
}
void loop() {
if (SerialBT.available()) { //check if data is available
char c = SerialBT.read(); //read the data
if (c == '1') { //if the data is '1'
digitalWrite(2, HIGH); //turn LED on
SerialBT.println("LED on");
}
if (c == '0') { //if the data is '0'
digitalWrite(2, LOW); //turn LED off
SerialBT.println("LED off");
}
}
delay(20); //delay for stability
}