Можно ли использовать Барометр (Troyka-модуль) вместе с RaspberryPi

Тема в разделе "Raspberry Pi", создана пользователем kyakovenko, 17 июл 2016.

  1. kyakovenko

    kyakovenko Нуб

    Привет,

    Недавно приобрел барометр в виде Troyka-модуля и хотел его подключить к RaspberryPi, т.к. в описании сказано, что он работает через I2C, но никак не могу заставить его работать совместно с малинкой.

    Подскажите, пожалуйста, есть ли вообще возможность использовать барометр (Troyka-модуль) вместе с RaspberryPi или это конструктивно не предусмотрено?

    На всякий случай:
    • RaspberryPi Model B Revision 2.0
    • sudo i2cdetect -y 1 ничего не находит
    • я пробовал подавать питание 3В и 5В
     
  2. Jeid

    Jeid Нерд

    Там вроде на малинке надо включить i2c, по умолчанию он выключен
     
  3. kyakovenko

    kyakovenko Нуб

    Да, все верно. В том то и проблема, I2C я включил и, все равно, барометр не определяется.
     
  4. Igor68

    Igor68 Гуру

    Если все сигналы подключены - попробуйте изменить скорость шины I2C (вдруг монтаж длинный). Попробовать можно обратиться конкретно по адресу 0x5C (как сказано в документе - адрес 0b1011100). Я что-то после ComMotion перестал воспринимать стандарт I2C как стандарт. Причина этого моего высказывания:
    Сканирование I2C - это сканирование, а возможно для данных микросхем требуется полный запрос, без которого они просто не отвечают. Ну к примеру <адрес>, <команда> и т.д. Только вот команда может быть и не однобайтная, а с продолжением. Надо datasheet на них. И чтобы не городить стазу на C воспользуйтесь питоном для пробы - там есть блочные обращения по I2C/
     
  5. Igor68

    Igor68 Гуру

    Кажется нашёл кое-что LPS331AP - барометр (I2C;SPI). Похоже не должен сканироваться. Если можете сделайте длнное обращение - надо обращаться к внутренним регистрам
    PRESS_POUT_XL_REH - не смотрел кто (только для чтения) внутренний адрес - 0x28
    PRESS_OUT_L - младший байт давления (только для чтения) внутренний адрес - 0x29
    PRESS_OUT_H - старший байт давления (только для чтения) внутр. адр. - 0x2A
    TEMP_OUT_L - младший байт темп. (только для чтения) внутр. адр - 0x2B
    TEMP_OUT_H - старший адрес темп. (только для чтения) внутр. адр - 0x2C
    это только несколько регистров. думаю так (хотя можете подсмотреть примеры библиотек от Amperka):
    устройству - <addrdev> <addrreg + cmd> <value>; где есть <value> - в случае записи
    от устройства - <value> в случае чтения

    внутренние адреса 0x00-0x07 - в резерве - устройство могло и не откликнуться на i2cdetect -y 1.
     
    Последнее редактирование: 19 июл 2016