Однажды, холодными осенними вечерами, или зимними, а может, даже и летними вечерами (собственно, у нас в России даже летом может быть очень холодно) вам захотелось собрать на платформе Arduino самый искусный проект из всех возможных – метеостанцию!
Для этого можно обойтись простым датчиком температуры и влажности, например, из семейства DHT. Согласитесь, недорогой и простой в использовании модуль, про который всегда можно найти много информации касаемо программных кодов и прочего. Но нет! Вам не хочется быть, как все, и вы покупаете специальный метеодатчик BME280, который способен измерять и давление, и температуру, и влажность. О нем-то мы сегодня и поговорим.
Для реализации проекта из этой статьи нам потребуются следующие компоненты:
13 комментариев. Оставить новый
В исходнике “Adafruit_BME280.h”
в строке:
“#define BME280_ADDRESS (0x77)”
потребно указать реальный ID забитый в купленный вами сенсор.
Они могут быть разными.
Поискать можно сканером I2C устройств. (в инете полно примеров, поищите “I2C сканер на Arduino” к примеру. Только если не будет компилироваться с ошибкой типа не для этой версии, замените строку “Wire.begin();” на “Wire.begin(0);”)
Здравствуйте! Благодарим за пояснение, сейчас добавим это в статью
При подключении датчика по I2C к Ардуино, никаких подтягивающих резисторов не нужно добавлять?
Здравствуйте! Нет, если вы приобретали модуль у нас – подтягивающие резисторы на нем уже установлены.
Добрый день! Какой сетч при подключении через i2c ? У вас указан только через spi
Здравствуйте! Скетч будет примерно такой
#include “Wire.h“
#include “BME280_I2C.h“
// Create BME280 object
BME280_I2C bme; // I2C using address 0x77
// or BME280_I2C bme(0x76); // I2C using address 0x76
void setup() {
Serial.begin(9600);
Serial.println(“Bosch BME280 Pressure – Humidity – Temp Sensor”);
if (!bme.begin()) {
Serial.println(“Could not find a valid BME280 sensor, check wiring!”);
while (1);
}
bme.setTempCal(-1);// Temp was reading high so subtract 1 degree
Serial.println(“Pressure\tHumdity\t\tTemp\ttTemp”);
}
void loop() {
bme.readSensor();
Serial.print(bme.getPressure_MB()); Serial.print(” mb\t”); // Pressure in millibars
Serial.print(bme.getHumidity()); Serial.print(” %\t\t”);
Serial.print(bme.getTemperature_C()); Serial.print(” *C\t”);
Serial.print(bme.getTemperature_F()); Serial.println(” *F”);
// Add a 2 second delay.
delay(2000); //just here to slow down the output.
}
Здравствуйте, сделал все, как было описано выше с одного компьютера и все запустилось. Сейчас попробовал с домашнего компьютера сделать и на мониторе порта показывает “Could not find a valid BME280 sensor, check wiring!”. С чем это может быть связано?
При заказе получил платку с BME280 без установленных стабилизатора на 3,3 В и преобразователя 3,3 – 5 В. На Mega2560 с питанием 3,3 В работает нормально. Но по I2C уровни управляющих сигналов 5 В. Не спалят ли они с течением времени мою платку, или советуете установить преобразователь уровней типа PCA9306?
одно время на рынке были эти модули с неверной маркировкой (зеркальной) контактов, при не верном подключение ничего не спалите, но работать не будет 🙂 проверяйте визуально все резисторы кроме одного идут на ногу питания.
Спасибо за подсказку!
Подключил модуль. при показании в 25 процентов влажности как то комфорт пропал и дышать тяжелее стало. В интернетах пишут что влажность должна быть 40 процентов типо норма. Я чего то не понимаю или датчик не то кажет?
Здравствуйте! При влажности воздуха менее 30% образуется ощущение сухости воздуха. Это нормально 🙂
Подскажите что сделать для показа давления в мм. ртут. стоба