Arduino MPL3115A2
тел. +7(499)347-04-82
Описание Arduino MPL3115A2
MPL3115A2 — Барометрический датчик давления, высоты и температуры
Описание
MPL3115A2 — это высокоточный цифровой датчик абсолютного давления, барометрической высоты и температуры от NXP Semiconductors (ранее Freescale). Датчик построен на технологии MEMS с пьезорезистивным чувствительным элементом и полностью интегрированным цифровым интерфейсом I²C.
Основные особенности:
- Измерение абсолютного атмосферного давления в диапазоне 20–110 кПа
- Расчёт барометрической высоты с разрешением до 0.03 м (в режиме альтиметра)
- Встроенный датчик температуры с точностью ±1 °C
- 32-битный FIFO-буфер для хранения результатов измерений
- Программируемые пороги прерываний (для wake-up и оповещений)
- Автономный режим с установкой частоты опроса (1–128 Гц)
- Регистры считываются через I²C (адрес по умолчанию 0x60, опционально 0x60/0x61)
Применение:
- Метеостанции и портативные барометры
- Альтиметры (дроны, парапланы, навигация)
- Умные часы и фитнес-трекеры
- IoT и погодные сенсорные узлы
- Индикация изменения высоты в помещениях (этажи)
Модуль обычно поставляется в виде breakout-платы (совместимой с SparkFun, Adafruit, GY-63 и др.), питание 3.3 В, логика I²C 3.3 В (некоторые платы имеют level shifter на 5 В).
Технические характеристики
| Параметр | Значение | |---|---| | Напряжение питания | 1.95 – 3.6 В (стандарт 3.3 В) | | Интерфейс | I²C (до 400 кГц) | | I²C адрес | 0x60 (7-бит), заводской | | Диапазон давления | 20 – 110 кПа (200 – 1100 гПа) | | Разрешение по давлению | 0.01 кПа (режим барометра) | | Точность давления | ±0.4 кПа (тип.), ±0.8 кПа (макс.) при 25 °C | | Разрешение по высоте | 0.03 м (в режиме альтиметра) | | Диапазон температуры | −40 … +85 °C | | Точность температуры | ±1 °C (тип.) в рабочем диапазоне | | Разрешение температуры | 0.0625 °C | | Частота измерения | до 128 Гц (программируемая) | | Время преобразования | 512 мкс (тип.) | | FIFO | 32 записи | | Потребление (active) | ~8.5 мкА (1 Гц, ожидание) / ~40 мкА (active) | | Потребление (standby) | ~2 мкА | | Корпус | LGA 8-pin, 3 × 3 × 1.1 мм | | Рабочая температура | от −40 до +85 °C |
Парт-номера (Part Numbers)
| Производитель | Парт-номер | Примечание | |---|---|---| | NXP / Freescale | MPL3115A2 | Базовый чип | | NXP | MPL3115A2R1 | Tape & Reel, 1 шт/катушка вариант | | NXP | MPL3115A2T1 | 1000 pcs/Reel | | NXP | MPL3115A2T1R1 | Альтернативная упаковка Reel | | SparkFun | SEN-11084 | Breakout Board, rev 1 | | SparkFun | SEN-11084 (BoB) | Идентичный модуль, встречается в наборе «Weather Shield» | | SparkFun | DEV-11167 | Модуль с расширителем портов (для Weather Shield) | | Adafruit | 1893 | Adafruit MPL3115A2 Breakout (3.3 V) | | Adafruit | 1893-ND (Digi-Key) | То же, у Digi-Key | | GY (generic) | GY-63 | Китайский breakout, совместим с SparkFun-схемой | | Seeed Studio | 308030005 | Grove Barometer (обвязка промышленная) |
Аналоги (близкие по назначению, но НЕ пин-код совместимые при замене чипа):
- BMP180/BMP280 (Bosch)
- BME280 (Bosch, + влажность)
- MS5611/MS5607 (TE, точнее, но другой интерфейс SPI/I²C и другой адрес)
- LPS25HB / LPS22HB (STMicroelectronics)
Примечание: Прямой функциональный аналог от Teh: MSP3115A2. Ткже старая версия — MPL3115A2R1. Будьте внимательны при заказе: индуксы используют одинаковую маркировку «MPL3115A2».
Совместимые модели и контроллеры
Поскольку датчик работает через I²C и питается от 3.3 В, он совместим с большинством популярных платформ. Ниже — список типовых плат и то, что нужно для подключения:
| Платформа | Совместимость | Уровень логики / решение | |---|---|---| | Arduino Uno / Nano / Mega | ✅ напрямую | 5 В → нужен level shifter либо модуль с reg и шифтером (SEN-11084 уже имеет 3.3 V регулятор и шифтер) | | Arduino Due / Zero | ✅ напрямую | 3.3 V логика — прямое подключение | | Arduino MKR series | ✅ напрямую | 3.3 V, напрямую | | Arduino Giga R1 | ✅ напрямую | 3.3 V | | ESP8266 (NodeMCU/Wemos) | ✅ указывают | 3.3 V логика, прямое подключение (SDA=GPIO4/D2, SCL=GPIO5/D1) | | ESP32 / ESP32-S3 / C3 | ✅ | 3.3 V, прямо, любые свободные I²C-пины | | Raspberry Pi 3/4/5, Zero | ✅ | 3.3 V, I²C-1 (BCM 2/3), библиотека Adafruit CircuitPython / smbus2 | | Raspberry Pi Pico (RP2040) | ✅ | 3.3 V, MicroPython / Arduino-pico | | STM32 (Blue Pill, Nucleo, F4/F7) | ✅ | Использовать HAL I²C; 3.3 V — напрямую | | Teensy 3.x / 4.x | ✅ | 3.3 V / допускается 5 В при level shifting | | XBee, Particle Photon/Boron/Electron | ✅, GPIO зависит | Все платы Particle имеют 3.3 V | | Beaglebone Black | ✅ | Через стандартный I²C (использовать дистрибутивы Adafruit BBIO) | | BBC micro:bit | ⚠️ ограниченно | Через пин breakout и I²C-хакер (нет нативной библиотеки) |
Логика безопасности:
- Прямое 5 В GPIO → блок датчика НЕЛЬЗЯ — это уменьшит уровень логики или легко откажется от модели Adafruit для полного закрытия решений. Датчик MPL3115A2 требует той же версии актуальной версии Adafruit (V2031521027 etc).
- **Использовать add-on (SparkFun SEN-11084 — с LM317 генератор 3.3 В и транзисторами level-shift), либо отдельная плата LT115 SDA/SCL low).
Быстрый пример на Arduino
#include <Wire.h>
#include <Adafruit_MPL3115A2.h>
Adafruit_MPL3115A2 baro = Adafruit_MPL3115A2();
void setup() {
Serial.begin(9600);
if (!baro.begin()) {
Serial.println("MPL3115A2 не найден!");
while (1);
}
baro.setModeAltimeter(); // режим альтиметра
baro.setOversampleRate(7); // высокая точность
baro.enableEventFlags();
// Опционально — калибровка по известной высоте:
// baro.setSeaPressure(1013.25);
}
void loop() {
float p = baro.getPressure();
float a = baro.getAltitude();
float t = baro.getTemperature();
Serial.print("P="); Serial.print(p, 2);
Serial.print(" hPa Alt="); Serial.print(a, 2);
Serial.print(" m T="); Serial.print(t, 2); Serial.println(" C");
delay(1000);
}
Полезные ссылки и документация
- Datasheet NXP MPL3115A2: AN4519 / MMPL3115A2.pdf
- Библиотека: Adafruit_MPL3115A2_Library (Arduino IDE) или emulare-ar-mpl34115 / SparkFun MPL3115A2 Breakout Arduino Library
- Заметка application note AN4519: "Data Manipulation and Basic Settings of the MPL3115A2"
Хочешь, чтобы я отдельно расписал подключение к конкретной плате (ESP32 / ESP8266 / rPi /STM32) со схемой распиновки и тестовым скетчем?