неправильно, забери 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 на входе, но это оказалось не оно.
Ну, как минимум, это явная проблема будет, так что таки да, надо 5в подать.
Т.е. максимум 100ма. Может и не хватить.
PS: а, не, щас посмотрел, датчик потребляет 1ма всего.
По поводу других i2c устройств: у меня их нет под рукой. Но скоро приедет пульсоксиметр, о котором говорилось ранее, на нём и проверим сканер
Второй датчик BMI160 покупал в том же магазине, что и первый, да
Вчера снова ставил резисторы, пробовал ещё раз перепаять гироскоп с 3v3 на vin, но уже на новой esp32. Не помогло.
Провода припаяны нормально, на прозвон реагируют, напряжение есть. В случае на фото
на vin 4.73 В, на sda 3.33 В, на scl 3.29 В