scd30

package module
v0.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 10, 2022 License: GPL-3.0 Imports: 8 Imported by: 3

README

Sensirion SCD30 CO2 sensor i2c driver module for Golang

Overview

With this module Sensirion SCD30 CO2 sensor can be accessed throug i2c bus. Implemented:

  • starting and stopping continuous measurements
  • checking for ready measurement
  • reading ready measurement
  • getting and setting temperature compensation

Example

package main

import (
	"log"
	"time"

	"github.com/pvainio/scd30"
	"periph.io/x/conn/v3/i2c/i2creg"
	"periph.io/x/host/v3"
)

func main() {
	if _, err := host.Init(); err != nil {
		log.Fatal(err)
	}

	bus, err := i2creg.Open("")
	if err != nil {
		log.Fatal(err)
	}
	defer bus.Close()

	dev, err := scd30.Open(bus)
	if err != nil {
		log.Fatal(err)
	}

	var interval uint16 = 5

	dev.StartMeasurements(interval)

	for {
		time.Sleep(time.Duration(interval) * time.Second)
		if hasMeasurement, err := dev.HasMeasurement(); err != nil {
			log.Fatalf("error %v", err)
		} else if !hasMeasurement {
			return
		}

		m, err := dev.GetMeasurement()
		if err != nil {
			log.Fatalf("error %v", err)
		}

		log.Printf("Got measure %f ppm %f%% %fC", m.CO2, m.Humidity, m.Temperature)
	}
}

Documentation

Overview

Example
if _, err := host.Init(); err != nil {
	log.Fatal(err)
}

bus, err := i2creg.Open("")
if err != nil {
	log.Fatal(err)
}
defer bus.Close()

dev, err := scd30.Open(bus)
if err != nil {
	log.Fatal(err)
}

var interval uint16 = 5

dev.StartMeasurements(interval)

for {
	time.Sleep(time.Duration(interval) * time.Second)
	if hasMeasurement, err := dev.HasMeasurement(); err != nil {
		log.Fatalf("error %v", err)
	} else if !hasMeasurement {
		return
	}

	m, err := dev.GetMeasurement()
	if err != nil {
		log.Fatalf("error %v", err)
	}

	log.Printf("Got measure %f ppm %f%% %fC", m.CO2, m.Humidity, m.Temperature)
}
Output:

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Measurement

type Measurement struct {
	CO2         float32
	Temperature float32
	Humidity    float32
}

type SCD30

type SCD30 struct {
	// contains filtered or unexported fields
}

func Open

func Open(bus i2c.Bus) (*SCD30, error)

func (SCD30) GetMeasurement

func (dev SCD30) GetMeasurement() (*Measurement, error)

GetMeasurement returns ready measurement. HasMeasurement should be used first to check if there is one.

func (SCD30) GetTemperatureOffset

func (dev SCD30) GetTemperatureOffset() (uint16, error)

GetTemperatureOffset gets temperature offset to compensate internal heating. Value is 1/100C

func (SCD30) HasMeasurement

func (dev SCD30) HasMeasurement() (bool, error)

HasMeasurement checks if there is ready measurement

func (SCD30) SetAutomaticSelfCalibration added in v0.0.1

func (dev SCD30) SetAutomaticSelfCalibration(value uint16) error

SetAutomaticSelfCalibration, 1 on, 0 off

func (SCD30) SetForcedCalibration added in v0.0.2

func (dev SCD30) SetForcedCalibration(value uint16) error

SetForcedCalibration, co2 ppm

func (SCD30) SetTemperatureOffset

func (dev SCD30) SetTemperatureOffset(offset uint16) error

SetTemperatureOffset sets temperature offset to compensate internal heating. Value is 1/100C

func (SCD30) StartMeasurements

func (dev SCD30) StartMeasurements(interval uint16) error

StartMeasurements starts continous measerements at given interval seconds

func (SCD30) StopMeasurements

func (dev SCD30) StopMeasurements() error

StopMeasurements stops continuous measurements

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL