uThing::VOC™ Air-Quality USB sensor dongle


  • Measures ambient temperature, humidity, barometric pressure and VOC gas
  • Direct indoor air quality (IAQ) index output
  • Integrates Bosch proprietary Air-Quality Index algorithm (BSEC)
  • USB Virtual Comm Port interface (USB CDC-ACM)
  • No special driver or software installation required (Linux, MacOS and Windows compatible)
  • Configurable output formats (JSON, CSV and human readable) through command line
  • Configurable sampling rate
  • Open Source. A few PCB pads expose extra MCU pins to extend functionalities.
  • Firmware update over USB


  • Quickly measure air-quality in a home, office or warehouse.
  • BME680 sensor module evaluation / quick integration
  • Home automation control (e.g. HVAC)
  • IoT rapid prototyping. Capture directly data into a CSV file without software installation
  • Measure Air-Quality from a PC, gateway, RaspberryPi, etc.


uThing::VOC™ is a USB dongle useful to quickly integrate or evaluate the Bosch BME680 air quality sensor.

The gas sensor within the BME680 detects a range of gases to measure indoor air quality (IAQ) index. Gases that can be detected include **Volatile Organic Compounds** (VOC) from paints (such as formaldehyde), lacquers, paint strippers, cleaning supplies, furnishings, office equipment, glues, adhesives and alcohol.

The integrated STM32F072 MCU capture raw data from the sensor and use the Bosch's proprietary Air Quality calculation algorithms to obtain equivalent air-quality, temperature, relative humidity and atmospheric pressure values. These values are then output over a simple Virtual Serial Comm on the USB connector in different configurable formats (JSON, CSV, Human readable or binary).

Why did we make it?

We’ve seen over and over situations where companies, engineers or tinkerers are working in a relatively complex proof-of-concept IoT project involving several hardware and software components (sensors, actuators, embedded boards, connectivity, backend, analytics and so on) and they need to allocate plenty of resources in the sensors data acquisition part to get the sensor’s data into a gateway.

If you need to sense air-quality data and decide to use the Bosch BME680, you will find that integrating the Bosch proprietary algorithms is not a trivial task, and that the code size limits its use in constrained platforms like many Arduino boards.

This dongle will save you plenty of firmware development time and struggles when your priority is just to get the raw + processed environmental data into a gateway or embedded PC.

What makes it special?

The VCP (Virtual Comm Port) interface makes trivial to export the data to a CSV file without the need to install any software and import in Excel for instance, or use the real-time values in JSON to integrate the sensor into a cloud-connected system, saving several hours to days of integration effort. For example, in Mac/Linux a simple command like cat /dev/cu.usbmodem1A1 > log.csv will start saving the sensor data into a CSV formatted file, making super quick and simple to collect air-quality data even for people with no coding skills.


  • Power input: 5V from USB port, 25 mA
  • Operating range: -40‒+85 °C, 10‒90 %r.H., 300‒1100 hPa
  • IAQ Range: 0-500.
  • Sensor-to-sensor IAQ deviation: ±15% (1)
  • Temperature resolution: 0.01 °C
  • Absolute temperature accuracy @25 °C: ±0.5 °C (2)
  • Humidity accuracy tolerance: ±3% r.H.
  • Humidity resolution: 0.008% r.H
  • Dimensions: 48x15x5 mm, Weight: ~5 g

  • Data rate: configurable between 3 seconds and 1 hour

(1) Note from the BME680 documentation: Indoor-air-quality (IAQ) gives an indication of the relative change in ambient TVOCs detected by BME680. The IAQ scale ranges from 0 (clean air) to 500 (heavily polluted air). During operation, algorithms automatically calibrate and adapt themselves to the typical environments where the sensor is operated (e.g., home, workplace, inside a car, etc.).This automatic background calibration ensures that users experience consistent IAQ performance. The calibration process considers the recent measurement history (typ. up to four days) to ensure that IAQ=25 corresponds to typical good air and IAQ=250 indicates typical polluted air.

(2) Please note that this is the BME680 accuracy. As the board will be connected to a USB port, the PCB temperature could rise due to the heat transferred from the host device, and therefore it will be an offset between the ambient temperature and the temperature seen by the BME680. The uThing::VOC was calibrated connected to an external 4-port USB hub.

### Downloads


Please find the usage instructions in the Datasheet below:

NOTE: “Section 9” documents how to handle unexpected behaviors in some Linux distributions.

Enlcosure - 3D model

Here it’s a 2-parts 3D-model for a case. The model can be “3D-printed” using FDM or SLA technologies. The design has “snap-fit” features, so the parts click in place without the need for screws.

Top and bottom STL files:

The source file (project in FreeCAD v0.19):


The uThing::VOC™ can be ordered from our Tindie Store. I sell on Tindie