Sensor modules
AXS-043 — CCS811 eCO2/TVOC gas-sensor PMOD module
Catalog #43 in the AruviX sensor line, level L3 (I2C). Uses the CCS811 instead of the catalog's original ENS160: no stock KiCad assets exist for the ENS160, and the CCS811 teaches the same eCO2/TVOC air-quality lesson (metal-oxide sensing, baseline management, wake/interrupt handshaking) from stock symbols and footprints.
Circuit review & bench-test guide →
Components#
Every placed component, with the reason it is on the board. Extracted directly from the schematic, so this cannot drift from the design.
| Ref | Value | What it does on this board | Part number | Footprint |
|---|---|---|---|---|
C1 |
100nF 16V X7R | U1 VDD high-frequency decoupling | GRM188R71C104KA01DMurata |
C_0603_1608Metric |
C2 |
10uF 10V X5R | Bulk reservoir for the pulsed MOX heater supply | GRM21BR61A106KE19LMurata |
C_0805_2012Metric |
J1 |
PMOD PLUG 2x6 | PMOD peripheral plug (Digilent spec 1.2) | not selected generic |
PinHeader_2x06_P2.54mm_Horizontal |
JP1 |
SDA PULL-UP | Cut to remove the SDA pull-up when chaining modules | — | SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm |
JP2 |
SCL PULL-UP | Cut to remove the SCL pull-up when chaining modules | — | SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm |
JP3 |
~WAKE SEL | ~WAKE source: 1-2 GND always awake (default), 2-3 host-driven ECO2_WAKE_N on PMOD pin 2 | — | SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm |
JP4 |
ADDR 0x5A/0x5B | I2C address select: 1-2 ADDR low 0x5A (default), 2-3 ADDR high 0x5B | — | SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm |
R1 |
4.7k | I2C SDA pull-up | RC0603FR-074K7LYageo Datasheet ↗ |
R_0603_1608Metric |
R2 |
4.7k | I2C SCL pull-up | RC0603FR-074K7LYageo Datasheet ↗ |
R_0603_1608Metric |
R3 |
10k | Pull-up for the open-drain ~INT output | RC0603FR-0710KLYageo Datasheet ↗ |
R_0603_1608Metric |
R4 |
100R | Series protection on the sensor-driven ~INT line | RC0603FR-07100RLYageo Datasheet ↗ |
R_0603_1608Metric |
R5 |
10k | ~RESET pull-up (on-module only; not routed to the PMOD - use I2C SW_RESET) | RC0603FR-0710KLYageo Datasheet ↗ |
R_0603_1608Metric |
U1 |
CCS811 | Digital eCO2 and TVOC gas sensor, I2C, on-chip MCU with baseline engine | CCS811B-JOPD500ams (ScioSense) Datasheet ↗ |
AMS_LGA-10-1EP_2.7x4mm_P0.6mm |
Signals#
Net labels used in the schematic, which are also the names the HDL top level should use.
3V3 ADDR CCS_INT_N ECO2_INT_N ECO2_WAKE_N GND RESET_N SCL SCL_PU SDA SDA_PU WAKE_N
Production status#
| Schematic ERC | 0 violations |
|---|---|
| PCB layout | complete |
| DRC | 0 violations |
| Fab package | exported (24 gerbers + drill + CPL + BOM) |
| Fabricated | no — design stage only |
Source: boards/sensor-modules/axs-043-eco2
Catalog #43 in the AruviX sensor line (../README.md), level L3 (I2C). Uses the CCS811 instead of the catalog's original ENS160: no stock KiCad assets exist for the ENS160, and the CCS811 teaches the same eCO2/TVOC air-quality lesson (metal-oxide sensing, baseline management, wake/interrupt handshaking) from stock symbols and footprints.
Status: schematic generated, ERC clean (0/0), netlist reviewed. PCB layout not started. Not released.
What it teaches#
A stateful I2C driver well beyond raw register reads: application-mode boot (APP_START), measurement-mode selection, the data-ready interrupt, and baseline save/restore across power cycles — plus the ~WAKE handshake when the host manages sensor power.
Design#
- ams (ScioSense) CCS811B-JOPD500, LGA-10 (
Package_LGA:AMS_LGA-10-1EP_2.7x4mm_P0.6mm). - Decoupling: 100 nF + 10 µF 0805 bulk — the MOX heater is pulsed.
- ~WAKE (JP3, 3-way): 1-2 GND (default) = always awake, simplest bring-up; move to 2-3 to hand ~WAKE to the host on PMOD pin 2 (
ECO2_WAKE_N). - ~INT is open-drain: 10 kΩ pull-up on-module (R3), then 100 Ω series (R4) to PMOD pin 1 as
ECO2_INT_N. - ~RESET: 10 kΩ pull-up on-module only, not routed to the PMOD — use the I2C SW_RESET mailbox for resets.
- Address (JP4): 1-2 GND = 0x5A (default), 2-3 VDD = 0x5B.
- PWM/Sense (the optional external-NTC network) and AUX are left floating per the datasheet (no-connect markers).
- 4.7 kΩ bus pull-ups through JP1 (SDA) / JP2 (SCL), fitted by default; cut when another module on the chain provides the pull-ups.
| PMOD pin | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Net | ECO2_INT_N | ECO2_WAKE_N | SCL | SDA | GND | 3V3 | NC | NC | SCL | SDA | GND | 3V3 |
Regenerate#
python3 generate_design.py
reports/erc.rpt is the last kicad-cli ERC run.
Remaining for release#
- [ ] PCB layout (thermal relief: keep the MOX package away from other heat sources; opening over the sensor mesh), DRC, fab outputs
- [ ]
hdl/: I2C master core, CCS811 controller (boot FSM + baseline), testbench, ECP5 demo - [ ] BOM export and availability check, design-review checklist