Skip to the content
PCBKitNew board
2 layers74.1 × 51.3 mmESP32, the printed circuit board in 3D

Note: each subfolder has its own README.md file that forms the ECE 445 notebook, in addition to this top-level file.

Size
74.1 × 51.3 mm
Copper layers
2
Thickness
1.6 mm
Parts
45
Nets
52
Pads
187
Tracks, vias
272, 49
Pours
2
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
19 Feb 2025
Updated
2 Jun 2025

Overview

ESP32 is an open-source printed circuit board by ashton6student, from the ashton6student/ece445 repository on GitHub. It is a 2-layer board of 74.1 × 51.3 mm with 45 parts on 52 nets, routed with 272 tracks and 49 vias.

It is built around the ESP32-S3-WROOM-1-N8, LM2596S-5.0 and AMS1117-3.3, with the SS8050 among its other parts. Its parts include 13 connectors, 7 resistors, 6 capacitors, 3 ICs and 2 diodes. It belongs with the ESP32 boards of this library.

Main components

4

README

README.md

VR Gloves Project

Note: each subfolder has its own README.md file that forms the ECE 445 notebook, in addition to this top-level file.

Overview

The VR Gloves project aims to create a pair of wearable hand-tracking gloves for VR applications, compatible with popular VR systems like Meta Quest 2. The gloves utilize perpendicular Hall effect sensors and magnets for finger flex tracking, a servo-based haptic feedback system, and BLE communication to interact with Unity applications.

Inspirations

This project is inspired by LucidGloves, an open-source VR glove. This project specifically attempts to take the good things from V3 and the good things from V5 to make our own unique solution. Specifically, it uses the badge reel idea from V3 and the hall-effect magnet solution from the V5 and combines them together.

Problem Statement

Modern VR devices often rely on handheld controllers that do not fully immerse the user in the virtual environment. While some high-end solutions like the Valve Index offer partial finger tracking, most affordable options still use conventional button-based input. The goal of this project is to develop a more immersive and affordable solution using DIY components.

Key Features

  • Wireless Communication: Uses BLE to transmit hand data to Unity applications.
  • Finger Tracking: Perpendicular Hall effect sensors measure finger curl using magnetic field angle changes.
  • Haptic Feedback: Servo motors lock the badge reels, restricting finger movement to provide haptic feedback.
  • Integrated VR Interaction: Uses Unity's XR Interaction Toolkit to allow for these gloves to be developed in a VR scene and can be deployed to a VR headset.

System Design

The VR gloves consist of five main subsystems:

1. Power Subsystem

  • Uses a 7.4V Li-ion battery stepped down to 5V and 3.3V using LDO regulators.
  • Provides stable power for ESP32-S3, hall effect sensors, and servo motors.

2. Sensor Subsystem

  • Perpendicular Hall effect sensors paired with magnets on each finger track the degree of bend.
  • Quest Controller used for hand positioning.
  • Haptic feedback provided by servos locking badge reels.

3. MCU Subsystem

  • Uses ESP32-S3 for data acquisition, BLE communication, and haptic control.
  • Converts raw sensor data into a usable format in Unity.
  • Transmits data via BLE to Unity with low latency (<20ms).

4. Controller Subsystem

  • Features a thumb joystick and push buttons mounted on the index finger.
  • Allows for conventional VR controller actions.
  • Data is transmitted to Unity using the BLE protocol.

5. Software Subsystem

  • Integrates with Unity using the XR Interaction Toolkit for virtual scene deployment.
  • Virtual scene containing objects with colliders to test interaction.
  • BLE data mapped to virtual hand movements and actions.
  • Collision detection triggers haptic feedback via BLE.

Code Structure

text
project_root/
├── Unity Files/       # Unity project and scenes
├── PCB Files/         # PCB schematics and board files
├── Arduino Files/     # Arduino sketches for glove firmware
├── 3D Files/          # 3D models and assets for Unity
├── Bluetooth Files/   # BLE communication scripts and libraries
├── myenv/             # Virtual environment for Python utilities
└── README.md          # Project documentation

Arduino Files and Bluetooth Files

  • Contains Arduino sketches for ESP32 to handle BLE communication and haptic control.
  • Implements data acquisition from Hall effects and joystick inputs.
  • Supports BLE wireless communication for real-time data transfer.

Unity Files

  • Unity scripts for receiving BLE data and controlling virtual hands.
  • Includes a test scene for verifying glove performance.

3D Files

  • 3D files for the glove parts.

PCB Files

  • KiCAD files for the PCBs in our project.

Installation

  1. Flash the ESP32 with the provided firmware in the firmware/glove_controller/ directory.
  2. Run the BLE Python bridge script located in Bluetooth Files/. You may need com2com software to simulate serial ports. Be sure to activate the Python virtual environment in myenv/ and install required packages.
  3. Open the Unity project from the Unity Files/ folder.
  4. Run the scene to test the glove inputs.

Usage

  • Wear the gloves and ensure they are powered on.
  • Start the Unity scene and observe hand movement tracking.
  • Test grabbing and manipulating virtual objects to validate haptic feedback.

Future Improvements

  • Enhanced haptic feedback.
  • Integration with more VR platforms like SteamVR.
  • Improved latency optimization in BLE communication.

Authors

  • Ashton Billings
  • Hamza Lutfi
  • Aditya Nebhrajani

Parts

45
QtyValueFootprintReferences
610kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1, R2, R3, R4, R8, R9
510uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC2, C3, C5, C6, C7
5Conn_01x03_PinConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ1, J2, J3, J4, J5
5Conn_01x04_PinConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ12, J13, J14, J15, J16
4MountingHoleMountingHole:MountingHole_2.2mm_M2H1, H2, H3, H4
2Conn_01x05_PinConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ6, J11
2SS8050Package_TO_SOT_SMD:SOT-23Q1, Q2
2SW_PushButton_Switch_THT:SW_PUSH_6mmSW1, SW2
2SolderJumper_2_OpenJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP1, JP2
2TestPointConnector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_VerticalTP1, TP2
11uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1
1200Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR5
12S LiPo 7.4V 2000mAhConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical+
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U2
1Conn_ARM_JTAG_SWD_10Connector_PinHeader_1.27mm:PinHeader_2x05_P1.27mm_VerticalJ7
1D_SchottkyDiode_SMD:D_SMAD2
1ESP32-S3-WROOM-1RF_Module:ESP32-S3-WROOM-1U1
1LEDLED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD1
1LM2596S-5Package_TO_SOT_SMD:TO-263-5_TabPin3U3
1LOGODemo:loG***

Questions

How big is the ESP32 PCB?

It measures 74.1 × 51.3 mm and has 2 copper layers, 1.6 mm thick.

What parts does the ESP32 use?

45 parts, built around the ESP32-S3-WROOM-1-N8, LM2596S-5.0, AMS1117-3.3 and SS8050. 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 ESP32 KiCad files?

From the ashton6student/ece445 repository on GitHub, at the commit this page was made from: the board is PCB Files/ESP32/ESP32.kicad_pcb and its schematic PCB Files/ESP32/ESP32.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the ESP32 design in my own project?

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

More from ashton6student/ece445

1
  • 2 layers17 × 12.4 mmHall effect, the printed circuit board in 3D

    Hall effect

    ashton6student/ece445

    Note: each subfolder has its own README.md file that forms the ECE 445 notebook, in addition to this top-level file.

    4 parts

Similar boards

  • 4 layers68.1 × 75 mmHomefire, the printed circuit board in 3D

    Homefire

    JhanqueliX/Smart-light-socket-for-fire-prevention

    117 parts1
  • 2 layers68.2 × 52.2 mmForward Ignition PCB, the printed circuit board in 3D

    Forward Ignition PCB

    aditgoyal5/Forward_Ignition_PCB

    This repository is about a printed circuit board I built for Team Sammard.

    135 parts
  • 2 layers150 × 100 mmSmartCube, the printed circuit board in 3D

    SmartCube

    kokhaie/Smart-Refrigerator-Demo

    The KiCad-generated BOM is mirrored into the documentation site under docs/ so it can be published through GitHub Pages.

    91 parts
  • 4 layers136 × 95 mmGamepad PCB, the printed circuit board in 3D

    Gamepad PCB

    pacman314159/Multipurpose_ESP32_Gamepad

    140 parts
  • 2 layers60.8 × 31.3 mmEsp32-s3-proto dev, the printed circuit board in 3D

    Esp32-s3-proto dev

    ahsanu123/crumbs

    🍪 Crumbs - Collection of my DIY Electronic Module

    28 partsMIT
  • 2 layers30.5 × 69.8 mmESP32-S3-2, the printed circuit board in 3D

    ESP32-S3-2

    wangga03/PCB

    31 parts
  • 2 layers49.2 × 73.5 mmLEDStrip, the printed circuit board in 3D

    LEDStrip

    GarethCooke/Arduino

    Arduino and ESP8266 / ESP32 projects

    72 partsGPL-3.0