ESP32 с барометрическим датчиком BMP180 — Руководство

В этом руководстве показано, как использовать барометрический датчик BMP180 с ESP32 для считывания давления, температуры и оценки высоты. Мы покажем, как подключить датчик к ESP32, установить необходимую библиотеку и написать скетч в Arduino IDE.

ESP32 с барометрическим датчиком BMP180 — Руководство

Знакомство с барометрическим датчиком BMP180

BMP180 — это цифровой датчик давления, который измеряет абсолютное давление окружающего воздуха.

Барометрический датчик BMP180

Он имеет диапазон измерений от 300 до 1100 гПа с точностью до 0,02 гПа.

Поскольку температура влияет на давление, датчик оснащён встроенным температурным сенсором для компенсации показаний давления с учётом температуры.

Кроме того, поскольку давление изменяется в зависимости от высоты, вы также можете оценить высоту на основе текущего измерения давления.

Подключение датчика BMP180 к ESP32

Барометрический датчик BMP180 использует протокол связи I2C. Поэтому необходимо использовать выводы SDA и SCL на ESP32.

В следующей таблице показано, как подключить датчик.

BMP180

ESP32

Vin

3.3V

GND

GND

SCL

GPIO 22 (SCL)

SDA

GPIO 21 (SDA)

Считывание температуры, давления и высоты

В этом разделе мы покажем, как считывать давление и температуру с барометрического датчика BMP180 с помощью ESP32. Мы также покажем, как оценить высоту.

Необходимые компоненты

Для этого примера вам понадобятся следующие компоненты:

Вы можете использовать ссылки выше или перейти непосредственно на MakerAdvisor.com/tools, чтобы найти все компоненты для ваших проектов по лучшей цене!

Схема подключения

Подключите барометрический датчик BMP180 к ESP32, как показано на следующей схеме.

Схема подключения BMP180 к ESP32

Подготовка платы ESP32 в Arduino IDE

Чтобы загрузить код на ESP32 с помощью Arduino IDE, необходимо установить дополнение для Arduino IDE, которое позволяет программировать ESP32 с использованием Arduino IDE и его языка программирования. Следуйте одному из следующих руководств для подготовки Arduino IDE:

Установка библиотеки BMP_085

Один из самых простых способов считывания давления, температуры и высоты с датчика BMP180 — использование библиотеки BMP_085 от Adafruit. Эта библиотека совместима с датчиками BMP085 и BMP180. Выполните следующие шаги для установки библиотеки в Arduino IDE:

Откройте Arduino IDE и перейдите в Sketch > Include Library > Manage Libraries. Откроется менеджер библиотек.

Введите «BMP085» в поле поиска и установите библиотеку BMP085 от Adafruit.

Установка библиотеки BMP085 BMP180

После установки перезапустите Arduino IDE.

Код

Библиотека предоставляет пример, показывающий, как получить температуру, давление и высоту. Перейдите в File > Examples > Adafruit BMP085 Library > BMP085test.

/*
 * Rui Santos
 * Complete Project Details https://randomnerdtutorials.com
*/

#include <Wire.h>
#include <Adafruit_BMP085.h>

Adafruit_BMP085 bmp;

void setup() {
  Serial.begin(9600);
  if (!bmp.begin()) {
     Serial.println("Could not find a valid BMP085/BMP180 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(102000));
  Serial.println(" meters");

  Serial.println();
  delay(500);
}

Просмотреть исходный код

Код начинается с подключения необходимых библиотек:

#include <Wire.h>
#include <Adafruit_BMP085.h>

Создаётся объект Adafruit_BMP085 с именем bmp.

Adafruit_BMP085 bmp;

В функции setup() инициализируется датчик:

void setup() {
  Serial.begin(9600);
  if (!bmp.begin()) {
     Serial.println("Could not find a valid BMP085/BMP180 sensor, check wiring!");
     while (1) {}
  }
}

Считывание температуры

Для считывания температуры достаточно использовать метод readTemperature() объекта bmp:

bmp.readTemperature()

Считывание давления

Считывание давления также не вызывает сложностей. Используется метод readPressure().

bmp.readPressure()

Показания давления выводятся в единицах Паскаль.

Считывание высоты

Поскольку давление изменяется в зависимости от высоты, вы можете оценить текущую высоту, сравнив давление с давлением на уровне моря.

Пример предлагает два различных способа оценки высоты.

1. Первый способ предполагает стандартное барометрическое давление 10132 Паскаль на уровне моря. Высота определяется следующим образом:

bmp.readAltitude()

2. Второй способ использует текущее давление на уровне моря. Например, если в данный момент давление на уровне моря составляет 101500 Па, нужно просто передать 101500 в качестве аргумента метода readAltitude() следующим образом:

bmp.readAltitude(101500)

Демонстрация

Загрузите код на ESP32. Убедитесь, что выбрана правильная плата и COM-порт.

ESP32 с барометрическим датчиком BMP180 — демонстрация

Затем откройте монитор порта (Serial Monitor) на скорости 9600 бод. Вы должны увидеть показания датчика, как показано на следующем рисунке.

ESP32 с BMP180 — показания давления, температуры и высоты в Serial Monitor

Заключение

В этом руководстве мы показали, как использовать барометрический датчик BMP180 с ESP32 для считывания давления, температуры и оценки высоты.

Теперь вы можете развить этот проект дальше и отобразить последние показания датчика на веб-сервере. У нас есть несколько примеров, которые можно модифицировать для отображения показаний:

Мы надеемся, что это руководство было для вас полезным. Если вас интересует ESP32, обязательно ознакомьтесь со следующими ресурсами:

Спасибо за чтение.

Примечание

Это перевод статьи с сайта :doc:`Random Nerd Tutorials <../esp32-with-bmp180-barometric-sensor/index>`_.