All Projects → lucaong → elixir_bme680

lucaong / elixir_bme680

Licence: other
An Elixir library to interface with the BME680 (and BME280) environmental sensor

Programming Languages

c
50402 projects - #5 most used programming language
elixir
2628 projects

Projects that are alternatives of or similar to elixir bme680

ha-iaquk
Indoor Air Quality Sensor Component for Home Assistant
Stars: ✭ 57 (+200%)
Mutual labels:  sensor, air-quality
bsec bme680 linux
Read the BME680 sensor with the BSEC library on Linux (e.g. Raspberry Pi)
Stars: ✭ 78 (+310.53%)
Mutual labels:  sensor, air-quality
iosynth
IoSynth is IoT device/sensor simulator and synthetic data generator.
Stars: ✭ 21 (+10.53%)
Mutual labels:  sensor
growbox
Code for my smart growbox experiment
Stars: ✭ 23 (+21.05%)
Mutual labels:  sensor
Awesome-Human-Activity-Recognition
An up-to-date & curated list of Awesome IMU-based Human Activity Recognition(Ubiquitous Computing) papers, methods & resources. Please note that most of the collections of researches are mainly based on IMU data.
Stars: ✭ 72 (+278.95%)
Mutual labels:  sensor
Advanced-PRTG-Sensors
Collection of my Advanced PRTG Sensors
Stars: ✭ 60 (+215.79%)
Mutual labels:  sensor
gspca-kinect2
Kinect2 Sensor Device Driver for Linux
Stars: ✭ 25 (+31.58%)
Mutual labels:  sensor
Catena-Sketches
Top-level Arduino sketches for the MCCI Catena family of IoT LPWA Devices
Stars: ✭ 12 (-36.84%)
Mutual labels:  sensor
RoboVision
Attempting to create a program capable of combining stereo video input , with motors and other sensors on a PC running linux , the target is embedded linux for use in a robot!
Stars: ✭ 21 (+10.53%)
Mutual labels:  sensor
sensor.rpi power
A Custom component for Home-Assistant that checks if your Raspberry Pi power supply is giving enough voltage from the kernel.
Stars: ✭ 105 (+452.63%)
Mutual labels:  sensor
rdefra
rdefra: Interact with the UK AIR Pollution Database from DEFRA
Stars: ✭ 14 (-26.32%)
Mutual labels:  air-quality
elixir-opencv
OpenCv NIF Bindings for Erlang/Elixir.
Stars: ✭ 30 (+57.89%)
Mutual labels:  nerves
mdns lite
A simple, no frills mDNS implementation in Elixir
Stars: ✭ 29 (+52.63%)
Mutual labels:  nerves
Reactor
Reactor (for Vera and openLuup) is a Vera Home Automation plugin that provides advanced programmable logic.
Stars: ✭ 17 (-10.53%)
Mutual labels:  sensor
ESPSense
Use ESPHome to emulate TP-Link Kasa HS110 plugs, and report energy usage to your Sense Home Energy Monitor (or anything else on your network!) via ESP8266/ESP32 devices
Stars: ✭ 36 (+89.47%)
Mutual labels:  sensor
msda
Library for multi-dimensional, multi-sensor, uni/multivariate time series data analysis, unsupervised feature selection, unsupervised deep anomaly detection, and prototype of explainable AI for anomaly detector
Stars: ✭ 80 (+321.05%)
Mutual labels:  sensor
homeassistant-afvalwijzer
Provides sensors for some Dutch waste collectors
Stars: ✭ 119 (+526.32%)
Mutual labels:  sensor
nodejs
Node.js in-process collectors for Instana
Stars: ✭ 66 (+247.37%)
Mutual labels:  sensor
FruxePi
Indoor farming software using the Raspberry Pi
Stars: ✭ 118 (+521.05%)
Mutual labels:  sensor
vzlogger
Logging utility for various meters & sensors
Stars: ✭ 108 (+468.42%)
Mutual labels:  sensor

Elixir Bme680

Build Status Hex Version docs

An Elixir library to interface with the BME680 and BME280 environmental sensors. The BME680 provides measurements of temperature, pressure, humidity, and gas resistance (which is a proxy of indoor air quality). The BME280 is a lower cost device that only provides measurements of temperature, pressure, humidity.

Installation

The package can be installed by adding elixir_bme680 to your list of dependencies in mix.exs:

def deps do
  [
    {:elixir_bme680, "~> 0.2.2"}
  ]
end

The Linux I2C driver needs to be installed for this library to work (e.g. libi2c-dev on Debian). If using Nerves, the driver should already be installed by default.

Configuration

Depending on your hardware configuration, you may need to specify options to Bme680.start_link/2 or Bme280.start_link/2. For example, the i2c address of the sensor can be 0x76 or 0x77.

Usage with the BME680

{:ok, pid} = Bme680.start_link(i2c_address: 0x76)

measurement = Bme680.measure(pid)

# Measurement is like:
#
#   %Bme680.Measurement{
#     temperature: 21.74,
#     pressure: 1090.52,
#     humidity: 45.32,
#     gas_resistance: 10235
#   }
#
# Where temperature is in degrees Celsius, pressure in hPa, humidity in %
# relative humidity, and gas_resistance in Ohm

For more information, read the API documentation.

Sensor compatibility

The default setting has been tested on the Pimoroni BME680. The Adafruit BME680 requires using a different i2c address. For the Adafruit, pass in the i2c_address option with value 0x77 as follows:

Bme680.start_link(i2c_address: 0x77)

Note on gas resistance sensor warm up on the BME680

Note that, due to the nature of the BME680 gas resistance sensor, the gas resistance measurement needs a warm-up in order to give stable measurements. One possible strategy is to perform continuous meaurements in a loop until the value stabilizes. That might take from a few seconds to several minutes (or more when the sensor is brand new).

Usage with the BME280

{:ok, pid} = Bme280.start_link(i2c_address: 0x76)

measurement = Bme280.measure(pid)

# Measurement is like:
#
#   %Bme280.Measurement{
#     temperature: 21.74,
#     pressure: 30.52,
#     humidity: 45.32
#   }
#
# Where temperature is in degrees Celsius, pressure in inHg, humidity in %
# relative humidity

For more information, read the API documentation.

Sensor compatibility

The default setting has been tested on the HiLetgo BME280.

Acknowledgements

This project contains low-level code from the BME680 driver by Bosch and the BME280 driver by Bosch.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].