BMP085 и Arduino: измерване на температура, налягане и височина

BMP085 и Arduino измерване на температура, налягане и височина

Въведение

Сензорът BMP085 е популярен барометричен датчик, използван за измерване на температура, атмосферно налягане и височина над морското равнище. Той използва I2C комуникация, което го прави изключително лесен за интеграция с различни микроконтролери, като например Arduino. В тази статия ще покажем как да свържем BMP085 към Arduino Uno и как да съберем и обработим данни от сензора с помощта на предварително подготвен код.

Свързване

За да използвате BMP085 с Arduino Uno, е необходимо да свържете сензора правилно. Ето как се прави това:

  • VCC: Свържете към 3.3V (важно е да не свързвате към 5V, защото може да повредите сензора).
  • GND: Свържете към земя (GND) на Arduino.
  • SCL: Свържете към аналоговия пин A5 на Arduino Uno (това е линията за тактов сигнал при I2C).
  • SDA: Свържете към аналоговия пин A4 на Arduino Uno (това е линията за данни при I2C).
BMP085 и Arduino измерване на температура, налягане и височина схема

Статията ни с ревю на Arduino UNO, ще ви помогне за правилното свързване на компонентите.

Инсталиране на библитека за BMP085

BMP085 инсталиране на библиотеката с Arduino IDE

За да инсталирате библиотеката BMP180 в средата на Arduino, следвайте следните стъпки. Отворете Arduino IDE и изберете Sketch > Include Library > Manage Libraries…. В прозореца на библиотеките въведете “BMP180” в полето за търсене. Потърсете библиотеката, разработена от Adafruit, и натиснете бутона Install. Това ще инсталира библиотеката и всички зависимости, необходими за правилната работа. Ако предпочитате, можете да изтеглите библиотеката директно от GitHub или от нашия сайт: линк. След това можете да я добавите ръчно към Arduino IDE. Ако не знаете как да направите това, ще ви насоча към нашата страница: Arduino IDE бърз преглед

BMP085 и Arduino код за измерване на температура, налягане и височина с

Примерен код, който използва библиотеката Adafruit BMP085, за да прочете и изведе стойностите за температура, налягане и височина:

#include <Adafruit_BMP085.h>

// Connect VCC of the BMP085 sensor to 3.3V (NOT 5.0V!)
// Connect GND to Ground
// Connect SCL to i2c clock - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 5
// Connect SDA to i2c data - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 4

Adafruit_BMP085 bmp;
  
void setup() {
  Serial.begin(9600);
  if (!bmp.begin()) {
	Serial.println("Could not find a valid BMP085 sensor, check wiring!");
	while (1) {}
  }
}
  
void loop() {
    Serial.print("Temperature = ");
    Serial.print(bmp.readTemperature());
    Serial.println(" *C");
    
    Serial.print("Pressure = ");
    Serial.print(bmp.readPressure());
    Serial.println(" Pa");
    
    // Calculate altitude assuming 'standard' barometric
    // pressure of 1013.25 millibar = 101325 Pascal
    Serial.print("Altitude = ");
    Serial.print(bmp.readAltitude());
    Serial.println(" meters");

    Serial.print("Pressure at sealevel (calculated) = ");
    Serial.print(bmp.readSealevelPressure());
    Serial.println(" Pa");

  // you can get a more precise measurement of altitude
  // if you know the current sea level pressure which will
  // vary with weather and such. If it is 1015 millibars
  // that is equal to 101500 Pascals.
    Serial.print("Real altitude = ");
    Serial.print(bmp.readAltitude(101500));
    Serial.println(" meters");
    
    Serial.println();
    delay(500);
}

Пълно Обяснение на Кода:

Включване на библиотеката и дефиниране на обект

#include <Adafruit_BMP085.h>

Този ред включва библиотеката Adafruit BMP085, която улеснява взаимодействието със сензора. Библиотеката съдържа всички функции, необходими за извличане на измерените стойности за температура, налягане и височина.

Създаване на обект за сензора

Adafruit_BMP085 bmp;

Създаваме обект bmp, чрез който ще комуникираме със сензора и ще четем данните от него.

Функция setup()

void setup() {
  Serial.begin(9600);
  if (!bmp.begin()) {
    Serial.println("Could not find a valid BMP085 sensor, check wiring!");
    while (1) {}
  }
}
  • Serial.begin(9600): Стартираме серийната комуникация със скорост от 9600 бод, за да можем да следим данните на компютъра през серийния монитор.
  • bmp.begin(): Инициализираме сензора BMP085. Ако сензорът не е открит (поради неправилно свързване или хардуерен проблем), се изписва съобщение и програмата влиза в безкраен цикъл, за да се избегнат по-нататъшни грешки.

Функция loop()

Тази функция се изпълнява многократно и извършва измерванията.

Измерване на температура

Serial.print("Temperature = ");
Serial.print(bmp.readTemperature());
Serial.println(" *C");
  • bmp.readTemperature(): Тази функция чете текущата температура от сензора и я връща в градуси по Целзий.

Измерване на атмосферното налягане

Serial.print("Pressure = ");
Serial.print(bmp.readPressure());
Serial.println(" Pa");
  • bmp.readPressure(): Чете атмосферното налягане и го връща в Паскали.

Изчисляване на височината

Serial.print("Altitude = ");
Serial.print(bmp.readAltitude());
Serial.println(" meters");
  • bmp.readAltitude(): Изчислява височината, като използва стандартната барометрична стойност на налягането (1013.25 mbar). Тази функция изчислява височината на база текущото налягане.

Пресмятане на налягане на морското равнище

Serial.print("Pressure at sealevel (calculated) = ");
Serial.print(bmp.readSealevelPressure());
Serial.println(" Pa");
  • bmp.readSealevelPressure(): Изчислява и връща налягането на морското равнище в Паскали.

По-прецизно измерване на височината

Serial.print("Real altitude = ");
Serial.print(bmp.readAltitude(101500));
Serial.println(" meters");
  • Можете да получите по-прецизно измерване на височината, ако знаете текущото налягане на морското равнище. В този пример то е зададено на 101500 Паскала (или 1015 mbar).

Заключение

С помощта на този примерен проект, можем лесно да измерим температура, атмосферно налягане и височина, използвайки BMP085 сензор и Arduino. Чрез този прост код се демонстрира колко удобен е този сензор за интеграция и събиране на данни за околната среда. BMP085 е отличен избор за проекти, в които се изисква информация за атмосферните условия.

Translate »