СОДЕРЖАНИЕ ►
Датчик давления BMP180 позволяет сделать простой барометр с платой Ардуино Нано или Уно. С помощью данного датчика можно создать погодную метеостанцию для дома, добавив к схеме датчик температуры и дисплей 1602 I2C. Рассмотрим, как правильно подключить датчик давления к Arduino bmp180 (bmp080) и вывести данные об атмосферном давлении на монитор порта Arduino IDE и LCD дисплей 1602.

Датчик давления Ардуино BMP180 (GY-68)
Барометр — это устройство, измеряющее атмосферное давление. Современные электронные барометры GY-68 и BMP180 основаны на пьезорезистивном или тензометрическом методе, т.е. в датчиках происходит изменение сопротивления материала под действием деформирующих сил. Обратите внимание, что датчик атмосферного давления GY-68 подключается к питанию 3,3 Вольт Arduino.

Технические характеристики BMP180
- Напряжение питания: 5 Вольт
- Рабочий ток: 0.5 мАмпер
- Диапазон измерения: 300 гПа – 1100 гПа
- Интерфейс подключения: I2C
- Время срабатывания: 4.5 мс.
- Точность измерения давления: 0,1 гПа.
- Диапазон измерения температуры: 0 — 65 °C.
Подключение датчика bmp180 к Ардуино
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- датчик давления BMP180 (GY-68);
- дисплей LCD 1602;
- провода «папа-мама».

| BMP180 (GY-68) | Arduino Uno | Arduino Nano | Arduino Mega |
| GND | GND | GND | GND |
| VIN | 5V | 5V | 5V |
| SDA | A4 | A4 | 20 |
| SCL | A5 | A5 | 21 |
Подключение к микроконтроллеру Ардуино осуществляется по интерфейсу I2C. Контакты SCL / SDA и питание модуля выведены на группу контактов. Кроме того, для работы с датчиком потребуется установить библиотеку BMP180 Breakout Arduino Library, которая позволяет упросить работу с модулем. Команды для bmp180 (bmp080) и gy-68 одинаковые, так что библиотека подойдет для всех перечисленных барометров.
Барометр на Ардуино своими руками
#include "Wire.h" #include "SFE_BMP180.h" SFE_BMP180 pressure; // создаем объект pressure #define ALTITUDE 1655.0 // высота офиса SparkFun, штат Колорадо, в метрах void setup(){ Serial.begin(9600); // запускаем монитор порта pressure.begin(); // запускаем датчик давления } void loop(){ char status; double T,P,p0,a; // для точного измерения, следует знать высоту, на которой производятся замеры // в этом примере используется константа ALTITUDE Serial.println(); Serial.print("provided altitude: "); Serial.print(ALTITUDE,0); Serial.println(" meters"); // перед измерением давления, следует узнать температуру // если запрос успешен, то возвращается время ожидания в миллисекундах // если запрос на измерение температуры не успешен, то возвращается 0 status = pressure.startTemperature(); if (status != 0){ delay(status); // результат измерения температуры сохраняется в переменной T status = pressure.getTemperature(T); if (status != 0){ Serial.print("temperature: "); Serial.print(T,2); Serial.println(" deg C"); // запускаем измерение давления // если запрос успешен, возвращается время ожидания в миллисекундах // если запрос на измерение давления не успешен, возвращается 0 status = pressure.startPressure(3); if (status != 0){ delay(status); status = pressure.getPressure(P,T); if (status != 0){ Serial.print("absolute pressure: "); Serial.print(P,2); Serial.print(" mb, "); Serial.print(P*0.0295333727,2); Serial.println(" inHg"); // датчик bmp180 возвращает абсолютное давление, которое зависит от высоты // параметры: P = абсолютное давление в мб, ALTITUDE = текущая высота в м. // результат: p0 = давление с компенсацией на уровне моря в мбар p0 = pressure.sealevel(P,ALTITUDE); Serial.print("relative (sea-level) pressure: "); Serial.print(p0,2); Serial.print(" mb, "); Serial.print(p0*0.0295333727,2); Serial.println(" inHg"); } else Serial.println("error retrieving pressure measurement\n"); } else Serial.println("error starting pressure measurement\n"); } else Serial.println("error retrieving temperature measurement\n"); } else Serial.println("error starting temperature measurement\n"); delay(5000); }
Пояснения к коду:
- чтобы убрать влияние высоты при измерении атмосферного давления, используйте функцию уровня моря и текущую высоту;
- скачать библиотеку SFE_BMP180.h для работы с датчиком атмосферного давления BMP180 Arduino можно на нашем сайте здесь.
Барометр на Ардуино BMP180 LCD1602

В следующем примере данные температуры и давления выводятся на текстовый экран (на дисплей не входит вся информация), при этом к шине i2c два устройства сразу подключено. Всего к шине i2c можно подключать до 127 устройств. Подключите к микроконтроллеру текстовый экран (согласно схеме, размещенной выше) и загрузите следующий пример программы для датчика давления GY-68 Arduino Uno.
#include "Wire.h" #include "SFE_BMP180.h" SFE_BMP180 pressure; // создаем объект pressure #define ALTITUDE 1655.0 // высота офиса SparkFun, штат Колорадо, в метрах #include <LiquidCrystal_I2C.h> // подключаем библиотеку для QAPASS 1602 LiquidCrystal_I2C LCD(0x27,16,2); // присваиваем имя LCD для дисплея void setup(){ pressure.begin(); // запускаем датчик давления LCD.init(); // инициализация LCD дисплея LCD.backlight(); // включение подсветки дисплея } void loop(){ char status; double T,P,p0,a; // выводим значение температуры на дисплей status = pressure.startTemperature(); if (status != 0){ delay(status); status = pressure.getTemperature(T); if (status != 0){ LCD.setCursor(0, 0); // ставим курсор на 1 строку LCD.print("Temp: "); LCD.print(T,2); LCD.print(" *C"); // выводим значение давления на дисплей status = pressure.startPressure(3); if (status != 0){ delay(status); status = pressure.getPressure(P,T); if (status != 0){ p0 = pressure.sealevel(P,ALTITUDE); LCD.setCursor(0, 1); // ставим курсор на 2 строку LCD.print("Pres: "); LCD.print(p0,2); LCD.print(" mb, "); } else Serial.println("error retrieving pressure measurement\n"); } else Serial.println("error starting pressure measurement\n"); } else Serial.println("error retrieving temperature measurement\n"); } else Serial.println("error starting temperature measurement\n"); delay(5000); }
Пояснения к коду:
- изменив программу, вы можете выводить на экран не значение температуры, а абсолютное и относительное атмосферное давление;
- при изменении температуры воздуха, происходит корректировка давления.
Заключение. Датчик давления воздуха bmp180 очень прост в подключении к плате, а библиотека SFE_BMP180 позволяет без труда использовать этот модуль во многих DIY проектах для начинающих. Надеемся, что этот обзор был для вас полезен, а если у вас остались вопросы по работе с модулем bmp180 (gy-68) — оставляйте их в комментариях к этой записи. Мы стараемся отвечать на все вопросы пользователей.










Добавить комментарий