0 голосов
Подскажите, как победить проблему с I2C при подключении барометра (тройка модуль) к плате Тройка Wifi Slot, т.е. ESP8266. Модуль нормально работает с Ардуино и Искрой, но не хочет с wifi slot. Проверялось с разными модулями барометра и разными wifi slot-ами. Другие модули, типа термометра с интерфейсом I2C, работают нормально.

Случайно выяснилось, что при подключении модуля LCD-дисплея (а точнее, просто при инициализации begin(), даже сам модуль не нужен), барометр начинает работать. Правда, начинает врать термометр :(.

Видимо, что-то с настройками I2C, но тут я не специалист.

Подскажите пожалуйста, что делать.
(8 баллов) 1 2 3
А что реально подключено по i2c? Проверьте все ли видно (i2c_scanner.ino в примерах) и  с какими адресами. Нет ли конфликта адресов?
Ничего постороннего нет, я убрал все для чистоты эксперимента. Конфликта адресов между теми модулями, что ставил, тоже нет, специальное проверял.

2 Ответы

+2 голосов
Скорее всего конфликт библиотек. Частоты шины, адреса и т.д. Функция begin() , возможно выставляет правильную частоту шины I2C. Попробуйте посмотреть в библиотеках частоты шины и адреса устройств.
(3.1 тыс. баллов) 14 20 41
+1 голос

Сумел преодолеть проблему.

Вычитал в описании микросхемы LPS331AP, что при задании скорости передачи данных через регистр CTRL_REG1 необходимо питание выключать програмно, кстати, через тот же регистр.
На 20-й странице описания - Note: Before changing the ODR it is necessary to power down the device (CTRL_REG1[7]).
Библиотека (https://github.com/amperka/Troyka-IMU) меняет установки скорости при инициализации, а вот отключения питания в библиотеке я не заметил.
Так что добавил в setup() вместо barometer.begin(); такие строки:

  WIRE_IMU.begin(); //пришлось взять внутренний объект библиотеки для инициализации
  barometer.writeReg(LPS331_CTRL_REG1, 0b01100000); // первый бит - 0, отключаем питание 
  delay(100);  
  barometer.writeReg(LPS331_CTRL_REG1, 0b11100000); // первый бит - 1, включаем питание, скорость передачи 12,5Гц 
  delay(100);  
Может задержки тут и не нужны, уже не помню, но в таком варианте все работает.

PS Делал 2 аналогичных девайса на Тройка Wifi Slot. На одном все это колдовство не понадобилось, а на другом без него никак. Так что причина безобразия до конца так и не ясна.

(8 баллов) 1 2 3
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.

    За этот месяц ещё никого.

    ...