robert-hh / BME680-Micropython

Micropython driver for the BME680 sensor
34 stars 12 forks source link

Micropython Driver for a BME680 breakout

This a port of an Adafruit driver for use with micropython.org based and Pycom.io devices using the respecitve MicroPython variant.

The driver uses the I2C interface. The sensor also supports SPI mode, which is not supported by this driver yet, but can easily be extended.

Sample usage files:

# I2C Interface, genuine Micropython

from bme680 import *
from machine import I2C, Pin
import time
bme = BME680_I2C(I2C(-1, Pin(13), Pin(12)))

for _ in range(3):
    print(bme.temperature, bme.humidity, bme.pressure, bme.gas)
    time.sleep(1)
# SPI Interface, genuine Micropython

from bme680 import *
from machine import SPI, Pin
import time

cs = Pin(15, Pin.OUT, value=1)
spi = SPI(-1, baudrate=400000, sck=Pin(12), mosi=Pin(13), miso=Pin(14))
bme = BME680_SPI(spi, cs)

for _ in range(3):
    print(bme.temperature, bme.humidity, bme.pressure, bme.gas)
    time.sleep(1)
# I2C Interface, Pycom devices
# Using the default Pins P9 for sda and P10 for scl

from bme680 import *
from machine import I2C, Pin
import time
cs=Pin("P11", Pin.OUT, value=1)
bme = BME680_I2C(I2C())

for _ in range(3):
    print(bme.temperature, bme.humidity, bme.pressure, bme.gas)
    time.sleep(1)
# SPI Interface, Pycom devices

from bme680 import *
from machine import SPI, Pin
import time

cs = Pin("P11", Pin.OUT, value=1)
spi = SPI(0, mode=SPI.MASTER, baudrate=400000, pins=("P10", "P9", "P8"))
bme = BME680_SPI(spi, cs)

for _ in range(3):
    print(bme.temperature, bme.humidity, bme.pressure, bme.gas)
    time.sleep(1)

Files:

bme680.py: Drivers using floating point arithmetic
bme680i.py: Driver using integer arithmentic for the internal calculations according to the BOSCH datasheet. Only for the final result floating point operations are used.
bmetest.py: Sample test script
readme.md: This file