pvvx / THB2

Custom firmware for Tuya devices on the PHY622x2 chipset
Other
240 stars 20 forks source link

TH-05 with CHT8305 #8

Open zipfo opened 10 months ago

zipfo commented 10 months ago

Здравствуйте, приехал TH05, но с неизвестным LCD драйвером и CHT8305. Сейчас прошивка TH05 адаптирована конкретно под AHT20?

IMG_8174

pvvx commented 10 months ago

Test version 0.7 supports various sensors...

v0.x is the firmware for tests. While the firmware number is not 1.x or higher, these are test firmwares and many things do not work in them. Normal OTA will be from version 1.0. If the firmware works, then there is no need to change it until v1.0 is released.

Тестовая версия 0.7 поддерживает различные датчики...

v0.x - прошивки для тестов. Пока номер прошивки не 1.х и выше, это тестовые прошивки и многие вещи в них не работают или не доделаны. Нормальное ОТА будет от версии 1.0. Если прошивка работает, то менять ее нет необходимости до выхода v1.0.

almirus commented 10 months ago

А где достать распиновку для th05 Куда подпаиваться для прошивки?

pvvx commented 10 months ago
C другой стороны платы, там всё подписано - см. обновленный https://pvvx.github.io/TH-05/ USB-UART PCB
RX TX1
TX RX1
RTS REST_N
GND -Vbat
+3.3V +Vbat

И какая у вас версия - ZTH-05 или экран: image

Работа-обсуждение о термометрах на PHY62x2 https://esp8266.ru/forum/threads/ble-soc-phy6202.4666/

almirus commented 10 months ago

у меня старая bl55028

pvvx commented 10 months ago

Ужасная BL55028. Кушает много. "Power saving mode" не работает, хотя описан в PDF. Т.е. не приводит к уменьшению тока. Рассчитывать на работу TH-05 от средней CR2032 более полугода не стоит. На оф. прошивке потребление ещё больше... Всё у Tuya cделано плохо, чтобы только продать, а дальше - мучайтесь с батарейками...

almirus commented 10 months ago

@pvvx Уверен что ваша прошивка сделает намного лучше

image

Не смог оригинальную сохранить, для th05 другие адреса?

almirus commented 10 months ago

успех, при запуске показало "07" несколько сек, это отладочное?

00:25:51: Нет подключения
00:25:54: Поиск устройств
00:26:28: Ожидание соединения с TH05-5F21F7
00:26:37: Model: TH05
00:26:37: Firmware: github.com/pvvx
00:26:37: Hardware: 0001
00:26:37: Software: V0.7
00:26:37: Dev info # hw: 0015, sw: 0007, services: 000002A3, sd: 0000
00:26:37: OTA ver: 01
00:26:37: Устройство подключено.

image

pvvx commented 10 months ago

успех, при запуске показало "07" несколько сек, это отладочное?

Это номер версии.

Не смог оригинальную сохранить, для th05 другие адреса?

Просто что-то не так с соединением - надо было пробовать несколько раз и/или поменять скорость COM порта. Адаптеры USB-COM у всех разные... И процесс чтения прошивки очень долгий - десятки минут - это практически хак и такого не было предусмотрено в программе ROM чипа чтобы не копировали... А писать свой специальный загрузчик для разовой функции лень.

Если надо восстановить в Tuya, то тут Full Flash TH-05 для заливки.

pvvx commented 10 months ago

Уверен что ваша прошивка сделает намного лучше

Менее 13 мкА в режиме сна у TH-05 не удалось выжать. Такие чипы ставят китайские разгильдяи под марку Tuya. У оригинальной прошивки сон - 23 мкА. Там они вообще не заботятся о потреблении. У BTH2 термометра, с программой из данного репо, вышло 3 мкА. Как и у BTH01. И там ещё батарейки 2xAAA! Сон у Xiaomi LYWSD03MMC B1.4 - 6 мкА и среднее рабочее потребление 14 мкА при в два раза чаше передаче - интервал 2.5 секунды, вместо 5-ти как пока у всех программ для PHY6222 из данного репо (иначе выходит большой расход).

И LCD c драйвером BL55028 не приспособлен для работы от CR2032. По мере посадки батареи напряжение для CR2032 под нагрузкой падает и считается нормой до 2.0..2.2В = 0%. А тут чип с нормой питания от 2.5В. В итоге вы уже ничего не увидите на экране когда CR2032 поработает на 30..40% или если поместить термометр в отрицательную температуру, если не будете присматриваться и крутить его под разными углами. При 2.5В: image

При 3.3В: image

image image

В итоге расходовать батарейку до 0% не выйдет. А это сокращает время работы от батареи....

almirus commented 10 months ago

А при понижении ниже 2.5 можно программно вырубать экран?

pvvx commented 10 months ago

Экран на данном чипе не отключается. Т.е. если давать команду сброса контроллеру, то он будет ещё больше жрать. А уменьшить менее чем при текущих настройках когда показывает - нет возможности. У контроллера LCD, с которого сделан этот кривой клон, есть команда сна. Но на BL55028 не работает. На нем вообще почти ничего не работает, даже часть описанная в его PDF (копированная прямо картинками от другого чипа, который пытались скопировать :) )...

И питание BL55028 подключено от вывода порта PHY6222, как и датчика, а это ещё дает падение напряжения... В текущей тестовой версии питание ему не отключаю, т.к. другая нога питания BL55028 всё равно соединена с питанием от батареи и если отключить вывод порта - то потребление ещё больше. :) Только если выломать BL55028 - тогда поможет. Под бренд Tuya выпускают и хуже варианты термометров - там CR2032 работает 1 месяц... Не связывайтесь с Tuya и всё будет значительно лучше в плане батареек, т.к. под данный бренд выпускают всякий отстой без каких либо гарантий и сделанный непонятно кем и где из устаревших компонентов, брака и т.д. имеющих отрицательную цену из-за срока хранения и подобное :)

У Tuya поделок даже FCC ID нет, никакого другого сертификата нет, никаких проверок и гарантий... Tuya это контора по сбыту хлама из Китая.

almirus commented 10 months ago

Успешно перешил на 0.8, раньше не работала установка времени, возвращал FF

21:13:17: Старт программирования...
21:14:07: Программирование завершено за 50.104 секунды
21:14:16: Переподключение
21:14:16: Устройство отключено.
21:14:16: Ожидание соединения с TH05-5F21F7
21:14:19: Устройство отключено.
21:14:19: NetworkError: GATT Server is disconnected. Cannot retrieve services. (Re)connect first with `device.gatt.connect`.
21:14:19: Переподключение 0 из 5
21:14:19: Ожидание соединения с TH05-5F21F7
21:14:26: Model: TH05
21:14:26: Firmware: github.com/pvvx
21:14:26: Hardware: 0001
21:14:26: Software: V0.8
21:14:26: Dev info # hw: 0015, sw: 0008, services: 000002B2, sd: 0000
21:14:26: OTA ver: 01
21:14:26: Устройство подключено.
21:14:38: Время на устройстве: 1970-01-02 08:51:29
21:14:41: Установка времени на утройстве (23C166B965)...
21:14:41: Время на устройстве: 2024-01-30 21:14:41
21:14:44: Время на устройстве: 2024-01-30 21:14:44
21:14:50: Отключение
21:14:50: Устройство отключено.
pvvx commented 10 months ago

Подождите выхода первого релиза. Он скоро. В настоящий момент идет проверка всех функций... Будет в v1.0.

almirus commented 9 months ago

Чет не могу обновить 0.8 на 1.1 Датчик лежит рядом с компом, показания считываются, переходит в boot режим не с охотой, но отображает на пару секунд 08 и переходит обратно в стандартный режим (иконка соединения постоянно горит)

23:17:07: Не подключено
23:17:21: Поиск устройств
23:17:58: NotFoundError: User cancelled the requestDevice() chooser.
23:17:58: Подключиться не удалось!
23:19:17: Поиск устройств
23:20:14: Ожидание соединения с TH05-5F21F7
23:20:21: NetworkError: Connection Error: Connection attempt failed.
23:20:21: Переподключение 0 из 5
23:20:21: Ожидание соединения с TH05-5F21F7
23:20:31: Model: TH05
23:20:31: Firmware: github.com/pvvx
23:20:31: Hardware: 0001
23:20:31: Software: V0.8
23:20:32: Dev info # hw: 0015, sw: 0008, services: 000002B2, sd: 0000
23:20:32: Устройство подключено.
23:20:32: Ответ на команду (33): ff
23:20:37: Файл: TH05_v11.bin
23:20:37: Файл id:PHY6, Сегментов: 4, Старт: 0x1FFF1838, Размер: 50304 байт
23:20:37: Размер файла: 50308 байт
23:20:37: Счетчик: 3145 блоков
23:20:41: Переключение на BootLoader...
23:20:41: Переподключение
23:20:41: Устройство отключено.
23:20:41: Ожидание соединения с TH05-5F21F7
23:20:45: Устройство отключено.
23:20:45: NetworkError: GATT Server is disconnected. Cannot retrieve services. (Re)connect first with `device.gatt.connect`.
23:20:45: Переподключение 0 из 5
23:20:45: Ожидание соединения с TH05-5F21F7
23:20:57: Model: TH05
23:20:57: Firmware: github.com/pvvx
23:20:57: Hardware: 0001
23:20:57: Software: V0.8
23:20:57: Dev info # hw: 0015, sw: 0008, services: 000002B2, sd: 0000
23:20:57: Устройство подключено.
23:20:57: Ответ на команду (33): ff

пробовал с телефона, тож самое

23:07:41: Не подключено
23:08:27: Поиск устройств
23:08:34: Ожидание соединения с TH05-5F21F7
23:08:42: NetworkError: Connection Error: Connection attempt failed.
23:08:42: Переподключение 0 из 5
23:08:42: Ожидание соединения с TH05-5F21F7
23:08:52: NetworkError: Connection Error: Connection attempt failed.
23:08:52: Переподключение 1 из 5
23:08:52: Ожидание соединения с TH05-5F21F7
23:08:58: Model: TH05
23:08:58: Firmware: github.com/pvvx
23:08:58: Hardware: 0001
23:08:58: Software: V0.8
23:08:59: Dev info # hw: 0015, sw: 0008, services: 000002B2, sd: 0000
23:08:59: Устройство подключено.
23:08:59: Ответ на команду (33): ff
23:09:30: Файл: TH05_v11.bin
23:09:30: Файл id:PHY6, Сегментов: 4, Старт: 0x1FFF1838, Размер: 50304 байт
23:09:30: Размер файла: 50308 байт
23:09:30: Счетчик: 3145 блоков
23:09:39: Переключение на BootLoader...
23:09:39: Переподключение
23:09:39: Устройство отключено.
23:09:39: Ожидание соединения с TH05-5F21F7
23:09:39: Устройство отключено.
23:09:39: TypeError: Cannot read properties of null (reading 'getPrimaryService')
23:09:39: Переподключение 0 из 5
23:09:39: Ожидание соединения с TH05-5F21F7
23:09:43: Устройство отключено.
23:09:43: NetworkError: GATT Server is disconnected. Cannot retrieve services. (Re)connect first with `device.gatt.connect`.
23:09:43: Переподключение 1 из 5
23:09:43: Ожидание соединения с TH05-5F21F7
23:09:51: Model: TH05
23:09:51: Firmware: github.com/pvvx
23:09:51: Hardware: 0001
23:09:51: Software: V0.8
23:09:51: Dev info # hw: 0015, sw: 0008, services: 000002B2, sd: 0000
23:09:51: Устройство подключено.
23:09:51: Ответ на команду (33): ff
23:10:16: Отключение
23:10:16: Устройство отключено.
pvvx commented 9 months ago

Версия 0.8 ещё не поддерживала нормальный OTA. Придется проводами прошить Boot версию от 1.0+.

Версия Boot 1.0 имеет ошибку, если установить своё имя устройства. Остальное должно работать. Лучше прошивать последнюю версию - Boot версию 1.1. Boot далее не надо менять, т.к. его основная функция - OTA. Загружаемая версия по OTA не имеет OTA функции. В дальнейшем предполагается, если какие ошибки будут в Boot версии, то будет специальное обновление её по OTA,

Shestoperd commented 9 months ago

Пришли два клона TH-05, вместо BL55028 стоит GNV1792S, сенсор S-8310. У GNV1792S напряжение питания 2.5-5.5 вольт, потребление среднее 7.5мкА, максимальное 20мкА, это если верить китайскому datasheet-у. Ток покоя при выключенном дисплее и генераторе 5мкА. IMG_20240206_173346_crop IMG_20240206_173130_crop Пока не пробовал прошивать, не очень понятно как быть с сигналом RST, которого у моего UART-а нет, нужно просто перед началом замкнуть на землю и отпустить?

pvvx commented 9 months ago

Пришли два клона TH-05, вместо BL55028 стоит GNV1792S,

TH05 больше. Пока "освоена" только одна версия - на плате надпись TH05_V1.4. Поддерживаемые датчики описаны в README.

Другие варианты TH05 видимо имеют различие в разводке сегментов LCD. Заказал разные, пока идут по почте с али...

Вот ещё версия TH05_v1.3: image image image Фото с али...

не очень понятно как быть с сигналом RST, которого у моего UART-а нет

Будет проблемно.

pvvx commented 9 months ago

У GNV1792S напряжение питания 2.5-5.5 вольт, потребление среднее 7.5мкА, максимальное 20мкА, это если верить китайскому datasheet-у. Ток покоя при выключенном дисплее и генераторе 5мкА.

У BL55028 тоже много чего написано. но не работает

И ещё много проблем с самими кодами SDK от PHY (что нашлось и уже частично переделано) - там много чего не дописано и недоделано для полной функциональности дополнительных опций и т.д...

Datasheet на сами SoC PHY62x2 тоже кишат ошибками.

Shestoperd commented 9 months ago

Поддерживаемые датчики описаны в README.

Я изначально прочитал это, т.к. там указан CHT8310, то думаю и S-8310 сгодится. Но вот что мне интересно, зачем передавать данные измерять температуру/влажность каждые 5-10 секунд, раз в минуту для комнатного датчика ИМХО достаточно.

У BL55028 тоже много чего написано. но не работает

Просто чуть выше было обсуждение потребления, потому сразу написал сколько заявляют китайцы.

Будет проблемно.

Я как нибудь попробую без RST, выйдет хорошо, не выйдет, буду искать другой адаптер.

pvvx commented 9 months ago

Но вот что мне интересно, зачем передавать данные измерять температуру/влажность каждые 5-10 секунд, раз в минуту для комнатного датчика ИМХО достаточно.

А мне нет. Нагреватели и кондиционеры быстрее отрабатывают и при меньшей частоте передачи температура гуляет на несколько градусов, т.к. не отключаются нагреватели и прочее. Желательно ещё чаше. А для PID регулировки лучше ещё чаще... Тогда, к примеру температуру в помещении, можно удержать на уровне +-0.1 C.

Для наблюдения за температурой и влажностью купите более дешевый вариант и наблюдайте :) А для авто-управления домом требуется совсем другое...

Shestoperd commented 9 months ago

Для наблюдения за температурой и влажностью купите более дешевый вариант и наблюдайте :)

Так эти датчики как раз для наблюдения, а не управления, не?

А для авто-управления домом требуется совсем другое...

Как бы в помещении в разных местах температура будет изменяться по разному. Если поставить датчик под струю кондиционера, то наверное температура будет скакать как заяц, при включении/выключении, но если расположить за пределами воздушного потока, то уже будет заметный лаг. Впрочем я просто спросил, точность этих датчиков не сказать чтобы высокая, потому мне показалась странной такая частота опроса.

pvvx commented 9 months ago

Даже если используется масляный обогреватель с простым вкл/выкл, то его инерция: image

Управление (датчик температуры) находится в 3-х метрах от обогревателя. При меньшем расстоянии - будет отрабатывать чаще. Но в HA итак интервалы затянуты... А чем быстрее вкл/выкл и при коммутации мощности, тем больше экономия электроэнергии. На мощном эл. обогревателе (от 1 кВт) в среднем 3% уходит на нагрев проводки к нему. А если провода по участку длинные (как у меня, хотя сечения проводов увеличены несоразмерно), то потери будут в десятки % на нагрев улицы. И да, это весь обогрев дома-мастерской 6x6 м при -15С на улице... Днем хватает включенного компьютера и вентиляции...

На Xiaomi Aqara Zigbee уже ничего не сделать - он тупит хуже даже такого обогревателя...

Как бы в помещении в разных местах температура будет изменяться по разному.

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

Уменьшить частоту точек измерений можно на приемной стороне и заодно усреднить. Но BLE всё равно надо передавать каждые 10 сек (по стандарту до 10 сек). Иначе его никто не примет. А реальный интервал, к примеру у Linux ещё меньше - 4 сек.

pvvx commented 9 months ago

Так эти датчики как раз для наблюдения, а не управления, не?

CHT8310 и другие устанавливаемые датчики сами измеряют с интервалом 1 сек. И так их програмно перестраиваю на 5 сек.

Т.е. TH05 по Вашему нельзя использовать для управления? Или частота передачи мешает наблюдению?

Мне просто интересно - какова причина требований у некоторых передачи замеров раз в час? По аналогии с привычкой?

В PHY62x2BTHome.html устанавливается период измерений. Существенной экономии батарейки на этом не получите - жалкие пару %.

Shestoperd commented 9 months ago

Мне просто интересно - какова причина требований у некоторых передачи замеров раз в час?

Да нет никаких требований, я просто спросил почему выбран именно такой интервал, и все. Я не прошу что-то переделывать или добавлять.

Существенной экономии батарейки на этом не получите - жалкие пару %.

Все, предлагаю на этом закончить обсуждение интервала обновлений.

pvvx commented 9 months ago

У GNV1792S

Аналог в некоторых Xiaomi - BU9792FUV MJWSD05MMC , CGDK2, варианты LYWSD03MMC, ...

Я изначально прочитал это, т.к. там указан CHT8310, то думаю и S-8310 сгодится.

А по внутреннему ID сенсор говорит, что он 0x8215

almirus commented 9 months ago

Версия 0.8 ещё не поддерживала нормальный OTA. Придется проводами прошить Boot версию от 1.0+.

Все получилось, спасибо

Shestoperd commented 9 months ago

Попытался считать родную прошивку, получаю ошибку:

PHY62x2 - Error Reset!
Check connection TX->RX, RX<-TX and Chip Power!

Адаптер на PL-2303HX, сигналы RTS и DTR не выведены на гребенку, но я подпаялся к нужной ноге и через резистор 39 Ом подключил его к Reset. Адаптер точно рабочий, во первых, я им без проблема прошиваю ESP8266 и другие аналогичные платы, а также подключаюсь к различным одноплатникам. Во вторых, я в терминале вижу то, что передает датчик по UART. 2024-02-07_215659

Сигнал RTS тоже рабочий, посмотрел осциллографом, при старте считывания низкий уровень держится 316мс, чего должно быть достаточно для сброса. Может кто-то уже сталкивался с таким, что это может быть? Под рукой еще есть программатор на CH341A, который также может работать в режиме serial, в нем тоже RTS не выведен, хотя вроде как есть.

pvvx commented 9 months ago

В boot-loader-е, который в ROM данного чипа, есть защита от чтения прошивки. Но тогда rdwr_phy62x2.py напишет "PHY62x2 in FCT mode!". В этом режиме работают только команды стирания всей Flash. Jtag-SWD тоже может быть отключен программно.

Может кто-то уже сталкивался с таким, что это может быть?

Пока ни разу с разными PHY62x2 такого не было. А защиту включал сам, ради проверки утилит.

Пробуйте программу от PHY - https://github.com/pvvx/PHY62x2/tree/master/PhyPlusKit Она не управляет RTS или DTS. Всё в ручную...

CMY-Reader commented 9 months ago

Пришли два клона TH-05, вместо BL55028 стоит GNV1792S,

TH05 больше. Пока "освоена" только одна версия - на плате надпись TH05_V1.4. Поддерживаемые датчики описаны в README.

Прошивка версии 1.1 работает на

Очень странно что сохранение прошивки идет очень медленно. Около !!30!! минут. А прошивка через тот же адаптер происходит за 1 минуту. По воздуху 2мин.

P.S. Большое Спасибо за прошивку.

Shestoperd commented 9 months ago

Пробуйте программу от PHY -

Не подключается. Делал по инструкции отсюда, т.к. китайскую ниасилил. Получил бесконечное ожидание:

Current port: COM41
Current baudrate: 9600
Current stopBits: 1
Current parity: No
Serial opened!! 
*******************************
UART TX ASCII: UXTDWU
........
UART TX ASCII: UXTDWU
Serial port COM41 closed!!
*******************************

Но резет тем не менее работает, если подключиться на скорости 115200, и нажать резет, то видно что при старте выводятся основные параметры:

Current port: COM41
Current baudrate: 115200
Current stopBits: 1
Current parity: No
Serial opened!! 
*******************************
UART RX : DEVICE_NAME = THWL
DEVICE_VERSION = 1.5
PID = iv7hudlj
MAC = DC2....7FF4
DID = uuid291....111
KEY = QvYPcN.....C8RxHRTibOG
Device_authentication = 1
user_dt.ty_dt.updata_cnt = 0 
....................begin = 1
flash_dt.ty_fdt.unit = 0
flash_dt.ty_fdt.status1 = 3
power on status 1 = 2
vid = 8215 mid = 5959
Smaple_data: 258, 798, 798, 798, 798, 
Temperature: 243 Humidity: 38 Battery: 100
temp_alert: 2 hum_alert: 2
Serial port COM41 closed!!
*******************************

Пробовал по китайским картинкам провести автоматический подбор битрейта, но не дождался его окончания. В общем, никак не получается ввести загрузчик чипа в режим программирования :( Или я что-то упускаю.

pvvx commented 9 months ago

Очень странно что сохранение прошивки идет очень медленно. Около !!30!! минут.

Это типа "хак" и в PHY не рассчитывали, что прошивку можно считать и записать полностью - т.е. сделать полную копию. Но большого смысла считывать нет, т.к. для TH05_V1.4 выложена уже считанная https://pvvx.github.io/TH-05/bin/fullFlashTuyaTH05.zip.

Но резет тем не менее работает, если подключиться на скорости 115200, и нажать резет, то видно что при старте выводятся основные параметры:

Это работает уже сама прошивка. Для Boot-ROM PHY6222 надо 9600 baud и после Reset посылать 'UXTDWU' до ответа 'cmd>>:' или 'fct>>:'. Другие варианты PHY6xxx чипов используют разные битрейты - 9600 и 115200 и при старте надо посылать одну из комбинаций: 'UXTL16', 'UDLL48', 'UXTDWU'

pvvx commented 9 months ago

Пробуйте программу от PHY -

Не подключается. Делал по инструкции отсюда, т.к. китайскую ниасилил.

Мы (я и froloffw7) ушли от китайской версии. Она рассчитана на SDK для сборки на проприетарном Keil. И PhyPlusKit использует фиксированную разметку для прошивки, что уже не совместимо с версиями из данного репозитория. У них другой OTA.

Текущая SDK, из данного репозитория, переработана на gcc. Т.е. не используется никакого проприетарного программного обеспечения. Иначе никаких публикаций не было.

Shestoperd commented 9 months ago

Это работает уже сама прошивка. Для Boot-ROM PHY6222 надо 9600 baud и после Reset посылать 'UXTDWU' до ответа 'cmd>>:' или 'fct>>:'.

Именно так я себе и представлял, после резета оригинальная прошивка сначала выдает информационные данные, а затем периодично посылает состояние датчиков. Решил все же попробовать CH341A в качестве USB->uart, и получилось подключиться, но я сразу попытался шить через PhyPlusKit и стер оригинальную прошивку :( При этом записать ничего не удалось, то писало что нет файла, то просто падало. После некоторых плясок с бубоном я наловчился нажимать ресет в нужный момент и все же смог залить BOOT_TH05_v11.hex :) Обновился по OTA, но к сожалению, ни S-8310, ни GNV1792S, не работают :( При этом очень быстро садится батарея.

pvvx commented 9 months ago

У меня пока нет такого варианта Возможно https://pvvx.github.io/TH-05/bin/fullFlashTuyaTH05.zip распознает?

Shestoperd commented 9 months ago

Возможно https://pvvx.github.io/TH-05/bin/fullFlashTuyaTH05.zip распознает?

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

Shestoperd commented 9 months ago

Выяснил что название модели моих неудачных HT-05 = UA660-WL-B0, по крайней мере так они видятся в туевском облаке:

      "model": "UA660-WL-B0",
      "name": "Bluetooth Temperature Humidity Sensor 3",
      "product_id": "iv7hudlj",
      "product_name": "卫力-温湿度传感器-UA660-WL-B0",

Решил прозвонить что куда подключено, для того чтобы сравнить с предыдущими версиями:

№  | Название  | функции             | куда соединен
2  | P1        | GPIO 1              | кнопка при нажатии замыкает на землю резистор r15 подключенный к VCC
7  | TM        | test mode enable    | TM  
8  | P9        | GPIO 9              | TX   
9  | P10       | GPIO 10             | RX   
10 | P11/AIO_0 | GPIO 11/ADC input 0 | ADC, делитель напряжения R1, R3, R2
14 | VDD3      | 3.3V power supply   | VCC   
20 | P18/AIO_7 | GPIO 18             | CHT8310 SDA
21 | P20/AIO_9 | GPIO 20             | CHT8310 SCL
22 | RST_N     | reset, active low   | RESET  
31 | P33       | GPIO 33             | GNV1792s SCL
32 | P34       | GPIO 34             | GNV1792s SDA

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

Deoptim commented 9 months ago

Менее 13 мкА в режиме сна у TH-05 не удалось выжать.

А Вы можете сделать возможность отключения использования BL55028 через web-конфигуратор ? Там BL55028 подключена напрямую к батарейке или питается от GPIO? Если напрямую то можно как-то BL55028 загнать в глубокий сон вместо физического отключения?

pvvx commented 9 months ago

На BL55028 не работают команды сна. И он подключен к +Vbat одной ногой, а вторая через GPIO. Если опустить GPIO - потребление только увеличивается и сильно. image

https://pvvx.github.io/TH-05/BL55028_V1.3_en.pdf Найдите там команду отключения :) Были проверены все комбинации, включая неописанные, по аналогии с чего был сделан этот клон, и выставлено самое минимальное потребление.

Tuya прошивка при спящем SoC имеет потребление за 23 мкА. Текущая прошивка, за счет других настроек BL55028 и SoC - 17 мкА. Менее не выходит. Из них 3 мкА на SoC, что-то на датчик (они разные), остальное - BL55028 Дурная модель от подельщиков Tuya и с ней ничего не сделать, кроме как в помойку. Есть ещё несколько моделей от Tuya, где всё кое-как - ставят резисторы в питание на всякую ерунду, добавляют второй TuyaMCU. Такие тоже можно сразу в помойку, т.к. добиться работы более 6 месяцев от CR2032 на них невозможно.
Это Tuya, а не Xiaomi...

Возьмите THB2 - там сон всего 3..4 мкА, а среднее потребление при работе - 7..8 мкА.

Deoptim commented 9 months ago

На BL55028 не работают команды сна.

https://pvvx.github.io/TH-05/BL55028_V1.3_en.pdf Найдите там команду отключения :) Были проверены все комбинации, включая неописанные, по аналогии с чего был сделан этот клон, и выставлено самое минимальное потребление.

Ну там в даташите ясно написано, чтобы включился power-saving mode нужно :

SDA and SCL must be connect to high level(by pull up resistor),otherwise the device maybe can not go into power saving mode

и

In power-saving mode, SCL frequency must be less than 21KHz

Т.е. никаких команд не нужно.

Это в вашей прошивке реализовано?

pvvx commented 9 months ago

Вы схему то смотрели? Или пытаетесь отнять время у других на ваши причуды?

Deoptim commented 9 months ago

Вы схему то смотрели? Или пытаетесь отнять время у других на ваши причуды?

Я к чему это, я к тому, что если в phy6222 используется аппаратный I2C то вообще может так быть что меньше 40-100kHz не поставите, много таких микроконтроллеров я видел. Может придется делать software I2C (bitbang) чтобы уменьшить скорость.

pvvx commented 9 months ago

Если опустить SCL или SDA то там резисторы на пару кОм включатся в питание :P Цель уменьшения скорости, если команды он воспринимает? В данном чипе стоит анализатор скорости фронтов? :) Уменьшение скорости (bitbang) приведет к большему потреблению, т.к. процессор жрет больше, а на вывод на низкой скорости надо время. И вместо того, чтобы сделать что-то ещё мы тут будем обсуждать ваши причуды... Исходные коды есть - кто вам мешает вписать (bitbang) и прочее? Есть кнопочка - клонировать репозиторий, а лицензия не требует даже упоминать источник... это не GPL.

pvvx commented 9 months ago

Я к чему это, я к тому, что если в phy6222 используется аппаратный I2C то вообще может так быть что меньше 40-100kHz не поставите,

Данный SoC позволяет установить скорости I2C и меньше. Поправьте значения в исходных кодах и соберите себе прошивку...

Shestoperd commented 9 months ago

Исходные коды есть - кто вам мешает вписать (bitbang) и прочее?

Для тех кто не особо в этом разбирается, чем собирать? Я посмотрел в mk_windows.cmd вроде нужно скачать Arm GNU Toolchain Version 13.2.Rel1, зашел на https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads ,но что именно надо скачать не разобрался. Который из тулчейнов надо скачать?

pvvx commented 9 months ago

Который из тулчейнов надо скачать?

Последний: Arm GNU Toolchain Version 13.2.Rel1 Released: October 30, 2023 или любой старый. На 10-ом тоже собирается...

https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads

Deoptim commented 9 months ago

До изменения прошивки у меня показывал мой мультиметр 16мкА. Ну без аппаратной переделки я добился 11-12мкА (при этом индикация видна как при разряженной батарейки) и дело не в I2C тут уже максимум энергосбережение судя по даташиту это 9мкА самой BL55028 + 3мкА SoC:

diff --git a/bthome_phy6222/source/lcd_th05.c b/bthome_phy6222/source/lcd_th05.c
index 038e2e0..6dcad7b 100644
--- a/bthome_phy6222/source/lcd_th05.c
+++ b/bthome_phy6222/source/lcd_th05.c
@@ -63,7 +63,7 @@ uint8_t display_out_buff[LCD_BUF_SIZE+1];
 const uint8_t lcd_init_cmd[]   =       {
                // LCD controller initialize:
                0xea, // Set IC Operation(ICSET): Software Reset, Internal oscillator circuit
-               0xC8, // Mode Set (MODE SET): Display enable, 1/3 Bias, power saving
+               0xd8, // Mode Set (MODE SET): Display enable, 1/3 Bias, power saving
                0xbc, // Display control (DISCTL): Power save mode 3, FRAME flip, Power save mode 1
                0x80, // load data pointer
                0xf0, // blink control 0xf2
diff --git a/bthome_phy6222/source/main.c b/bthome_phy6222/source/main.c
index 23469c0..b2056d9 100644
--- a/bthome_phy6222/source/main.c
+++ b/bthome_phy6222/source/main.c
@@ -176,7 +176,7 @@ const ioinit_cfg_t ioInit[] = {
 #elif (DEVICE == DEVICE_TH05)
                { GPIO_P00, GPIO_PULL_UP }, // GPIO_SPWR Sensor Vdd
                { GPIO_P01, GPIO_PULL_DOWN },
-               { GPIO_P02, GPIO_PULL_UP }, // GPIO_LPWR
+               { GPIO_P02, GPIO_INPUT }, // GPIO_LPWR
                { GPIO_P03, GPIO_PULL_DOWN },
                { GPIO_P07, GPIO_PULL_DOWN },
                { GPIO_P09, GPIO_PULL_UP }, // TX1

(т.е. если мы делаем GPIO_INPUT или еще можно GPIO_FLOATING(но тогда нужно еще отключить GPIO_LPWR в thb2_main.c ) - то микросхема питается только от SDА и SCL пинов, как-то так :) Vlcd у меня подключён к BAT-, а не к BAT+ (TH05 version V1.5) )

Пробовал еще команду 0xEC из того же семейства LCD драйверов микросхему BL55070/BL55077 в этих семействах оно в режиме sleep должно брать 2мкА: 123 Дисплей отключается, т.е. как-то реагирует на команду, но энергосбережение остается прежним. Оно на все нестандартные команды отключается

В принципе можно было бы добавить кнопочку в web-конфигуратор для экономии 5мкА (это если существенно не нужен дисплей) по примеру патча выше, а может и не стоит того....

Shestoperd commented 9 months ago

Ну без аппаратной переделки я добился 11-12мкА (при этом индикация видна как при разряженной батарейки)

Вы пробовали менять LCD Bias? Это по идее двухуровневая регулировка контрастности, снижая контрастность можно снизить потребление.

В принципе можно было бы добавить кнопочку в web-конфигуратор для экономии 5мкА (это если существенно не нужен дисплей) по примеру патча выше, а может и не стоит того....

Можно прицепить на кнопку, тогда не нужно будет менять конфигуратор.

pvvx commented 9 months ago

Всё было опробовано. Там всего 2 байта влияющих на режимы, а в них всего 4 бита, которые что-то делают. 0xD8 уже было. Это отключение отображения, но не работы контроллера LCD :P Не забывайте сохранить совместимость с другими аналогами данного чипа. Народу попадется другой чип и будет толпа issue. Аналоги этого чипа потребляют менее 3..5 мкА при работе в вариантах Xiaomi. И имеют команду sleep. Купили ерунду от Tuya - выкиньте в помойку. Это отходы. А мы просто балуемся с PHY чипами - переводим SDK на gcc и без блоб-ов.

Shestoperd commented 9 months ago

Собрал себе на пробу прошивку, без поддержки GNV1792s потребление 4мкА в простое. Это так просто к сведению. Еще пробовал включить GNV1792s, но без сенсора, экран показал галиматью, вероятно программно этот контроллер совместим с BL55028, но вот сегменты отличаются, хотя думаю не очень сильно.

pvvx commented 9 months ago

Есть команда "60xxxxxx", где xxxx - буфер LCD - 6 байт. Вводите 6001000000000000 - рисуете сегмент byte0.bit0 Далее 6002000000000000 - рисуете сегмент byte0.bit1 и т.д. Когда пройдете все биты - киньте картинку, как тут