ESP32 не видит BMI160

ESP32 devkit v1 не видит подключенный к ней гироскоп BMI160. Arduino IDE пишет Scanning… No I2C devices found. Использую такой код:

#include <Wire.h>
 
#define I2C_Freq 100000
#define SDA_0 21
#define SCL_0 22
 
TwoWire I2C_0 = TwoWire(0);
 
void setup()
{
  Serial.begin(9600);
  I2C_0.begin(SDA_0 , SCL_0 , I2C_Freq);
}
 
void loop()
{
  byte error, address;
  int nDevices;
 
  Serial.println("Scanning...");
 
  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    I2C_0.beginTransmission(address);
    error = I2C_0.endTransmission();
 
    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");
 
      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknown error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");
 
  delay(5000);
}

Пробовал перепаять контакты, подключить их к кварцу, поставить резисторы на 4.7 кОм, поменять скорость на более высокую, подключить контроллер к ноуту, а не компу, подтягивал AD к GND для смены адреса. Ничего не помогло.
Прозвонил провода - все целые. На SDA и SCL напряжение 3,25 В, на VIN 3,27 В.
Может кто знает, в чём может быть проблема?

какие контакты?

к какому кварцу? зачем?

дайте схему, у меня рак мозга.

??? хочется подробностей

Схема подключения:
VIN - 3V3
GND - GND
SCL - D22
SDA - D21

Неверно выразился. Никакого кварца, естественно, на esp32 нет. Имел ввиду экранирующий корпус

аа, корпус, тогда понятно. а с контактами чо?

Физическое соединение между BMI160 и esp32 перепаивал несколько раз, когда идей совсем не оставалось

читай вот тут:

После исправления кода, монитор порта выдал это:


j
I2C device found at address 0x3B  !
I2C device found at address 0x3F  !
I2C device found at address 0x41  !
I2C device found at address 0x43  !
I2C device found at address 0x45  !
I2C device found at address 0x4A  !
I2C device found at address 0x4C  !
I2C device found at address 0x4E  !
I2C device found at address 0x50  !
I2C device found at address 0x55  !
I2C device found at address 0x57  !
I2C device found at address 0x5B  !
I2C device found at address 0x5D  !
I2C device found at address 0x5F  !
I2C device found at address 0x61  !
I2C device found at address 0x68  !
I2C device found at address 0x6A  !
I2C device found at address 0x6D  !
I2C device found at address 0x6F  !
I2C device found at address 0x71  !
I2C device found at address 0x75  !
I2C device found at address 0x78  !
I2C device found at address 0x7B  !
I2C device found at address 0x7D  !
done

No I2C devices found

Очень странно видеть 24 адреса там, где должен быть один 0x68.
Я загрузил код для вывода данных гироскопа. Arduino ide в ответ пишет Wire.endTransmission() failed.
Код для гироскопа:

#include <BMI160Gen.h> 
#include <Wire.h>
 
const int i2c_addr = 0x68;
const int sda_pin = 21;
const int scl_pin = 22;
void setup() {
  Serial.begin(9600);
  while (!Serial);
 
  Wire.begin(sda_pin, scl_pin);
  if (!BMI160.begin(BMI160GenClass::I2C_MODE, i2c_addr)) {
    Serial.println("BMI160 initialization failed!");
    while (1);
  }
 
  Serial.println("BMI160 initialized successfully in I2C mode!");
}
void loop() {
  int gx, gy, gz;
  int ax, ay, az;
 
  BMI160.readGyro(gx, gy, gz);
 
  BMI160.readAccelerometer(ax, ay, az);
 
  Serial.print("Gyroscope Data (X, Y, Z): ");
  Serial.print(gx);
  Serial.print(", ");
  Serial.print(gy);
  Serial.print(", ");
  Serial.println(gz);
 
  Serial.print("Accelerometer Data (X, Y, Z): ");
  Serial.print(ax);
  Serial.print(", ");
  Serial.print(ay);
  Serial.print(", ");
  Serial.println(az);
 
  delay(500);
}

от тебя вообще ничего не скрыть)

Есть шанс того, что дело в браке BMI160? Arduino ide снова выводит сообщение “No I2C devices found!”

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

Ну, раз больше ничего не остаётся, поеду до ближайшего магазина. Потом напишу результат проверки

подтягивающие резисторы присутствуют? в твоем текстовом описании схемы не увидел

Подтягивающие резисторы присутствовали. На результат не влияли. В магазине попробовали использовать другой BMI160. Результат тот же - No I2C devices found

чето не так. фотку давай, как все соединено.

картинка для референса



Ох, ребят, простите за такую корявую работу. Иначе не умею

возможно ему питания не хватает. это все от USB работает?

Да. От micro usb, которое идёт от компьютера

модуль гироскопа как запитан? через Vin?

Vin гироскопа соединено с 3v3 esp32