Подключите VCC к 3.3V (или к 5V, если на модуле есть стабилизатор), GND к земле, SDA к A4, SCL к A5 (для Arduino Uno). Установите библиотеку Adafruit BMP085. Подождите 2–3 минуты после подачи питания. Для точной высоты — калибруйте по актуальному давлению на уровне моря (≈1013.25 гПа).
Как подключить BMP180 к Arduino?
Модуль GY-68 имеет встроенный стабилизатор 3.3V и подтягивающие резисторы 10кΩ на линиях I²C. Это позволяет безопасно питать его от 5V Arduino.
flowchart LR
subgraph ARDUINO["🔌 Arduino UNO"]
A5V["5V (или 3.3V)"]
AGND["GND"]
AA4["A4 (SDA)"]
AA5["A5 (SCL)"]
end
subgraph BMP180["🌡️ GY-68 BMP180"]
VCC["VCC"]
GND["GND"]
SDA["SDA"]
SCL["SCL"]
end
A5V --> VCC
AGND --> GND
AA4 --> SDA
AA5 --> SCL
I²C пины для разных плат Arduino
| Плата Arduino | SDA | SCL |
|---|---|---|
| Uno / Nano / Pro Mini | A4 |
A5 |
| Mega 2560 | 20 |
21 |
| Leonardo / Micro | 2 |
3 |
| ESP8266 (NodeMCU) | D2 (GPIO4) |
D1 (GPIO5) |
| ESP32 | GPIO21 |
GPIO22 |
Распиновка модуля GY-68
- VCC
- Питание 3.3–5V (встроенный стабилизатор понизит до 3.3V)
- GND
- Земля
- SCL
- Тактовая линия I²C (Serial Clock)
- SDA
- Линия данных I²C (Serial Data)
- 3.3V
- Выход стабилизатора (можно не подключать или питать другие 3.3V устройства)
Проверьте наличие стабилизатора! Если на вашем модуле нет микросхемы стабилизатора — подавайте питание только 3.3V. Прямое подключение чипа BMP180 к 5V повредит его!
Какие библиотеки нужны для BMP180?
Для работы с BMP180 рекомендуется библиотека Adafruit BMP085, которая поддерживает оба датчика (BMP085 и BMP180 — совместимы).
-
Откройте менеджер библиотек Arduino IDE → Sketch → Include Library → Manage Libraries...
-
Найдите "Adafruit BMP085" Введите в поиске "BMP085". Выберите "Adafruit BMP085 Library" от Adafruit.
-
Установите зависимости IDE предложит установить "Adafruit Unified Sensor" и "Adafruit BusIO" — нажмите "Install All".
-
Перезапустите IDE После установки рекомендуется перезапустить Arduino IDE для корректной работы.
Альтернатива: библиотека SparkFun SFE_BMP180. Скачайте ZIP с GitHub и добавьте через Sketch → Include Library → Add .ZIP Library.
Пример кода для чтения давления и температуры
Этот скетч инициализирует датчик, считывает температуру, давление и вычисляет высоту над уровнем моря.
Serial Monitor: откройте его на скорости 9600 бод (Tools → Serial Monitor). Вы увидите обновление данных каждую секунду.
Как калибровать высотомер для точных показаний?
BMP180 вычисляет высоту по разнице между измеренным давлением и опорным давлением на уровне моря. Для точности нужно знать актуальное давление.
h = 44330 × (1 − (P / P₀)^0.1903)
где P — измеренное давление, P₀ — давление на уровне моря (стандарт 1013.25 гПа)
Два способа калибровки
-
По данным метеостанции Узнайте актуальный QNH (давление, приведённое к уровню моря) на meteo.gov.ua или weather.com. Подставьте это значение в
SEA_LEVEL_PRESSURE. -
По известной высоте Если вы знаете точную высоту вашего местоположения — используйте
bmp.readSealevelPressure(knownAltitude)для расчёта текущего P₀.
Погода влияет на высоту! Атмосферное давление меняется с погодой. Для точных абсолютных показаний высоты — калибруйте ежедневно или используйте только относительную высоту (разницу).
Устранение проблем
Ошибка "BMP180 не найден"
Проверьте: 1) Правильность подключения SDA/SCL (для Uno — A4/A5, для Mega — 20/21). 2) Подано ли питание на VCC. 3) Запустите I2C Scanner — датчик должен отвечать по адресу 0x77. 4) Попробуйте более короткие провода.
Показания температуры завышены на 2–5°C
Это нормально. BMP180 измеряет температуру собственного корпуса, а не воздуха. Он нагревается от работы и от рядом расположенных компонентов. Для точной температуры воздуха используйте отдельный датчик (DS18B20, DHT22).
Высота показывает неправильные значения
Причина — некорректный P₀. Стандартные 1013.25 гПа редко соответствуют реальности. Узнайте актуальное давление на уровне моря для вашего региона и подставьте в SEA_LEVEL_PRESSURE. Разница в 1 гПа = ~8 метров ошибки по высоте.
Нестабильные показания, "прыгают" значения
Возможные причины: 1) Слишком длинные провода I²C (>30 см) — укоротите или используйте экранированный кабель. 2) Помехи от других устройств — добавьте конденсатор 0.1 мкФ между VCC и GND. 3) Потоки воздуха — накройте датчик поролоном с отверстиями.
Можно ли подключить несколько BMP180 к одной шине I²C?
Нет напрямую. BMP180 имеет фиксированный адрес 0x77, его нельзя изменить. Для нескольких датчиков используйте I²C-мультиплексор (TCA9548A) или программное переключение питания датчиков.
Какая максимальная частота опроса датчика?
Зависит от режима: Ultra Low Power — до 200 Гц (4.5 мс), Standard — ~130 Гц (7.5 мс), High Resolution — ~75 Гц (13.5 мс), Ultra High Resolution — ~38 Гц (26 мс). Библиотека Adafruit по умолчанию использует максимальную точность.
Рекомендации для точных измерений
-
Дайте время на прогрев После подачи питания подождите 2–3 минуты перед точными измерениями. Датчик должен выйти на тепловое равновесие.
-
Изолируйте от тепла Размещайте датчик подальше от стабилизаторов напряжения, процессоров и других источников тепла. Используйте теплоизоляционную подложку.
-
Защитите от потоков воздуха Резкие потоки воздуха искажают показания. Накройте датчик поролоном или тканью с доступом для медленной диффузии воздуха.
-
Усредняйте показания Для стабильных данных считывайте 10–20 значений и вычисляйте среднее. Это уменьшит влияние шума и мгновенных колебаний.
-
Используйте короткие провода I²C рассчитан на расстояния до 20–30 см. Для более длинных соединений снизьте частоту шины до 100 кГц или используйте I²C-буфер.