Code Monkey home page Code Monkey logo

bmp280's Introduction

BMP280

Hex version CircleCI

Read temperature and pressure from Bosch BMP180, BMP280, BME280, and BME680 sensors in Elixir.

Usage

Here's an example use (most sensors are at address 0x77, but some are at 0x76):

iex> {:ok, bmp} = BMP280.start_link(bus_name: "i2c-1", bus_address: 0x77)
{:ok, #PID<0.29929.0>}
iex> BMP280.measure(bmp)
{:ok,
 %BMP280.Measurement{
   altitude_m: 138.96206905098805,
   dew_point_c: 2.629181073094435,
   gas_resistance_ohms: 5279.474749704044,
   humidity_rh: 34.39681642351278,
   pressure_pa: 100818.86273677988,
   temperature_c: 18.645856498100876,
   timestamp_ms: 885906
 }}

Depending on your hardware configuration, you may need to modify the call to BMP280.start_link/1. See t:BMP280.options/0 for parameters.

All measurements are reported in SI units.

The altitude measurement is computed from the measured barometric pressure. To be accurate, it requires either the current sea level pressure or the current altitude. Here's an example:

iex> BMP280.force_altitude(bmp, 100)
:ok

Subsequent altitude reports should be more accurate until the weather changes.

Nerves Livebook Firmware

Nerves Livebook Firmware contains BMP280 example, which shows you how to work with the BMP280 sensor on the Nerves projects with example code that is runnable from the comfort of your browser.

BMP3XX

Please check out this other Elixir library BMP3XX for Bosch BMP388 and BMP390 sensors.

bmp280's People

Contributors

dkuku avatar fhunleth avatar mattludwigs avatar mnishiguchi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

bmp280's Issues

start_link returns ok even if I2C fails

I saw this in the Neves Livebook when no sensor is connected.

Screen Shot 2021-05-11 at 11 07 35 PM

This happens because we initialize the sensor in handle_continue. The error followed by {:ok, pid} result is a little confusing from the library user perspective, but I guess it is a matter of our design decision.

|> init_sensor()

If we initialize the sensor in init callback not in handle_continue, we can return :error in case something goes wrong in the sensor initialization but then caller process would need to wait until the whole initialization gets completed.

To me personally from users perspective, I prefer to return {:error, reason} over always return {:ok, pid} unless initialization is painfully slow.

  • Maybe it is OK and acceptable as a feature in favor of quick initialization? ๐Ÿค”
  • Maybe we can at least raise descriptive custom error message instead of the generic match error

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.