Esempio n. 1
0
def init():
    global i2c
    global sensor
    i2c = board.I2C()  # uses board.SCL and board.SDA
    sensor = adafruit_scd30.SCD30(i2c)
    start_time = time.time()
    return sensor
    def initialize_input(self):
        from adafruit_extended_bus import ExtendedI2C
        import adafruit_scd30

        self.scd = adafruit_scd30.SCD30(ExtendedI2C(self.input_dev.i2c_bus),
                                        address=int(
                                            str(self.input_dev.i2c_location),
                                            16))
Esempio n. 3
0
    def read(self, SIO):
        if not self.scd:
            self.scd = adafruit_scd30.SCD30(board.I2C())
        try:
            if not self.scd.data_available: return
            self.CO2 = self.scd.CO2
            self.T = self.scd.temperature
            self.H = self.scd.relative_humidity
        except:
            traceback.print_exc()
            self.scd = None
            return

        self.t = time.time()
        print("SCD30", self.t, self.T, "C,\t", self.H, "%%rh", self.CO2,
              "PPM CO_2")

        SIO.log_readout(self.T_id, self.T, self.t)
        SIO.log_readout(self.H_id, self.H, self.t)
        SIO.log_readout(self.CO2_id, self.CO2, self.t)
Esempio n. 4
0
    def initialize(self):
        from adafruit_extended_bus import ExtendedI2C
        import adafruit_scd30

        self.sensor = adafruit_scd30.SCD30(
            ExtendedI2C(self.input_dev.i2c_bus, frequency=self.i2c_frequency),
            address=int(str(self.input_dev.i2c_location), 16))

        if self.sensor.self_calibration_enabled != self.enable_self_calibration:
            self.sensor.self_calibration_enabled = self.enable_self_calibration

        self.logger.info(
            f"{self.sensor.temperature_offset}, {self.temperature_offset}")

        if self.sensor.temperature_offset != self.temperature_offset:
            self.sensor.temperature_offset = self.temperature_offset

        self.logger.info(f"New: {self.sensor.temperature_offset}")

        if self.sensor.ambient_pressure != self.ambient_pressure:
            self.sensor.ambient_pressure = self.ambient_pressure

        if self.sensor.altitude != self.altitude:
            self.sensor.altitude = self.altitude
Esempio n. 5
0
import time
import board
import displayio
import adafruit_imageload
from adafruit_matrixportal.matrix import Matrix
import adafruit_scd30

# --| User Config |----
CO2_CUTOFFS = (1000, 2000, 5000)
UPDATE_RATE = 1
# ---------------------

# the sensor
scd30 = adafruit_scd30.SCD30(board.I2C())

# optional if known (pick one)
# scd30.ambient_pressure = 1013.25
# scd30.altitude = 0

# the display
matrix = Matrix(width=64, height=32, bit_depth=6)
display = matrix.display
display.rotation = 90  # matrixportal up
# display.rotation = 270 # matrixportal down

# current condition smiley face
smileys_bmp, smileys_pal = adafruit_imageload.load("/bmps/smileys.bmp")
smiley = displayio.TileGrid(
    smileys_bmp,
    pixel_shader=smileys_pal,
    x=0,
Esempio n. 6
0
    }
    req = requests.post(uri, headers=headers, json=payload)
    req.raise_for_status()  # Throw if there was an error.
    res = req.json()
    return res


##################
### SENSOR
##################

# Create the I2C interface.
i2c = busio.I2C(board.SCL, board.SDA)

# Create the interface to the SCD30 sensor (CO2, Temperature, Humidity)
scd = adafruit_scd30.SCD30(i2c)


def sample_sensors():
    ret = {}
    ret["temperature_c"] = scd.temperature
    if ret["temperature_c"]:
        ret["temperature_f"] = ret["temperature_c"] * 1.8 + 32
    ret["co2"] = scd.CO2
    ret["humidity"] = scd.relative_humidity
    return ret


##################
### THINGSPEAK
##################
Esempio n. 7
0
    def __init__(self, config):
        self.sea_level_pressure = getBaromPress(config)
        self.i2c = busio.I2C(board.SCL, board.SDA, frequency=100000)

        # To initialise using the default address:
        if config.TPsensor == 'MCP9808':
            import adafruit_mcp9808
            self.sensor = adafruit_mcp9808.MCP9808(self.i2c)
            try:
                self.temperature = self.sensor.temperature
                self.pressure = 0
                self.humidity = 1
                self.dewpoint = 0
                self.altitude = 0
                self.success = True
            except:
                self.failSafe()

        elif config.TPsensor == 'BME280':
            import adafruit_bme280
            self.sensor = adafruit_bme280.Adafruit_BME280_I2C(self.i2c)
            try:
                self.sensor.mode = adafruit_bme280.MODE_NORMAL
                self.sensor.standby_period = adafruit_bme280.STANDBY_TC_500
                self.sensor.iir_filter = adafruit_bme280.IIR_FILTER_X16
                self.sensor.overscan_pressure = adafruit_bme280.OVERSCAN_X16
                self.sensor.overscan_humidity = adafruit_bme280.OVERSCAN_X1
                self.sensor.overscan_temperature = adafruit_bme280.OVERSCAN_X2
                # The sensor will need a moment to gather initial readings
                time.sleep(1)
                self.pressure = self.sensor.pressure
                self.temperature = self.sensor.temperature
                self.pressure = self.sensor.pressure
                self.humidity = self.sensor.relative_humidity
                self.altitude = self.sensor.altitude
                self.success = True
            except:
                self.failSafe()

        elif config.TPsensor == 'SCD30':
            import adafruit_scd30
            try:
                self.sensor = adafruit_scd30.SCD30(self.i2c)
                self.pressure = self.sea_level_pressure
                #print(" Temperature offset:", self.sensor.temperature_offset)
                #print(" Measurement interval:", self.sensor.measurement_interval)
                #print(" Self-calibration enabled:", self.sensor.self_calibration_enabled)
                #print(" Ambient Pressure:", self.sensor.ambient_pressure)
                #print(" Altitude:", self.sensor.altitude, "meters above sea level")
                #print(" Forced recalibration reference:", self.sensor.forced_recalibration_reference)
                while True:
                    if self.sensor.data_available:
                        self.temperature = self.sensor.temperature
                        self.pressure = self.sensor.ambient_pressure
                        self.humidity = self.sensor.relative_humidity
                        self.altitude = self.sensor.altitude
                        self.CO2 = self.sensor.CO2
                        break
                    time.sleep(0.5)
                self.success = True
            except:
                self.failSafe()

        elif config.TPsensor == 'BME180':
            import Adafruit_BMP.BMP085 as BMP085
            import RPi.GPIO as GPIO
            try:
                sensor = BMP085.BMP085()
                self.temperature = sensor.read_temperature()
                self.pressure = sensor.read_pressure() / 100
                self.altitude = sensor.read_altitude()
                self.humidity = 1
                self.success = True
            except:
                self.failSafe()

        self.sealevel = self.sea_level_pressure
        self.dewpoint = dewPointRH(self.temperature, self.humidity,
                                   Pws(self.temperature))
        self.absHum = absHumidity(self.temperature, self.humidity,
                                  Pws(self.temperature))
Esempio n. 8
0
# CO2 warning levels (ppm)
poor = 2000 
fair = 1000
good = 700

# pin for SPI chip select line to wake up SD card. You'll need to change this pin if name or niumber you aren't using D10 on your controller.
sd_cs = board.D10

# set up the SPI and I2C communicaations protocols
spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)
cs = digitalio.DigitalInOut(sd_cs)
i2c = busio.I2C(board.SCL, board.SDA)

# set up the sensors and data logger
scd = adafruit_scd30.SCD30(i2c) #0x61 address
bmp280 = adafruit_bmp280.Adafruit_BMP280_I2C(i2c) # 0x77
bmp280.sea_level_pressure = 1013.25 # calibrate the pressure

rtc = adafruit_pcf8523.PCF8523(i2c)  # 0x68
sdcard = adafruit_sdcard.SDCard(spi, cs)
vfs = storage.VfsFat(sdcard)

# mount the SD card to save files in the /sd folder
storage.mount(vfs, "/sd")

# setup the neopixel. This code will need to be changed if you 
# use a microcontroller other than an Adafruit feather 
pixels = neopixel.NeoPixel(board.NEOPIXEL, n=1, brightness=0.05, auto_write=False)

# Create a CSV data loger file. The file name includes the date, hour and min in the name.