Skip to the content
PCBKitNew board
2 layers100 × 102 mmMpair, the printed circuit board in 3D

Advanced Air Quality Monitoring Station based on ESP32's

Size
100 × 102 mm
Copper layers
2
Thickness
1.6 mm
Parts
198
Nets
183
Pads
662
Tracks, vias
1,235, 170
Pours
15
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
3 Jan 2026
Updated
6 Feb 2026

Overview

Mpair is an open-source printed circuit board by marpi82, from the marpi82/mpair repository on GitHub. It is a 2-layer board of 100 × 102 mm with 198 parts on 183 nets, routed with 1,235 tracks and 170 vias.

It is built around the 74AHCT1G125SE, CP2102N-EK and TPS563208DDC, with the ESDS314, ESP32-C6-WROOM-1U-N8 and HMHA2801A among its other parts. Its parts include 70 resistors, 58 capacitors, 14 diodes, 11 inductors and 9 connectors. It belongs with the sensors and measurement boards and the ESP32 and RISC-V boards of this library.

Main components

12

README

README.rst

====== mpair

Advanced Air Quality Monitoring Station

mpair is an open-source IoT air quality monitoring station with support for Matter/Thread protocol, PoE+ connectivity, and professional-grade sensors.

.. image:: https://img.shields.io/badge/Hardware-CERN--OHL--S--2.0-blue :target: LICENSE-hardware.rst :alt: Hardware License

.. image:: https://img.shields.io/badge/Software-GPL--3.0-green :target: LICENSE-software.rst :alt: Software License

.. image:: https://img.shields.io/badge/Documentation-CC--BY--SA--4.0-orange :target: LICENSE-docs.rst :alt: Documentation License

Features

Hardware Features

  • Single MCU Architecture

    • ESP32-C6-WROOM-1-N8 (all-in-one controller with integrated 802.15.4 radio)
  • Connectivity

    • Matter over Thread support (native 802.15.4 radio)
    • WiFi 6 (802.11ax) 2.4GHz
    • Ethernet 10/100Mbps via W5500 (SPI)
    • PoE/PoE+ (802.3af/at) with RT5300B-12V or 12V DC jack
    • CP2102 USB-UART converter for programming
  • Sensors

    • SPS30 - Particulate Matter sensor (PM1.0, PM2.5, PM4.0, PM10)
    • MH-Z14A - NDIR CO₂ sensor
    • SHT31 - Temperature and humidity (indoor)
    • BME280 - Temperature, humidity, and barometric pressure (outdoor)
    • GPS NEO-6 - Location and time synchronization
  • Additional Features

    • PTC heater (70°C) for HECA - heats air to reduce relative humidity and prevent SPS30 from measuring water droplets
    • WS2812 RGB LED indicators
    • SSD1309 2.42" OLED display (128×64, optional for indoor version)

Software Features

  • Matter/Thread protocol support for smart home integration

  • Real-time air quality monitoring

  • Data logging and visualization

  • OTA firmware updates

  • Web-based configuration interface

  • Multiple data export protocols:

    • MQTT broker support
    • Prometheus metrics endpoint
    • JSON REST API endpoint
    • Data publishing to Luftdaten (sensor.community)
    • Data publishing to madavi.de
    • Data publishing to opensensemap.org
    • Data publishing to aqi.eco

Technical Specifications

Power Supply

  • Input: PoE/PoE+ (802.3af/at) or 12V DC jack
  • Power Rails: 12V, 5V, 3.3V (isolated Buck converters with TX4138)
  • Consumption: TBD

Communication Interfaces

  • Ethernet: 10/100Mbps via W5500 (SPI)
  • Wireless: WiFi 6 (802.11ax) 2.4GHz, Matter over Thread (native 802.15.4 radio)
  • USB-UART: CP2102 converter for programming and debugging

Measurement Ranges

  • PM: 0-1000 µg/m³ (PM1.0, PM2.5, PM4.0, PM10)
  • CO₂: 0-5000 ppm (MH-Z14A)
  • Temperature: -40°C to +85°C
  • Humidity: 0-100% RH
  • Pressure: 300-1100 hPa (BME280)

Project Structure

::

text
mpair/
├── hardware/
│   ├── EasyEDA/           # EasyEDA Pro project files
│   ├── gerbers/           # Manufacturing files (Gerber, drill, BOM)
│   └── schematics/        # PDF schematics and documentation
├── software/
│   ├── firmware/          # ESP32 firmware (ESP-IDF / Arduino)
│   ├── bootloader/        # Custom bootloader (if needed)
│   └── tests/             # Unit and integration tests
└── docs/                  # Additional documentation

Getting Started

Prerequisites

  • Thread Border Router (e.g., Smilight SLZB-06M) for Matter/Thread connectivity
  • Smart home system with Matter support (Home Assistant, Apple Home, Google Home, etc.) - optional
  • ESP-IDF v5.x or Arduino-ESP32 v3.x
  • EasyEDA Pro (for hardware modifications)

Building Firmware

.. code-block:: bash

text
cd software/firmware
idf.py build
idf.py flash monitor

Hardware Assembly

Detailed assembly instructions and BOM are available in the hardware/ directory.

Configuration

  1. Connect the device via USB, Ethernet, or power it with PoE/DC
  2. Access the web interface at http://mpair.local
  3. Configure Thread credentials, sensor parameters, and data publishing settings
  4. (Optional) Pair with your smart home system using Matter QR code
  5. Configure data export endpoints (MQTT, Prometheus, Luftdaten, etc.)

Licenses

This project uses multiple licenses for different components:

Hardware

CERN Open Hardware Licence Version 2 - Strongly Reciprocal (CERN-OHL-S-2.0)

The hardware designs are licensed under CERN-OHL-S-2.0, which means:

  • You are free to use, modify, and distribute the hardware designs
  • Any modifications must be released under the same license
  • You must make design sources available
  • Commercial use is allowed

See LICENSE-hardware.rst <LICENSE-hardware.rst>_ for full license text.

Software

GNU General Public License v3.0 (GPL-3.0)

The software (firmware, utilities) is licensed under GPL-3.0, which means:

  • You are free to use, modify, and distribute the software
  • Any modifications must be released under the same license
  • Source code must be made available
  • Commercial use is allowed

See LICENSE-software.rst <LICENSE-software.rst>_ for full license text.

Documentation

Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)

All documentation is licensed under CC BY-SA 4.0, which means:

  • You are free to share and adapt the documentation
  • You must give appropriate credit
  • You must distribute your contributions under the same license
  • Commercial use is allowed

See LICENSE-docs.rst <LICENSE-docs.rst>_ for full license text.

Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please ensure your contributions comply with the respective licenses.

Credits

  • Inspired by NAMF (Nettigo Air Monitor Firmware)
  • Hardware design references from Olimex ESP32-PoE2
  • Matter/Thread support via ESP-IDF

Support

  • Issues: Use GitHub Issues for bug reports and feature requests
  • Discussions: Use GitHub Discussions for questions and ideas
  • Documentation: Check the docs/ <docs/>_ directory for detailed information

Roadmap

  • ☐ PCB design and prototyping
  • ☐ Firmware development (ESP32-C6)
  • ☐ Matter device type implementation
  • ☐ Home Assistant integration and testing
  • ☐ Enclosure design (3D printable)
  • ☐ Certification (optional - Matter, PoE)
  • ☐ Production-ready version

Disclaimer

This project is provided "as-is" without any warranty. The authors are not responsible for any damage or data loss resulting from the use of this hardware or software.


Made with ❤️ for clean air monitoring

Version: 0.1.0-alpha

Parts

198
QtyValueFootprintReferences
190,1uFCapacitor_SMD:C_0603_1608MetricC1, C2, C4, C5, C13, C15, C16, C17, C19, C21, C22, C23, C30, C31, C48, C49 +3
1110kΩResistor_SMD:R_0603_1608MetricR9, R10, R11, R40, R49, R53, R57, R59, R60, R61, R62
100ΩResistor_SMD:R_0603_1608MetricR5, R6, R12, R21, R22, R23, R25, R26, R27, R55
822uFCapacitor_SMD:C_1210_3225MetricC7, C9, C28, C50, C51, C52, C53, C57
74,7kΩResistor_SMD:R_0603_1608MetricR63, R64, R65, R66, R67, R68, R69
610uF/1206Capacitor_SMD:C_1210_3225MetricC40, C41, C44, C45, C46, C47
61kΩResistor_SMD:R_0603_1608MetricR7, R28, R29, R30, R31, R52
51uFCapacitor_SMD:C_0805_2012MetricC6, C25, C36, C54, C55
449,9ΩResistor_SMD:R_0603_1608MetricR14, R15, R16, R17
4MPZ2012S101AT000Inductor_SMD:L_0805_2012MetricL1, L2, L3, L4
4MountingHoleMountingHole:MountingHole_2.7mm_M2.5H1, H2, H3, H4
3100kΩResistor_SMD:R_0603_1608MetricR32, R36, R41
310nFCapacitor_SMD:C_0603_1608MetricC14, C20, C29
31nF/2kVCapacitor_SMD:C_1812_4532MetricC3, C34, C35
3330ΩResistor_SMD:R_0603_1608MetricR19, R20, R70
3BLM21PG600SN1DInductor_SMD:L_0805_2012MetricL5, L6, L14
3MMBD4148Package_TO_SOT_SMD:SC-59D7, D10, D14
3~Connector_Molex:Molex_KK-254_AE-6410-03A_1x03_P2.54mm_VerticalJ9, J10, J11
2100pFCapacitor_SMD:C_0603_1608MetricC38, C39
2100uF/25VCapacitor_SMD:CP_Elec_8x10C42, C43
22.2uF/1206Capacitor_SMD:C_1210_3225MetricC32, C33
222nFCapacitor_SMD:C_0603_1608MetricC10, C37
224,9kΩResistor_SMD:R_0603_1608MetricR38, R47
22kΩResistor_SMD:R_0603_1608MetricR46, R48
22kΩ/0.25WResistor_SMD:R_0805_2012MetricR50, R51
24,7ΩResistor_SMD:R_0603_1608MetricR39, R43
25,1kΩResistor_SMD:R_0603_1608MetricR2, R3
26,8nFCapacitor_SMD:C_0603_1608MetricC11, C12
2CSD19534QMarPi82:CSD19534QQ4, Q7
2FCX493Package_TO_SOT_SMD:SOT-89-3Q5, Q6
2GG0603052R542PDiode_SMD:D_0603_1608MetricD3, D4
2MMSZ5240Diode_SMD:D_SOD-123D13, D15
2PJ-063AHConnector_BarrelJack:BarrelJack_CUI_PJ-063AH_HorizontalJ1, J2
2SMBJ58CADiode_SMD:D_SMBD5, D6
2SS210Diode_SMD:D_SMAD1, D2
2TPS563208Package_TO_SOT_SMD:SOT-23-6U8, U9
2~Button_Switch_SMD:SW_SPST_FSMSMSW1, SW2
2~Connector_JST:JST_ZH_B4B-ZR-SM4-TF_1x04-1MP_P1.50mm_VerticalJ7, J8
10,047uFCapacitor_SMD:C_1206_3216MetricC26
10,1uFCapacitor_SMD:C_0805_2012MetricC24
1100mΩ/0,5WResistor_SMD:R_1206_3216MetricR45
110ΩResistor_SMD:R_0603_1608MetricR13
112,4kΩResistor_SMD:R_0603_1608MetricR18
11MΩResistor_SMD:R_0603_1608MetricR1
11N4148WDiode_SMD:D_SOD-123D16
12,49kΩResistor_SMD:R_0603_1608MetricR44
12,61kΩResistor_SMD:R_0603_1608MetricR54
12.2uHMarPi82:DR74L13
122,1kΩResistor_SMD:R_0603_1608MetricR4
122uF/63VCapacitor_SMD:CP_Elec_8x6.2C27
13,3Ω/4x0603Resistor_SMD:R_Array_Concave_4x0603RN1
13.3uHMarPi82:DR74L12
133,2kΩResistor_SMD:R_0603_1608MetricR58
133ΩResistor_SMD:R_0603_1608MetricR24
14,64kΩResistor_SMD:R_0603_1608MetricR33
14,7uFCapacitor_SMD:C_0805_2012MetricC18
140,2kΩResistor_SMD:R_0603_1608MetricR35
147,5kΩResistor_SMD:R_0603_1608MetricR8
1499ΩResistor_SMD:R_0603_1608MetricR42
156,2kΩResistor_SMD:R_0603_1608MetricR56
163,4kΩResistor_SMD:R_0603_1608MetricR37
169,8kΩResistor_SMD:R_0603_1608MetricR34
174AHCT1G125Package_TO_SOT_SMD:SOT-353_SC-70-5U11
1ARJP11A-MASA-B-A-EMU2Connector_RJ:RJ45_Abracon_ARJP11A-MA_HorizontalJ4
1BAT54SPackage_TO_SOT_SMD:SC-59D11
1BC846BPackage_TO_SOT_SMD:SOT-363_SC-70-6Q1
1CP2102NPackage_DFN_QFN:QFN-24-1EP_4x4mm_P0.5mm_EP2.6x2.6mmU2
1DX07S016JA1R1500Connector_USB:USB_C_Receptacle_JAE_DX07S016JA1R1500J3
1ECS-2520MV-250Oscillator:Oscillator_SMD_ECS_2520MV-xxx-xx-4Pin_2.5x2.0mmY1
1ESDS314Package_TO_SOT_SMD:SOT-23-5U3
1ESP32-C6-WROOM-1UMarPi82:ESP32-C6-WROOM-1UU10
1FBMH1608HL121-TVInductor_SMD:L_0603_1608MetricL7
1FDMC2523PMarPi82:FDMC_2523PQ2
1FDS86242MarPi82:FDS_86242Q3
1G6K-2G-TR DC5Relay_SMD:Relay_DPDT_Omron_G6K-2GK1
1HMHA2801APackage_SO:SOIC-4_4.55x2.6mm_P1.27mmU6
1LPS6235-155MRCInductor_SMD:L_TDK_SLF10145L10
1MMBD4148CCPackage_TO_SOT_SMD:SC-59D8
1MMBT3904Package_TO_SOT_SMD:SC-59Q8
1PA4065NLMarPi82:PA4065NLT1

The 187 most common of 198 parts.

Questions

How big is the Mpair PCB?

It measures 100 × 102 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Mpair use?

198 parts, built around the 74AHCT1G125SE, CP2102N-EK, TPS563208DDC and ESDS314. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Mpair KiCad files?

From the marpi82/mpair repository on GitHub, at the commit this page was made from: the board is hardware/KiCAD/mpair.kicad_pcb and its schematic hardware/KiCAD/PoE+_power.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Mpair design in my own project?

Its repository states no licence, so its author keeps all rights: ask marpi82 before reusing the design.

Similar boards

  • 4 layers36.5 × 36.5 mmFeeder, the printed circuit board in 3D

    Feeder

    owntech-foundation/Feeder

    This repository contains the design files relative to Low Side Synchronous Buck Power converter.

    54 parts
  • 4 layers108 × 110 mmAP2000, the printed circuit board in 3D

    AP2000

    imagestream/kicad

    Kicad designs and libraries

    152 parts1MIT
  • 2 layers94 × 100 mmRobocar unified integrated carrier, the printed circuit board in 3D

    Robocar unified integrated carrier

    laurigates/mcu-tinkering-lab

    This repository contains projects for various embedded platforms (ESP32, Arduino, STM32).

    98 parts7MIT
  • 6 layers100 × 100 mmBms board, the printed circuit board in 3D

    Bms board

    AerospaceNU/bms-pcb-design

    373 parts4
  • 2 layers101.4 × 28 mmSateLight Main, the printed circuit board in 3D

    SateLight Main

    ChrisMeletis/satelight_pcb

    A repository containing all the printed circuit boards for the SateLight project.

    38 partsGPL-2.0
  • 2 layers80 × 100 mmAutoprint, the printed circuit board in 3D

    Autoprint

    Konik-ai/autoprint-pcb

    79 parts
  • 4 layers70 × 72 mmSPINC AA Charger, the printed circuit board in 3D

    SPINC AA Charger

    CoretechR/SPINC

    DIY Automatic Battery Charger Using RP2040

    101 parts467GPL-3.0
  • 4 layers100 × 100 mmWcp52, the printed circuit board in 3D

    Wcp52

    WCP52/gpha

    Final product data for WCP52 Gain/Phase Analyzer

    351 parts1BSD-3-Clause