Protect your health and well-being by detecting harmful organic gases with our cutting-edge sensing technology
A
A
Hardware Overview
How does it work?
Pollution Click is based on the WSP2110, a VOC gas sensor from Winsen. The MQ-135 can detect the presence and concentration of toxic gases in the air, such as toluene, benzene, methanal, and alcohol. It consists of a heater and metal oxide semiconductor material on the ceramic substrate of subminiature Al2O3, which are fetched out by electrode down-lead and encapsulated in a metal socket and cap. Besides its high sensitivity, the WSP2110 is also characterized by a detection
range from 1 to 50 ppm for toluene, benzene, methanal, and alcohol. The WSP2110 provides an analog representation of polluted concentration in the air sent directly to an analog pin of the mikroBUS™ socket labeled OUT. The analog output voltage the sensor provides varies in proportion to the toxic gas concentration; the higher the toxic gas concentration in the air, the higher the output voltage. Also, this Click board™ has a built-in potentiometer that allows users to
adjust the load resistance of the MQ-135 circuit for optimum performance. The ENA pin can be used to enable the gas sensor. This Click board™ can be operated only with a 5V logic voltage level. The board must perform appropriate logic voltage level conversion before using MCUs with different logic levels. Also, it comes equipped with a library containing functions and an example code that can be used as a reference for further development.
Features overview
Development board
The 32L496GDISCOVERY Discovery kit serves as a comprehensive demonstration and development platform for the STM32L496AG microcontroller, featuring an Arm® Cortex®-M4 core. Designed for applications that demand a balance of high performance, advanced graphics, and ultra-low power consumption, this kit enables seamless prototyping for a wide range of embedded solutions. With its innovative energy-efficient
architecture, the STM32L496AG integrates extended RAM and the Chrom-ART Accelerator, enhancing graphics performance while maintaining low power consumption. This makes the kit particularly well-suited for applications involving audio processing, graphical user interfaces, and real-time data acquisition, where energy efficiency is a key requirement. For ease of development, the board includes an onboard ST-LINK/V2-1
debugger/programmer, providing a seamless out-of-the-box experience for loading, debugging, and testing applications without requiring additional hardware. The combination of low power features, enhanced memory capabilities, and built-in debugging tools makes the 32L496GDISCOVERY kit an ideal choice for prototyping advanced embedded systems with state-of-the-art energy efficiency.
Microcontroller Overview
MCU Card / MCU

Architecture
ARM Cortex-M4
MCU Memory (KB)
1024
Silicon Vendor
STMicroelectronics
Pin count
169
RAM (Bytes)
327680
Used MCU Pins
mikroBUS™ mapper
Take a closer look
Click board™ Schematic

Step by step
Project assembly
Software Support
Library Description
This library contains API for Pollution Click driver.
Key functions:
pollution_generic_read- This function read ADC datapollution_measure_load_voltage- This function gets load voltage from read ADC valuepollution_get_corrected_resistance- This function gets the corrected resistance of the sensor
Open Source
Code example
The complete application code and a ready-to-use project are available through the NECTO Studio Package Manager for direct installation in the NECTO Studio. The application code can also be found on the MIKROE GitHub account.
/*!
* \file
* \brief Pollution Click example
*
* # Description
* Pollution Click carries the VOC gas sensor and has high sensitivity to organic gases
* such as methanal (also known as formaldehyde), benzene, alcohol, toluene, etc.
*
* The demo application is composed of two sections :
*
* ## Application Init
* Application Init performs Logger and Click initialization.
*
* ## Application Task
* This is an example which demonstrates the usage of Pollution Click board.
* Pollution Click reads ADC value, load voltage from ADC value, and reads corrected
* resistance of the sensor where results are being sent to the UART terminal
* where you can track changes.
*
* \author Mihajlo Djordjevic
*
*/
// ------------------------------------------------------------------- INCLUDES
#include "board.h"
#include "log.h"
#include "pollution.h"
float value_volt;
float value_res;
// ------------------------------------------------------------------ VARIABLES
static pollution_t pollution;
static log_t logger;
// ------------------------------------------------------ APPLICATION FUNCTIONS
void application_init ( void )
{
log_cfg_t log_cfg;
pollution_cfg_t cfg;
/**
* Logger initialization.
* Default baud rate: 115200
* Default log level: LOG_LEVEL_DEBUG
* @note If USB_UART_RX and USB_UART_TX
* are defined as HAL_PIN_NC, you will
* need to define them manually for log to work.
* See @b LOG_MAP_USB_UART macro definition for detailed explanation.
*/
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, "---- Application Init ----" );
Delay_ms ( 1000 );
// Click initialization.
pollution_cfg_setup( &cfg );
POLLUTION_MAP_MIKROBUS( cfg, MIKROBUS_1 );
pollution_init( &pollution, &cfg );
log_printf( &logger, "-------------------------------------\r\n" );
log_printf( &logger, "---------- Pollution Click ----------\r\n" );
log_printf( &logger, "-------------------------------------\r\n" );
Delay_ms ( 1000 );
pollution_default_cfg( &pollution );
Delay_ms ( 1000 );
log_printf( &logger, "--------- ADC Initializated ---------\r\n" );
log_printf( &logger, "-------------------------------------\r\n" );
Delay_ms ( 1000 );
}
void application_task ( void )
{
pollution_data_t tmp;
tmp = pollution_generic_read( &pollution );
log_printf( &logger, " ADC value : %u ppm\r\n", tmp );
Delay_ms ( 1000 );
value_volt = pollution_measure_load_voltage( &pollution );
log_printf( &logger, " Load voltage : %.2f V\r\n", value_volt );
Delay_ms ( 1000 );
value_res = pollution_get_corrected_resistance( &pollution );
log_printf( &logger, " Corrected resistance : %.2f kOhm\r\n", value_res );
log_printf( &logger, "-------------------------------------\r\n" );
Delay_ms ( 1000 );
}
int main ( void )
{
/* Do not remove this line or clock might not be set correctly. */
#ifdef PREINIT_SUPPORTED
preinit();
#endif
application_init( );
for ( ; ; )
{
application_task( );
}
return 0;
}
// ------------------------------------------------------------------------ END
Additional Support
Resources
Category:Gas
































