ESP32 с барометрическим датчиком BMP180 — Руководство
В этом руководстве показано, как использовать барометрический датчик BMP180 с ESP32 для считывания давления, температуры и оценки высоты. Мы покажем, как подключить датчик к ESP32, установить необходимую библиотеку и написать скетч в Arduino IDE.
Знакомство с барометрическим датчиком 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, как показано на следующей схеме.
Подготовка платы 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.
После установки перезапустите 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-порт.
Затем откройте монитор порта (Serial Monitor) на скорости 9600 бод. Вы должны увидеть показания датчика, как показано на следующем рисунке.
Заключение
В этом руководстве мы показали, как использовать барометрический датчик BMP180 с ESP32 для считывания давления, температуры и оценки высоты.
Теперь вы можете развить этот проект дальше и отобразить последние показания датчика на веб-сервере. У нас есть несколько примеров, которые можно модифицировать для отображения показаний:
Мы надеемся, что это руководство было для вас полезным. Если вас интересует ESP32, обязательно ознакомьтесь со следующими ресурсами:
:doc:`Начало работы с ESP32 <../getting-started-with-esp32/index>`_
:doc:`Веб-сервер ESP32 — Arduino IDE <../esp32-web-server-arduino-ide/index>`_
Спасибо за чтение.
Примечание
Это перевод статьи с сайта :doc:`Random Nerd Tutorials <../esp32-with-bmp180-barometric-sensor/index>`_.