Потеря сигнала с модулей i2c при подключении к esp32

Помогите с проблемой подключения нескольких модулей i2c. Была старая плата на arduino nano с двумя модулями ads1115, сейчас мне понадобился wi-fi и я решил переделать все на esp32 и добавил еще один модуль ads1115 (всего сейчас их 3), но возникла проблема в том, что модули иногда отваливаются, esp не может их инициализировать или если она все таки их инициализировала то во время работы иногда перестают идти данные. Подскажите что можно сделать для решения проблемы? Все распаяно на макетке ножками от резисторов.

Почитал что для линии i2c нужно scl и sda подтягивать на питание, но на самом модуле и так это реализовано с резисторами 10кОм.

Локализовать ошибку. Найти системность в сбоях.

попробовать подобрать резисторы подтяжки

10k / 3 = 3k3
3k3 < 4k7… не сильно меньше, но может быть влияет.
ТС, ты питаешь от 3.3 свои и2ц платы или от 5?

я питаю от 3.3

а есть какой-то расчет для подбора сопротивления? или просто на удачу)

есть, ссылку не дам, не делал закладки, увы, хотя, вот к примеру

системности нет час сидел с запущенным сканером i2c и они рандомно выключаются, я и все модули и саму esp менял

Ток через резистор не должен быть бОльше максимально допустимого тока через пин микроконтроллера. Но обычно выбирают этот ток гораздо меньше максимального.

А как на модулях вы выбрали адреса I2C?
Ну хоть сфоткали бы ваше творение, насколько далеко модули от esp32 расположены?
Что то еще на I2C есть?

Без схемы, фото вашего устройства и кода сканера который вы запускаете, можно гадать бесконечно!

адреса менял замыканием ножки addr на землю - 0x48, на sda - 0x4A и на scl - 0x4B, модули расположены максимально близко к esp, на линии i2c больше ничего нет только эти модули, ну и про сканер:

#include <Wire.h>

void setup()
{
  Serial.begin (115200);  
  Wire.begin (21, 22);   // sda= GPIO_21 /scl= GPIO_22
}

void Scanner ()
{
  Serial.println ();
  Serial.println ("I2C scanner. Scanning ...");
  byte count = 0;

  Wire.begin();
  for (byte i = 8; i < 120; i++)
  {
    Wire.beginTransmission (i);          // Begin I2C transmission Address (i)
    if (Wire.endTransmission () == 0)  // Receive 0 = success (ACK response) 
    {
      Serial.print ("Found address: ");
      Serial.print (i, DEC);
      Serial.print (" (0x");
      Serial.print (i, HEX);     // PCF8574 7 bit address
      Serial.println (")");
      count++;
    }
  }
  Serial.print ("Found ");      
  Serial.print (count, DEC);        // numbers of devices
  Serial.println (" device(s).");
}

void loop()
{
  Scanner ();
  delay (10);
}

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

Я бы заменил провода, от есп к первому модулю, от первого ко второму, от второго к третьему.
Как можно короче чтобы было.
Если не заработает надо оставить подключенным только один модуль. Стабильно работает?
Именно убрать все провода, оставить только к одному модулю подключение.


Нет черные провода это с чего я считываю сигналы всего 12 датчиков, а красные это питание этих датчиков, по поводу соединения модулей они и так припаяны последовательно, если все убрать и оставить только один модуль сканер вообще ничего не находит, что очень странно

Не видно что нога addr первого модуля куда-то подключена.
Я просто с телефона может просто не видно, у двух следующих подключение addr видно , а у первого такое впечатление что в воздухе висит.

так и есть, просто нога addr по стандарту на землю подтянута, и ее повторно можно не пропаивать

В даташите такого нет. Я не силен в аглицком но пишут - кан бе коннектед.
Припаяйте ее на землю, мне уже самому интересно, думаю причина в этом.

изменений нет(

а может ли быть это связано с несогласованностью логических выходов, может стоит попробовать подключить ads1115 например через TX0102, и все запитать не от 3.3 а от 5 вольт, или это дичь?

если что я измеряю напряжение до 2 вольт

А если сейчас один модуль оставить? Вы говорили один не работал вообще. После соединения addr на землю сканер его видит?

Как вариант еще замерить номиналы резисторов подтяжки sda scl, тоже бывает всякое, это ктиай . И я бы оставил 10к, на одном модуле, на остальных бы убрал.

Если не поможет то придется втыкать осциллограф и смотреть сам сингал и его уровни.

Да к стати, еще на скорость самой шины глянуть.

И опрос в сканере пореже поставьте, ну раз в секунду хотябы.

нет сканер не видит если оставить один модуль после запайки на землю(
а на счет сопротивления или я что-то не так делаю или еще чего, измерил все резисторы они по 10кОм, но если измерять сопротивление не на самом резисторе а сопротивление между vdd и csl или vdd и sda сопротивление показывает 2.5кОм