drivers/sensors: Add new driver for scd41 sensor module

Add Sensirion's SCD41 CO2, temperature and humidity sensor driver.
This commit is contained in:
SPRESENSE 2022-04-11 16:30:13 +09:00 committed by Petro Karashchenko
parent 609e949ab0
commit bf332cf888
4 changed files with 1140 additions and 0 deletions

View File

@ -845,6 +845,37 @@ config SCD30_DEBUG
endif # SENSORS_SCD30
config SENSORS_SCD41
bool "Sensirion SCD41 CO2, humidity and temperature sensor"
default n
---help---
Enable driver support for the Sensirion SCD41 CO₂, humidity and
temperature sensor.
if SENSORS_SCD41
config SCD41_I2C
bool "Sensirion SCD41 I2C mode"
default y
select I2C
config SCD41_I2C_FREQUENCY
int "SCD41 I2C frequency"
default 100000
range 1 100000
depends on SCD41_I2C
---help---
I2C frequency for SCD41. Note, maximum supported frequency for
this sensor is 100kHz.
config SCD41_DEBUG
bool "Debug support for the SCD41"
default n
---help---
Enables debug features for the SCD41
endif # SENSORS_SCD41
config SENSORS_SGP30
bool "Sensirion SGP30 Gas Platform sensor"
default n

View File

@ -192,6 +192,10 @@ ifeq ($(CONFIG_SENSORS_SCD30),y)
CSRCS += scd30.c
endif
ifeq ($(CONFIG_SENSORS_SCD41),y)
CSRCS += scd41.c
endif
ifeq ($(CONFIG_SENSORS_SGP30),y)
CSRCS += sgp30.c
endif

1030
drivers/sensors/scd41.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,75 @@
/****************************************************************************
* include/nuttx/sensors/scd41.h
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
#ifndef __INCLUDE_NUTTX_SENSORS_SCD41_H
#define __INCLUDE_NUTTX_SENSORS_SCD41_H
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/sensors/ioctl.h>
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
#define CONFIG_SCD41_ADDR 0x62
/****************************************************************************
* Public Types
****************************************************************************/
struct i2c_master_s; /* Forward reference */
struct scd41_conv_data_s
{
float temperature; /* Celsius */
float humidity; /* RH-% */
float co2; /* CO₂ PPM */
};
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
#ifdef CONFIG_SCD41_I2C
/****************************************************************************
* Name: scd41_register_i2c
*
* Description:
* Register the SCD41 character device as 'devpath'
*
* Input Parameters:
* devpath - The full path to the driver to register. E.g., "/dev/co2_0"
* i2c - An instance of the I2C interface to use to communicate with
* the SCD41
*
* Returned Value:
* Zero (OK) on success; a negated errno value on failure.
*
****************************************************************************/
int scd41_register_i2c(FAR const char *devpath,
FAR struct i2c_master_s *i2c);
#endif
#endif /* __INCLUDE_NUTTX_SENSORS_SCD41_H */