hvac  2.0.0.0
Main Page

HVAC click

HVAC Click is a compact add-on board that contains Sensirion’s next-generation miniature CO2 sensor. This board features the SCD41, a carbon dioxide sensor build on the photoacoustic sensing principle, and Sensirion’s patented PASens® and CMOSens® technology to offer high accuracy at a minor form factor.

click Product page


Click library

  • Author : Stefan Ilic
  • Date : Oct 2021.
  • Type : I2C type

Software Support

We provide a library for the Hvac Click as well as a demo application (example), developed using MikroElektronika compilers. The demo can run on all the main MikroElektronika development boards.

Package can be downloaded/installed directly from NECTO Studio Package Manager(recommended way), downloaded from our LibStock™ or found on Mikroe github account.

Library Description

This library contains API for Hvac Click driver.

Standard key functions :

Example key functions :

Example Description

This is an example that demonstrates the use of the HVAC Click board.

The demo application is composed of two sections :

Application Init

Initialization driver enables - I2C, SCD40: perform factory reset, serial number, features, product type platform type, product version and SPS30: perform start measurement mode, also write log.

void application_init ( void )
{
log_cfg_t log_cfg;
hvac_cfg_t hvac_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
hvac_cfg_setup( &hvac_cfg );
HVAC_MAP_MIKROBUS( hvac_cfg, MIKROBUS_1 );
if ( I2C_MASTER_ERROR == hvac_init( &hvac, &hvac_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
log_info( &logger, " Application Task " );
Delay_ms( 1000 );
log_printf( &logger, " Perform Factory Reset \r\n" );
log_printf( &logger, "--------------------------\r\n" );
Delay_ms( 2000 );
log_printf( &logger, " SCD40 - Serial Number : %.4d-%.4d-%.4d \r\n",
( uint16_t ) ser_num[ 0 ], ( uint16_t ) ser_num[ 1 ], ( uint16_t ) ser_num[ 2 ] );
log_printf( &logger, "--------------------------\r\n" );
Delay_ms( 100 );
log_printf( &logger, " SCD40 - Features \r\n" );
log_printf( &logger, " Product Type : %d \r\n", ( uint16_t ) version_data.product_type );
log_printf( &logger, " Platform Type : %d \r\n", ( uint16_t ) version_data.platform_type );
log_printf( &logger, " Product Version : %d.%d \r\n",
log_printf( &logger, "--------------------------\r\n" );
Delay_ms( 100 );
Delay_ms( 100 );
}

Application Task

This is an example which demonstrates the use of HVAC Click board. HVAC Click board can be used to measure : Concentration of CO2 in air, Temperature ( degree Celsius ), Relative Humidity ( % ), Mass Concentration of PM1.0, PM2.5, PM4.0, PM10 and Number Concentration of PM0.5, PM1.0, PM2.5, PM4.0 and PM10. All data logs write on USB uart changes.

void application_task ( void )
{
Delay_ms( 5000 );
Delay_ms( 100 );
log_printf( &logger, " CO2 Concent = %d \r\n ", hvac_data.co2_concent );
log_printf( &logger, " Temperature = %.2f C \r\n", hvac_data.temperature );
log_printf( &logger, " R. Humidity = %.2f %% \r\n", hvac_data.r_humidity );
log_printf( &logger, "- - - - - - - - - - - - - \r\n" );
log_printf( &logger, " Mass Concentration : \r\n" );
Delay_ms( 100 );
log_printf( &logger, " PM 1.0 = %.2f ug/m3 \r\n", sps30_data.mass_pm_1_0 );
log_printf( &logger, " PM 2.5 = %.2f ug/m3 \r\n", sps30_data.mass_pm_2_5 );
log_printf( &logger, " PM 4.0 = %.2f ug/m3 \r\n", sps30_data.mass_pm_4_0 );
log_printf( &logger, " PM 10 = %.2f ug/m3 \r\n", sps30_data.mass_pm_10 );
log_printf( &logger, "- - - - - - - \r\n" );
log_printf( &logger, " Number Concentration : \r\n" );
log_printf( &logger, " PM 0.5 = %.2f n/cm3 \r\n", sps30_data.num_pm_0_5 );
log_printf( &logger, " PM 1.0 = %.2f n/cm3 \r\n", sps30_data.num_pm_1_0 );
log_printf( &logger, " PM 2.5 = %.2f n/cm3 \r\n", sps30_data.num_pm_2_5 );
log_printf( &logger, " PM 4.0 = %.2f n/cm3 \r\n", sps30_data.num_pm_4_0 );
log_printf( &logger, " PM 10 = %.2f n/cm3 \r\n", sps30_data.num_pm_10 );
log_printf( &logger, "--------------------------\r\n" );
Delay_ms( 2000 );
}

The full application code, and ready to use projects can be installed directly from NECTO Studio Package Manager(recommended way), downloaded from our LibStock™ or found on Mikroe github account.

Other Mikroe Libraries used in the example:

  • MikroSDK.Board
  • MikroSDK.Log
  • Click.Hvac

Additional notes and informations

Depending on the development board you are using, you may need USB UART click, USB UART 2 Click or RS232 Click to connect to your PC, for development systems with no UART to USB interface available on the board. UART terminal is available in all MikroElektronika compilers.


mass_and_num_cnt_data_t::mass_pm_10
float mass_pm_10
Definition: hvac.h:192
mass_and_num_cnt_data_t::mass_pm_2_5
float mass_pm_2_5
Definition: hvac.h:190
hvac_scd40_get_feature_set_version
void hvac_scd40_get_feature_set_version(hvac_t *ctx, feature_data_t *f_data)
SCD40 get feature set version function.
mass_and_num_cnt_data_t::num_pm_10
float num_pm_10
Definition: hvac.h:197
hvac_sps30_start_measurement
void hvac_sps30_start_measurement(hvac_t *ctx)
SPS30 start measurement command function.
hvac_data
measuremen_data_t hvac_data
Definition: main.c:36
HVAC_MAP_MIKROBUS
#define HVAC_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition: hvac.h:151
HVAC_PERFORM_FACTORY_RESET
#define HVAC_PERFORM_FACTORY_RESET
Definition: hvac.h:94
hvac_t
HVAC Click context object.
Definition: hvac.h:206
mass_and_num_cnt_data_t::num_pm_2_5
float num_pm_2_5
Definition: hvac.h:195
mass_and_num_cnt_data_t::mass_pm_1_0
float mass_pm_1_0
Definition: hvac.h:189
application_task
void application_task(void)
Definition: main.c:94
hvac_sps30_read_measured_data
void hvac_sps30_read_measured_data(hvac_t *ctx, mass_and_num_cnt_data_t *m_n_c_data)
SPS30 read measured data function.
mass_and_num_cnt_data_t::mass_pm_4_0
float mass_pm_4_0
Definition: hvac.h:191
hvac_scd40_read_measurement
void hvac_scd40_read_measurement(hvac_t *ctx, measuremen_data_t *m_data)
SCD40 read measurement function.
hvac_scd40_send_cmd
void hvac_scd40_send_cmd(hvac_t *ctx, uint16_t cmd)
SCD40 send command function.
ser_num
uint16_t ser_num[3]
Definition: main.c:39
hvac_cfg_setup
void hvac_cfg_setup(hvac_cfg_t *cfg)
HVAC configuration object setup function.
version_data
feature_data_t version_data
Definition: main.c:37
measuremen_data_t::temperature
float temperature
Definition: hvac.h:165
mass_and_num_cnt_data_t::num_pm_1_0
float num_pm_1_0
Definition: hvac.h:194
hvac_scd40_get_serial_number
void hvac_scd40_get_serial_number(hvac_t *ctx, uint16_t *serial_number)
SCD40 get serial number function.
feature_data_t::product_major_version
uint8_t product_major_version
Definition: hvac.h:179
feature_data_t::platform_type
uint8_t platform_type
Definition: hvac.h:178
mass_and_num_cnt_data_t::num_pm_4_0
float num_pm_4_0
Definition: hvac.h:196
feature_data_t::product_type
uint8_t product_type
Definition: hvac.h:177
mass_and_num_cnt_data_t
HVAC Click mass and number of particles object.
Definition: hvac.h:188
application_init
void application_init(void)
Definition: main.c:41
sps30_data
mass_and_num_cnt_data_t sps30_data
Definition: main.c:38
hvac_init
err_t hvac_init(hvac_t *ctx, hvac_cfg_t *cfg)
HVAC initialization function.
measuremen_data_t::co2_concent
uint16_t co2_concent
Definition: hvac.h:164
hvac_sps30_get_ready_flag
uint8_t hvac_sps30_get_ready_flag(hvac_t *ctx)
SPS30 get ready flag function.
hvac_cfg_t
HVAC Click configuration object.
Definition: hvac.h:221
mass_and_num_cnt_data_t::num_pm_0_5
float num_pm_0_5
Definition: hvac.h:193
feature_data_t::product_minor_version
uint8_t product_minor_version
Definition: hvac.h:180
HVAC_MEASURE_SINGLE_SHOT
#define HVAC_MEASURE_SINGLE_SHOT
Definition: hvac.h:78
measuremen_data_t::r_humidity
float r_humidity
Definition: hvac.h:166
HVAC_SPS30_NEW_DATA_IS_READY
#define HVAC_SPS30_NEW_DATA_IS_READY
Definition: hvac.h:124