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

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

pvvx

Активный участник сообщества
Да - забыл главное - в таком варианте слепить фундамент было дешевле всего. Там затраты на всё связанное с фундаментом вышли не более 25 т.р. в 2021 г. Экскаватор свой, камни свои (на краю участка гряда), а песок (ПГС), галька и плиты - привозные. И это север Лен.области. Тут таких цен говорят не бывает :)
 

nikolz

Well-known member
В данном месте:
Предварительный бур на 8 м, до постройки: - 0.5 м торф-земля и 0.6..0.8 м глина, 0.7 камни, 2..3 м песок, 0.5 м прослойка типа щебенки, далее ещё N м песок. Где-то далее 8 м должна быть каменная плита, но не добурили.
Далее очистка до чистой глины и от 0.4 м забивка камней от 200 кг с засыпкой ПГС, далее засыпка мелкой галькой (от 0.2 м) и далее гидро-изоляция + плиты + гидро-изоляция, плиты типа дорожные, но больше по всем размерам, производства ещё CCCР. Железа в них тьма - тогда никому не жалко было - только крюки-ручки для подъема краном прутами диаметром 30 мм...
Для "мастерской" в виде деревянного каркасника 6x6 с утеплением от 20 см стен, 30 см пола и потолка я думаю более крутой фундамент не требуется :)
Вот тот датчик и лежит под полом и утеплителем, где кинуты трубы с водой... Вентиляция зазора естественная и вышло всё наоборот - зимой там сушь, а летом до ГОСТ параметров для подвальных помещений.
На такой плите можно и дворец из мрамора построить.
 

nikolz

Well-known member

pvvx

Активный участник сообщества
можете пояснить назначение битов регистра 0x9d у чипов TLSR?
В PDF к чипу всё описано в теме UART, да в Telink_825X_SDK\drivers\8258\register_8258.h .
Регистр UART_STATUS.
C:
#define reg_uart_status0       REG_ADDR8(0x9d)
enum{
    FLD_UART_RBCNT              =  BIT_RNG(0,2), // Read Buffer Count
    FLD_UART_IRQ_FLAG        =  BIT(3),    // IRQ Flag
    FLD_UART_WBCNT              =  BIT_RNG(4,6), // Write Buffer Count
    FLD_UART_CLEAR_RX_FLAG     =  BIT(6), // Запись сюды "1" сбросит rx
    FLD_UART_RX_ERR_FLAG     =  BIT(7), // RX Error Flag, запись сюды "1" сбросит tx
};
Buffer всего 4 байта.
#define reg_uart_data_buf0 REG_ADDR8(0x90)
#define reg_uart_data_buf1 REG_ADDR8(0x91)
#define reg_uart_data_buf2 REG_ADDR8(0x92)
#define reg_uart_data_buf3 REG_ADDR8(0x93)
 

nikolz

Well-known member
В PDF к чипу всё описано в теме UART, да в Telink_825X_SDK\drivers\8258\register_8258.h .
Регистр UART_STATUS.
C:
#define reg_uart_status0       REG_ADDR8(0x9d)
enum{
    FLD_UART_RBCNT              =  BIT_RNG(0,2), // Read Buffer Count
    FLD_UART_IRQ_FLAG        =  BIT(3),    // IRQ Flag
    FLD_UART_WBCNT              =  BIT_RNG(4,6), // Write Buffer Count
    FLD_UART_CLEAR_RX_FLAG     =  BIT(6), // Запись сюды "1" сбросит rx
    FLD_UART_RX_ERR_FLAG     =  BIT(7), // RX Error Flag, запись сюды "1" сбросит tx
};
Buffer всего 4 байта.
#define reg_uart_data_buf0 REG_ADDR8(0x90)
#define reg_uart_data_buf1 REG_ADDR8(0x91)
#define reg_uart_data_buf2 REG_ADDR8(0x92)
#define reg_uart_data_buf3 REG_ADDR8(0x93)
в документации TLSR8266 написано
bit[2:0] - rbcnt
bit[6:4] - wbcnt
вот это мне не понятно.
можете объяснить что это значит?
спасибо.
 

pvvx

Активный участник сообщества
в документации TLSR8266 написано
bit[2:0] - rbcnt
bit[6:4] - wbcnt
вот это мне не понятно.
можете объяснить что это значит?
спасибо.
А они вам нужны?
Это скорее всего счетчики-указатели буфера, возможно кол-во считанных из буфера при DMA или ещё чего промежуточного, никому не нужного.
Вдрух это защелка на каком произошла ошибка (обычно parity) в буфере... Но не встречал такого в аппаратных реализациях... Обычно неясно на каком байте из буфера или fifo ошибка :)
В программной реализации и при DMA эти значения никогда не используются. В другом регистре есть точное значение-указатели на принятые или отосланные...
 

pvvx

Активный участник сообщества
в документации TLSR8266 написано
Оно продублировано во всех доках к TLSR825x и подобных.
UART в TLSR имеет свою специфику (фичи) и не может использоваться как полноценный UART. :p
При межсимвольной паузе на RX будут сплошные ошибки, т.к. прием (защелкивание бит) видимо ведется сразу на 4 байта (32 бита + 4 бита страт + 4+ стоп) и межсимвольная пауза так и принимается, как сдвиг всей последовательности...
В итоге ваши копания не ясны.
 

pvvx

Активный участник сообщества
Точно что там не так у UART с RX я уже не помню, но это аппаратная специфика-фича не позволяет использовать его для ответственных дел. Т.е. без дополнительной контрольной суммы на блоки или если требуется тест на стандарты...
"Специфика-фича", а не баг, т.к. ВСЕ китайские чипы, особенно USB-UART имеют разные баги или недочеты, не позволяющие полноценно обслуживать приемо-передачи :p
К примеру даже у FTDI есть фича - байт с неправильной синхронизацией не попадает в буфер приема, а выставляет только флаг ошибки синхронизации - и ищи его свищи в буфере на N байт :)
Используйте USB - те-же 2 провода, но там всё Ok.
 

nikolz

Well-known member
Точно что там не так у UART с RX я уже не помню, но это аппаратная специфика-фича не позволяет использовать его для ответственных дел. Т.е. без дополнительной контрольной суммы на блоки или если требуется тест на стандарты...
"Специфика-фича", а не баг, т.к. ВСЕ китайские чипы, особенно USB-UART имеют разные баги или недочеты, не позволяющие полноценно обслуживать приемо-передачи :p
К примеру даже у FTDI есть фича - байт с неправильной синхронизацией не попадает в буфер приема, а выставляет только флаг ошибки синхронизации - и ищи его свищи в буфере на N байт :)
Используйте USB - те-же 2 провода, но там всё Ok.
Спасибо за объяснение.
------------------
Да я знаю про UART,
но со второго захода мне удалось сделать нормальную его работу в двухстороннем обмене.
----------------
Я пробовал тестить Ваш UBIA с обменом через UART, но не смог получить данные.
---------------------
возможно, что-то не понял.
Пришлось выкинуть UART с DMA и поставить без DMA.
------------------------
Сейчас вернулся к разработке пассивной системы ориентации для незрячих.
---------------------
Поэтому читаю доки и вспоминаю давно забытое или непонятое.
 

pvvx

Активный участник сообщества
Пришлось выкинуть UART с DMA и поставить без DMA.
Без DMA там всё гораздо хуже. CPU не успевает и возникают пропуски. Буфер даже не 16 байт, а всего на 4. i486 и все современные большие CPU не успевают побайтно принимать с UART при скоростях более 38..50 кбит. :p
Сейчас вернулся к разработке пассивной системы ориентации для незрячих.
Бедные незрячие - какую халтуру им делаете...
 

nikolz

Well-known member
Без DMA там всё гораздо хуже. CPU не успевает и возникают пропуски. Буфер даже не 16 байт, а всего на 4. i486 и все современные большие CPU не успевают побайтно принимать с UART при скоростях более 38..50 кбит. :p
Бедные незрячие - какую халтуру им делаете...
без DMA максимальная скорость до 3 Мбод и нет проблем приема на любой терминал.
Все зависит от решаемой задачи
Если данные передаем по BLE то узким местом будет BLE
----------------------
Делать универсальное устройство не оптимально так как решение получается избыточным, управление сложным,
а многие функции в устройстве не востребованы в каждом конкретном применении.
Но это мое субъективное мнение.
 

nikolz

Well-known member
Бедные незрячие - какую халтуру им делаете...
знаю, что только Ваша халтура хорошая, остальные делают говно.
---------------------
Вы правы лишь в одном, что большинство из них бедные .
--------------------------
Но я не желал бы Вам, чтобы кто то из Ваших близких ослеп.
---------------------
Я уже приводил пример на форуме устройство для чтения для незрячих от 30 тысяч рублей.
--------------------------
Сейчас выпустили устройство для слабовидящих и незрячих, которое читает текст, на который укажешь пальцем.
Угадайте цену такого шедевра.
-------------------
Не угадали, от 4000 долларов США.
 

pvvx

Активный участник сообщества
без DMA максимальная скорость до 3 Мбод и нет проблем приема на любой терминал.
Каким местом читается "3 Мбод и нет проблем" без DMA?
Если по прерываниям - то там сплошной тормоз. Если в программном цикле - то как работает BLE?
И какое узкое место в BLE, если есть PHY 2Mbit и даже в термометре уже испытана его обработка на всех смартах с BT5+? И куда вам гонять по BLE такие потоки - по UART может быть в сотни раз больше трафик если интерфейс с заголовками и прочими откидываемыми добавками.
Опять мечтаете и прикрываетесь слепыми? За всё время вы не показали ни одного устройства...
 

udavst

New member
Где и в чем не работает? Что-то сменили в HA?
Count отображается всегда, если выбран switch или count.
'открыто/закыто' при отключенном RDS транслируется только в формате "custom".
Понял, значит приоритетно включить switch в прошивке, и выбрать формат custom (хотя не знаю, прокатит ли это с BTHome)
Поменял - да, раньше работало через BT Low energy monitor, а в новом HA оставил встроенный BTHome.
Насчёт прошивки понял. возможно ещё просто ухудшился приём от датчика, тк заменил banana pro на миникомп, хотя я уже и BT-свисток тот же всталял, и модули WIFI/BT менял, бесполезно.
 

pvvx

Активный участник сообщества
Понял, значит приоритетно включить switch в прошивке, и выбрать формат custom (хотя не знаю, прокатит ли это с BTHome)
Поменял - да, раньше работало через BT Low energy monitor, а в новом HA оставил встроенный BTHome.
В BTHome пока работает только формат BTHome.
 

udavst

New member
Ну да, сделал esp32-bluetooth-proxy, пакеты перестали теряться, но нет бинарного датчика (
Теперь открытие двери определяю только по счётчику, но он обновляется при замыкании датчика, т.е. говорит только после закрытия двери (а любые охранные датчики нормально замкнутые) (((
 

pvvx

Активный участник сообщества
Теперь открытие двери определяю только по счётчику, но он обновляется при замыкании датчика, т.е. говорит только после закрытия двери (а любые охранные датчики нормально замкнутые) (((
Анализ постоянно замкнутого контакта требует больше тока - садит батарейку. Если датчик включен через резистор 1 МОм к CR2032 - это уже постоянный ток от батарейки в 3 мкА (эквивалентно +20% потребления для типичного термометра). А для датчика на длинных проводах такой ток мал и будут ложные срабатывания от наводок и утечек. И для "охранных датчиков" желательно ток к десятку мA, иначе типовые контакты окисляются и малый ток и напряжение не может их "пробить" - аналогичная беда для силовых реле...
По этому расчет идет только на геркон (есть и трехвыводные и постонно замкнутые), впаянный прямо к плате.
 
Сверху Снизу