Всем привет. Подключил я сей барометр к 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 Вопрос: это я что-то упускаю (например, какие-то дополнительные телодвижения для инициализации устройства), или это датчик бракованный?
Вопрос снят - все заработало. Почему-то при работе через файл устройства не проходила команда на включение. А через python - прошла, и датчик включился. Теперь и через файл устройства данные читаются нормальные.