Skip to content

paulvha/scd30

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

paulvha SCD30 library

===========================================================

An extended SCD30 library based on the SparkFun SCD30 CO2 Sensor Library, see information below

Versioning

October 2023

  • tested on UNO R4 WiFI with Wire (5V): Works correct unmodified.
  • tested on UNO R4 WIFI with QWICC/Wire1 (3v3) : WORKS but needs more time to warm up /get stable

Modified July 2022

  • added option autoCalibrate to begin() to enable disable auto calibration (contribution of jhengstermann)
  • begin(TwoWire &wirePort = Wire, bool m_begin = true, boolean autoCalibrate = true);
  • wirePort : I2C channel to use. Wire by default.
  • m_begin : if true will start measurement every 2 seconds. True / start by default.
  • autoCalibrate : if true will enable or false disable autocalibrate at begin. True / Enable ASC by default.

Modified by Paulvha version November 2020

  • solved a conflict with ByteToFloat when using SPS30 at the same time

Modified by Paulvha version October 2020

  • Update in readmeasurement to translate byte to float. It did not work on Arduino. Tested on Uno, Artemis Apollo3, ESP32
  • added example4 to manual input temperature offset and see impact.
  • SECOND UPDATE IN OCTOBER
  • Added example5 to work with Sparkfun LCD
  • update to example4 to set and calibrate temperature offset

Modified by Paulvha version August 2020:

Changes based on Datasheet May 2020

  • added functions : getForceRecalibration, getMeasurementInterval, getTemperatureOffset, getAltitudeCompensation, getFirmwareLevel
  • updated the keywords.txt file
  • added example14 to demonstrate the new functions
  • A number of library enhancements
  • updated sketches and library where needed

Modified by Paulvha version February 2019

Changes:

  • Added option in examples 10 and 13 to set BME280 I2C address. (some use 0x76 instead of 0x77)
  • Added SoftWire (a port of the ESP8266 I2C library) for ESP32 (which does NOT support clockstretching)
  • Removed StartSingleMeasurement as that is not working in the SCD30 as it should.
  • Added option to begin() to disable starting measurement. (needed in case one wants to read serial number)
  • updated the keywords.txt file
  • updated sketches and library where needed

Modified by paulvha version 10 August, 2018

Changes:

  • Added ESP8266 board detection in begin() to support the ESP8266 clockstretching
  • Added setting debug messages
  • Added obtaining serial number of SCD30
  • Added StopMeasurement
  • Added StartSingleMeasurement (removed February 2019 as it IS unstable)
  • Added GetTemperature in Fahrenheit
  • Added CRC checks on different places in de driver
  • Updated existing sketches fom Sparkfun to new library
  • Added new sketches : Example 10: combined read with BME280 Example 11: Set ESP8266 as Access Point and read SCD30 in browser Example 12: Set ESP8266 as WIFI server and read SCD30 in browser

More work to be follow on connecting / comparing with other sensors and document the learnings.

check for updated datasheet and information on Sensirion

============= ORIGINAL INFORMATION FROM SPARKFUN ===========================

SparkFun SCD30 CO2 Sensor Library

SparkFun SCD30 CO2 Sensor

SparkX COβ‚‚ Humidity and Temperature Sensor - SCD30 (SPX-14751)

The SCD30 from Sensirion is a high quality NDIR based COβ‚‚ sensor capable of detecting 400 to 10000ppm with an accuracy of Β±(30ppm+3%). In order to improve accuracy the SCD30 has temperature and humidity sensing built-in, as well as commands to set the current altitude.

We've written an Arduino library to make reading the COβ‚‚, humidity, and temperature very easy. It can be downloaded through the Arduino Library manager: search for 'SparkFun SCD30'. We recommend using a Qwiic Breadboard Cable to connect the SCD30 to a Qwiic compatible board. The YeLLow wire goes in the SCL pin. The SCD30 also supports a serial interface but we haven't worked with it.

The COβ‚‚ sensor works very well and for additional accuracy the SCD30 accepts ambient pressure readings. We recommend using the SCD30 in conjunction with the Qwiic Pressure Sensor - MS5637 or the Qwiic Environmental Sensor - BME680 to obtain the current barometric pressure.

Note: The SCD30 has an automatic self-calibration routine. Sensirion recommends 7 days of continuous readings with at least 1 hour a day of 'fresh air' for self-calibration to complete.

Library written by Nathan Seidle (SparkFun).

Repository Contents

  • /examples - Example sketches for the library (.ino). Run these from the Arduino IDE.
  • /src - Source files for the library (.cpp, .h).
  • keywords.txt - Keywords from this library that will be highlighted in the Arduino IDE.
  • library.properties - General library properties for the Arduino package manager.

Documentation

License Information

This product is open source!

Various bits of the code have different licenses applied. Anything SparkFun wrote is beerware; if you see me (or any other SparkFun employee) at the local, and you've found our code helpful, please buy us a round!

Please use, reuse, and modify these files as you see fit. Please maintain attribution to SparkFun Electronics and release anything derivative under the same license.

Distributed as-is; no warranty is given.

  • Your friends at SparkFun.

Releases

No releases published

Packages

 
 
 

Contributors