THCO2: CO2 level sensor, thermometer and hygrometer with RS485

THCO2 is a carbon dioxide (CO2) level sensor that also measures temperature and humidity. It measures from -40°C to +70°C and CO2 level from 0 to 10 000 ppm. Communication is possible on an RS485 line...more information
182,0 EUR excl. VAT 220,2 EUR incl. VAT
More than 20 units in stock
Personally in Prague:nowWith a delivery company:at the latest Monday 1.2.
Order CodeTHCO2Warranty36 monthsCustoms Code90251920Weight40

THCO2 is a carbon dioxide (CO2) level sensor that also measures temperature and humidity. It measures from -40°C to +70°C and CO2 level from 0 to 10 000 ppm. Communication is possible on an RS485 line using Spinel or ModBus RTU protocols. All of the above is possible with very little power consumption. The make of THCO2 makes it ideal to measure air quality in lecture halls, offices and all indoor areas where CO2 level needs to be monitored.

THCO2 is available as an interior sensor for areas protected from water and condensation.

How can you monitor CO2 concentration with THCO2?

1) THCO2 communicates digitally via RS485 protocols Modbus and Spinel. So you can easily add CO2 measurements to your automation system. Determining the CO2 value in ppm is a matter of reading one register by Modbus.

2) THCO2 has built-in LED, which is green when everythink is ok. If it iyrns to red, it would be better to let fresh air in and if the red light starts flashing, ventilation is needed for sure.... Btw. if you dislike lights on devices, then this feature can be completely turned off.

Areas of use

  • Ventilation automation
  • Air quality control
  • Ventilation to comply with legislation guidance


  • Measurement of the CO2 level from 0 to 10 000 ppm
  • CO2 measurements carried out by optical NDIR sensor (accuracy ±30 ppm, see documentation)
  • Carbon dioxide (CO2) level indicator on the device
  • Temperature measurement in range from -40 to +70 °C
  • Humidity measurement from 0 to 100 %RH
  • Automatic dew point calculation
  • Measured-out values transmitted directly in ppm, degrees Celsius a percent
  • RS485 communication
  • Power voltage from 4,5 to 36 V
  • Low consumption – typically only 8 mA @ 12 V
  • Communication protocols: Spinel or Modbus RTU (user selectable)
  • Dimensions 80 × 40 × 20.5 mm (THCO2 labe is removable)

Communication options

The basic communication protocol is Spinel or Modbus RTU over RS485. The sensor can be on a communication line with other devices, it is possible to connect 32 devices (more is possible) to one two-wire communication line. Specific examples for both protocols are given in the documentation.

Easy integration into your systems due to complete protocol documentation and implementation of the standard Modbus RTU protocol.

Default protocol in the device is set to Spinel. Use Modbus Configurator utility to switch between Modbus RTU and Spinel protocols. It can also be switched to ModBus RTU using the jumper.

Spinel.NET in C# is available on GitHub for Spinel communication (in Czech).

Example of reading carbon dioxide concentration, temperature and humidity in Node-RED

With the Node-RED system, you can easily read all measured data from THCO2 and process it further. The following figure and the source code of the example are a basic example of how to do this.

The flow from this example uses Modbus RTU to read the carbon dioxide concentration, temperature, humidity, dew point and time since switched on. The reading takes place periodically once every 10 seconds and the output is an object with measured quantities.

[{"id":"5f524473.d0e58c","type":"modbus-flex-getter","z":"540127df.a16e88","name":"RTU","showStatusActivities":false,"showErrors":false,"logIOActivities":false,"server":"6984e91f.37d4f","useIOFile":false,"ioFile":"","useIOForPayload":false,"x":490,"y":320,"wires":[["1b1e2f06.869d79"],[]]},{"id":"1b1e2f06.869d79","type":"function","z":"540127df.a16e88","name":"Outputs","func":"let values = {};\n\n// The first is the status register - 0 is okay\nif (msg.payload[0] === 0) {\n    values.co2 = msg.payload[1] + ' ppm';\n    values.temperature = Int2Float(msg.payload[2]) + ' °C';\n    values.humidity = (msg.payload[3] / 10) + ' %';\n    values.dewpoint = Int2Float(msg.payload[4]) + ' °C';\n    values.time = msg.payload[5] + ' s';\n    msg.payload = values;\n} else {\n    node.error(`Measurement not available!`);\n    return;\n}\n\nreturn msg;\n\n\n// Converts a number from signed integer format to a decimal number\nfunction Int2Float(v) {\n    \n    let t;\n    \n    if (v > 32767) t = v - 65536;\n\telse t = v;\n\t\n\tt = t / 10;\n\t\n\treturn t;\n\t\n}","outputs":1,"noerr":0,"x":640,"y":320,"wires":[["672804c.43e07fc"]]},{"id":"672804c.43e07fc","type":"debug","z":"540127df.a16e88","name":"output","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":790,"y":320,"wires":[]},{"id":"664b1ea7.764358","type":"function","z":"540127df.a16e88","name":"Prepare","func":"msg.payload = { \n    'fc': 4,            // Read Input register\n    'unitid': 49,       // Sensor Modbus id (49 = 0x31 = \"1\")\n    'address': 0,       // Start reading from reg. on addr 0 (first reg.)\n    'quantity': 6       // Number of registers\n};\n\nreturn msg;","outputs":1,"noerr":0,"x":640,"y":220,"wires":[["5f524473.d0e58c"]]},{"id":"7b80b242.9e5dac","type":"inject","z":"540127df.a16e88","name":"","topic":"THCO2","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":480,"y":220,"wires":[["664b1ea7.764358"]]},{"id":"6984e91f.37d4f","type":"modbus-client","z":"","name":"","clienttype":"serial","bufferCommands":false,"stateLogEnabled":false,"tcpHost":"","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyAMA0","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"1000","unit_id":"","commandDelay":1,"clientTimeout":1000,"reconnectTimeout":3000}]


THCO2 communicates using a standard two-wire RS485 industrial bus. It uses 4,5 – 36V DC for power, its power input is protected against polarity reversal.

The following picture shows THCO2, a converter and other devices all connected properly.

Converter: The connection to a computer or PLC can be realized in different ways according to the required communication line. The TC485 converter is intended for connection via RS232. The SB485L converter is intended for connection via USB. The Edgar coverter intended for connection via Ethernet includes a power supply for sensors, so the entire assembly can be powered over PoE. You can easily connect THCO2 to Raspberry Pi via ExtRaPi.

PSU: In most cases, one 12 V or 24 V source is sufficient to supply all thermometers and the transmitter.

Wiring: We recommend using a UTP cable used for computer netowrks to connect thermometers, power supply and converter in a common environment. One twisted pair is used for RS485, the other pair for power supply.


Complete documentation for THCO2 in English with complete documentation of Spinel and Modbus RTU protocols.

File size: 0.9 MB

Date: 22-05-2020


Other items for download:

  • Modbus Configurator: Software for easy switching between protocols in our devices. Mainly between Spinel and ModBus RTU. Apart from switching, this little utility can also search and set-up communication parameters of Papouch devices.
  • Spinel.NET on GitHub: C# library for quick integration of THCO2 into your project (in Czech)
  • SpinelComSetup: Simple utility to set-up address and communication speed of your devices with Spinel protocol. It can change also the address by entering the serial number of the device on the label.