Skip to content

Latest commit

 

History

History
292 lines (197 loc) · 23.5 KB

README-ru.md

File metadata and controls

292 lines (197 loc) · 23.5 KB

russian english

BTHome THB1, THB2, THB3, BTH01, TH05, TH05F

Кастомные прошивки для устройств Tuya на чипсете PHY622x2.

(!) Не рекомендуется покупать термометры Tuya с датчиками CHT8305 и/или чипами драйверов ЖК-дисплея BL55028. Они имеют повышенное потребление и несовместимы с работой от батареек. Это муляж термометра от Tuya.

THB1 THB2 THB3 BTH01
TH05_V1.3 TH05_V1.4 TH05F KEY2
Поддерживает "FindMy"

Прошивки работают с Home Assistant и другим программным обеспечением, работающим в формате BTHome.

Все прошивки поддерживают любой из датчиков: CHT8215 (CHT8310), CHT8305, CHT832x, AHT20..30.

  • Программа для настройки и BLE OTA PHY62x2BTHome.html.
  • Подгрузка файлов OTA в PHY62x2BTHome.html производится автоматически - загружать из файлы из данного репозитория для OTA не требуется.
  • Для автономной работы PHY62x2BTHome.html достаточно скопировать html файл в локальную папку.

Начало работы с устройством

Для работы с устройством требуется записать прошивку FW Boot в устройство через адаптер USB-COM. Прошивка Boot является программой урезанной по функционалу и обеспечивает безопасное обновление OTA.

Далее, с помощью соединения BLE в PHY62x2BTHome.html через вкладку OTA, записывается основная рабочая программа FW APP.

FW APP возможно записать и с помощью адаптера USB-COM.

Прошивки (FW) Boot и APP

  • Прошивка Boot имеет минимум функций. Boot используются только для выполнения OTA (для загрузки полнофункциональной версии APP (Application - файлы *.bin)).
  • Внешне отличить тип устройства возможно по символу смайлика на экране.
Устройство Файл Boot Файл OTA Маркировка на печатной плате
THB1 BOOT_THB1_v20.hex THB1_v20.bin нет
THB2 BOOT_THB2_v20.hex THB2_v20.bin нет
THB3 BOOT_THB2_v20.hex THB2_v20.bin нет
BTH01 BOOT_BTH01_v20.hex BTH01_v20.bin нет
TH05_V1.4 BOOT_TH05_v20.hex TH05_v20.bin TH05_V1.4, TH05_V1.5, TH05_V1.6 с чипом BL55028
TH05_V1.3 BOOT_TH05D_v20.hex TH05D_v20.bin RSH-TH05-V1.3 с чипом BL55072
TH05F BOOT_TH05F_v20.hex TH05F_v20.bin TH05Y_V1.1, TH05Y_V1.2, TH05Y_V3.1 с чипом QD01 2332 NT
KEY2 BOOT_KEY2_v20.hex KEY2_v20.bin SoC ST17H66B

Основные файлы прошивок, BOOT_xxx_vxx.hex для программирования через USB-COM адаптер и xxx_vxx.bin для OTA, находятся в директории bin.

Файлы для обновления FW Boot по OTA находятся в директории update_boot. Процесс обновления FW Boot через OTA не является безопасным. Перед этим действием проверьте уровень батареи.

Актуальная версия FW Boot v2.0.

Внутренняя распиновка GPIO:

Firmware Sensor SDA/SCL/Power LCD SDA/SCL/Power Key LED TRG(TX) IN(RX)
THB1 P18/P20/- P34/P33/- P01 - P09 P10
THB2 P18/P20/- - P07 P26 P20 P18
THB3 P18/P20/- P34/P33/- P01 - P09 P10
BTH01 P33/P34/P00 - P14 P15 P20 P18
TH05 P33/P34/P00 P33/P34/P02 P14 - P20 P18
TH05D P31/P32/- P11/P14/- P02 - P09 P10
TH05F P33/P34/P00 P26/P31/P02 P14 - P20 P18

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

Основные характеристики

! При настройках по умолчанию !

  • Интервал BLE рекламы в формате BTHome v2 равен 5 секундам.
  • Опрос датчика влажности и температуры производится каждый второй интервал BLE рекламы - период 10 секунд.
  • Измерение напряжения батареи происходит каждую минуту.
  • Кнопка используется для быстрого подключения к старым BT-адаптерам. Нажатие кнопки переключает интервал BLE рекламы на более короткий период (1562.5 мс). Действие продолжится 60 секунд, затем интервал восстановится на установленный в настройках.
  • Измеренное среднее потребление от источника в 3.3В при сканировании термометров THB2 и BTH01 в пассивном режиме составляет до 8 мкА. Для TH05_V1.4 среднее потребление около 23 мкА - таков ток установленных компонентов. Остальные версии с экраном: при включенном LCD - от 12 до 14 мкА, c отключенным LCD - от 7 до 12 мкА.
  • Запись итории каждые 30 минут
  • Интервал соединения с учетом Connect Latency - 900 мс
  • Поддерживаемые сенсоры температуры и влажности: AHT30, CHT8305, CHT8215, CHT8310
  • Обработка входного контакта со счетчиком для передаваемых событий Open/Close
  • Обработка выходного контакта переключаемого по устанавливаемой температуре и/или влажности с гистерезисом
  • Поддержка недорогого повторителя рекламы BLE в Zigbee

История версий

N Описание
1.0
  • Первая релизная версия
1.1
  • Добавлен триггер - вывод TX2 срабатывающий по установленным значениям температуры и/или влажности с гистерезисами. Передача состояния вывода RX2 при connect. Для термометров с экраном добавлен показ смайлика с "комфортом". Дополнены: изменение имени и MAC устройства.
1.2
  • Обработка и передача событий open/close со счетчиком с вывода маркированного "RX2" (для THB2 - "RX1").
1.3
  • Добавлен THB1 и TH05V1.3. Следующий этап уменьшения потребления для версий с LCD дисплеем и опция отключения дисплея.
1.4
  • Стабилизация соединения для всех вариантов устройств. Добавлен TH05F. Коррекция хода RTC. Изменено BLE имя для TH05_V1.3 на "TH05D". Добавлены файлы для обновления Boot по OTA.
1.5
  • Добавлен вариант шифрования BLE рекламы с помощью BindKey.
1.6
  • Добавлено усреднение расчета напряжения батареи, дублирование состояния контакта open/close и счетчика через 12..20 сек (кратно интервалу рекламы) после срабатывания и далее каждые 30 минут.
1.7
  • Исправление ошибки (> 42 C) для сенсора CHT8305
1.8
  • Добавлено отображение температуры в градусах Фаренгейта
1.9
  • Исправлена ошибка восстановления измененного имени устройства после сброса питания
2.0
  • Добавлена обработка датчика CHT832x (поддержка платы TH05Y_v3.1)
  • Исправление ошибки в bin-файлах BOOT OTA
  • Добавлена функция сна при полном разряде батареи.
  • Добавлена опытная прошивка для брелков iSearching на чипе ST17H66B с поддержкой FindMy
  • Исправлены ошибки отображения для TH05D

Прошивка

Прошить устройство програмой FW Boot возможно через USB-COM адаптер с выходами на 3.3В:

  1. Соединить GND, TX, RX, RTS–RESET, VCC (+3.3B).
Адаптер Устройство
GND -Vbat
+3.3V +Vbat
TX RX or RX1
RX TX or TX1
RTS or DTR RESET or REST_N

Если на адаптере отсутствует RST или DTR пин, тогда следует замкнуть вывод RESET с GND(-Vbat) и быстро разомкнуть при старте скрипта (вомзожно потребуется несколько попыток)

Название контактов на устройстве смотреть в описании по ссылкам:

  1. Установить python3 и необходимые библиотеки
pip3 install -r requirements.txt
  1. Скачать необходимый для конкретного устройства файл BOOT_xxx_vxx.hex из директории bin (вариант файла описан в # Прошивка).

  2. Запустить:

python3 rdwr_phy62x2.py -p COM11 -e -r wh BOOT_xxx_vxx.hex
  1. Прошивка FW Boot завершена. Устройство работает. Адаптер можно отсоединить.

  2. Загружаем полную версию прошивки FW APP по OTA. Для этого:

    1. Подаем питание на устройство или вставляем батарею.
    2. Переходим на PHY62x2BTHome.html.
    3. Жмем кнопку Соединение, ищем устройство, подключаемся.
    4. После подключение переходим на вкладку OTA, выбираем необходимую прошивку и жмем Старт.
  3. Устройство должно перезагрузиться и будет готово для использования.

Дополнительно:

  • Для предварительного стирания всей Flash используйте опцию -a.

  • Для предварительного стирания рабочей области Flash используйте опцию -e.

  • С помощью USB-COM адаптера возможно сразу дописать основную прошивку (APP)

python3 rdwr_phy62x2.py -p COM11 -r we 0x10000 xxx_vxx.bin

Сохранение оригинальной прошивки

  1. Соединить GND, TX, RX, RTS–RESET, VCC (+3.3B).
  2. Запустить:
python3 rdwr_phy62x2.py -p COM11 -r rc 0x11000000 0x80000 ff_thb2.bin
  1. Полученный файл ff_thb2.bin сохранить.

Восстановление оригинальной прошивки

  • Оригинальную Tuya прошивку на конкретный тип устройства можно взять по ссылкам в таблице, находящейся в самом начале README.
  1. Взять сохраненный файл ff_thb2.bin оригинальной прошивки.
  2. Соединить GND, TX, RX, RTS–RESET, VCC (+3.3B).
  3. Запустить:
python3 rdwr_phy62x2.py -p COM11 -b 1000000 -r we 0 ff_thb2.bin

Не все адаптеры USB-COM поддерживают 1Mbit. Тогда удалите опцию -b 1000000 или выберите другой вариант Baud rate (115200, 250000, 500000, 1000000).

  1. Прошивка зашита. Устройство работает.

Распределение Flash 512 килобайт

Адрес Описание Размер
0x00000 Используется ROM 8 килобайт
0x02000 Boot Info для ROM 4 килобайта
0x03000 FW Boot с функцией OTA 52 килобайта
0x10000 FW APP 128 килобайт
0x30000 Запись истории 304 килобайт
0x7C000 Сохранение настроек (EEP) 16 килобайт

FW Boot и OTA

  • FW Boot имеет функцию OTA, но не имеет функции записи истории и прочих дополнений. Служит для обработки OTA при любых неудачных или неправильных обновлениях.

  • FW APP не имеет функции OTA, для OTA перезагружается в FW Boot. Имеет дополнительные функции и расширения.

Действие кнопки при включении питания устройства:

Если кнопка при старте нажата - всегда запускается FW Boot.

Если кнопка не нажата, проверяется есть или нет запись FW APP. Если есть FW APP – запускает FW APP. Если нет FW APP, запускается FW Boot.

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

  • "Bot 14" - стартует прошивка FW Boot версия 1.4

  • "APP 15" - стартует прошивка FW APP версия 1.5

Принудительно перезагрузиться в FW Boot из FW APP возможно двумя способами:

  1. Отключить питание и удерживая кнопку включить питание.
  2. Подать команду 7233 в меню Service программы PHY62x2BTHome.html и отключить соединение.

Полная перезагрузка - Подать команду 7201 в меню Service программы PHY62x2BTHome.html и отключить соединение.

Событие Open/Close и счет импульсов

С версии 1.2 поддерживается опрос вывода подключенного к геркону или контакту, замыкающемуся на GND.

Максимальная частота переключения - 100 раз в секунду.

Если контакт имеет дребезг, тогда желательно зашунтировать контакт конденсатором на 1..100 нФ в зависимости от частоты переключения.

При замыкании или размыкании контакта передается блок из 5 BLE реклам следующих друг за другом через период в 50 мс.

При каждом событии "Open" значение счетчика прибавляется на 1. Сброс счетчика возможен отключением питания устрйоства.

Значение счетчика передается совместно с каждым событием "Open/Close".

Входной контакт для подключения геркона или контакта на плате термометра:

  • На THB1 - маркирован как RX
  • На THB2 - маркирован как RX
  • На THB3 - маркирован как RX
  • На BTH01 - маркирован как RX2
  • На TH05_V1.3 - маркирован как RX0
  • На TH05_V1.4 - маркирован как RX2

image

image

Вывод управления внешним устройством по температуре и/или влажности

Контакт на печатной плате с маркировкой "TX" или "TX2" управляется с помощью уставок с гистерезисами по температуре и влажности. Имеется возможность переключения на инверсное управление.

Настройка производится в PHY62x2BTHome.html.

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

  • Если значение гистерезиса равно нулю - переключений не будет.
  • Если значение гистерезиса больше нуля - переключение (включение) произойдет при значении ниже уставка + гистерезис.
  • Если значение гистерезиса меньше нуля - переключение (включение) произойдет при значении выше уставка + гистерезис.

Сброс основных настроек

Установки основных параметров в начальные значения возможно произвести на смартфоне с Android в программе "nRFConnect". Соединитесь с устройством и в сервис 0xFCD2 c характеристикой 0xFFF4 запишите 56.

image

  • Нажатие/отпускание кнопки временно меняет интервал соединения для подключения. Коротко нажмите кнопку и подключитесь за 60 сек. Если не успеваете - нажимайте кнопку чаще...
  • В прошивке проверяются все установки на соответствие стандартам Bluetooth SIG. Если интервал более 10 сек, то поставит 10 сек - это максимум в стандарте. Так и другие параметры. Но не все BT адаптеры могут работать с интервалом 10 сек для соединения.
  • При работе с BLE в Linux обязательно требуется изменение опций Bluez и/или патчи kernel!

Сборка прошивки

Для сборки прошивки используется GNU Arm Embedded Toolchain.

Для работы в Eclipce используете импорт проекта и установите toolchain.path.

Дополнительная информация по чипам PHY62xx.