after working on the Elixir bindings for a thermal camera sensor, I got excited about writing bindings for other common sensors available from popular electronics online shops.
Another nice little sensor is the BME680: it measures temperature, pressure, humidity and gas resistance (which correlates with concentration of volatile compounds, so it’s possible to calculate an “air quality” index). I wrote elixir_bme680 to easily interface with it from Elixir. It’s mainly targeting Nerves, but should work on any Linux, as long as the generic I2C driver is installed.
I hope people find it useful. I used it to build a simple WiFi air quality/weather station with a Raspberry Pi and Nerves. The only issue I found is that the breakout board that is sold by most vendors places the sensor too close to the Pi, so the temperature reading is affected by the heat from the processor. Luckily, it’s enough to add a short cable and distance the sensor from the Raspberry Pi a bit.