Проблемы I2C

Ну так там встроенная поддержка датчка.

в библиотеке пин используется и дают 100 микросекунд на сброс девайса…

if (this->enable_pin_ != nullptr) {
    // Enable the enable pin to cause FW boot (to get back to 0x29 default address)
    this->enable_pin_->digital_write(true);
    delayMicroseconds(100);
  }

Ну а тут нет, только если их несколько.

  • XSHUT connects to free GPIO pin. Enable/disable device. This is optional if there is only one VL53L0X sensor on the I²C bus and the default 0x29 address is used. Otherwise this is required.

у вас лог ведётся видимо надо открыть и посмотреть #include “esphome/core/log.h”

В логе пишет, что датчк по адресу находит. Но данных от него нет. Сейчас в режим дебаг переведу, посмотрю подробнее.
UPD. Даже на самом подробном логе не видно никакого общения с датчиком.
[15:43:57][I][i2c.arduino:054]: Results from i2c bus scan:
[15:43:57][I][i2c.arduino:060]: Found i2c device at address 0x29

и больше ничего.

Меня смущает, что если бы это была ошибка передачи данных, то перезагрузка должна восстановить связь. А этого не происходит. Помогает только физическое переподключение.

повесь кнопку на пин ресет, будет понятно

Предварительное замечание: Вы используете интерфейс не по назначению. Поэтому на вопрос: “Как заставить это надежно работать?”, единственный верный ответ: “Никак”.
Но можно попытаться несколько увеличить стабильность работы, если выяснить из дэйташита минимально допустимую величину подтягивающих резисторов и довести их до этой величины посредством подключения внешних резисторов.

Тоже замечание.
Насколько помнится, потенциально I2C может работать на сколь угодно низкой частоте.

ТС использует HOME assistent, там настройки упрощены для пользователя до не’льзя, вчера открыл посмотрел ЩО ЦЕ ТАКЕ, можно ли снизить скорость - вопрос?

ясонька

для начала ТС надо разнести RX-TX по разным парам хотя бы, далее подтяжка на модуле это неправильно, подтягивать надо на стороне приёмной линии, нагрузить линию связи…

PS тенденции к упрощению всего и вся они очевидны…, вот горяченькое…
в ремонте восемь трёх киловаттных бесперебойников, понимая как это непросто (так как в радиотехнике немного разбираюсь) кружил я над ними пару недель, а пришёл “молодой” в радиотехнике практически ноль и, пощёлках их влёгкую, и процы поперешивал и на уровне компонентов всё позаменял…потому что понятия не имел, как это непросто устроено )))
Вот чешу репу, а может так и надо???

Во! Так и надо! Будь проще и люди к тебе потянутся. …да так, что лопатой не отмашешься! ;)))

тут дилемма, простота хуже воровства?

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

да, отчасти …
есть кому просто везет …

“Военное правление допросило Демара и уволило его без лишней огласки, чтобы избежать позора.
Капитан судна на котором служил Демара, до последней минуты не мог поверить,что его блестящий хирург и спаситель 16-ти солдат - самозванец без медицинского образования.”
https://pikabu.ru/story/chelovek_kotoryiyvyidaval_sebya_za_tekh_kem_ne_yavlyalsya_6896382

про хирурга читал…кстати в Японии тоже было, что высокотехнологичные операции делали люди без медицинского образования…

отчасти форумы, отчасти объяснял как это работает, самое сложное было найти периодические неисправности, в частности там на входе есть реле на 220 вольт определяющее подключение к сети и дающее разрешение на переключение в стандартный режим, проблема в контактной группе периодически, один раз из десяти не давала вернуться на сеть при появлении питания, было такое по моему в трёх блоках…с режимами заряда, содержания АКБ тоже не всё так просто…
В каком-то ИБП работали ТОЛЬКО оригинальные конденсаторы Хитачи, остальных фирм раздувало за сутки…не вскрывал…может подделка

да, самые хреновые неисправности это когда, то работает, то нет.
Причем я бы не сказал что БП в этом фавориты, куда больше мороки мне доставляли распределенные системы, где иногда десятки единиц каких-то мекопроцессорных устройств, интерфейсы, драйвера, БД, ПО и прочая хрень. И только отсекая хвосты, набирая и анализируя статистику можно найти концы этой дряни.

Возвращаясь к HOME assistant - пять минут и прошивка и работающий девайс в строю )))

[12:24:07][D][dallas.sensor:143]: ' Датчик DS18B20': Got Temperature=25.4°C
[12:24:07][D][sensor:126]: ' Датчик DS18B20': Sending state 25.43750 °C with 1 decimals of accuracy
[12:24:18][D][max6675:046]: 'Термопара': Got temperature=27.0°C
[12:24:18][D][sensor:126]: 'Термопара': Sending state 27.00000 °C with 1 decimals of accuracy
[12:25:07][D][dallas.sensor:143]: ' Датчик DS18B20': Got Temperature=25.3°C
[12:25:07][D][sensor:126]: ' Датчик DS18B20': Sending state 25.31250 °C with 1 decimals of accuracy
[12:25:18][D][max6675:046]: 'Термопара': Got temperature=27.5°C
[12:25:18][D][sensor:126]: 'Термопара': Sending state 27.50000 °C with 1 decimals of accuracy
[12:26:07][D][dallas.sensor:143]: ' Датчик DS18B20': Got Temperature=25.2°C
[12:26:07][D][sensor:126]: ' Датчик DS18B20': Sending state 25.25000 °C with 1 decimals of accuracy

А модуль - не приемная линия?
Это же не MIDI и не GPS датчик, которые шлют данные в белый свет как в копеечку, не заботясь, слушает их кто-нибудь или нет.
Обычно показания с датчиков запрашивают так:

  • сначала МК шлет запрос датчику, при этом приемником выступает датчик,
  • затем датчик шлет ответ МК, и только тут последний выступает в качестве приемника.

Ну и еще: сигнал CLK всегда идет от мастера слейву, так что в качестве “приемника” этого сигнала всегда выступает слейв.
Ну а если брать, скажем, I2C дисплей, так там вообще приемник - всегда слейв.
Так что распаивать резисторы на модуле слейва - вполне адекватная практика.

разработчики данного датчика так не считают и отразили это в даташите, где конкретно устанавливать подтягивающие резисторы и их номинал…
PS и я, как не парадоксально, с ними согласен )))