• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

TLSR8251 + LCD + термометр = LYWSD03MMC XIAOMI Bluetooth термометр

pvvx

Активный участник сообщества
Пришли MJWSD06MMC. Очень долго путешествовали по почте...
1743067682786.png
Имеют чипсет TLSR8251 и датчик SHTv4.
На почте России очередные сокращения... По этому еле доползли...
 

pvvx

Активный участник сообщества
Что-то много потребляет.
Averge: 26..29uA, Sleep: 11uA, RF TX: 15mA
Такие разработчики в Mijia Xiaomi.
По этому туда впихнули CR2450.
Там два ненужных компонента - LDO на 2.8В и делитель из резисторов на вход ADC для замера напряжения батреи. Итог - от +4 мкА sleep.
Текущая альтернативная прошивка при удалении ненужных элементов потребляет по среднему току 10 мкА (sleep 6 мкА).
Так же в Xiaomi не умеют считать время работы от CR2450. Они тупо делят емкость CR2450 на средний потребляемый ток. Но с учетом их жадности по конденсаторам в питании в реальности выходит только 40% времени работы батареи. Т.е. всего 1 год, а не 2 или 3 как они заявляют в рекламе.
 

pvvx

Активный участник сообщества
Борясь со своим разгильдяями-разработчиками им пришлось сделать дополнительный режим работы. Передавать пачку маяков всего один раз в час. В остальное время только опрос датчика и вывод на экран. На это они заявили в рекламе: "3 года работы в экономичном режиме".
Если считать по методу Xiaomi, то альтернативная прошивка при передаче маяка каждые 5 сек и опросе датчиков каждые 20 секунд будет работать 6.3 года :) :)
 

pvvx

Активный участник сообщества
Eмкость CR2450 принимается как 550 мА*ч. При делении на средний ток оригинальной схемы и прошивки в 28 мкА выходит 2 года с копейками. Это и заявлено в рекламе.
Все Ардуинщики так и считают. Про увеличение внутреннего сопротивления батареи при разряде они не знают.
 

pvvx

Активный участник сообщества
Вот график напряжения батареи CR2450 из комплекта на аналогичном термометре MJWSD05MMC
1743390406148.png
Только используется альтернативная прошивка где маяк каждые 5 сек и опрос датчиков каждые 20 секунд, но экран больше и ещё микросхема RTC.
Т.е. потребление меньше в более чем в 2 раза от оригинfльной прошивки Xiaomi. И по максимальному импульсному току в момент RF TX в 1.5 раза.
Замер напряжения батареи происходит при токе нагрузки в 3..5мА. А батарея всегда выдает 3+В без нагрузки при +25С, даже когда полностью разряжена.
Минимальное напряжение работы рекомендованное Telink с учетом просадки при записи Flash (5 мА) - 2.2В. Далее программное отключение.
Итог - примерно 2+ года.
При RF TX в 15 мА достижение просадки батареи до 2.2В уже было бы достигнуто ранее...
 

pvvx

Активный участник сообщества
Просадки на графике - это окисление контактов к батарее и/или понижение температуры работы. При таких токах (10 мкА) окисление контактов (образование непробиваемого слоя окисла) это неизбежно, если они не золотые как и сама батарея... Со временем окисл пробивает при импульсе RF TX.
Типично окисление наступает через 1...1.5 года при влажности до 60% на всех устройствах с CR2xxx, если термометр не стукнуть ("и он станет фиолетовым, в крапинку" (С) Тайна третьей планеты)
 

MooVit

New member
Здравствуйте. Есть желание использовать LYWSD03MMC для аквариума. На Али увидел странную переделку от китайцев, особенно странно, что судя по фотографиям одного из покупателей этого чуда, китайцы как-то перенесли модуль U2 на другую сторону платы.
Есть пара вопросов. Китайцы данную переделку продают по совсем негуманной цене (больше 2100 рублей), поэтому руки начинают чесаться что-то самому сделать с устройством за 300 рублей в оригинале.
1. Возможен ли вариант, что оригинальный датчик SHTV3 отпаять с платы, спрятать в водонепроницаемую капсулу (он вполне себе миниатюрный), а четыре провода от датчика вывести туда же, где были соответствующие контакты SHTV3? Значения влажности, очевидно, для использования в аквариуме не важны. Может ли в данном случае длина проводов такого самодельного "внешнего сенсора" влиять на правильность значений температуры?
2. Возможен ли вариант, что в качестве внешнего сенсора будет использоваться какой-то уже готовый выносной датчик температуры? Вроде на гитхабе видел что-то по теме, но без точных удачных примеров, более того, там утверждалось, что потребуется вносить изменения в код управления устройством.
Снимок экрана 2025-03-31 в 19.56.19.pngA5fd28b6922e64fbcac5991af8fe3b2367.jpg_800x800.pngA57a8109a07454c8ba347f373ee3fbc7fg.jpg_800x800.pngAbadd48eccd674967a8930ec1070bec35B.jpg_800x800.png
 

pvvx

Активный участник сообщества
Опции подключения до 2-х внешних датчиков MY18B20 доступны в конфигурации кода прошивки. Для этого требуется собрать свою версию, как это сделали указанные китайцы...
Готовые прошивки с 1 или 2 дополнительных датчиков есть только для TS0201_TZ3000.
 

pvvx

Активный участник сообщества
MY18B20 были закуплены тут https://aliexpress.ru/item/32305869288.html - вся пачка оказались исправной и имеют одинаковые показания до бита (типа их калибровали всех скопом ?).
В итоге намного лучше чем оригинальные - работают до 1.8В в отличии от оригинала и потребляют значительно меньше.
 

MooVit

New member
Опции подключения
Хм, в указанных ссылках варианты с устройствами Tuya. А возможен вариант именно для LYWSD03MMC (с дисплеем)? Хочется температуру в аквариуме не только в телефоне видеть. И желательно без прошивки. Указанный мной вариант с вынесением "наружу" родного датчика SHTV3 может оказаться рабочим?
 

pvvx

Активный участник сообщества
Хм, в указанных ссылках варианты с устройствами Tuya. А возможен вариант именно для LYWSD03MMC (с дисплеем)? Хочется температуру в аквариуме не только в телефоне видеть. И желательно без прошивки. Указанный мной вариант с вынесением "наружу" родного датчика SHTV3 может оказаться рабочим?
1. Как он будет измерять влажность в герметичном корпусе?
2. Частота шины I2С (700 kHz) и токи не рассчитаны на использование проводов к датчику. Максимум 15 см. Если более - требуется уменьшить частоту шины I2C в исходниках и возможно использовать другие подтягиваюшие резисторы.

А уменьшение частоты шины - это увеличение времени работы с ней -> увеличение потребления.
По этому такой версии никому не надо, а выбрана версия с батарейками 2xAAA - они более мощные и на них до двух дополнительных датчиков меньше сказывается...
В прошивке идет экономия с учетом нано ампер...

Берите код прошивки и добавляйте датчики...
 

pvvx

Активный участник сообщества
На заказ могу сделать готовую прошивку, и так как это будет впервые – только от 100500 руб. :) За меньшее не пошевелюсь.
И оплату пожалуйста в счет поддержки форума владельцем, а не мне.
 

nikolz

Well-known member
Вот график напряжения батареи CR2450 из комплекта на аналогичном термометре MJWSD05MMC
Посмотреть вложение 14346
Только используется альтернативная прошивка где маяк каждые 5 сек и опрос датчиков каждые 20 секунд, но экран больше и ещё микросхема RTC.
Т.е. потребление меньше в более чем в 2 раза от оригинfльной прошивки Xiaomi. И по максимальному импульсному току в момент RF TX в 1.5 раза.
Замер напряжения батареи происходит при токе нагрузки в 3..5мА. А батарея всегда выдает 3+В без нагрузки при +25С, даже когда полностью разряжена.
Минимальное напряжение работы рекомендованное Telink с учетом просадки при записи Flash (5 мА) - 2.2В. Далее программное отключение.
Итог - примерно 2+ года.
При RF TX в 15 мА достижение просадки батареи до 2.2В уже было бы достигнуто ранее...
Добрый день,
А зачем маяк каждые 5 сек, если опрос датчиков каждые 20 сек? Может лучше делать наоборот?
 

pvvx

Активный участник сообщества
Добрый день,
А зачем маяк каждые 5 сек, если опрос датчиков каждые 20 сек? Может лучше делать наоборот?
Дублирование маяка является заменой двухсторонней связи. За счет избыточности повторений уменьшается уровень потерь приема данных.
И в BLE стандарте максимальный период для маяка завялен как 10 сек.
А, к примеру, Linux может не принять ничего и не сможет создать BLE соединение, если период маяка более 4-х секунд. В Linux нет поддержки стандартов Bluetooth SIG. Требуется вручную изменить настройки в файлах Bluez.
И у Apple свои тараканы в виде своих стандартов. Рекомендуемый период маяка там ещё меньше - типа до 3-х секунд.
Только Android соответствует стандартам Bluetooth SIG.
 

pvvx

Активный участник сообщества
Дублирование маяка требует меньше энергии, чем двухсторонняя связь с подтверждением приема. Пример этого - сравнение потребления устройством в BLE и Zigbee при одинаковом потоке передачи данных. Zigbee потребует раз в 8 больше энергии, при одинаковом уровне потерь приема.
И у BT-MESH тоже не всё хорошо по энергии, т.к. двухсторонняя связь с подтверждением приема. По этому BT-MESH распространился только на управления лампочками (освещением), где устройства питаются от общего внешнего источника.
 

pvvx

Активный участник сообщества
Причины ограничения периодов приема в Linux - лет 8 назад вмешательства кентов из Интел в kernel и неправильные алгоритмы во всем, что касается BT, начиная с уровня драйверов.
Т.е. блокировки драйвера на время работы окна сканирования более 4-х секунд... А сам адаптер BT мультизадачен. И прочии дурные алго, включая уровни API. Это произошло из-за выросших Ардуинщиков, влезших в изменение кодов операционных систем... Ардуино навязала страна любящая применять всякие отравы для убийства... В итоге это уже убило многое...
 

nikolz

Well-known member
Если датчик должен посылать в эфир сообщение каждые 5 секунд, то сколько максимально датчиков можно в этом случае использовать? И сколько максимально датчиков можно подключить к одному BLE модулю?
 

nikolz

Well-known member
Позволяет ли BLE стандарт использовать неравномерный режим работы маяка. Например, каждые 10 минут работает 1 минуту с интервалом 5 секунд? Будет в 10 раз меньше потребление, чем при работе с постоянным шагом 5 сек.
 

pvvx

Активный участник сообщества
Если датчик должен посылать в эфир сообщение каждые 5 секунд, то сколько максимально датчиков можно в этом случае использовать? И сколько максимально датчиков можно подключить к одному BLE модулю?
У меня в зоне приема (окружении) приемника на USB-BT иногда более сотни устройств. При этом, к примеру "Умные розетки" передают маяки каждые 50..100 мс. Любое устройство Aplle, типа телевизора - аналогично - чаще каждых 100 мс. И другие устройства передают маяки так-же. Просто воткнутый в USB брелок USB-BT в Windows тоже передает маяки, если его дрова включены. Аналогично и любой Смартфон и т.д.
В итоге, по примерному подсчету только правильных BLE (т.е. с моими прошивками), передающих маяки (интервалы 2..5 сек) и принимаемых на одни USB-BT брелок выходит более 100.
Никаких проблем не наблюдается, т.к. все они дублируют передаваемые данные не менее 2-х раз.
При этом успешно принимаются на этот USB-BT и устройства находящиеся в 200 метрах, за стенами дома. А у данного BT-USB антенна встроенная.

Ныне я воткнул в НА систему 3 USB-BT. Один принимает только "Le Long Range", второй имеет направленность (спозиционирован на большинство удаленных BLE устройств находящихся на улице и в другом моем доме), а третий принимает остальною ближнюю толпу местных.
Причины тут в нескольких USB-BT в том, что в системе Home Assistant работают разные интеграции и не каждая всё жрет или вырубает режим "Le Long Range", так писатели уже спустя десятки лет не освоили как работать в Linux с BLE. По этому каждой интеграции по адаптеру :) чтобы не путались.

Поток в мониторе принимаемых маяков скролит экран так, что ничего не успеть прочитать... Хотя я при скроллинге бинарников кнопками клавиатуры обычно нахожу то, что мне нужно (старый хакерский и игровой навык). Но за время до остановки скроллируется до десятка страниц, пока отпустишь кнопу скроллинга и приходится возвращаться :) Обработка информации в мозге идет медленно, а импульс на палец ещё дольше :p Надо встраивать электронные протезы...
 
Сверху Снизу