Canairio Sensorlib

Particle sensor manager for multiple sensors: Honeywell, Plantower, Panasonic, Sensirion, etc. This is sensors layer of CanAirIO project too.

Internet of Things (IoT)C++GPL-3.0

Abstract

Canairio Sensorlib is an open-source Internet of Things (IoT) project. Particle sensor manager for multiple sensors: Honeywell, Plantower, Panasonic, Sensirion, etc. This is sensors layer of CanAirIO project too. Generic sensor manager, abstractions and bindings of multiple sensors libraries: Honeywell, Plantower, Panasonic, Sensirion, etc. and CO2 sensors. It is built using C++, ESP32, Arduino, ESP8266. Key capabilities include: Unified variables and getters for all sensors; Auto UART port selection (Hw, Sw, UART1, UART2, etc); Multiple i2c sensors and one UART sensor supported at the same time. The complete source code is publicly available on GitHub under the GNU General Public License v3.0, making it a useful reference for students building an Internet of Things (IoT) mini project or final-year project.

1. Introduction

Generic sensor manager, abstractions and bindings of multiple sensors libraries: Honeywell, Plantower, Panasonic, Sensirion, etc. and CO2 sensors. Also it's handling other environment sensors. This library is for general purpose, but also is the sensors library base of CanAirIO project.

For developers you can also check the complete library documentation here

2. Objective

Particle sensor manager for multiple sensors: Honeywell, Plantower, Panasonic, Sensirion, etc. This is sensors layer of CanAirIO project too.

This project demonstrates how C++, ESP32, Arduino can be applied to a real-world Internet of Things (IoT) problem.

3. Key Features / Modules

  • Unified variables and getters for all sensors
  • Auto UART port selection (Hw, Sw, UART1, UART2, etc)
  • Multiple i2c sensors and one UART sensor supported at the same time
  • Two I2C channel supported (Wire and Wire1)
  • Real time registry of sensor units (see multivariable)
  • Get vendor names of all devices detected
  • Preselected main stream UART pins from popular boards
  • Auto config UART port for Plantower, Honeywell and Panasonic sensors
  • Unified calibration trigger for all CO2 sensors
  • Unified CO2 Altitude compensation

4. Technology Stack

C++ESP32ArduinoESP8266
  • CanAirIO Device: ESP32 Air quality device for mobile and fixed stations. (PM2.5 and CO2)
  • CO2 Gadget: A high-quality CO2 meter with color display. (CO2)
  • M5CoreInk Multi Sensor: Wall CO2, T, H, P, Alt sensor with low consumption (30 days)
  • (Please add yours)

5. System Requirements

General requirements for this technology stack — check the README for exact versions.

  • Arduino IDE / PlatformIO or a C++ compiler (g++)
  • Target board (e.g. Arduino, ESP32) where applicable
  • Git (to clone the repository)

6. Installation & Setup

git clone https://github.com/kike-canaries/canairio_sensorlib.git
cd canairio_sensorlib
  1. Open platformio.ini, a project configuration file located in the root of PlatformIO project.
  2. Add the following line to the lib_deps option of [env:] section:
  3. Build a project, PlatformIO will automatically install dependencies.
hpsaturn/CanAirIO Air Quality Sensors Library@^0.7.7
pio pkg install --library "hpsaturn/CanAirIO Air Quality Sensors Library@^0.7.7"

Full setup instructions are in the project README.

7. Future Enhancements

Suggested extensions you can add to make this your own project.

  • Add a mobile dashboard using Blynk or Firebase
  • Store readings in a cloud database for history charts
  • Add alerts via SMS / Telegram when thresholds are crossed

8. Viva / Review Questions

Common questions examiners ask for projects in this domain.

  1. Which microcontroller / board and sensors are used and why?
  2. How does the device send data (Wi-Fi, MQTT, HTTP, Bluetooth)?
  3. Where is the sensor data stored and visualised?
  4. How is power consumption managed?
  5. How would you secure the device and its communication?

9. Source Code & License

This project is developed by kike-canaries and published on GitHub under the GNU General Public License v3.0. Please follow the license terms and credit the original author when you use or modify this code.

Want to build this as your internship project?

Work on an Internet of Things (IoT) project like this with mentor guidance, weekly reviews and an internship certificate from Training Trains, Erode — online or offline.

Apply for Internet of Things (IoT) Internship