
Template Software STM32F429 Discovery Kit with SCD41 CO2 Sensor
Dependencies: LCD_DISCO_F429ZI TS_DISCO_F429ZI BSP_DISCO_F429ZI
Revision 13:aff8e9f42652, committed 2022-03-22
- Comitter:
- garj
- Date:
- Tue Mar 22 10:19:59 2022 +0000
- Parent:
- 12:98dd45560c50
- Commit message:
- update to SCD41
Changed in this revision
--- a/scd30.cpp Thu Mar 17 09:38:06 2022 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -#include "mbed.h" -#include "scd30.h" - -//----------------------------------------------------------------------------- -// Constructor - -Scd30::Scd30(PinName sda, PinName scl, int i2cFrequency, PinName rdy) : _i2c(sda, scl), _rdy(rdy){ - _i2c.frequency(i2cFrequency); - _co2 = 0; -} - -uint8_t Scd30::init(){ - return SCD_ERROR_NO_ERROR; -} - -bool Scd30::isMeasurementReady(){ - return true; -} - -uint8_t Scd30::readMeasurement(){ - return SCD_ERROR_NO_ERROR; -}
--- a/scd30.h Thu Mar 17 09:38:06 2022 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,80 +0,0 @@ -#ifndef SCD30_H -#define SCD30_H - -#include "mbed.h" -// i2c sensor address -#define SCD30_ADR 0x61 -// sensor automatically starts measurement. RDY pin signals measurement ready. -#define COMMAND_CONTINUOUS_MEASUREMENT {0x00, 0x10, 0x00, 0x00, 0x00} -#define COMMAND_CONTINUOUS_MEASUREMENT_LEN 5 -// 2s measurement Interval -#define COMMAND_SET_MEASUREMENT_INTERVAL {0x46, 0x00, 0x00, 0x02, 0x00} -#define COMMAND_SET_MEASUREMENT_INTERVAL_LEN 5 -// automatic self calibration on -#define COMMAND_AUTOMATIC_SELF_CALIBRATION {0x53, 0x06, 0x00, 0x01, 0x00} -#define COMMAND_AUTOMATIC_SELF_CALIBRATION_LEN 5 -// command that needs to be sent before reading out the measurement result -#define COMMAND_READ_MEASUREMENT {0x03, 0x00} -#define COMMAND_READ_MEASUREMENT_LEN 2 - - /** Create SCD30 controller class - * - * @param Scd30 class - * - */ -class Scd30 { - -public: - enum ScdError { - SCD_ERROR_NO_ERROR, - SCD_ERROR_COM_ERROR - }; - - /** Create a SCD30 object using the specified I2C object - * @param sda - mbed I2C interface pin - * @param scl - mbed I2C interface pin - * @param I2C Frequency (in Hz) - * - * @return none - */ - Scd30(PinName sda, PinName scl, int i2cFrequency, PinName rdy); - - /** Initialize settings and start Auto-Measurement - * - * @param --none-- - * - * @return enum ScdError - */ - uint8_t init(); - - /** Check if measurement is ready - * - * @param --none-- - * - * @return bool true=ready - */ - bool isMeasurementReady(); - - /** Read all environmental parameters (CO2, Temp and Hum) from sensor - * - * @param --none- - * - * @return enum ScdError - */ - uint8_t readMeasurement(); - - /** Get current CO2 value - * - * @param --none-- - * - * @return enum SCDerror - */ - float getCo2(){ return _co2;}; - -private: - I2C _i2c; - DigitalIn _rdy; - float _co2; - -}; -#endif \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scd41.cpp Tue Mar 22 10:19:59 2022 +0000 @@ -0,0 +1,24 @@ +#include "mbed.h" +#include "scd41.h" + +//----------------------------------------------------------------------------- +// Constructor + +Scd41::Scd41(PinName sda, PinName scl, int i2cFrequency) : _i2c(sda, scl){ + _i2c.frequency(i2cFrequency); + _temp = 0; + _humi = 0; + _co2 = 0; +} + +uint8_t Scd41::init(){ + return SCD_ERROR_NO_ERROR; +} + +bool Scd41::isMeasurementReady(){ + return true; +} + +uint8_t Scd41::readMeasurement(){ + return SCD_ERROR_NO_ERROR; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scd41.h Tue Mar 22 10:19:59 2022 +0000 @@ -0,0 +1,92 @@ +#ifndef SCD41_H +#define SCD41_H + +#include "mbed.h" +// i2c sensor address +#define SCD41_ADR 0x62 +// sensor automatically starts measurement. RDY pin signals measurement ready. +#define COMMAND_CONTINUOUS_MEASUREMENT {0x21, 0xB1} +#define COMMAND_CONTINUOUS_MEASUREMENT_LEN 2 +// command that needs to be sent before reading out the measurement result +#define COMMAND_READ_MEASUREMENT {0xec, 0x05} +#define COMMAND_READ_MEASUREMENT_LEN 2 + + /** Create Scd41 controller class + * + * @param Scd41 class + * + */ +class Scd41 { + +public: + enum ScdError { + SCD_ERROR_NO_ERROR, + SCD_ERROR_COM_ERROR + }; + + /** Create a Scd41 object using the specified I2C object + * @param sda - mbed I2C interface pin + * @param scl - mbed I2C interface pin + * @param I2C Frequency (in Hz) + * + * @return none + */ + Scd41(PinName sda, PinName scl, int i2cFrequency, PinName rdy); + + /** Initialize settings and start Auto-Measurement + * + * @param --none-- + * + * @return enum ScdError + */ + uint8_t init(); + + /** Check if measurement is ready + * + * @param --none-- + * + * @return bool true=ready + */ + bool isMeasurementReady(); + + /** Read all environmental parameters (CO2, Temp and Hum) from sensor + * + * @param --none- + * + * @return enum ScdError + */ + uint8_t readMeasurement(); + + /** Get current temperature value + * + * @param --none-- + * + * @return enum SCDerror + */ + float getTemp(){ return _temp;}; + + /** Get current Humidity value + * + * @param --none-- + * + * @return enum SCDerror + */ + float getHumi(){ return _humi;}; + + /** Get current CO2 value + * + * @param --none-- + * + * @return enum SCDerror + */ + float getCo2(){ return _co2;}; + +private: + I2C _i2c; + DigitalIn _rdy; + float _temp; + float _humi; + float _co2; + +}; +#endif \ No newline at end of file