• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

BLE модули TB-04/TB-03F (TLSR8253F512)

millworm

New member
хм, с такими настройками скачет 0.4-0.7мА
видать чего-то лишнего еще включено. буду искать, спасибо
нужно было интервал рекламы увеличить. Поднял до 3000 и все стало отлично :)

Появился новый вопрос - для работы OTA кроме поднятого сервиса еще что нужно настраивать? Пробую через https://pvvx.github.io/ATC_MiThermometer/TelinkOTA.html обновить прошивку. Она грузится какое-то время, а потом выдает ошибку NotSupportedError gatt error unknown
получаю ее в разное время: бывает чуть ли не сразу посла нажатия на flash выдается, иногда до 5 секунд доходит
в колбеке подключения выставляю
C++:
bls_l2cap_requestConnParamUpdate(CONN_INTERVAL_10MS, CONN_INTERVAL_10MS, 99, CONN_TIMEOUT_4S); 
bls_pm_setSuspendMask(SUSPEND_DISABLE);
bls_pm_setManualLatency(0);
bls_ota_setTimeout(10 * 1000000);
 

pvvx

Активный участник сообщества
Появился новый вопрос - для работы OTA кроме поднятого сервиса еще что нужно настраивать? Пробую через https://pvvx.github.io/ATC_MiThermometer/TelinkOTA.html обновить прошивку. Она грузится какое-то время, а потом выдает ошибку
Поправьте задержку сброса ОТА.
Этого не достаточно:
C++:
bls_ota_setTimeout(40 * 1000000);
Пример:
1) https://github.com/pvvx/ATC_MiThermometer/blob/master/src/app_att.c#L364
{0,ATT_PERMISSIONS_RDWR,16,sizeof(my_OtaData),(u8*)(&my_OtaUUID), (&my_OtaData), &otaWritePre, &otaRead},
2) https://github.com/pvvx/ATC_MiThermometer/blob/master/src/ble.c#L123
C++:
extern u32 blt_ota_start_tick;
int otaWritePre(void * p) {
    blt_ota_start_tick = clock_time() | 1;
    return otaWrite(p);
}
Будет отсчитывать от последнего принятого блока.
На хороших адаптерах BT и при быстрой работе js успевает залить за до 40 сек.
Но если адаптер фиговый, тормозной комп или iOS, устройство далеко, то bls_ota_setTimeout() c максимальным значением не успевает и сбрасывает
 

pvvx

Активный участник сообщества
Может нужно настройки еще какие-то менять после того как подключились?
Для OTA да.
Необходимо переключить (согласовать с партнером) интервал соединения на малый и Latency на 0.
Кушать ему надо, когда пишется flash и шевелиться быстрее (отключить DEEPSLEEP_RETENTION_xxx). От этого время приема и записи зависит.
А в других режимах - кушать надо мало...

Иногда хватает установить в параметрах соединения только Latency в 0, если интервалы были настроены и использовался Latency с большим числом... Это изучайте в параметрах соединения для всех BLE.
C++:
    if (ota_is_working) {
        bls_pm_setSuspendMask (SUSPEND_ADV | SUSPEND_CONN); // SUSPEND_DISABLE
        bls_pm_setManualLatency(0);
    } else { ... }
 
Поначалу я слишком быстро отпускал свою кнопку, замыкающую пины TXD и SWS, и получал сообщения "Error get version floader!"
Нашел в ящике отладочную платку на E104-BT12LSP (прошита скорее всего MESH с кодом управления лампочками).
Припаял SWS (желтый провод). Запускаю команду
python.exe TlsrComProg.py -p COM3 -t 4000 rf 0 0x80000 ff.bin
Получаю классическую "Error get version floader!"
Кнопку reset жал в разное время всеми указанными в этом топике способами :)
Можно как нибудь переписать этот mesh флеш на скажем blink из стандартного sdk?
 

Вложения

pvvx

Активный участник сообщества
Кнопку reset жал в разное время всеми указанными в этом топике способами :)
На плате кнопки "reset" нет и ничего к ней не распаяно, но наверняка всё прикручено к микросхеме USB-UART... Придется помучаться :)
И у TLSR8253 два входа-выхода UART TX/RX и что там у китайцев где - изучайте, путем съема крышки :)
 
Вроде стерся и прошился. Попытался залить в него родное firmware от TB-03, полученное методом
python.exe TlsrComProg.py -p COM3 -t 2000 rf 0 0x80000 ff.bin

09:18:20: USB-COM opened.
09:18:26: File was selected, size: 524288 bytes
09:18:33: Reset DTR/RTS (100 ms)
09:18:33: Activate (3 sec)...
09:18:36: Write 524288 bytes in to Flash...
09:21:47: Done (194.031 sec).
09:21:47: Soft Reset MCU

Вроде залилось, по крайней мере раньше при включении лампочки моргали, а сейчас нет.
Тем не менее при попытке считать флеш через TlsrComProg. по прежнему "Error get version floader!". Добрые китайцы приложили мне в комплект две платки без чипа, припаял на одну из них TB-03, руководствуясь подписями выводов на плате - вот он читается TlsrComProg без проблем.
IMG_20220302_092704[1].jpg

Щас пойду среду разработки ставить и примеры пытаться компилировать...

ps: вопрос немного не в тему. Предположим у нас есть маячок Beacon "пикающий" в пространство рекламой. Может ли другая TB-03 (или термометр) определить мощность сигнала его передатчика не подключаясь к нему? Это я пытаюсь ble-позиционирование в помещении реализовать...
 
Установил среду разработки TelinkSDK под Win10, инсталлятор создал три значка.
При клике по ярлычку Telink IDE 1.3 (C:\TelinkSDK\eclipse.exe -vm C:\TelinkSDK\\jre\bin\javaw ) получаю следующие сообщение об ошибке.
sshot-10.jpg
Если не стартовать java vm, а просто запустить Eclipse она нормально стартует.
Импортировал проект, пробую пересобрать. В логе следующая ошибка
sshot-10.png
Никто не подскажет как это разрулить?
 
Никто не подскажет как это разрулить?
Прорвался дальше переименовав python3 в просто python. теперь валимся тут:

Makefile:
Create Flash image (binary format)
Invoking: TC32 Create Extended Listing
 - Cannot openmake: *** [sizedummy] Error 1
make: *** Waiting for unfinished jobs....
copy from `./out/BLE-ScanerTrg.elf' [elf32-littletc32] to `./out/../BLE-ScanerTrg.bin' [binary]
output done!
Finished building: out/../BLE-ScanerTrg.bin
Finished building: out/BLE-ScanerTrg.lst
 

pvvx

Активный участник сообщества
Установил среду разработки TelinkSDK под Win10, инсталлятор создал три значка.
При клике по ярлычку Telink IDE 1.3 (C:\TelinkSDK\eclipse.exe -vm C:\TelinkSDK\\jre\bin\javaw ) получаю следующие сообщение об ошибке.
Посмотреть вложение 11919
Это норма при бардаке в PATH в windows с бардаком от java и десятков инсталляций Eclipse.
И строка у вас отличается - не указан -d32
E:\Telink\SDK\eclipse.exe -vm -d32 E:\Telink\SDK\jre\bin\javaw
 

pvvx

Активный участник сообщества
В качестве начальной точки выбрал AdScanerTrg :) Он больше всего похож на то, что мне нужно, но вот не собирается что-то :(
Есть вариант сборки без вашего участия под linux. Могу переделать проект в него, раз не умеете создавать свою среду сборки.
У меня как-то уживаются одновременно десятки сред сборки, но все было необходимо редактировать и изменять, посложнее чем вы описываете.
 

pvvx

Активный участник сообщества
ps: вопрос немного не в тему. Предположим у нас есть маячок Beacon "пикающий" в пространство рекламой. Может ли другая TB-03 (или термометр) определить мощность сигнала его передатчика не подключаясь к нему? Это я пытаюсь ble-позиционирование в помещении реализовать...
Не может. В реальной обстановке из-за отражений и прочих эффектов, да без наличия специальных антенн уровни сигналов 2.4ГГц имеют не линейное распределение.
Для позиционирования в BLE есть специальные протоколы и аппаратные решения.
 
И строка у вас отличается - не указан -d32
Ага сенкс, вписал параметр - eclipse запустился.
Был не полностью обновлен github
Отлично. хотя все оказалось банальнее, я проглядел еще один "python3" в mаке. На будущее руками создал линк python3.exe к python.exe
Есть вариант сборки без вашего участия под linux
Не, мне надо будет еще в самом коде покопаться. :) Мне требуется по задаче простенький интегратор произвольного множества маячков с указанием их RSSI. В принципе имеющийся код вполне выполняет то что мне нужно, но возможно придется что то подправить.
Для позиционирования в BLE есть специальные протоколы и аппаратные решения.
Спасибо. как я понял там ребята серьезно размахнулись на триангулирование углов. Мне, в первом приближении, это пока не нужно. В демке маячок будет находиться _внутри_ прямоугольника из 4(6,8 etc) приемников. то есть дело сводится к определению положения точки не на произвольной плоскости, а на прямой между двумя приемниками (ну как шарик на биллиардном столе где приемники в лузах). Высокая линейность на этом этапе также не нужна. Той что есть вполне хватает, ниже на скриншоте TB-03 на монтажке принимает показания термометра. Колебания значений возникают из-за того что я не выключал сканирование когда переносил термометр с места на место.
sshot-11.jpg

ps: Я правильно понимаю, что пример iBeacon из SDK это и есть код простого маячка? Можно зашить его в TB-04, подключить его к CR2032 (параллельно подпаять конденсатор микрофарад на 100) и эта конструкция будет около года работать "Спутником" пища в эфир своим именем?
 

pvvx

Активный участник сообщества
Колебания значений возникают из-за того что я не выключал сканирование когда переносил термометр с места на место.
В SDK параметр RSSI выдается с большим шагом и кое-как...
Я правильно понимаю, что пример iBeacon из SDK это и есть код простого маячка? Можно зашить его в TB-04, подключить его к CR2032 (параллельно подпаять конденсатор микрофарад на 100) и эта конструкция будет около года работать "Спутником" пища в эфир своим именем?
Я его не смотрел. Там вполне возможно, что никакого энергосбережения не включено. Это же пример :)
 

nikolz

Well-known member
если объект виден, то проще поставить лазерный триангулятор
будет и точнее и проще и надежнее .
 
если объект виден, то проще поставить лазерный триангулятор
Это вы про TOF? Скорее всего он не подойдет. Объектов будет много, они все высокоподвижны и их нужно отличать друг от друга.
ps: Чувствую что огребу проблем с их подвижностью и на ble, но в качестве макета думаю оно должно справится. Особенно если выкрутить в ноль мощность маячка (чтобы его видели только ближайшие к нему приемники)
 
Сверху Снизу