Template Software STM32F429 Discovery Kit with SCD41 CO2 Sensor

Dependencies:   LCD_DISCO_F429ZI TS_DISCO_F429ZI BSP_DISCO_F429ZI

Revision:
7:17a87b6d8516
Child:
8:6906f3ee5538
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scd30.h	Fri Mar 19 07:25:46 2021 +0000
@@ -0,0 +1,80 @@
+#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 sizeof(COMMAND_CONTINUOUS_MEASUREMENT)
+// 2s measurement Interval
+#define COMMAND_SET_MEASUREMENT_INTERVAL {0x46, 0x00, 0x00, 0x02, 0x00}
+#define COMMAND_SET_MEASUREMENT_INTERVAL_LEN sizeof(COMMAND_SET_MEASUREMENT_INTERVAL)
+// automatic self calibration on
+#define COMMAND_AUTOMATIC_SELF_CALIBRATION {0x53, 0x06, 0x00, 0x01, 0x00}
+#define COMMAND_AUTOMATIC_SELF_CALIBRATION_LEN sizeof(COMMAND_AUTOMATIC_SELF_CALIBRATION)
+// command that needs to be sent before reading out the measurement result
+#define COMMAND_READ_MEASUREMENT {0x03, 0x00}
+#define COMMAND_READ_MEASUREMENT_LEN sizeof(COMMAND_READ_MEASUREMENT)
+
+    /** 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