Getting Started with FoBE Breakout ENS160

Introduction
The FoBE Breakout ENS160 integrates the ScioSense ENS160 digital multi-gas sensor, specifically designed for indoor air quality monitoring. It features TrueVOC® technology for superior VOC detection with independent hotplate control, enabling detection of a wide range of volatile organic compounds including ethanol, toluene, hydrogen and oxidizing gases. Multiple connectivity options are provided for easy integration into various applications.
Applications
- Air purification and home automation devices
- Environmental pollution detection systems
- HVAC and ventilation control systems
- Building automation and smart thermostats
- Electrical appliances and range hoods
Key Features
-
ENS160
- TrueVOC® technology for industry-leading VOC detection
- Direct output of eCO2, TVOC and AQI values
- Independent heater control for highest VOC selectivity
- Outstanding background discrimination capability
- Superior output stability over temperature and humidity ranges
- Immunity to humidity and ozone interference
- Effective ozone compensation
- Operating temperature: -40°C to +85°C
- Operating humidity: 5% to 95% RH
- Built-in automatic baseline correction
-
Connectivity
- MFP-IIC interface (JST-SH1.0 4-Pin)
- 5 x 2.54mm Pin Header
Hardware diagram
The following figure illustrates the FoBE Breakout ENS160 hardware diagram.

Mechanical dimensions
FoBE Breakout ENS160 is a single-sided 25.4mm x 25.4mm (1" x 1") 1.6mm thick PCB with two SH1.0 4-pin connectors and a set of 5-pin 2.54mm header holes. Fixing by 4 x 1.6mm Screw holes.

Interfaces
The module provides dual 4-Pin JST SH1.0 connectors, compatible with STEMMA QT / Qwiic.
| 2.54mm 5-Pin | JST-SH1.0 | Features |
|---|---|---|
| GND | GND | Ground |
| 3V3 | 3V3 | Power supply, Only 3.3V |
| SDA | SDA | I2C-Data line |
| SCL | SCL | I2C-Clock line |
| INT | — | Interrupt, Active Low |
Advanced
Jumper
The module features two jumper pads:
| Interface | Description |
|---|---|
| LED-JUMPER | Disconnect this jumper to turn off the power LED for further power saving |
| ENS160-ADDR | I2C address selector: 0x53 Set JUMPER:H0x52 Set JUMPER:L |
Programming
Running with FoBE Quill ESP32S3 Mesh
Let's get started with the FoBE Quill ESP32S3 Mesh using the MFP interface.
- Connect the FoBE Breakout ENS160 to the FoBE Quill ESP32S3 Mesh using the MFP interface.

-
Create a sketch or PlatformIO project, or follow the FoBE Quill ESP32S3 Programming Guide for pre-configuration.
-
Install the necessary library in your project:
sciosense/ScioSense_ENS16x@^2.0.4
- Copy the following code into your sketch or PlatformIO project:
#include <ScioSense_ENS16x.h>
#define I2C_ADDRESS 0x52 // I2C address definition (H: 0x53, L: 0x52), check your jumper settings
#define I2C_SDA_PIN PIN_MFP3 // SDA pin for MFP to I2C cable, change if needed
#define I2C_SCL_PIN PIN_MFP4 // SCL pin for MFP to I2C cable, change if needed
#define PERI_EN_PIN PIN_PERI_EN // Peripheral enable pin, change if needed
ENS160 sensor;
void setup()
{
// Initialize serial communication
Serial.begin(115200);
Serial.println("Serial initialized");
// Initialize peripheral power
if (PERI_EN_PIN >= 0)
{
pinMode(PERI_EN_PIN, OUTPUT);
digitalWrite(PERI_EN_PIN, HIGH); // Enable peripheral power
Serial.println("Peripheral power enabled");
}
// Initialize sensor
Wire.begin(I2C_SDA_PIN, I2C_SCL_PIN);
sensor.begin(&Wire, I2C_ADDRESS);
Serial.println("I2C bus initialized");
while (sensor.init() != true)
{
delay(200);
}
Serial.println("ENS160 sensor initialized");
// Start measurement
sensor.startStandardMeasure();
}
void loop()
{
sensor.wait();
if (sensor.update() == RESULT_OK)
{
if (sensor.hasNewData())
{
// Display data on screen
Serial.print("\033[H\033[J");
Serial.println("> FoBE Breakout ENS160 Monitor");
Serial.println();
Serial.print("\033[7m");
Serial.printf("%-12s%-12s%-12s\n", "INDEX", "VALUE", "UNIT");
Serial.print("\033[0m");
Serial.printf("%-12s%-12d%-12s\n", "AQI", sensor.getAirQualityIndex_UBA(), "UBA");
Serial.printf("%-12s%-12d%-12s\n", "TVOC", sensor.getTvoc(), "ppb");
Serial.printf("%-12s%-12d%-12s\n", "ECO2", sensor.getEco2(), "ppm");
if (sensor.hasNewGeneralPurposeData())
{
Serial.printf("%-12s%-12d%-12s\n", "RS0", sensor.getRs0(), "Ohm");
Serial.printf("%-12s%-12d%-12s\n", "RS1", sensor.getRs1(), "Ohm");
Serial.printf("%-12s%-12d%-12s\n", "RS2", sensor.getRs2(), "Ohm");
Serial.printf("%-12s%-12d%-12s\n", "RS3", sensor.getRs3(), "Ohm");
}
}
}
}
This example code uses ANSI output formatting. Your terminal must support ANSI escape codes to display the output correctly.
# platformio.ini
[env:fobe_quill_esp32s3_mesh]
platform = FoBE Espressif 32
board = fobe_quill_esp32s3_mesh
framework = arduino
lib_deps =
sciosense/ScioSense_ENS16x@^2.0.4
monitor_speed = 115200
monitor_raw = true
- Build and upload the project. You should see the FoBE Breakout ENS160 Monitor output in the serial monitor (raw mode).
> FoBE Breakout ENS160 Monitor
INDEX VALUE UNIT
AQI 2 UBA
TVOC 109 ppb
ECO2 564 ppm
RS0 62991 Ohm
RS1 1 Ohm
RS2 100831 Ohm
RS3 22143 Ohm
Resources
[PDF] FoBE Breakout ENS160 Datasheet
[PDF] FoBE Breakout ENS160 Schematic