Барометр AMP-B034 и Raspberry Pi3: выдает погоду на Марсе

Тема в разделе "Raspberry Pi", создана пользователем Spitel, 5 фев 2017.

  1. Spitel

    Spitel Нуб

    Всем привет.

    Подключил я сей барометр к Raspberry Pi3, все вроде бы хорошо: как устройство I2C он видится, и даже данные возвращает:

    Код (Bash):

    pi@raspberrypi:~ $ i2cdetect -y 1
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- 5c -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --
    pi@raspberrypi:~ $ i2cdump -y 1 0x5c
    No size specified (using byte-data access)
      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f  0123456789abcdef
    00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bb  ...............?
    10: 7a 35 86 17 0a c0 1e 30 7e 78 83 02 00 66 a6 00  z5?????0~x??.f?.
    20: 00 00 00 00 00 00 00 00 00 80 2f 00 00 00 00 00  .........?/.....
    30: 00 c1 cb c0 0b bc f4 76 db 6d 33 f1 00 00 00 00  .??????v?m3?....
    40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    ...
     
    Готовых модулей для чтения с датчика не нашел, решил ручками с ним работать через шину i2c.

    Почитал документацию на сам датчик (LPS331AP). Вроде все понятно - давление выдается в регистрах 28, 29, 2a, температура - 2b и 2c.
    Для верности посмотрел в исходники LPS331.cpp в гитхабе. Тоже вроде все понятно: сначала пишем в LPS331_CTRL_REG1 магическое число 0b11100000 (перевести в активный режим, 12,5 герц обновление показаний), потом чуть-чуть ждем для верности и читаем данные из регистров.

    И тут возникла проблема: данные, хоть и читаются без ошибок, всегда одни и те же (0x2f8000 для давления, 0 для температуры). Низковатое какое-то давление получается, т.к. судя по Гитхабу в Питере сейчас примерно 769 мм. рт. ст., но никак не 570:
    Raw pressure: 2f8000
    In millibars: 760.000000
    In mmHg: 570.048454

    Вопрос: это я что-то упускаю (например, какие-то дополнительные телодвижения для инициализации устройства), или это датчик бракованный?
     
  2. Spitel

    Spitel Нуб

    Вопрос снят - все заработало.
    Почему-то при работе через файл устройства не проходила команда на включение. А через python - прошла, и датчик включился. Теперь и через файл устройства данные читаются нормальные.