Sensor modules
AXS-012 — APDS-9301 ambient-light PMOD module
Catalog #12 in the AruviX sensor line, level L3 (I2C). Uses the APDS-9301 instead of the catalog's original BH1750: no stock KiCad assets exist for the BH1750, and the APDS-9301 teaches the same lux- sensor lesson (dual channels, lux computed from raw counts, threshold interrupt) 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 decoupling | GRM188R71C104KA01DMurata |
C_0603_1608Metric |
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 |
ADDR 0x29/0x49 | I2C address: 1-2 GND 0x29 (default), 2-3 VDD 0x49, all open (cut 1-2) float 0x39 | — | 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 |
U1 |
APDS-9301 | Miniature ambient-light photo sensor, dual channel, I2C, lux output | APDS-9301-020Broadcom Datasheet ↗ |
Broadcom_APDS-9301 |
Signals#
Net labels used in the schematic, which are also the names the HDL top level should use.
3V3 ADDR_SEL ALS_INT GND LIGHT_INT SCL SCL_PU SDA SDA_PU
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-012-ambient-light
Catalog #12 in the AruviX sensor line (../README.md), level L3 (I2C). Uses the APDS-9301 instead of the catalog's original BH1750: no stock KiCad assets exist for the BH1750, and the APDS-9301 teaches the same lux- sensor lesson (dual channels, lux computed from raw counts, threshold interrupt) from stock symbols and footprints.
Status: schematic generated, ERC clean (0/0), netlist reviewed. PCB layout not started. Not released.
What it teaches#
I2C command/register access with the SMBus-style command byte, integrating light on two photodiode channels (visible+IR and IR-only), the empirical lux formula over the channel ratio (fixed-point exercise), and a programmable threshold interrupt for event-driven design.
Design#
- Broadcom APDS-9301-020 (chipscale,
OptoDevice:Broadcom_APDS-9301), 100 nF decoupling. - Address (ADR_SEL, JP3): 1-2 GND = 0x29 (default), 2-3 VDD = 0x49, float = 0x39 — floating requires JP3 fully open, i.e. cut the factory 1-2 bridge and bridge nothing.
- INT is open-drain: 10 kΩ pull-up on-module (R3), then 100 Ω series (R4) to PMOD pin 1 as
LIGHT_INT. - 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 | LIGHT_INT | NC | 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 (light aperture over U1 — no silk/mask obstruction), DRC, fab outputs
- [ ]
hdl/: I2C master core, APDS-9301 controller + lux math, testbench, ECP5 demo - [ ] BOM export and availability check, design-review checklist