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

BLE SoC PHY6202

cool2000

Member
Скорее всего, но не хватает знаний, что именно :(.

Подкорректировал html, надо посоветоваться.
1707307537022.png
Поле флагов читается/пишется командой 0x55. При этом, желательно иметь возможность устанавливать флаги, относящиеся к выделенной группе параметров отдельно или чтобы можно было отправлять укороченную до размеров поля флагов команду . Они же относятся только к моделям с экраном? Чтобы всякий идиот не лез в настройки латентности, интервалов и прочего.
 

pvvx

Активный участник сообщества
Поле флагов читается/пишется командой 0x55. При этом, желательно иметь возможность устанавливать флаги, относящиеся к выделенной группе параметров отдельно или чтобы можно было отправлять укороченную до размеров поля флагов команду . Они же относятся только к моделям с экраном? Чтобы всякий идиот не лез в настройки латентности, интервалов и прочего.
По поступлению CMD_ID_DEVID (0x00) надо включать только те элементы, которые описаны в флагах devsrs.services.

Пример:

#define SERVICE_SCREEN 0x00000020 // есть экран
#define SERVICE_TH_TRG 0x00004000 // триггер по температуре и влажности

> Чтобы всякий идиот не лез в настройки латентности, интервалов и прочего.


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

pvvx

Активный участник сообщества
Позже слеплю опрос долгого нажатия кнопки (на более 15 сек) для сброса всех настроек на default.

Очень многие привыкли к ESP (- оно посылает значения раз в час) и возмущаются, что передача замеров идет так быстро :)
 

pvvx

Активный участник сообщества
Сильно раздражает, что постоянно рвётся соединение.
Попробовал на 5 разных USB-BT адаптерах на Windows, не считая встроенного на PCIe и смартфонов.

Взял BTH01Y_V1.2, т.к. у него самый большой уход счетчика RTC – более +400 сек за сутки.

Соединение не отваливается.

На адаптере с ATS2851 наглядно видно, что он полный тормоз. Данные считываются с ужасной задержкой. Но соединение держит.

Отваливание происходит в Linux? - тогды ой :) Поменяйте latency - вдруг поможет...
 

cool2000

Member
Отваливание происходит в Linux?
Неа, на планшете. Возможно тупит Samsung.
pvvx написал(а):
Поменяйте latency - вдруг поможет...
А какое значение поставить?

Залил обновление html. Стили и js для рисования графиков вынес в отдельные файлы. Пока флаги оставил как есть. Проверьте, что ещё добавить/поправить, чтобы можно было поставить версию 1.0 ;).
 

pvvx

Активный участник сообщества
А какое значение поставить?
Любое - оно в "интервалах соединения" (равных 30 мс) но в виде времени интервала "молчания" при соединении - сколько можно пропустить термометру "интервалов соединения" не выходя на связь. Меньшее значение - термометр будет больше потреблять, большее - адаптер будет долго ожидать когда термометр выйдет на связь для передачи команд.
Интервал соединения и latency сильно сказываются на стабильность соединения при расхождении часов. И чем меньше интервалы - тем меньше влияет расхождение часов...
 

pvvx

Активный участник сообщества
На Xiaomi термометрах, у которых пожадничали кондеров в питании, в начале соединения - пока не согласовали длинные интервалы, происходит удар на подсаженную батарейку и у чипа сбивается-уходит таймер. Но, если latency ставить до 1 сек, то это прокатывает, а большее значение latency - уже разрывает соединение, т.к. таймер бреданул при провале напряжения ниже минимума... Потом таймер идет нормально, отклонения в ppm в норме, питание не так жрет, т.к. уже согласовали интервалы соединения на длинные и батарейка успевает...
 

pvvx

Активный участник сообщества
Слепил передачу open/close со счетчиком. Вышел бешенный - принимает open/close 50 Гц (от прикосновения рукой до входа).
 

pvvx

Активный участник сообщества
Наводка от руки - 50Гц, а фиксирует оба фронта ( дверь/окно open/close :) ), т.е. сотня пробуждений-передачаBLEрекламы-засыпание в сек.
@cool2000 - как раз эта функция open/close создает частые прерывания с пробуждениями и при "соединении" происходит потеря синхронизации или ещё чего-то. Т.е. конкретно теряет связь - заканчивается пачкой передача-прием с шагом 30 мс до таймаута соединения... Это явный признак потери соединения со стороны PHY.
Основные возможные причины (по предполагаемым приоритетам):
1. Сбой при чтении RTC счетчика в wakeup функции.
2. Переполнение каких-то буферов передачи, т.к. пытается передать notify каждый фронт 50 Гц. Но должно отрабатывать с возвратом ошибки...
3. Кому-то не нравятся прерывания.
 

pvvx

Активный участник сообщества
Где-то на 2.1 секунде (2100 мс) потеря связи.
1707372132525.png
 

pvvx

Активный участник сообщества
Более наглядный:
1707374035650.png
Но если замыкать кнопкой не очень быстро, то не рвет. Похоже на "повторное вхождение в прерывание" (?)...
 

pvvx

Активный участник сообщества
У Telink тоже глючат прерывания по пинам во время соединения. Но там глючит PM менеджер - не врубает sleep раз-на раз - так и тянет до следующего события, но соединение не нарушает.
Там пришлось отключить опрос ног по прерываниям при соединении на некоторых моделях, т.к. зависит от в каком GPIO порта пин с irq... :(
 

pvvx

Активный участник сообщества
Это очень похоже.
Чип очень мало потребляет, поэтому любая наводка может вызывать проблемы.
Но в режиме рекламы проблем никаких - наверно отработает и 200Гц по два фронта (к 400 передачам реклам). Там тайминги пофигу.
 

pvvx

Активный участник сообщества
Интеграция BTHome в HA и пару Гц уже не тянет на прием. Возможно и вытянет пару, если сменить адаптер на CSR8510A10.
"Passive BLE Monitor" ещё как-то успевает на CSR8510A10 принимать события с частотой дцать раз в секунду :) И это в окружении к 60 орущих BLE...
 
Подскажите, а в TH-05 на Вашей прошивке, экран показывать что-то должен?
Так-то он работает, но экран пустой.
 
Правда я загрузил в него BOOT_TH05_v11.hex, может это влиять?
Через PHY62x2BTHome.html не получается загрузить полную версию, датчик находиться, но не подключается.
 

pvvx

Активный участник сообщества
TH05 есть в нескольких вариантах. На печатной плате есть номер варианта. Пока работает только "TH05_V1.4", т.к. других у меня ещё нет.
 

pvvx

Активный участник сообщества
Пишут, что работает и на
  • TH05_V1.5 2023-05-23 с BL55028 и ATH20
  • TH05_V1.6 2023-06-02 с BL55028 и ATH20
 
Сверху Снизу