ESP32 не видит BMI160

неправильно, забери Vin c модуля ESP32

все нормально!
лучше уж так, чем запутанные объяснения и раздувания щек

воистину

резисторы подтяжки на SDA и SCL не нужны, они есть еа плате BMI160

ну и куда пропал ТС? долго чтоль перепаять один проводок?

Я ещё gnd перепаял поближе к vin для удобства. Впрочем, смысла не имело. No I2C devices found

хм. какоето девиантное поведение. на этом мои лично полномочия - все, сорян.

Осталась последняя мысль - попробовать с другим контроллером. Но с этим пока подожду.
Один человек предложил помощь, сейчас буду с ним общаться. Если найдём решение - продублирую здесь.
А пока хочу выразить огромную благодарность за помощь с решением данной проблемы. Ребят, спасибо вам большое!

Взял у друга esp32 devkit v1 DOIT. Самое забавное, что на нём код тоже не работает. Как я понял, поломка не связана с контроллером и датчиком. Быть может, есть какие-то базовые вещи, которых я не учёл?
При всём вышеперечисленном вчера вечером отдельно втыкал GPS NEO 6M. С него данные идут отлично, никаких нареканий на этот счёт нет

попробуйте это

#include <BMI160Gen.h>

const int select_pin = 10;
const int i2c_addr = 0x69;

void setup() {
  Serial.begin(9600); // initialize Serial communication
  while (!Serial);    // wait for the serial port to open

  // initialize device
  //BMI160.begin(BMI160GenClass::SPI_MODE, select_pin);
  BMI160.begin(BMI160GenClass::I2C_MODE, i2c_addr);
}

void loop() {
  int gx, gy, gz;         // raw gyro values

  // read raw gyro measurements from device
  BMI160.readGyro(gx, gy, gz);

  // display tab-separated gyro x/y/z values
  Serial.print("g:\t");
  Serial.print(gx);
  Serial.print("\t");
  Serial.print(gy);
  Serial.print("\t");
  Serial.print(gz);
  Serial.println();

  delay(500);
}

Знакомый код. Именно с него всё и началось. Пишет Wire.endTransmission() failed.
Адрес пробовал менять на 68, результат тот же

Из интернетов:

Шикарный акселерометр. После небольшой калибровки показывает хорошие результаты. На сайте производителя есть готовый драйвер который быстро помогает настроить его и использовать по максимуму. Главное прописать в драйвере функции низкого уровня и все. Единственная проблема, что у меня один из акселерометров просто перестал отвечать и все. работал 3 дня и потом больше не отвечал на шине. Заменил его на второй, второй заработал сразу. Какой то баг или просто китайская подделка.

Да, тоже приходила в голову мысль, что дело в самом датчике. По этой причине я купил ещё один. Он тоже не работает, при том я его даже не паял, просто провода продел и зафиксировал.
К понедельнику должен приехать датчик MAX30102. Он тоже использует i2c. На нём можно будет проверить работоспособность портов

Поставьте такой эксперимент для начала: возьмите какое-нибудь (заведомо исправное) i2c устройство и подключите к вашей ЕСПшке. Запустие i2c скан. Найдет? В зависимости от результата продолжим давать советы.

Сфотайте модуль свой, что-ли. Поглазеть. Земля у ESP32 и вашего датчика между собой хорошо припаяна?

Там 5 вольт же, на Vin.

Там же купили, что и первый?

на датчике свой 3.3 регулятор есть, я подозревал что ему не хватает 3.3 на входе, но это оказалось не оно.

1 лайк

Ну, как минимум, это явная проблема будет, так что таки да, надо 5в подать.

Т.е. максимум 100ма. Может и не хватить.

PS: а, не, щас посмотрел, датчик потребляет 1ма всего.

По поводу других i2c устройств: у меня их нет под рукой. Но скоро приедет пульсоксиметр, о котором говорилось ранее, на нём и проверим сканер
Второй датчик BMI160 покупал в том же магазине, что и первый, да
Вчера снова ставил резисторы, пробовал ещё раз перепаять гироскоп с 3v3 на vin, но уже на новой esp32. Не помогло.
Провода припаяны нормально, на прозвон реагируют, напряжение есть. В случае на фото
на vin 4.73 В, на sda 3.33 В, на scl 3.29 В