——
#DonLucElectronics #DonLuc #ENS160 #BME280 #Environment #FireBeetle2ESP32C6 #ESP32 #Display #IoT #Project #Fritzing #Programming #Electronics #Microcontrollers #Consultant
——
——
——
——
ENS160 Air Quality Sensor
This Gravity: ENS160 Air Quality Sensor, based on ScioSense’s new ENS160 sensor chip, is specifically designed for indoor air quality monitoring and offers detection of multiple IAQ data (TVOC, eCO2, AQI). The innovative TrueVOC™ technology combines the metal oxide (MOX) technology that brings this sensor superior accuracy, fast response, anti-interference, etc. With intelligent on-chip algorithms, the ENS160 can directly output rich and easy-to-understand environmental data. Preheat the sensor 3 minutes before use then you can obtain accurate data more quickly. What’s more, the built-in automatic baseline correction algorithm ensures the long-term stability of the sensor.
DL2608Mk03
1 x FireBeetle 2 ESP32-C6
1 x Fermion: 2.0″ 320×240 IPS TFT LCD
1 x GDL Line 10 CM
1 x Fermion: ENS160+BME280 Environmental Sensor
1 x Lithium Ion Battery – 1000mAh
1 x USB 3.0 to Type-C Cable
DL2608Mk03p
DL2608Mk03p.ino
/****** Don Luc Electronics © ******
Software Version Information
Project #15: Environment – ENS160 Air Quality Sensor – Mk46
15-46
DL2608Mk03p.ino
DL2608Mk03
1 x FireBeetle 2 ESP32-C6
1 x Fermion: 2.0" 320x240 IPS TFT LCD
1 x GDL Line 10 CM
1 x Fermion: ENS160+BME280 Environmental Sensor
1 x Lithium Ion Battery - 1000mAh
1 x USB 3.0 to Type-C Cable
*/
// Include the Library Code
// DFRobot Display GDL API
#include <DFRobot_GDL.h>
// BME280 Environmental
#include <DFRobot_BME280.h>
// ENS160 Air Quality Sensor
#include <DFRobot_ENS160.h>
// ENS160 Air Quality Sensor
// I2C communication.
#define I2C_COMMUNICATION
// I2C address is 0x53
DFRobot_ENS160_I2C ENS160(&Wire, 0x53);
// Status
uint8_t Status;
// AQI
uint8_t AQI;
// TVOC
uint16_t TVOC;
// ECO2
uint16_t ECO2;
// BME280 Environmental
typedef DFRobot_BME280_IIC BME;
// Wire
BME bme(&Wire, 0x76);
// Sea Level Pressure
#define SEA_LEVEL_PRESSURE 1015.0f
// Temperature
float temp = bme.getTemperature();
// Pressure
uint32_t press = bme.getPressure();
// Altitude
float alti;
// Humidity
float humi;
// Defined ESP32
#define TFT_DC D2
#define TFT_CS D6
#define TFT_RST D3
/*dc=*/ /*cs=*/ /*rst=*/
// DFRobot Display 240x320
DFRobot_ST7789_240x320_HW_SPI screen(TFT_DC, TFT_CS, TFT_RST);
// Software Version Information
String sver = "15-46";
void loop() {
// isBME280
isBME280();
// isENS160
isENS160();
// isDisplay ENS160
isDisplayENS160();
// Delay 1 Second
delay( 1000 );
}
getBME280.ino
// BME280 Environmental
// isBME280
void isBME280(){
// Temperature
temp = bme.getTemperature();
// Pressure
press = bme.getPressure();
// Altitude
alti = bme.calAltitude(SEA_LEVEL_PRESSURE, press);
// Humidity
humi = bme.getHumidity();
}
getDisplay.ino
// DFRobot Display 240x320
// DFRobot Display 240x320 - UID
void isDisplayUID(){
// DFRobot Display 240x320
// Text Display
// Text Wrap
screen.setTextWrap(false);
// Rotation
screen.setRotation(3);
// Fill Screen => black
screen.fillScreen(0x0000);
// Text Color => white
screen.setTextColor(0xffff);
// Font => Free Mono 9pt
screen.setFont(&FreeMono9pt7b);
// TextSize => 1.5
screen.setTextSize(1.5);
// Don Luc Electronics
screen.setCursor(0, 30);
screen.println("Don Luc Electronics");
// BME280 Environmental
screen.setCursor(0, 60);
screen.println("ENS160 Air Quality Sensor");
// Version
screen.setCursor(0, 90);
screen.println("Version");
screen.setCursor(0, 120);
screen.println( sver );
}
// isDisplay ENS160
void isDisplayENS160(){
// DFRobot Display 240x320
// Text Display
// Text Wrap
screen.setTextWrap(false);
// Rotation
screen.setRotation(3);
// Fill Screen => black
screen.fillScreen(0x0000);
// Text Color => white
screen.setTextColor(0xffff);
// Font => Free Mono 9pt
screen.setFont(&FreeMono9pt7b);
// TextSize => 1.5
screen.setTextSize(1.5);
// ENS160 Air Quality Sensor
screen.setCursor(0, 30);
screen.println("ENS160 Air Quality Sensor");
// AQI
screen.setCursor(0, 60);
screen.print("AQI : ");
screen.setCursor(70, 60);
screen.println( AQI );
// TVOC
screen.setCursor(0, 90);
screen.print("TVOC: ");
screen.setCursor(70, 90);
screen.print( TVOC );
screen.setCursor(150, 90);
screen.println( "ppb" );
// ECO2
screen.setCursor(0, 120);
screen.print("ECO2: ");
screen.setCursor(70, 120);
screen.print( ECO2 );
screen.setCursor(150, 120);
screen.println( "ppb" );
// Temperature
screen.setCursor(0, 150);
screen.print("Temp: ");
screen.setCursor(70, 150);
screen.print( temp );
screen.setCursor(150, 150);
screen.println( "C" );
// Humidity
screen.setCursor(0, 180);
screen.print("Humi: ");
screen.setCursor(70, 180);
screen.print( humi );
screen.setCursor(150, 180);
screen.println( "%" );
}
getENS160.ino
// ENS160 Air Quality Sensor
// isENS160
void isENS160(){
// Status - Return value: 0-Normal operation 1-Warm-Up phase
// 2-Initial Start-Up phase
Status = ENS160.getENS160Status();
// AQI - Return value: 1-Excellent, 2-Good, 3-Moderate, 4-Poor, 5-Unhealthy
AQI = ENS160.getAQI();
// TVOC - Return value range: 0–65000, unit: ppb
TVOC = ENS160.getTVOC();
// ECO2 = Return value range: 400–65000, unit: ppm
// Five levels: Excellent(400 - 600), Good(600 - 800), Moderate(800 - 1000),
// Poor(1000 - 1500), Unhealthy(> 1500)
ECO2 = ENS160.getECO2();
}
setup.ino
// Setup
void setup()
{
// Delay
delay(100);
// DFRobot Display 128x160
screen.begin();
// Delay
delay( 100 );
// BME280 Environmental
bme.begin();
// Delay
delay( 100 );
// ENS160 Air Quality Sensor
ENS160.begin();
/**
* Set power mode
* mode Configurable power mode:
* ENS160_SLEEP_MODE: DEEP SLEEP mode (low power standby)
* ENS160_IDLE_MODE: IDLE mode (low-power)
* ENS160_STANDARD_MODE: STANDARD Gas Sensing Modes
*/
ENS160.setPWRMode(ENS160_STANDARD_MODE);
/**
* Users write ambient temperature and relative humidity into ENS160 for
* calibration and compensation of the measured gas data.
* ambientTemp Compensate the current ambient temperature, float type, unit: C
* relativeHumidity Compensate the current ambient humidity, float type, unit: %rH
* Temperature
* Humidity=
*/
ENS160.setTempAndHum(temp, humi);
// Delay
delay( 100 );
// DFRobot Display 240x320 - UID
// Don Luc Electronics
// Versioc
isDisplayUID();
// Delay
delay( 5000 );
}
——
People can contact us: https://www.donluc.com/?page_id=1927
Consultant, R&D, Electronics, IoT, Teacher and Instructor
- Programming Language
- Single-Board Microcontrollers (PIC, Arduino, Raspberry Pi, Arm, Silicon Labs, Espressif, Etc…)
- IoT
- Wireless (Radio Frequency, Bluetooth, WiFi, Etc…)
- Robotics
- Automation
- Camera and Video Capture Receiver Stationary, Wheel/Tank , Underwater and UAV Vehicle
- Unmanned Vehicles Terrestrial, Marine and UAV
- Machine Learning
- Artificial Intelligence (AI)
- RTOS
- Sensors, eHealth Sensors, Biosensor, and Biometric
- Research & Development (R & D)
- Consulting
Follow Us
Luc Paquin – Curriculum Vitae – 2026
https://www.donluc.com/luc/LucPaquinCVEng2026Mk01.pdf
https://www.donluc.com/luc/
Web: https://www.donluc.com/
Web: https://www.jlpconsultants.com/
Facebook: https://www.facebook.com/neosteam.labs.9/
YouTube: https://www.youtube.com/@thesass2063
DFRobot: https://learn.dfrobot.com/user-10186.html
TikTok: https://www.tiktok.com/@luc.paquin8
Hackster: https://www.hackster.io/luc-paquin
LinkedIn: https://www.linkedin.com/in/jlucpaquin/
Don Luc


