Официальный сайт компании Arduino по адресу arduino.cc
Датчик BME280 - не отобржается влажность и выстоа отрицательная.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Втр, 14/01/2020 - 02:29
Добрый вечер уважаемые знатоки! Купил себе вот такой вот датчик BME280
https://www.ebay.com/itm/Breakout-Temperature-Humidity-Barometric-Pressu...
Изначально не выводилось ничего. В библиотеке сменил адрес датчика по I2C на 0х76. И еще закоментировал //return false; в библиотеке как паказанно вот тут http://davidstein.cz/2017/09/30/arduino-bme280-could-not-find-a-valid-bme280-sensor-solved/
После этого стала отображаться температура и атмосферное давление. Но высота некорректно отображается и влажность 0%. В чем мoжет быть проблема?
Temperature = 23.21 *C
Pressure = 1026.81 hPa
Approx. Altitude = -112.28 m
Humidity = 0.00 %
/*************************************************************************** This is a library for the BME280 humidity, temperature & pressure sensor Designed specifically to work with the Adafruit BME280 Breakout ----> http://www.adafruit.com/products/2650 These sensors use I2C or SPI to communicate, 2 or 4 pins are required to interface. The device's I2C address is either 0x76 or 0x77. Adafruit invests time and resources providing this open source code, please support Adafruit andopen-source hardware by purchasing products from Adafruit! Written by Limor Fried & Kevin Townsend for Adafruit Industries. BSD license, all text above must be included in any redistribution See the LICENSE file for details. ***************************************************************************/ #include <Wire.h> #include <SPI.h> // #include <Adafruit_Sensor.h> #include <Adafruit_BME280.h> #define BME_SCK 13 #define BME_MISO 12 #define BME_MOSI 11 #define BME_CS 10 #define SEALEVELPRESSURE_HPA (1013.25) Adafruit_BME280 bme; // I2C //Adafruit_BME280 bme(BME_CS); // hardware SPI //Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI unsigned long delayTime; void setup() { Serial.begin(9600); while(!Serial); // time to get serial running Serial.println(F("BME280 test")); unsigned status; // default settings status = bme.begin(); // You can also pass in a Wire library object like &Wire2 // status = bme.begin(0x76, &Wire2) if (!status) { Serial.println("Could not find a valid BME280 sensor, check wiring, address, sensor ID!"); Serial.print("SensorID was: 0x"); Serial.println(bme.sensorID(),16); Serial.print(" ID of 0xFF probably means a bad address, a BMP 180 or BMP 085\n"); Serial.print(" ID of 0x56-0x58 represents a BMP 280,\n"); Serial.print(" ID of 0x60 represents a BME 280.\n"); Serial.print(" ID of 0x61 represents a BME 680.\n"); while (1) delay(10); } Serial.println("-- Default Test --"); delayTime = 1000; Serial.println(); } void loop() { printValues(); delay(delayTime); } void printValues() { Serial.print("Temperature = "); Serial.print(bme.readTemperature()); Serial.println(" *C"); Serial.print("Pressure = "); Serial.print(bme.readPressure() / 100.0F); Serial.println(" hPa"); Serial.print("Approx. Altitude = "); Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA)); Serial.println(" m"); Serial.print("Humidity = "); Serial.print(bme.readHumidity()); // bme280.readHumidity() Serial.println(" %"); Serial.println(); }
Помогите пожалуйста разобрться уже 3 день ищу, думаю что нетак.
Этот модуль еще нужно правильно подключить.
Доброго дня. Модуль вроде бы подключен правильно. Так как I2C scaner выводит адрес 0х76 да и температура с атм. давлением отображается корректно.
GND -->земля
VCC --> +3.3V
SCL --> контакт 22 (ESP32 Devkit V1 SCL)
SDA --> контакт 21 (ESP32 Devkit V1 SDA)
Скорее всего что то в библиотеке не так. Но что?
А высоту над уровнем моря вы правильно считаете? - уверены, что в параметр SEALEVELPRESSURE_HPA нужно заносить 760 мм рт ст?
По смыслу этот датчик показывает ИЛИ давление ИЛИ высоту над уровнем моря, но не оба параметра разом. Чтобы вычислить высоту надо знать текушее давление на уровне моря - и именно это текущее давление нужно занести в параметр SEALEVELPRESSURE_HPA, а вовсе не "идеальную" цифру в 760 мм ртст...
По смыслу этот датчик показывает ИЛИ давление ИЛИ высоту над уровнем моря, но не оба параметра разом.
А как же BMP180 кажет и то и то???
А как же BMP180 кажет и то и то???
неверно выразился - дачик может показывать изменение давления при неизменной высоте или изменение высоты при неизменном давлении. Вычислять и то и другое разом - не выйдет, так по сути измеряется только одна величина и потом пересчитывается либо в то. либо в другое
Вот мой чо кажет в протеусе. В реале в железе то-же что и на смартфоне и гисметео.
Библиотека естественно самописная, нет такой в инете.
Вот мой чо кажет в протеусе.
вы физику учили в школе? :)
ответьте, каким образом этот датчик измеряет высоту над уровнем моря... и сами все поймете
#define SEALEVELPRESSURE_HPA (1013.25)
Почему 760-то?
Живу над уровнем моря) И показатель атм. давления меня пока не смущают. Этот вопрос легче, я решу его позже. Меня больше интересует влажность почему всегда 0.
Тут мои библиотеки. Так как на форуме я не нашел как вложить файлы.
http://alexandroupoli.orgfree.com/bme280_lib.rar
Следовал по инструкции в youtube https://www.youtube.com/watch?v=3zMI1eun-_k
Посмотрите пожалуйста что я не так делаю или что упустил?
#define SEALEVELPRESSURE_HPA (1013.25)
Почему 760-то?
1013,25 ГПа - это и есть 760 мм. рт. ст - нормальное атмосферное давление на уровне моря
А, простите. Я на метеостанциях только КПа вижу, что-то мне в голову даже не пришло пересчитывать.
Вроде почти всё сходится.
Живу над уровнем моря)
это не имеет значения, все равно в этот параметр нужно заносить не идеальное давление 760 мм. а текущее на уровне моря. То есть для вас - ту самую цифру, что СЕЙЧАС! показывает барометр. И тогда датчик совершенно точно покажет высоту 0 м :)
Поймите. это кажется бредом - но для определения этим датчиком высоты надо сначала узнать эту высоту каким-то иным способом, пересчитать по ней текущее давление на высоту 0м и вставить полученную цифру в скетч. Зато после этого, если вы например взберетесь с датчиком на 12 этаж или на соседнюю сопку - он вам покажет разницу высоты. на которую вы поднялись от первой точки.
...и эта высота будет кажный день разная, если не будет корректироваться Zero Point ;)
...и эта высота будет кажный день разная, если не будет корректироваться Zero Point ;)
именно так.
Более правильно было бы назвать ее не "высотой над уровнем моря", а "разностью высот от занесенной в скетч точки"
А как насчет влажности ? Влажность то не имеет никокого отношения к нормальному атмосферному давлению на уровне моря..
Скажите пожалуйста а какая разница между этими датчиками для обеих пишут продавцы как BME280. Мой второй. Может это всетаки BMP280 а не BME280?
Чтобы узнать это - нужно считать ChipID с сенсора.
ok. как прочитать ?
чтобы совсем правильно - задействовать GPS
ok. как прочитать
Адафруктовая библиотека проверяет ID когда вызывается Init. И то что
Говорит о том, что ID не соответствует BME280. Та где ты закоментировал добавь печать _sensorID в сериал порт.
Всем спасибо разобрался! У меня Serial.println(bme.sensorID(),16); выводит 58. Датчик мне подсунули BMP280 вместо BME280.
Можно получить этот файл для протеуса?
[quote=-NMi-]
Вот мой чо кажет в протеусе. В реале в железе то-же что и на смартфоне и гисметео.
Библиотека естественно самописная, нет такой в инете.
Можно получить этот файл для протеуса?
Канешно. Литр Деду и литр мне.
мне можно пол (литра).
Тада рокировка меняцца, Деду поллитра, мне полтора.