Такого решения в интернете не находил, возможно кому-то будет полезным. Покупал модуль HM-10, но пришел другой JDY-10 V.25 (по крайне мере такое название выдает). Проблема заключалась в том, что с телефона через программу "Serial Bluetooth Terminal" получалось отправлять данные на контроллер, и наоборот. Но вместо введенного текста приходили другие символы. При изменении в "монитора порта" частоты (baud) 115200 проблема решалась, но команда настройки TA+BAUDX (X - число 1-9) перебрасывало на совсем другие частоты, которые не совпадали с мануалом. Для поиска рабочих частот можно воспользоваться таким кодом:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(6, 7); // RX, TX
// В моей ситуации я подключал модуль к обычным портам на arduino.
В setup()
long minBoud = 1000; //Минимальная частота для проверки
long maxBoud = 500000; //Максимальная частота для проверки
long stepBoud = 100; //Шаг частоты
long currentBoud;
for (currentBoud = minBoud; currentBoud < maxBoud;currentBoud = currentBoud + stepBoud) {
Serial.begin(currentBoud);
mySerial.begin(currentBoud);
Serial.write("Testing of msg. +Very long massage with numbers 123\n\n");
mySerial.write("Testing of msg. +Very long massage with numbers 123\n\n");
char buf[16];
long lval = currentBoud;
ltoa(lval, buf, 10);
Serial.println(buf);
Serial.write(buf);
mySerial.write(buf);
Serial.end();
mySerial.end();
}
Подключаемся с телефона к BLE модулю. Индикатор модуля должен с мигающего перейти на постоянный свет, показывая что к модулю подключено устройство. Запускаем код. Занимает время до минуты. Смотрим в терминале телефона на какой частоте сообщение пришло правильно, также смотрим в мониторе порта на пк.
Дальше в коде используем данные частоты, например
void setup(){
Serial.begin(74880); //From computer BOUD
mySerial.begin(14800); //From phone BOUD
mySerial.write("AT");
В моем случае контроллер не отвечает на все команды, но всегда правильно передает и получает информацию, что мне было и необходимо и легче чем заказывать и ждать новый модуль.