I/O modules
AXO-006 — SSD1306 OLED carrier PMOD module
Catalog #6 in the AruviX output line, level L3 (I2C). Socketed carrier for the ubiquitous 0.96" SSD1306 128×64 I2C breakout — the bare OLED flex has no stock KiCad assets and the breakout is what every student already owns (same carrier pattern as sensor modules axs-021/axs-046).
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 | Decoupling at the OLED socket | GRM188R71C104KA01DMurata |
C_0603_1608Metric |
C2 |
10uF 10V X5R | Bulk for the breakout's charge-pump switching current | GRM21BR61A106KE19LMurata |
C_0805_2012Metric |
J1 |
PMOD PLUG 2x6 | PMOD peripheral plug (Digilent spec 1.2) | not selected generic |
PinHeader_2x06_P2.54mm_Horizontal |
J2 |
SSD1306 OLED (GND/VCC/SCL/SDA) | 0.96in SSD1306 I2C breakout socket: 1 GND, 2 VCC(3V3), 3 SCL, 4 SDA - VERIFY ORDER | not selected generic Datasheet ↗ |
PinSocket_1x04_P2.54mm_Vertical |
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 |
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 |
Signals#
Net labels used in the schematic, which are also the names the HDL top level should use.
3V3 GND 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/io-modules/axo-006-oled
Catalog #6 in the AruviX output line (../README.md), level L3 (I2C). Socketed carrier for the ubiquitous 0.96" SSD1306 128×64 I2C breakout — the bare OLED flex has no stock KiCad assets and the breakout is what every student already owns (same carrier pattern as sensor modules axs-021/axs-046).
Status: schematic generated, ERC clean (0/0), netlist reviewed. PCB layout not started. Not released.
What it teaches#
The first graphic framebuffer: 1 KiB of display RAM the host owns. HDL ladder: I2C init-sequence ROM player → pixel writes → full framebuffer with font ROM (chargen). I2C address 0x3C on virtually all 0.96" breakouts (a 0x3D strap variant exists — scan the bus first).
Design#
- J2 = 1×4 pin socket (
Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_ Vertical), wired 1 GND, 2 VCC(3V3), 3 SCL, 4 SDA. - PIN-ORDER WARNING (also printed on the schematic, must go on silk): the market splits between GND-first and VCC-first breakouts, and reversed power kills the module instantly. Compare your breakout's silkscreen with the carrier silkscreen before plugging; if it differs, don't force it.
- Runs from PMOD 3V3 (breakout's onboard charge pump makes the panel voltage; 20–30 mA typical draw is PMOD-safe).
- Standard I2C module pattern: 4.7 kΩ pull-ups through cuttable JP1 (SDA) / JP2 (SCL) jumpers — most breakouts carry their own 10 k pull-ups, the parallel combination is still legal, and the jumpers let you shed ours when chaining.
- 100 nF + 10 µF at the socket (charge-pump switching current).
| PMOD pin | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Net | NC | NC | SCL | SDA | GND | 3V3 | NC | NC | SCL | SDA | GND | 3V3 |
Regenerate#
python3 generate_design.py
Remaining for release#
- [ ] PCB layout (socket orientation silk both ways), DRC, fab outputs
- [ ]
hdl/: I2C master reuse + SSD1306 init/framebuffer core, ECP5 demo - [ ] BOM export and availability check, design-review checklist