Skip to the content
PCBKitNew board
2 layers52 × 35 mmMCU SPI, the printed circuit board in 3D

Event-triggered structural health monitoring pod. A geophone and an accelerometer watch for impact events; an FPGA buffers the waveform while the microcontroller sleeps, and the MCU wakes only when something happens…

Size
52 × 35 mm
Copper layers
2
Thickness
1.6 mm
Parts
33
Nets
29
Pads
120
Tracks, vias
268, 47
Pours
6
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
23 Jun 2026
Updated
31 Aug 2026

Overview

MCU SPI is an open-source printed circuit board by kalebwu41, from the kalebwu41/research repository on GitHub. It is a 2-layer board of 52 × 35 mm with 33 parts on 29 nets, routed with 268 tracks and 47 vias.

It is built around the 74LVC1G32Z and BSS84-7-F(ES). Its parts include 12 capacitors, 12 resistors, 5 ICs, 2 connectors and 1 diode.

Main components

2

README

README.md

shm-edge-sensor

Event-triggered structural health monitoring pod. A geophone and an accelerometer watch for impact events; an FPGA buffers the waveform while the microcontroller sleeps, and the MCU wakes only when something happens, classifies the event, and reports it.

Layout

PathWhat it is
shm-sensor-pod/MCU_SPI/KiCad project for the sensor board (the authoritative hardware source)
shm-sensor-pod/FPGA_event_sensor/KiCad project for the FPGA board
shm-sensor-pod/hdl-verilog/Gowin FPGA sources — wave detection, ring buffer, SPI master, wake control
shm-sensor-pod/constraints/FPGA pin assignment (.cst)
shm-sensor-pod/mcu-firmware/PlatformIO firmware — the three experimental arms
shm-sensor-pod/renode/Renode models of both configurations, for testing without hardware
shm-sensor-pod/tools/netlist_from_sch.py — keeps configa.cpp honest against the schematic
shm-sensor-pod/cad-enclosure/Enclosure STEP
shm-sensor-pod/docs/Lab notes
nosuz-lib/Submodule: KiCad symbols and footprints

KiCAD-MCP-Server/ may be present locally. It is a clone of a third-party tool and is deliberately gitignored — it is not part of the build.

The board in one paragraph

MCU_SPI is a 3.3 V board carrying an ADXL362 accelerometer and an ADS1220 24-bit ADC on one SPI bus, a DS3231M RTC on I2C, and a geophone front end. Its distinguishing feature is a discrete wake latch: a 74LVC1G00 NAND (U4) fed by the accelerometer interrupt and the RTC alarm clocks a 74LVC1G74 flip-flop (U5), whose output both signals WAKE_STATUS to the MCU and switches the +3V3_SW rail through a DMG3415U P-FET (Q1). One event latches a wake and powers the ADC; the MCU clears the latch to go back to sleep.

MCU_SPI/configa.cpp is the machine-readable description of all of that — pinout, bus topology, timing, and a behavioural model of the latch.

Verifying the hardware description

bash
cd shm-sensor-pod

# schematic still matches configa.cpp?
python3 tools/netlist_from_sch.py --regen

# configa.cpp's own arithmetic and pin-map guards
c++ -std=c++17 -Wall -Wextra -DCONFIGA_SELFTEST MCU_SPI/configa.cpp -o /tmp/ct && /tmp/ct

# board glue running in Renode
cd renode && renode wake_demo.resc

The checker exists because the netlist exports in this project silently went stale once already, describing a board revision that no longer existed. Run it after any schematic edit.

Known issues

  1. INTMAP1 bit 7 (INT_LOW) is mandatory on the ADXL362. The NAND acts as a negative-logic OR and needs both inputs idle-high. The ADXL362 defaults to an active-high, idle-low interrupt, which pins the NAND output high and stops the RTC alarm from producing any clock edge at all — the node never wakes. renode/wake_demo.resc reproduces this.
  2. ~34.5 ms blind window after every wake. VMID is biased from the switched rail, so C13 recharges through R6‖R7 on each wake. That is longer than the transient being measured. Fix is to bias VMID from the always-on rail.
  3. Anti-alias filter is far too wide. ~75.8 kHz gives only ~11 dB at the ADS1220 modulator frequency. C19 → 33 nF and C20/C21 → 3.3 nF puts the corner near 2.3 kHz and buys ~30 dB.

Open question: firmware target

mcu-firmware/ targets an ESP32 (platformio.ini, main_esp32.ino, WiFi + TinyML). renode/ models the board against an nRF52840 (Arduino Nano 33 BLE), because Renode has no ESP32-S3 SoC model — only the Xtensa ISA — whereas the nRF52840's SPI, I2C and GPIO are all properly modelled. Pick one before writing much more firmware.

Parts

33
QtyValueFootprintReferences
810kResistor_SMD:R_0805_2012MetricR1, R2, R3, R6, R7, R10, R11, R12
60.1 ufCapacitor_SMD:C_0805_2012MetricC1, C2, C3, C4, C6, C12
40.1 uFCapacitor_SMD:C_0805_2012MetricC7, C8, C9, C14
21MResistor_SMD:R_0805_2012MetricR8, R9
11 ufCapacitor_SMD:C_0805_2012MetricC13
11.3kResistor_SMD:R_0805_2012MetricR5
1100 pFCapacitor_SMD:C_0805_2012MetricC11
1220Resistor_SMD:R_0805_2012MetricR4
174LVC1G32Package_TO_SOT_SMD:SOT-23-5U4
174LVC1G74DP_125Package_SO:TSSOP-8_3x3mm_P0.65mmU5
1ADS1220IPWRPackage_SO:TSSOP-16_4.4x5mm_P0.65mmU2
1ADXL362Sensor_Motion:Analog_LGA-16_3.25x3mm_P0.5mm_LayoutBorder3x5yU1
1BSS84-7-FPackage_TO_SOT_SMD:SOT-23Q1
1Conn_01x02TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_HorizontalJ2
1Conn_01x12_PinConnector_PinHeader_2.54mm:PinHeader_1x12_P2.54mm_VerticalJ1
1DS3231MZ_TRLPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU3
1LEDLED_SMD:LED_0805_2012MetricD1

Questions

How big is the MCU SPI PCB?

It measures 52 × 35 mm and has 2 copper layers, 1.6 mm thick.

What parts does the MCU SPI use?

33 parts, built around the 74LVC1G32Z and BSS84-7-F(ES). 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 MCU SPI KiCad files?

From the kalebwu41/research repository on GitHub, at the commit this page was made from: the board is shm-sensor-pod/MCU_SPI/MCU_SPI.kicad_pcb and its schematic shm-sensor-pod/FPGA_event_sensor/FPGA_event_sensor.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the MCU SPI design in my own project?

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

Similar boards

  • 4 layers100 × 62.5 mmOmniframe Hardware, the printed circuit board in 3D

    Omniframe Hardware

    omniframe-art/Omniframe-Hardware

    Omniframe is an open source e-paper digital frame. This repository includes the source and fabrication files for the main and secondary boards for driving the 13.3" Monochrome e-ink display.

    104 parts4
  • 2 layers88.4 × 68.1 mmHardware V1.4, the printed circuit board in 3D

    Hardware V1.4

    jscastonguay/Environmental-Data-Acquisition-System-Hardware

    Wireless Weather Station - Hardware

    43 partsMIT
  • 2 layers90 × 60 mmFlappy esp32c3-revb, the printed circuit board in 3D

    Flappy esp32c3-revb

    Soulboy420/BP_flappyBird

    Eigenständiger KiCad-10-Entwurf für das HAW-Bachelorprojekt. Der ursprüngliche Entwurf unter hardware/ und absichtliche Benutzerlöschungen wurden nicht überschrieben. Es wurde nichts bestellt, committed oder gepusht.

    111 parts
  • 4 layers45.1 × 45.1 mmSuperPower uC KiCad, the printed circuit board in 3D

    SuperPower uC KiCad

    SuperPower/Apollo

    All hardware designs and products you can find in this repository is licensed under CERN Open Hardware Licence Version 2 - Weakly Reciprocal

    113 parts
  • 4 layers51.4 × 61 mmGB LIVE32, the printed circuit board in 3D

    GB LIVE32

    Gekkio/gb-hardware

    Game Boy -related custom hardware by gekkio

    61 parts379CC-BY-4.0
  • 2 layers92 × 94.5 mmPicoCNC, the printed circuit board in 3D

    PicoCNC

    phil-barrett/PicoCNC

    Raspberry Pi Pico based grblHAL Controller

    152 parts173
  • 2 layers132.5 × 38 mmEmfi, the printed circuit board in 3D

    Emfi

    Ledger-Donjon/silicon-toaster

    SiliconToaster is an open-source hardware electromagnetic fault injection device, designed for hardware security research. It has the following features:

    81 parts60LGPL-3.0
  • 4 layers47 × 39.5 mmStealthburner Toolhead PCB, the printed circuit board in 3D

    Stealthburner Toolhead PCB

    acha666/RP2040_ToolheadPCB_SB

    A Toolhead PCB for VORON StealthBurner based on RP2040

    145 parts43GPL-3.0