IDT ZMOD4410 Indoor Air Quality Raspberry Pi HAT - Review

Table of contents

RoadTest: IDT ZMOD4410 Indoor Air Quality Raspberry Pi HAT

Author: sebathorus

Creation date:

Evaluation Type: Development Boards & Tools

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?: BME680

What were the biggest problems encountered?: The more frequent issue was that demo software was freezing when left to record sensor readings over long period of time.

Detailed Review:

    Given the current situation, various cleaning/disinfection products started to be used much more frequently than before at home, workplaces, schools, shops and other personal and public areas, to help containing the proliferation of viruses. Various substances are used on body, on commonly used objects and spaces and for cleaning HVAC systems. While some of these disinfectants are scented or simply smell due to substances from their composition, many are odorless and their presence cannot be detected by human senses.

While TVOC may have different sources around us, my aim is to use "ZMOD4410 Indoor Air Quality Raspberry Pi HAT" to detect VOC generated by cleaning/disinfection solutions, how indoor air quality is affected by daily usage of these solutions and ideally to determine how much is too much.




In this review I'll present the results of the tests I performed on IDT ZMOD4410 Indoor Air Quality Raspberry Pi HAT. This board use Renesas ZMOD4410 Indoor Air Quality Sensor Module, which is built around a sensing element consisting in a heater element and a metal oxide chemiresistor(MOx).

IAQ RPi HAT is also equipped with HS3001 sensor used for relative humidity and temperature measurements. All sensors are factory calibrated and ready to use.


Renesas ZMOD4410 Indoor Air Quality Sensor Module was designed to detect total volatile organic compounds(TVOC). Although sensor is not directly responsive to CO2, it is able to estimate CO2 based on TVOC levels and monitor indoor air quality.

This sensor can provide indication on indoor air quality, still, this indication is only related to volatile organic compounds, it is not able to measure matter, which use other detection methods.


Information about this RaspberryPi HAT,sensor module and much more information on TVOC sensors can be found on official page -

The board used in this RoadTest is ZMOD4xxx TVOC Sensor HAT(AES-RHSEN-ZM44-G).




ZMOD4410 Indoor Air Quality Raspberry Pi HAT came well packed together with a header raiser and a jumper.




Box contains a leaflet with getting started instructions, like mounting 40 pins raiser on TVOC HAT.

HAT board have a cutting, I guess for RPi camera cable and four holes for mounts (not included).

For the purpose of road test, a RaspberryPi 3B+ was also provided.




1. Installation of TVOC Sensor HAT on top of Raspberry Pi is pretty straightforward, just insert provided 40 pins raiser in TVOC Sensor HAT connector and attach it to Raspberry Pi header.

2. In order to have a working Linux system to work with, Raspberry Pi got a fresh Buster, updated to latest packages just to be sure.

3. TVOC Sensor HAT is using I2C for communication with Raspberry Pi, so I made sure it is enabled:

    - sudo raspi-config -> 3. Interface Options -> P5 I2C - choose to enable I2C interface

    - reboot

4. In order to operate ZMOD4410 sensor, Renesas proprietary algorithm libraries are needed. These libraries along with documentation are available directly from Renesas and are subject of of Renesas’ Software License Agreement.

For an easier testing of TVOC Sensor HAT, Avnet provide a precompiled test application for Raspberry Pi OS, which allow measuring of TVOC and estimated CO2 concentration, here.

    - downloaded and unpacked demo software archive on /home/pi/TVOC/GasSensorEvaluation, GasSensorEvaluation-7.0.1.tgz at the moment I write this review and gave it a try. First try was a flop, I got this:


Although error message is not very informative about cause of error, I thought it's either a sensor problem or application cannot reach it.

I found that pigpiod service was not running and started it -> systemctl start pigpiod.service. After this, sensor was found and application started to work. I enabled then this service to be started automatically.

Except this small step, I had no other issues with installation.

Given that included leaflet have instructions for mechanical installation of HAT, it would be helpful to also include few lines about software installation.




At the moment I applied for this Road Test, my main plan was to test TVOC sensor at my workplace and at the kids school to see the effect of disinfection products on quality of air on these places. Meantime, all school and work activity was switched online and I need to set up my test environment exclusively at home.

"Test lab" was the room where I usually work, its the farthest room from living and kitchen, can be closed and ventilated very well and quick and don't interfere very much with the air flow of the rest of rooms. Have a volume of about 40 cubic meters, ambient temperature around 23-24 degrees Celsius.


I planned from the beginning to put Raspberry+TVOC HAT in an enclosure but first I wanted to see how it works unenclosed and if TVOC sensor behaves differently.


Step 1 - Initial checks

For about a week, I let it run on a table placed approximate on the center of the room at 50cm above the floor.

Although temperature and humidity are not displayed on the graphic interface they can be found in Data.csv file generated by demo application. In my case they looked like this for a room temperature of 24 degree Celsius:


I thought that HAT was receiving some heat from Raspberry's chipset and I put a multiplexer shield between Raspberry and TVOC HAT to not expose it to direct heat. This immediately reduced temperature with 3-4 degrees, humidity readings were not affected.



Step 2 - Enclosure


After initial testing, was time to put sensor in a box, to protect it and to be able to put in various places without risk to damage it. I already had an enclosure which I used for a temperature/humidity sensor connected to an older RPi. This box have a grille to front and back which allow a good airflow. I mounted a small 5V fan on the back side of the box, mostly to eliminate the heat generated by RPi. At some point I tested also a second fan mounted on the front side, but I didn't saw any change in measurements and was too noisy to be left running whole day.


After enclosing TVOC HAT, temperature readings rose by 2-3 degrees but otherwise sensor readings didn't look affected.


Step 3 - Testing sensor modes


At this step I tested all options related to ZMOD4410 from demo application.



1. I started with ZMOD4410 - IAQ 2nd Gen, as recommended option for new designs. I spent quite a long time at this option, the majority of testing being made with this option.

   First I tested disinfectants aimed to be used on skin(hands). I found two main types widely available on local market: gel and spray(atomizer with pump). On public places I saw also use the type which deliver disinfectant as a liquid. I choose first two for my tests.

    GEL DISINFECTANT - gel adhere well to skin, delivering disinfectant effectively, usually left hands stickier and requiring washing.

     As testing procedure I followed these steps:

     - start demo application

     - choose ZMOD4410 - IAQ 2nd Gen option -> OK

     - choose visualization parameters - this is not mandatory, these can be changed on the fly anytime

     - "start sensor" - choose a name for your data file, with csv extension -> Save

     - application perform a "Stabilization" routine, take about a minute

     - I usually let it run by itself for 20-30 minutes before test something


     a. I tried to simulate a row of people which are using disinfectant gel on a building entrance/hall/lobby. I used disinfectant about 20 times, every 20 seconds, sensor was placed at about 1m distance.


     After using disinfectant I let the room closed for 10-15 mins to see how concentration of volatile compounds will change. After that I started to ventilate the room until sensor show initial values.




     b. I tried to saturate air with tested solution to see how far sensor's readings will go. For this, I used a transparent storage box large enough to accommodate sensor's enclosure. To apply disinfectant solution, I soaked a couple of cotton pads in gel, until they didn't absorbed it anymore then place them on a plastic support in front of sensor's enclosure.


I let pads inside test box for about an hour, the sensor signal was approaching start value and TVOC value started to drop.

Pads were still wet when I took them out but as TVOC value started to drop I assumed there were not enough volatile compounds on pads to raise sensor's readings.




     SPRAY DISINFECTANT (ethanol 85 %) - solution used in more thinner than gel, more volatile and don't require immediate washing.

     As for GEL solution, for testing procedure I followed these steps:

     - start demo application

     - choose ZMOD4410 - IAQ 2nd Gen option -> OK

     - choose visualization parameters - this is not mandatory, these can be changed on the fly anytime

     - "start sensor" - choose a name for your data file, with csv extension -> Save

     - application perform a "Stabilization" routine, take about a minute

     - I usually let it run by itself for 20-30 minutes before test something

     a. as before, I tried to simulate a group of people which are using disinfectant on a building entrance/hall/lobby. I used disinfectant about 20 times, every 20-30 seconds, sensor was placed at 1m distance.




b. as for GEL solution, I tried to saturate air with tested spray solution to see how far sensor's readings will go. For this, I used same setup as for gel. To apply disinfectant solution, I soaked a couple of cotton pads by applying spray directly on them until they didn't absorbed it anymore, then, place them on a plastic support in front of sensor's enclosure. Due to it's volatility, TVOC values for spray are higher than for gel.



Next step was to test some cleaning/disinfection products not recommended to be used on skin.


Disinfectant1 - composition - alcohols C9-11-iso, C10 enriched, ethoxylates, alkyldimethylbenzylammonium chloride, alkylethylbenzylammonium chloride, buthylphenyl methylpropional, hydroxyisohexyl 3-cyclohexene carboxaldehyde, citronellol, benzyl salicylate



Disinfectant2 - composition - 0.5% didecylmethylammonium chloride, 5% anionic surfactant, cationic surfactant, perfume



Disinfectant2 + disinfectant1 + oven cleaner - I used two types of disinfectant and oven cleaner in same space (kitchen). Despite very strong and irritating smell of these solutions, sensor response was not as big as I thought it be and effect dissipate quite quickly comparative with hands disinfectants for example.



Glass cleaner



2. Second option tested was ZMOD4410 - ODOR. This mod have a unique feature among all operation modes which allow to set a threshold for Air Quality. If this threshold is exceeded, a visual alert is given on both GUI and with a red LED on TVOC HAT board.

     Test for GEL disinfectant, I applied GEL disinfectant about 15 times, 15-20 seconds apart then I let the room closed for a while to see how much air quality change. For GEL, the default threshold(1.3) was not exceeded.


     Test for SPRAY disinfectant. Being more volatile, SPRAY solution exceeded quickly the threshold and triggered visual alert.

In the next picture I caught the moment when threshold was exceeded and control signal was turned on.



3. ZMOD4410 - Sulfur Odor Discrimination - this mode can be used to identify when sulfur-smelling odor is present. This mode classifies odors in "sulfur" and "acceptable".

So far, I wasn't able to make sensor trigger something within "sulfur" category despite I let measure in bathroom, near the cats litter box, open garbage container, etc


4. ZMOD4410 - IAQ 1st Gen


One of the first tests I did with IAQ 2nd Gen mode, was to let sensor run over long period of time to just measure the quality of air in different rooms. Most of the time, all I got was a flat line sitting at "1" value with few bumps here and there.


First time I noticed an unusual (to me) behavior, was when I ventilated testing room after disinfectants tests. My impression was that sensor's readings did not returned at initial value after I refresh the room and I started to do some tests by simply let the sensor ran for some time 30-60 minutes, ventilate the room and then let sensor settle while room came back to initial conditions.

From below images can be seen that sensor reacted when room was ventilated:

- stabilization part - sensor signal and IAQ reading are stable for some time

- ventilation part - sensor signal reading increased while IAQ reading stay to 1

- ventilation stop - sensor signal reading return to aprox. initial value but IAQ, TVOC and EtOH readings are stabilizing to new higher value, not to initial one.



To me looks like algorithm output, at same sensor signal, is different after ventilation(AV) than before ventilation(BV).

To eliminate the possibility that the air inside room was affected by the air coming from outside, I let sensor ran for a while in new conditions(AV) then I stopped it. I restarted measurements immediately and the baseline was established at 1, exactly like before ventilation(BV).


Switching to IAQ 1st Gen algorithms, make air quality readings to look quite different for same room in same conditions, same environmental temperature and no changes made to possible VOC sources.

Also an overnight data collection session work without any crash, from first try, multiple times. Below are the readings collected overnight in kids bedroom.


I noticed same behavior as for IAQ2 when I ventilated the room for a little longer. Values for IAQ, TVOC and EtOH are raising to much higher values after ventilation than before ventilation.


Besides testing sensor response to disinfectants and cleaning solutions, I did few tests with perfumes, menthol and eucalyptus ointments, citrus, aromatic oils.

This is sensor response when I peeled an orange next to it.





During this road test I have focused my testing of ZMOD4410 gas sensor especially to disinfectants and cleaning solutions, were it shows good sensitivity to volatile compounds.

- Sensor showed immediate response to volatile compounds and changes in environment conditions.

- I see the provided Raspberri Pi TVOC HAT as a good starting point to experiment and design with ZMOD4410 sensor

- provided demo application show practical, functional use cases.

- Information provided by Renesas and AVNET, about volatile compounds classification and detection, ZDMOD4410 sensor and Indoor Air Quality HAT, code examples and demo application made testing of ZMOD4410 Indoor Air Quality HAT a very interesting and informative experience.



- I could not find instructions on how to fulfill prerequisites for demo software

- demo application get sluggish and stuck for IAQ 2nd Gen mode, when data collection is left running for longer time

- baseline for IAQ and TVOC readings is changed in case of replacing significant quantity of air on test room, showing worst IAQ values after a room is ventilated than before


I will continue to do more tests with this HAT and append results here.

In the end, I'd like to thank Element14 for choosing me for this road test.

  • Hello Sebastian,


    i have the Software running in IAQ as well. AS you stated, it gets sluggish after a while and sometimes even stopd


    My workaround at this time is to show only "last hour" in the Software while capturing data. I am opening a second instance of the Software and open the data-file.

    This way, i can capture data for long duration and show the data in parallel without affecting the data capture and managed to get data for multiple days and files with ~100 MB. Depending on the size of your data it can take some minutes until the algorithm values are calculated. Of course, its also possible to anaylze the data on a windows computer much faster after the raspberry pi took the data.




    Kind Regards


  • Very cool.  I enjoyed your review.  I'm really shocked that the oven cleaner didn't shoot off the charts.  Your Roadtest review answered my question.  I wondered if the sensor could be used to control the noxious aroma left in a bathroom by controlling an exhaust fan.  Based on your tests, this would not have worked as the after ventilation values would not have returned to the original values.