23 KiB
BTHome THB1, THB2, THB3, BTH01, TH05(HW: v1.3..1.6), 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для TH05Y_V3.1 с датчиком CHT832x - v2.0, для остальных - v1.9.
Внутренняя распиновка 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 |
|
| 1.2 |
|
| 1.3 |
|
| 1.4 |
|
| 1.5 |
|
| 1.6 |
|
| 1.7 |
|
| 1.8 |
|
| 1.9 |
|
| 2.0beta5 |
|
Прошивка
Прошить устройство програмой FW Boot возможно через USB-COM адаптер с выходами на 3.3В:
- Соединить 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) и быстро разомкнуть при старте скрипта (вомзожно потребуется несколько попыток)
Название контактов на устройстве смотреть в описании по ссылкам:
- Установить python3 и необходимые библиотеки
pip3 install -r requirements.txt
-
Скачать необходимый для конкретного устройства файл BOOT_xxx_vxx.hex из директории bin (вариант файла описан в # Прошивка).
-
Запустить:
python3 rdwr_phy62x2.py -p COM11 -e -r wh BOOT_xxx_vxx.hex
-
Прошивка
FW Bootзавершена. Устройство работает. Адаптер можно отсоединить. -
Загружаем полную версию прошивки
FW APPпо OTA. Для этого:- Подаем питание на устройство или вставляем батарею.
- Переходим на PHY62x2BTHome.html.
- Жмем кнопку
Соединение, ищем устройство, подключаемся. - После подключение переходим на вкладку
OTA, выбираем необходимую прошивку и жмемСтарт.
-
Устройство должно перезагрузиться и будет готово для использования.
Дополнительно:
-
Для предварительного стирания всей Flash используйте опцию
-a. -
Для предварительного стирания рабочей области Flash используйте опцию
-e. -
С помощью USB-COM адаптера возможно сразу дописать основную прошивку (APP)
python3 rdwr_phy62x2.py -p COM11 -r we 0x10000 xxx_vxx.bin
Сохранение оригинальной прошивки
- Соединить GND, TX, RX, RTS–RESET, VCC (+3.3B).
- Запустить:
python3 rdwr_phy62x2.py -p COM11 -r rc 0x11000000 0x80000 ff_thb2.bin
- Полученный файл ff_thb2.bin сохранить.
Восстановление оригинальной прошивки
- Оригинальную Tuya прошивку на конкретный тип устройства можно взять по ссылкам в таблице, находящейся в самом начале README.
- Взять сохраненный файл ff_thb2.bin оригинальной прошивки.
- Соединить GND, TX, RX, RTS–RESET, VCC (+3.3B).
- Запустить:
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).
- Прошивка зашита. Устройство работает.
Распределение 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 возможно двумя способами:
- Отключить питание и удерживая кнопку включить питание.
- Подать команду
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
Вывод управления внешним устройством по температуре и/или влажности
Контакт на печатной плате с маркировкой "TX" или "TX2" управляется с помощью уставок с гистерезисами по температуре и влажности. Имеется возможность переключения на инверсное управление.
Настройка производится в PHY62x2BTHome.html.
Работа выхода назначается с помощью установки значения гистерезиса:
- Если значение гистерезиса равно нулю - переключений не будет.
- Если значение гистерезиса больше нуля - переключение (включение) произойдет при значении ниже уставка + гистерезис.
- Если значение гистерезиса меньше нуля - переключение (включение) произойдет при значении выше уставка + гистерезис.
Сброс основных настроек
Установки основных параметров в начальные значения возможно произвести на смартфоне с Android в программе "nRFConnect".
Соединитесь с устройством и в сервис 0xFCD2 c характеристикой 0xFFF4 запишите 56.
- Нажатие/отпускание кнопки временно меняет интервал соединения для подключения. Коротко нажмите кнопку и подключитесь за 60 сек. Если не успеваете - нажимайте кнопку чаще...
- В прошивке проверяются все установки на соответствие стандартам Bluetooth SIG. Если интервал более 10 сек, то поставит 10 сек - это максимум в стандарте. Так и другие параметры. Но не все BT адаптеры могут работать с интервалом 10 сек для соединения.
- При работе с BLE в Linux обязательно требуется изменение опций Bluez и/или патчи kernel!
Сборка прошивки
Для сборки прошивки используется GNU Arm Embedded Toolchain.
Для работы в Eclipce используете импорт проекта и установите toolchain.path.
Дополнительная информация по чипам PHY62xx.







