BMP280 возвращает 0
Я подключил датчик температуры/давления BMP280 к Arduino Uno, как здесь:
и использовали пример кода, предоставленный библиотекой Adafruit BMP280. Однако значения температуры и давления возвращают 0,00 на последовательном мониторе. Что может быть причиной этого? Я настроил его в режиме I2C и удалил строки, отвечающие за соединения SPI.
/***************************************************************************
This is a library for the BMP280 humidity, temperature & pressure sensor
Designed specifically to work with the Adafruit BMEP280 Breakout
----> http://www.adafruit.com/products/2651
These sensors use I2C or SPI to communicate, 2 or 4 pins are required
to interface.
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
***************************************************************************/
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
#define BMP_SCK 13 // удалил следующие 4
#define BMP_MISO 12
#define BMP_MOSI 11
#define BMP_CS 10
Adafruit_BMP280 bme; // I2C
// и следующие 2 строки:
//Adafruit_BMP280 bme(BMP_CS); // аппаратный SPI
//Adafruit_BMP280 bme(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK);
void setup() {
Serial.begin(9600);
Serial.println(F("BMP280 test"));
if (!bme.begin()) {
Serial.println("Could not find a valid BMP280 sensor, check wiring!");
while (1);
}
}
void loop() {
Serial.print("Temperature = ");
Serial.print(bme.readTemperature());
Serial.println(" *C");
Serial.print("Pressure = ");
Serial.print(bme.readPressure());
Serial.println(" Pa");
Serial.print("Approx altitude = ");
Serial.print(bme.readAltitude(1013.25)); // это должно быть настроено на ваш локальный forcase
Serial.println(" m");
Serial.println();
delay(2000);
}
@ahemmetter, 👍2
Обсуждение4 ответа
Лучший ответ:
I2C должен иметь подтягивающие резисторы на линиях данных, иначе он просто не работает.
Быстро найдите правильное значение, но мне в голову не приходит 4,7 тыс.
Вы должны поместить резистор от линий SDA и SCK к +5V, и вдруг он оживет. (Надеюсь)
Я подозреваю, что на прорыве уже есть подтягивания; нет смысла их не включать. Кроме того, если бы не было подтягиваний, begin()
не удалось бы, и было бы другое сообщение об ошибке., @SoreDakeNoKoto
Рекомендуемое значение 10k, согласно документации. Когда я подключаю по одному из них между выводом данных и V+, я все равно получаю на выходе 0, @ahemmetter
У меня была та же проблема, и я решил ее, изменив адрес I2C с 0x77 на 0x76 в Adafruit_BMP280.h
Хороший ответ, и было бы лучше, если бы у вас также было объяснение, @dhimaspw
причина изменения адреса I2C с 0x77 на 0x76 заключается в том, что у вас отключен SD0.
Если к SD0 на BMP280 ничего не подключено, адрес устройства по умолчанию 0x77.
Недавно я купил bmp280, который не является устройством Adafruit, и подключил его к esp32, и попытался загрузить код из тестовых примеров, но я получил ошибку: не найден действительный bmp 280, я искал в Google и нашел https://www.circuitschools.com/interfacing -bmp280-с-esp-32-на-i2c-с-ошибками-и-решениями/ я прочитал об ошибках адресов i2c, затем оттуда я скопировал код для сканера i2c и запустил его, чтобы получить правильный адрес i2c. Я проверил адрес I2c и заменил шестнадцатеричный адрес i2c в строке инициализации BMP.
Затем датчик сработал и показал температуру, давление и приблизительную высоту. Спасибо
- Что выбрать между датчиками температуры и влажности: AM230x или DHT22?
- Нужен усилитель сигнала датчика качества воздуха MQ135? Датчик более высокого качества?
- Датчик DHT11: режим ожидания или выключение?
- Проблема с подключением датчика сердцебиения и температуры на arduino uno, но работает по отдельности
- Проблема с условием if
- DHT20 и дисплей Oled не работают вместе
- Используйте маломощный Arduino с солнечной панелью
- Полностью контролируемая аквакультура на базе Arduino
Да, в техпаспорте производителя написано, что есть один встроенный (120 Ом), @ahemmetter
Что ж, я следовал этому руководству http://www.instructables.com/id/How-to-Use-the-Adafruit-BMP280-Sensor-Arduino-Tuto/step2/The-Circuit/. Где на схеме разместить такой резистор?, @ahemmetter