Skip to the content
4 layers69.5 × 69.5 mmVibecheck mainboard, the printed circuit board in 3D

Vibecheck mainboard

harrislab-brown/VibeCheck

VibeCheck is a low-cost and easy-to-use vibration measurement system developed for the course Vibration of Mechanical Systems (ENGN 1735/2735) at Brown University.

Size
69.5 × 69.5 mm
Copper layers
4
Thickness
1.6 mm
Parts
206
Nets
170
Pads
618
Tracks, vias
1,619, 512
Pours
5
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
8 Jul 2024
Updated
18 Dec 2025

Overview

Vibecheck mainboard is an open-source printed circuit board by harrislab-brown, from the harrislab-brown/VibeCheck repository on GitHub, published under the CC-BY-SA-4.0 licence. It is a 4-layer board of 69.5 × 69.5 mm with 206 parts on 170 nets, routed with 1,619 tracks and 512 vias.

It is built around the RC4580N, TPA6111A2D and MT9700, with the USBLC6-2SC6, WS2812B-2020 and BSS138 among its other parts. Its parts include 64 capacitors, 54 resistors, 25 diodes, 9 connectors and 6 ICs. It belongs with the computers and single-board computers boards and the STM32 boards of this library.

Main components

7

README

README.md

VibeCheck Hardware Repository

VibeCheck is a low-cost and easy-to-use vibration measurement system developed for the course Vibration of Mechanical Systems (ENGN 1735/2735) at Brown University. While many of the features of VibeCheck are tailored specifically to meet the needs of the course laboratory component, the hardware offers a robust solution for interrogating a wide range of vibrating mechanical systems.

Key features:

  • Generate analog audio waveforms which can be used as an excitation source to vibrate a mechanical system.
  • Integrated strobe lights to visualize vibrational modes using the stroboscopic effect.
  • Data acquisition hub for up to 3 IMU daughterboards, sampling at frequencies up to 6.6 kHz.
  • Provide a streamlined user interface and electronics package for the course's lab kit.

Communication Interface

All communication between a host computer application and the MCU uses the onboard USB-C port and standard serial protocol. There are two main ways to communicate with the board.

  • Graphical web app: VibeCheck_Web is a companion web application for communicating with the VibeCheck hardware. It provides a simple interface to access all of the commonly used functions of the device. This includes plotting real-time acceleration data measured by the sensors and logging incoming data to a file in CSV format.

  • Serial Protocol: Users can also communicate with the VibeCheck hardware directly using the serial interface. A complete list of the available commands and examples of their use can be found in the /Firmware/README file. Since the protocol uses plain text encoding, users should be able to easily extend the behavior of the VibeCheck (e.g. to perform frequency sweeps) using simple scripts in languages like Python or MATLAB.

Hardware

The hardware was designed using KiCad, an open source electronics design tool. All design and manufacturing files can be found in the /VibeCheck/Hardware folder. We ordered the boards from JLCPCB (Aug. 2024) and the cost was $25 per main board (qty. 10) and $1.60 per sensor board (qty. 50).

There are two boards in this project, the main board that acts as a data acquisition and communication hub and sensor boards that can be used to measure acceleration and angular rate. Each mainboard can connect to three sensor boards.

Main board

  • Microcontroller: This project uses an STM32H723 microcontroller. This high performance MCU uses an Arm-Cortex M7 processor clocked at frequencies up to 550 MHz. It has 1MB of embedded flash memory and 564kB of SRAM.

  • USB: The microcontroller has an integrated USB-FS physical layer. Communication to the hardware from a host computer uses the USB interface.

  • Sensor communication: Three SPI peripherals from the MCU are broken out to connectors. Thin cables carry SPI data between the mainboard and the sensor baord.

  • Waveform generator: The MCU's stereo digital to analog output is used as a waveform generator. To buffer and boost the signal coming from the ADC pins, the board uses a headphone amplifier chip to drive a 3.5mm stereo headphone jack. A mute button on the board enables / disables the headphone amplifier chip.

  • Strobe LEDs: The board has 12 high-power white LEDs to act as a strobe. The strobe LEDs are driven using hardware timers on the MCU with logic-level FETs to switch the LED current.

  • Status LEDs: The board has three addressible RGB LEDs per sensor channel. These LEDs are used to display status updates and visually indicate the current acceleration measured by the sensor boards.

  • GPIO: A collection of MCU pins have been broken out to a GPIO header. This header includes power and ground pins, unused timer channels, and two digital to analog (DAC) pins.

  • I2C: A 5V I2C interface is broken out to a connector on the board. This connector follows the specifications used by the Adafruit STEMMA QT and SparkFun Qwiic line of boards.

  • Debug: Programming and debugging of the board is accomplished using an ST-Link V3 Minie. A Tag-Connect tc2030-nl footprint and associated debugger cable is used to connect the ST-Link to the board.

Sensor Board

The sensor boards use the LSM6DS3 accelerometer chip. This MEMS device designed for mobile phone applications has a 3-axis accelerometer with selectable measurement ranges from +/-2 g to +/-16 g and variable sample rates up to 6.6kHz. The sensor also has an onboard 3-axis angular rate sensor. The sensor board connects to the main board with an 8-pin JST-SH cable which provies power to the sensor board and enables communication. The sensor board can be mounted to the vibrating system of interest using 2x M3 screws with 25 mm hole spacing. Or, for the most compact form factor, the mounting holes can be removed by breaking the mouse bites and the sensor board can be mounted directly with adhesive or to an adhesive-backed magnet.

Additional parts

  • 6 mm x 2 mm round cabinet door bumpers. example
  • 10 mm x 2 mm round neodymium magnets. example
  • Sensor board cables: JST-PS 8 conductor crossover cables. From digikey:
    • 6" (digikey part number 455-3004-ND)
    • 8" (digikey part number 455-3657-ND)
    • 12" (digikey part number 455-3008-ND)

Firmware

The microcontroller firmware for this project is written in C. The STM32CubeIDE development environment is used to write, flash, and debug code for this project. A combination of ST's HAL and direct register maniulation are used to interface with the hardware peripherals depending on the performance requirements of each section of code. The firmware was designed using a quasi-object oriented approach in which each subsystem (e.g. strobe, waveform generator, etc.) is represented by a struct. Interface methods are emulated using functions which take a pointer to the struct to which they pertain.

The serial protocol is implemented using a text-based shell class based on the command pattern. Concrete input and output handlers can be defined and registered with the shell to extend the serial protocol functionality. Each handler has knowledge of both the shell and the class that it affects, but otherwise the shell and the lower-level classes for each VibeCheck subsystem are decoupled.

The SPI driver for the sensor chips was written following the datasheet. Acceleration data is read in high-priority interrupts which are triggered by the data ready pins of the sensor chips, ensuring accurate time stamps. The raw sensor data is double-buffered before conversion to text encoding. Transmitting the acceleration as human-readable strings is a bottleneck in the data acquisition system but we opted for this design due to its superior ease of use. The firmware could be adapted to favor performance by transmitting the raw binary data from the sensors over USB using COBS encoding to delimit packets.

Parts

206
QtyValueFootprintReferences
27100nCapacitor_SMD:C_0402_1005MetricC202, C203, C205, C207, C208, C209, C210, C211, C301, C308, C401, C402, C403, C404, C405, C406 +11
21TestPointTestPoint:TestPoint_Pad_D1.0mmTP401, TP402, TP403, TP404, TP405, TP406, TP407, TP408, TP409, TP410, TP411, TP412, TP413, TP1001, TP1002, TP1003 +5
1710uCapacitor_SMD:C_0805_2012MetricC201, C302, C303, C305, C1002, C1003, C1004, C1005, C1006, C1007, C1008, C1009, C1010, C1011, C1012, C1013 +1
1410kResistor_SMD:R_0402_1005MetricR201, R202, R203, R204, R206, R207, R208, R503, R506, R905, R912, R1014, R1016, R1018
1230Resistor_SMD:R_0805_2012MetricR1001, R1002, R1003, R1004, R1005, R1006, R1007, R1008, R1009, R1010, R1011, R1012
12LED_WHTfootprints:LED-SMD_L4.0-W1.50_HL-A-4014H421W-S1-HR3-DM-HLD1001, D1002, D1003, D1004, D1005, D1006, D1007, D1008, D1009, D1010, D1011, D1012
1122uCapacitor_SMD:C_0805_2012MetricC304, C309, C310, C311, C312, C906, C907, C908, C911, C913, C914
9WS2812B-2020LED_SMD:LED_WS2812B-2020_PLCC4_2.0x2.0mmD401, D402, D403, D404, D405, D406, D407, D408, D409
7330Resistor_SMD:R_0402_1005MetricR205, R501, R503, R504, R1013, R1015, R1017
415kResistor_SMD:R_0603_1608MetricR903, R906, R907, R910
42u2Capacitor_SMD:C_0805_2012MetricC204, C206, C909, C910
480Resistor_SMD:R_0603_1608MetricR901, R902, R908, R909
31kResistor_SMD:R_0402_1005MetricR302, R502, R505
322Resistor_SMD:R_0402_1005MetricR401, R402, R403
3BSS138Package_TO_SOT_SMD:SOT-23Q201, Q202, Q203
3Conn_01x08_SocketConnector_JST:JST_SH_SM08B-SRSS-TB_1x08-1MP_P1.00mm_HorizontalJ601, J701, J801
3NTR4170NPackage_TO_SOT_SMD:SOT-23Q1001, Q1002, Q1003
3SW_PushButton_Switch_SMD:SW_SPST_PTS645SW201, SW501, SW502
212pCapacitor_SMD:C_0402_1005MetricC212, C213
21uCapacitor_SMD:C_0603_1608MetricC306, C915
25K1Resistor_SMD:R_0402_1005MetricR303, R304
25k9Resistor_SMD:R_0603_1608MetricR904, R911
2LED_REDLED_SMD:LED_0603_1608MetricD501, D502
1100kResistor_SMD:R_0603_1608MetricR301
1150uCapacitor_SMD:CP_Elec_6.3x7.7C1001
124MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY201
12u2Inductor_SMD:L_1008_2520MetricL302
139nInductor_SMD:L_0603_1608MetricL301
147Resistor_SMD:R_0402_1005MetricR209
14k7Resistor_SMD:R_0603_1608MetricR305
1AMS1117-3V3Package_TO_SOT_SMD:SOT-223-3_TabPin2U303
1Conn_01x04_SocketConnector_JST:JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_HorizontalJ201
1Conn_02x06Connector_PinHeader_2.54mm:PinHeader_2x06_P2.54mm_VerticalJ202
1DAC TRGTestPoint:TestPoint_Pad_D1.0mmTP202
1FILT1 BYPASSJumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mmJP902
1FILT2 BYPASSJumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mmJP901
1GPIO_timing1TestPoint:TestPoint_Pad_D1.0mmTP203
1GPIO_timing2TestPoint:TestPoint_Pad_D1.0mmTP204
1LED_GRNLED_SMD:LED_0603_1608MetricD301
1LOGOLOGOG***
1MT9700Package_TO_SOT_SMD:SOT-23-5U302
1PH-313Dfootprints:AUDIO-SMD_PJ-313D-2J901
1RC4580Package_SO:SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.41x3.81mmU901
1RGBLED_5VTestPoint:TestPoint_Pad_D1.0mmTP201
1STM32H723VGTxPackage_QFP:LQFP-100_14x14mm_P0.5mmU201
1Schottky DiodeDiode_SMD:D_SOD-323D201
1TC2030-NLConnector:Tag-Connect_TC2030-IDC-NL_2x03_P1.27mm_VerticalJ204
1TPA6111A2Package_SO:SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.29x3mmU902
1TP_3V3ATestPoint:TestPoint_Pad_D1.0mmTP304
1TP_5VTestPoint:TestPoint_Pad_D1.0mmTP302
1TP_5VATestPoint:TestPoint_Pad_D1.0mmTP305
1TP_USB+TestPoint:TestPoint_Pad_D1.0mmTP11
1TP_USB-TestPoint:TestPoint_Pad_D1.0mmTP12
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U301
1USB_C_Receptacle_USB2.0_16PConnector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_HorizontalJ301
1VIBE_CHECK_LOGOfootprints:VIBE_CHECK_LOGOG***
1VIBE_CHECK_LOGO_SILKSCREENfootprints:VIBE_CHECK_LOGO_SILKSCREENG***
1VIBE_RESPONSE_SILKSCREENfootprints:VIBE_RESPONSE_SILKSCREENG***
1debug_connConnector_PinHeader_2.54mm:PinHeader_2x06_P2.54mm_Vertical_SMDJ501

More from harrislab-brown/VibeCheck

1
  • 2 layers31 × 12 mmVibecheck sensorboard, the printed circuit board in 3D

    Vibecheck sensorboard

    harrislab-brown/VibeCheck

    VibeCheck is a low-cost and easy-to-use vibration measurement system developed for the course Vibration of Mechanical Systems (ENGN 1735/2735) at Brown University.

    12 partsCC-BY-SA-4.0

Similar boards

  • 2 layers99 × 153 mmRLoop BMS v2, the printed circuit board in 3D

    RLoop BMS v2

    rLoopTeam/elec-pcb

    All PCB designs for rLoop in Altium Designer 13 format.

    442 parts5
  • 2 layers25.4 × 86 mmAudio jon FO1146A9E2145, the printed circuit board in 3D

    Audio jon FO1146A9E2145

    manhoosbilli1/tpa6110-stereo-amp-input-router

    Stereo audio amplifier (TPA6110A2) with 74AHC1G66 analog input switching and op-amp signal conditioning

    52 parts
  • 2 layers75 × 45 mmC3lingo unit channel io, the printed circuit board in 3D

    C3lingo unit channel io

    c3lingo/c3lingo-interpreter-unit

    A customized audio mixer and personal monitoring console for simultaneous interpreters.

    44 parts7CC-BY-SA-4.0
  • 6 layers56 × 65 mmMainboard gen2, the printed circuit board in 3D

    Mainboard gen2

    zephray/NekoInk

    Next gen. of NekoCal: An open-source hackable and programmable e-paper display

    245 parts108
  • 2 layers82.3 × 100.3 mmAudio Amplifier, the printed circuit board in 3D

    Audio Amplifier

    tomeh2/Audio-Amplifier

    55 partsMIT
  • 2 layers148.6 × 82 mmMain dj filter fx, the printed circuit board in 3D

    Main dj filter fx

    yminp/dj-filter-fx

    A voltage-controlled DJ filter unit with LFO-like envelope function

    164 parts
  • 2 layers100 × 100 mmLcr 2, the printed circuit board in 3D

    Lcr 2

    yjmwxwx/stm32asm

    207 parts16GPL-3.0

Questions

How big is the Vibecheck mainboard PCB?

It measures 69.5 × 69.5 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Vibecheck mainboard use?

206 parts, built around the RC4580N, TPA6111A2D, MT9700 and USBLC6-2SC6. 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 Vibecheck mainboard KiCad files?

From the harrislab-brown/VibeCheck repository on GitHub, at the commit this page was made from: the board is Hardware/vibecheck_mainboard/vibecheck_mainboard.kicad_pcb and its schematic Hardware/vibecheck_mainboard/ACCEL_LSM6DS3.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Vibecheck mainboard design in my own project?

Its repository publishes it under the CC-BY-SA-4.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).