Проблема подключения к BLE JDY-08

Пол дня сегодня пробовал сопрягать Blynk (актуальная версия из Google Play) c Arduino Pro Mini (5V, 16MHz) + BLE JDY-08 (чип CC2541). Соединение через мобильное приложение Blynk удалось установить один раз из примерно 100 попыток.

Сам телефон отлично сопрягается с BLE модулем (видно по состоянию светодиода - он перестает мигать). Также можно легко подключиться с Raspberry Pi 3. Телефон: Lenovo K8 Note с Android 8.0. Пробовал на Android 7.0 - результат аналогичный.

Что характерно, примерно с такой же частотой фейлов работает Serial Bluetooth Terminal (в 1.16).
НО! Следующие приложения: BLE Tool, BLE Monitor, Remote XY - сопрягаются на этом же телефоне и работают без каких-либо проблем.

Сложилось ощущение, что Serial Bluetooth Terminal и Blynk используют либо какую-то либу, которая кривая или не так настраивается. Может быть дело в таймаутах при подключении? У JDY-08 минимальный таймаут 10 мс.

Помогите, пожалуйста, разобраться. Ищем приложение для наших клиентов… и пока побеждает RemoteXY.

BLE JDY-08 нету среди списка оборудования, с которым работает Blynk. Значит, “как повезет”

Да, я видел, но это заменитель HM-10, а он в списке вроде бы присутствует. То есть в части реализации UART у них все одинаковое. Более того, оно даже подключилось один раз.

Может быть дадите мне что-то для логирования - готов помочь выявить проблему?

Можете попробовать повторить ситуация с этим билдом и скинуть логи - логи отправляются с экрана about (кнопка инфо на экране списка проектов), при отправке выберите email приложение - в нем уже должны быть установлены адресат и прикреплен файл (если нет- поставьте alex@blynk.cc)

Логи я отправил, однако, не смог воспроизвести ситуацию. В предложенном билде список BLE-устройств вообще пустой, хотя сам телефон к нему подключается, RemoteXY тоже подключается.

Очень странно, у меня сейчас под руками нет ble устройств - в среду перепроверю на своих устройствах и если что скину другой билд.

Похоже, что добавляя логи случайно удалил одну строчку кода, - поправил билд по той же ссылке.

Ok, похоже что так. Теперь все получилось воспроизвести по описанному ранее сценарию. Надеюсь в логах достаточно инфы для анализа.

В ардуинке крутится такая программа:
#include <SoftwareSerial.h>

#define BLYNK_USE_DIRECT_CONNECT
#define BLYNK_PRINT Serial
#include <BlynkSimpleSerialBLE.h>

char auth[] = "c86af1d4364249a4baac5445735075ab";
SoftwareSerial bleSerial(7, 11); // RX, TX

void setup()
{
  Serial.begin(9600);
  bleSerial.begin(115200);
  Blynk.begin(bleSerial, auth);
}

void loop()
{
  Blynk.run();
}

В скетче (и аппаратной части) проблем нет, один раз Blynk-ом удалось подцепиться. Если просто смотреть, что Blynk отправляет, то видно, что он какие-то коды шлет (содержимое auth в частности). То есть взаимодействие какое-то есть, но подключение отваливается сразу.

Да, вот еще отладочный вывод:

[0] 
    ___  __          __
   / _ )/ /_ _____  / /__
  / _  / / // / _ \/  '_/
 /____/_/\_, /_//_/_/\_\
        /___/ v0.5.3 on Arduino Pro

  Give Blynk a Github star! => https://github.com/blynkkk/blynk-library

[166] Connecting...
[6165] Connecting...
[12165] Connecting...
[18165] Connecting...

Судя по логам внутри приложения - ничего в приложение от железа не приходит, и коннект обрывается сразу же по попытке записать что-то в характеристику.

У этой борды точно такие же tx/rx характеристики как у HM-10?

That BAUD rate is a bit high for reliable SoftwareSerial connection… try 9600

1 Like

I’ve tried 9600 and… it has connected, but only once. After minute or so connection was broken. Now I can’t connect to BLE again.

Да, характеристики такие же, удалось один раз подключиться и поуправлять пином (логи отправил). Затем соединение разорвалось и больше подключиться уже не удается (сбрасывал питание, перевключил bluetooth на телефоне, перезагрузил приложение).

Did you reprogram the BLE module for the 9600 BAUD as well? You can’t just change the code by itself.

Yep

      tmp.begin(115200);
      delay(250);
      tmp.print("AT+BOUD4");
      delay(250);
      tmp.print("AT+RST");
      delay(250);
      
      Serial.begin(9600);
      bleSerial.begin(9600);

Нельзя ли таймауты увеличить со стороны приложения? Чтобы оно дольше ждало ответа?

EDIT - OK, I see you did use the correct command…

Well, that is all I can suggest, i will leave the rest to someone else with more familiarity of this non-officially supported device.

2nd EDIT - well, there is always power… it is very low power, but as a test you can try a seperate PSU and not tapping off the ESP

Yep, there were two successfull connection. I was able to change pin state using Blynk’s button control.
At my point of view the problem is not concerned to JDY-08, because there are several apps (RemoteXY, BLE Tool, BLE Monitor) working perfectly with it.

Проблема не в том, что мы ждали ответ и потом сами дропнули коннект, судя по вашему логу - сразу после записи в характеристику происходил дроп коннекта.

Ok, ладно. Можете объяснить, почему три приложения работают корректно (RemoteXY, BLE Tool, BLE Monitor) и ничего не дропают, а также почему Blynk иногда все же удается подцепиться и работать длительное время?