#bluetooth #bluetooth-lowenergy #esp32
#bluetooth #bluetooth -низкое энергопотребление #esp32
Вопрос:
Моя конечная цель — использовать кнопку BT в качестве пульта дистанционного управления для моего esp32 (M5StickC). Для этого мне нужно подключиться и получить данные устройства. Устройство, с которого я пытаюсь получить данные, называется «FiiO RM1» (https://headfonics.com/the-rm1-by-fiio /). При подключении его к моему смартфону никаких проблем не возникает, и все работает нормально. После сканирования через приложение nRFconnect или в моем esp32 (добавлен код) Я не вижу название устройства, просматривая результаты сканирования. Есть ли какие-либо проблемы с безопасностью или что-то, что скрывает его от публикации? Это код:
//This example code is in the Public Domain (or CC0 licensed, at your option.)
//By Victor Tchistiak - 2019
//
//This example demostrates master mode bluetooth connection and pin
//it creates a bridge between Serial and Classical Bluetooth (SPP)
//this is an extention of the SerialToSerialBT example by Evandro Copercini - 2018
//
#include "BluetoothSerial.h"
BluetoothSerial SerialBT;
String MACadd = "0C:FC:83:99:54:12";
uint8_t address[6] = {0x0C, 0xFC, 0x83, 0x99, 0x54, 0x12};
String name = "FiiO RM1";
char *pin = "1234"; //<- standard pin would be provided by default
bool connected;
void setup() {
Serial.begin(115200);
//SerialBT.setPin(pin);
SerialBT.begin("ESP32test", true);
//SerialBT.setPin(pin);
Serial.println("The device started in master mode, make sure remote BT device is on!");
// connect(address) is fast (upto 10 secs max), connect(name) is slow (upto 30 secs max) as it needs
// to resolve name to address first, but it allows to connect to different devices with the same name.
// Set CoreDebugLevel to Info to view devices bluetooth address and device names
connected = SerialBT.connect(name);
//connected = SerialBT.connect(address);
if(connected) {
Serial.println("Connected Succesfully!");
} else {
while(!SerialBT.connected(10000)) {
Serial.println("Failed to connect. Make sure remote device is available and in range, then restart app.");
}
}
// disconnect() may take upto 10 secs max
if (SerialBT.disconnect()) {
Serial.println("Disconnected Succesfully!");
}
// this would reconnect to the name(will use address, if resolved) or address used with connect(name/address).
SerialBT.connect();
}
void loop() {
if (Serial.available()) {
SerialBT.write(Serial.read());
}
if (SerialBT.available()) {
Serial.write(SerialBT.read());
}
delay(20);
}
Комментарии:
1. Там слишком много кода. Пожалуйста, сократите его до минимального, жизнеспособного примера — что-то, что создает, в котором есть только код, необходимый для демонстрации проблемы. Вы должны иметь возможность удалить почти весь имеющийся код, чтобы показать проблему. У вас будет гораздо больше шансов получить помощь, если вы это сделаете.
2. @Omri вы уверены, что «кнопка BT» использует Bluetooth с низким энергопотреблением (BLE), а не Bluetooth classic? Вы отметили свой вопрос обеими технологиями, хотя они работают по-разному. Ваш код ESP ищет рекламные объявления BLE, но ссылка, которую вы указали для «FiiO RM1», гласит «Поддерживаемые устройства Bluetooth: BT3.0 и выше». BLE впервые был представлен с версией Bluetooth 4.0
3. Хорошо, вероятно, это BT classic (я использовал другое приложение для проверки и вижу его там), теперь используя код (в отредактированном сообщении) Я получаю сообщение о подключении, и при нажатии кнопок ничего не происходит. Каков правильный способ получения сообщения? Также добавлен снимок экрана с информацией об устройстве в приложении.
4. Не могли бы вы предоставить нам лог-вывод вашего кода ESP?
5. Журнал: устройство запущено в режиме master, убедитесь, что удаленное устройство BT включено! Подключено успешно! Он говорит, что подключен успешно, что бы ни случилось (даже если устройство выключено) Я попытался подключиться через имя и через адрес