Skip to main content

Meadow.Foundation.Sensors.Atmospheric.MPL115A2

Mpl115a2
StatusStatus badge: in-progress
Source codeGitHub
Datasheet(s)GitHub
NuGet packageNuGet Gallery for Meadow.Foundation.Sensors.Atmospheric.Mpl115a2

The MPL115A2 is a low cost device for reading barometric pressure.

  • I2C digital interface (address: 0x60)
  • Resolution: 1.5 hPa
  • Range: 100-1150 hPa up to 10Km

Sample projects available on GitHub

Code Example

Mpl115a2 sensor;

public override Task Initialize()
{
Console.WriteLine("Initializing...");

sensor = new Mpl115a2(Device.CreateI2cBus());

var consumer = Mpl115a2.CreateObserver(
handler: result =>
{
Console.WriteLine($"Observer: Temp changed by threshold; new temp: {result.New.Temperature?.Celsius:N2}C, old: {result.Old?.Temperature?.Celsius:N2}C");
},
filter: result =>
{
//c# 8 pattern match syntax. checks for !null and assigns var.
if (result.Old?.Temperature is { } oldTemp &&
result.New.Temperature is { } newTemp)
{
return (newTemp - oldTemp).Abs().Celsius > 0.5; // returns true if > 0.5°C change.
}
return false;
}
);
sensor.Subscribe(consumer);

sensor.Updated += (sender, result) => {
Console.WriteLine($" Temperature: {result.New.Temperature?.Celsius:N2}C");
Console.WriteLine($" Pressure: {result.New.Pressure?.Bar:N2}Bar");
};

return Task.CompletedTask;
}

public override async Task Run()
{
var conditions = await sensor.Read();
Console.WriteLine($"Temperature: {conditions.Temperature?.Celsius}°C, Pressure: {conditions.Pressure?.Pascal}Pa");

sensor.StartUpdating(TimeSpan.FromSeconds(1));
}

Sample project(s) available on GitHub

Wiring Example

Connecting the MPL115A2 to Meadow requires four connections:

In this diagram, the shutdown (SDWN) and reset (RST) pins have been left floating. Both of these pins are active low and can be tied to Vcc in normal operation.

Note that the Adafruit breakout board has 10K pull-up resistors on the SDA and SCK lines.