ESP8266 не работает с MPU 6050 по проводной библиотеке и I2C

Я пытаюсь использовать эту версию ESP8266 для доступа к MPU 6050. Однако это не работает.

NodeMCU CP2102 ESP-12E

Код работал с nano очень хорошо. Однако, когда я попытался просканировать устройство I2C, мне сказали, что устройство I2C не найдено.

Я пытался

  Wire.begin(D2, D1); 

и

  Wire.begin(4, 5);

т.е. изменить пин на GIOP 4 5 в случае, если по умолчанию не работает. Я также пытался поставить большой конденсатор между линиями электропередач, но все равно не работал.

Почему ESP8266 не работает с MPU 6050? (Последовательный и проводной вместе)

Обновления: Иногда пишет, что устройство найдено, но после двух обновлений оно снова не найдено.

Обновления 2: Я посмотрел видео и сделал то, что предложил G6EJD, т.е. перезапустил IDE и все такое. Теперь он читает данные. Тем не менее, чтение данных было каким-то образом неверным в большой степени. Например, в квартире устройство читает

42.63/-38.37/7.82

для угла x, угла y и угловой скорости z с примененным дополнительным фильтром и устойчивым на плоской поверхности. Это работало для nano, но не для ESP 8266.

Кроме того, я попытался настроить схему в соответствии со спектром, предложенным Дандависом. Пробовал диапазон резисторов от 4,7 кОм до 10, даже напрямую подключал к источнику питания. Попытки также включали конденсатор емкостью 100 мкФ и плату питания для стабилизации шума. Были попытки как подтягивания, так и опускания, а также смены плат. Однако ни один из них не работал, и проблема сохранялась. Подтягивающий резистор, похоже, не реагировал на показания устройства.

Обновление 3: Потребляемая мощность была исключена, а также была предпринята попытка установить пару резисторов на 100 кОм. Не работает.

, 👍0

Обсуждение

как долго лиды? вы используете подтягивающие резисторы?, @dandavis

@dandavis провод около 10 см каждый, что такое подтягивающие резисторы?, @ShoutOutAndCalculate

https://learn.sparkfun.com/tutorials/i2c/i2c-на-аппаратном уровне, @dandavis

@dandavis Это не сработало, даже если я вставил резистор., @ShoutOutAndCalculate

@dandavis Я пытался настроить схему в соответствии с предложенным вами спектром. Пробовал диапазон резисторов от 4,7 кОм до 10, даже напрямую подключал к источнику питания. Попытки также включали конденсатор емкостью 100 мкФ и плату питания для стабилизации шума. Были попытки как подтягивания, так и опускания, а также смены досок. Однако ни один из них не работал, и проблема сохранялась., @ShoutOutAndCalculate

Я не ветеран Arduino, но мне не удалось заставить работать связь I2C между двумя одинаковыми микроконтроллерами (NodeMCU CP2102 ESP-12E). На github есть [пара](https://github.com/esp8266/Arduino/issues/3048) из [вопросов](https://github.com/esp8266/Arduino/issues/3046#issuecomment-646940970). указывает на проблемы, но разработчики не спешат ничего с этим делать., @S. Imp


2 ответа


1

попробовать использовать

Wire.begin(0x68);

вместо

 Wire.begin(D2, D1);
,

2

Я изо всех сил пытался заставить MPU6050 работать с D1 Mini или более старой версией NodeMCU v1. Я использую D1/D2. Я использовал библиотеку i2cdevlib MPU6050, а также версию Electronic Cats. Я использовал множество скетчей и даже пробовал код, который использует только Wire (без специальных библиотек MPU6050).

  • Лучшее, что мне удалось найти, — это библиотека Electronic Cats MPU6050 без DMP, где, по крайней мере, он думает, что MPU6050 подключен, но просто выдает 0 в виде необработанных значений.
  • Вторым "лучшим", возможно, был какой-то код, который просто использовал простой Wire, но за исключением Wire.endTransmission(), возвращающего успех (и мне пришлось замедлить loop() для этого), его числа тарабарщина ( либо 0, либо Z будут просто увеличиваться. Движение самой платы ни на что не влияет).

Версии DMP всегда не могут инициализировать DMP. Я пробовал подтягивания 8.2k и 4.1k на D1 и D2.

Он отлично работает на Pro Micro 16 на базе atmega32u4.

,