ESP32 Bluetooth Master не подключается
Я хочу подключить ESP32 к преобразователю SMA Sunny Boy SB5000-TL Solar через Bluetooth, но не могу установить соединение и не могу. Я использую внутренний модуль Bluetooth ESP32.
Что я сделал:
Я начал с этого проекта: https://github.com/delhatch/ESP32_to_SMA, но не получил мимо связи. Я попытался найти проблемную область:
Я попытался подключиться к преобразователю SB5000-TL Solar с помощью приложения для Android (Oxley Solar), и оно отлично работает. Пин-код преобразователя установлен на 0000.
Я попытался использовать два модуля ESP32, один в качестве главного, один в качестве подчиненного, и это тоже работает, хотя мне не нужно устанавливать пин-код. Так что модуль bluetooth моего ESP32 работает нормально.
Полагаю, проблема должна быть в моем коде.
Это код, который я использую для подключения к преобразователю:
#include "BluetoothSerial.h"
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif
BluetoothSerial SerialBT;
boolean confirmRequestPending = true;
// uint8_t ESP32Slave[6] = {0x84, 0xCC, 0xA8, 0x2C, 0x70, 0x1E}; // Адрес ведомого.
uint8_t SMA[6] = {0x00, 0x40, 0x65, 0x12, 0x4B, 0x3E}; // Адрес моего инвертора SMA.
const char *pin = "0000"; //<- стандартный пин
void setup() {
Serial.begin(115200);
SerialBT.enableSSP();
SerialBT.onConfirmRequest(BTConfirmRequestCallback);
SerialBT.onAuthComplete(BTAuthCompleteCallback);
SerialBT.begin("ESP32master", true); //Имя Bluetooth-устройства
SerialBT.register_callback(callback);
SerialBT.setPin("0000");
Serial.println("Connecting...");
bool connected = SerialBT.connect(SMA);
if (connected) {
Serial.println("Connected!");
} else {
Serial.println("NOT Connected!");
}
delay(500);
SerialBT.end();
Serial.println("Bye!");
}
void loop() {
}
void callback(esp_spp_cb_event_t event, esp_spp_cb_param_t *param) {
Serial.print("Got event!"); Serial.println(event);
}
void BTConfirmRequestCallback(uint32_t numVal)
{
confirmRequestPending = true;
Serial.println(numVal);
}
void BTAuthCompleteCallback(boolean success)
{
confirmRequestPending = false;
if (success)
{
Serial.println("Pairing success!!");
}
else
{
Serial.println("Pairing failed, rejected by user!!");
}
}
Вот результат в последовательной консоли:
Connecting...
Got event!0
Got event!8
NOT Connected!
Got event!1
Bye!
Я попытался заменить Mac-адрес именем преобразователя, Я пробовал с пин и без него.
Я немного застрял. Любая идея о том, как я могу проверить, что не так?
Есть ли какой-либо сканер, который я могу использовать, чтобы увидеть, что происходит с приложением, которое работает, и что (не) происходит с моим кодом?
Другие способы получить больше информации/лидов?
Могу ли я использовать сниффер Bluetooth или около того (без опыта), чтобы выяснить, что происходит?
Буду признателен за любой совет!
@mvermand, 👍3
Обсуждение1 ответ
Я искал в сети решение этой проблемы для esp32, пытающегося подключиться в качестве серийного мастера. Все, что я могу найти, это то, что существует проблема с сообщением об успешном соединении с BluetoothSerial.h при использовании правильного адреса или имени подчиненного устройства. Последняя версия 1.4, я думаю, сообщает об успешном соединении, когда это не так. версия 1.3 сообщает о сбое соединения. Очень расстраивает отсутствие обновленного исправления на github. Вы, наверное, заметили, что все примеры BLE classic используют esp32 в качестве ведомого устройства, а телефон Android подключается в качестве ведущего для включения и выключения реле на плате BLE. Но нет примеров использования ESP32 в качестве ведущего для подключения к другому ESP в качестве ведомого, я думаю, это потому, что никто не может заставить его работать. Но если вы нашли решение. Пожалуйста, дайте мне знать
- Пример кода для ESP32 в качестве медиа-контроллера для Android/iPhone Media Apps
- Библиотека ардуино или код для ESP32 для сканирования устройств Bluetooth?
- Имена синтаксического анализа обнаружения Bluetooth ESP32
- Веб-страница с использованием Bluetooth?
- Можно ли использовать WiFi и Bluetooth/BLE в одном проекте ESP32?
- ESP32 запускает BLE после глубокого сна
- Максимальная скорость ESP32 Bluetooth SPP
- ESP32 Arduino Bluetooth Serial не подключается повторно после отключения
Я искал в сети решение этой проблемы для esp32, пытающегося подключиться в качестве серийного мастера. Все, что я могу найти, это то, что существует проблема с сообщением об успешном соединении с BluetoothSerial.h при использовании правильного адреса или имени подчиненного устройства. Последняя версия 1.4, я думаю, сообщает об успешном соединении, когда это не так. версия 1.3 сообщает о сбое соединения. Очень расстраивает отсутствие обновленного исправления на github. Вы, наверное, заметили, что все примеры классического BLE используют esp32 в качестве ведомого устройства, а телефон Android подключается в качестве ведущего для включения и выключения реле на плате BLE. Но нет, @Andrew Titcombe