Барометр BMP180 и GY-68 Arduino подключение

Датчик давления BMP180 Arduino позволяет создать барометр на Ардуино своими руками. С помощью сенсора можно создать метеостанцию для вашего дома, добавив в схему датчик температуры и влажности воздуха DHT11 и дисплей 1602 i2c. Рассмотрим, как правильно подключить датчик давления bmp180 к плате Ардуино и вывести данные о давлении воздуха на монитор порта или жидкокристаллический дисплей LCD 1602.
Необходимые компоненты:
- Arduino Uno / Arduino Nano / Arduino Mega
- сенсор давления bmp180 / gy68
- дисплей lcd 1602 i2c
- коннекторы
- библиотека SFE_BMP180.h и LiquidCrystal_I2C.h
- Как подключить датчик температуры DHT11
- Как подключить датчик температуры LM35
- Как подключить датчик температуры DS18B20
Датчик разработан для измерения атмосферного давления и он будет полезен в двух направлениях. Во-первых, по мере перемещения от уровня моря к горной вершине атмосферное давление снижается — это означает, что мы можем определить высоту по давлению атмосферы. Во-вторых, атмосферное давление меняется в зависимости от погоды, поэтому мы можем использовать сенсор для отслеживания изменений погоды.
BMP180 и GY-68 Arduino характеристики, распиновка

Характеристики BMP180 (datasheet)
- Напряжение питания: 3 — 5 В
- Энергопотребление: 5 мкА для измерения 1 раз в секунду
- Интерфейс: I2C
- Диапазон измерения давления: 300-1100 гПа
- Точность измерения: 0,03hPa (0,25 м)
- Диапазон измерения температуры: от -40°C до +85°C
Характеристики GY-68 (datasheet)
- Напряжение питания: 1.8 — 3.6 В
- Энергопотребление: 5 мкА для измерения 1 раз в секунду
- Интерфейс: I2C
- Диапазон измерения давления: от 300hPa до 1100hPa (от +9000 м до -500 м)
- Точность давления до 0.02hPa (0,17 м)
- Диапазон измерения температуры: от -40°C до +85°C
Барометр — это электронный прибор, измеряющий атмосферное давление. Современные барометры Arduino gy-68 и bmp180 основаны на пьезорезистивном или тензометрическом методе, т.е. датчики изменяют сопротивление материала под действием деформирующих сил. Обратите внимание, что модуль датчика давления GY-68 подключается к питанию 3,3 вольта, а модуль BMP180 к 5 вольтам от микроконтроллера Arduino Uno.
Как подключить давления BMP180 к Ардуино

| BMP180 / GY-68 | Arduino Uno | Arduino Nano | Arduino Mega |
| GND | GND | GND | GND |
| VDD | 5V | 5V | 5V |
| SDA | A4 | A4 | 20 |
| SCL | A5 | A5 | 21 |
Подключение к микроконтроллеру осуществляется через интерфейс I2C. Контакты SCL / SDA и питание модуля выведены на контактную группу. Кроме того, для работы с датчиком необходимо установить библиотеку BMP180 Breakout, которая упрощает работу с модулем. Команды для модуля bmp180 (bmp080) и gy-68 одинаковы, поэтому библиотека SFE_BMP180.h будет отлично работать для всех перечисленных сенсоров.
Скетч для датчика давления BMP180 и GY-68
#include "Wire.h" #include "SFE_BMP180.h" SFE_BMP180 pressure; #define ALTITUDE 1655.0 void setup() < Serial.begin(9600); pressure.begin(); >void loop() < char status; double T,P,p0,a; Serial.println(); Serial.print("provided altitude: "); Serial.print(ALTITUDE,0); Serial.println(" meters"); status = pressure.startTemperature(); if (status != 0)< delay(status); status = pressure.getTemperature(T); if (status != 0)< Serial.print("temperature: "); Serial.print(T,2); Serial.println(" deg C"); 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"); 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); >
Барометр на Ардуино своими руками с дисплеем

| LCD 1602 i2c | Arduino Uno | Arduino Nano | Arduino Mega |
| GND | GND | GND | GND |
| VDD | 5V | 5V | 5V |
| SDA | A4 | A4 | 20 |
| SCL | A5 | A5 | 21 |
В следующем примере на lcd дисплее 1602 i2c отображаются данные о температуре и давлении при одновременном подключении двух устройств к шине i2c. Всего к шине i2c Arduino можно подключить до 127 устройств. Подключите текстовый дисплей к микроконтроллеру Ардуино в соответствии со схемой, размещенной выше, и загрузите следующую программу для барометра с датчиком давления GY-68 (BMP180).
Скетч для барометра на Ардуино своими руками
#include "Wire.h" #include "SFE_BMP180.h" SFE_BMP180 pressure; #define ALTITUDE 1655.0 #include "LiquidCrystal_I2C.h" LiquidCrystal_I2C LCD(0x27,16,2); void setup() < pressure.begin(); LCD.init(); 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); 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); 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 позволяет использовать этот модуль во многих проектах для начинающих программистов. Надеемся, что этот обзор был полезен для вас, а если у вас есть вопросы по работе с модулем bmp180 (gy-68) — оставляйте их в комментариях к этой статье. Мы сделаем все возможное, чтобы ответить на любые вопросы.
Как подключить датчик воды к Ардуино

Перед тем как, подключить датчик протечки воды к плате Ардуино, следует написать скетч. Откройте программу Arduino IDE и вы увидите скетч, где уже прописаны процедуры void setup() и void loop() . Для начала зададим переменную water с помощью оператора int . Переменную мы будем использовать для хранения данных в памяти и присваивания ей значения, получаемого с датчика воды.

В процедуре void setup() мы прописываем режим работы аналогового порта, как вход — команда pinMode(AO,INPUT) и подключаем монитор порта с помощью Serial.begin(9600) . Далее в процедуре void loop() получаем значение с аналогового порта с помощью команды water = analogRead(A0); и передаем значение на монитор порта Arduino IDE Serial.println(water); и ставим паузу для нашего удобства.
Скетч для датчика воды (water sensor)
int water; // присваиваем имя для значений с аналогового входа A0 void setup() < pinMode(A0, INPUT); // к входу A0 подключим датчик (англ. «intput») Serial.begin(9600); // подключаем монитор порта > void loop() < water = analogRead(A0); // переменная "water" находится в интервале от 0 до 1023 Serial.println(water); // выводим значение датчика на монитор delay(1000); // задержка в одну секунду >
Пояснения к коду:
- в первой строчке мы присвоили переменной int имя water для хранения значений c входа A0, значения water могут принимать только целое число.
После загрузки скетча вы сможете получить данные с датчика на мониторе порта. Для этого перейдите в Arduino IDE в Панель меню — Инструменты — Монитор порта. Или используйте для открытия сочетание клавиш Ctrl + Shift + M. После того, как мы узнали показания датчика при его увлажнении, мы можем добавить в скетч функцию автоматического включения светодиода при превышении какого-либо значения.
Скетч для датчика воды и светодиода Ардуино
int water; // присваиваем имя для значений с аналогового входа A0 void setup() // процедура setup < pinMode(12, OUTPUT); // пин 12 со светодиодом будет выходом (англ. «output») pinMode(A0, INPUT); // к входу A0 подключим датчик (англ. «intput») Serial.begin(9600); // подключаем монитор порта > void loop() // процедура loop < water = analogRead(A0); // переменная "water" находится в интервале от 0 до 1023 if (water > 100) < digitalWrite(12, HIGH); > // включаем светодиод if (water < 100) < digitalWrite(12, LOW); > // выключаем светодиод Serial.println(water); // выводим значение датчика на монитор delay(1000); // задержка в одну секунду >
Пояснения к коду:
- условный оператор if позволяет определить действие при истинном условии;
- в процедуре void loop с помощью оператора if включаем светодиод при значении water > 100 и выключаем светодиод при значении water < 100 .
Arduino BMP180 (GY-68) как подключить барометр

Датчик давления 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) — оставляйте их в комментариях к этой записи. Мы стараемся отвечать на все вопросы пользователей.
Датчик давления воды для ардуино

Среди множества датчиков для ардуино нашлось место датчику давления воды. Как понятно из названия, датчик давления воды для ардуино измеряет давление создаваемое водой. Это полезно знать, например в квартире на верхних этажах, или в частном доме.
Модель датчика давления воды для ардуино представлен на алиэкспрессе моделью USP-G41-1.2. Внешний вид датчика представлен на рисунке ниже:

Датчик давления воды USP-G41-1.2 преобразует давление воды в напряжение в виде линейной зависимости.
Характеристики датчика

Программный код Arduino IDE для работы с датчиком давления
#define SENSOR A0 // Пин на который подключен датчик void setup() < Serial.begin(9600); >void loop() < int raw = analogRead(SENSOR); float voltage = (float) raw * 5.0 / 1024.0; // напряжение на измерительном контакте ардуино Serial.println("Pressure is"); float pressure_kPa = (voltage - 0.5) / 4.0 * 1200.0; // перевод напряжения в давление Serial.print(pressure_kPa); Serial.println(" kPa"); float pressure_psi = pressure_kPa * 0.14503773773020923; // перевод кПа в psi Serial.print(pressure_psi); Serial.println(" psi"); delay(500); >
- Выход датчика (OUT) подключается к аналоговому контакту А0 Ардуино.
- В строчке float pressure_kPa = (voltage — 0.5) / 4.0 * 1200.0; вычисляется значение давления датчика учитывая измеряемый диапазон.
- Строчка float pressure_psi = pressure_kPa * 0.14503773773020923; переводит давление из КилоПаскалей в единицы psi.
Также учитывайте, что данный датчик имеет температурную погрешность. Ее, при необходимости, нужно учитывать.