Blueprint

Guardian - Wearable Health Monitor

A compact health monitoring device that is worn on the wrist. Its capabilities are measuring your heart rate and detecting accidental falls using an accelerometer.

Created by kianramezani09 kianramezani09

Tier 3

2 views

0 followers

samliu samliu ⚡🚀 approved Guardian - Wearable Health Monitor ago

Tier approved: 3

Grant approved: $103.00

Awesome project - Approved

kianramezani09 kianramezani09 submitted Guardian - Wearable Health Monitor for ship review ago

kianramezani09 kianramezani09 added to the journal ago

Finished Github Repository

I added all the files according to the submission guidelines and organized them into folders for my github repository. I used a plugin to create my production folder, and I also included my archived KiCAD project files in the folder /hardware. I finished modelling the 3D model of all the components by adding the battery. I also filled out an order from JLCPCB to get a quote on my PCB. I left the ESP32S3 out of the PCBA as I will be soldering that myself. The voltage regulator for the MAX30102 (TPS7A0518PDBVT) was not in stock in JLCPCB, so I will also be soldering that myself.

JLCPCB PCBA Render:
image

3D Model (all components):
image

kianramezani09 kianramezani09 added to the journal ago

PCB Routing (retrospecitve)

One of the most challenging parts of routing was the charging IC. The pads were very tiny, and there were many connections, almost on all pads. This made tracing around components very challenging:

Original route tracing:
image

Improved route tracing (removed diode & packed VR and other components closer):
image

The original tracing had too much space between the components, which I had foolishly left for silkscreen placement. The trace width of the EN was also very thin for the current that is passing through it. By moving the components closer to the charging IC, I was able to reduce the length of the thin EN trace.

This took me too long to figure out, but to connect the 3V3 pours that didn't have enough space to connect, I just had to use vias, and traces on the bottom layer.
imageimage

Vias were my best friend when designing the improved design. This allowed me to move the MAX30102 lower so that it is more accessible, and I also moved the decoupling capacitors for the 3V3 regulator closer to its IC. I also extended the left side a bit to add space for easy soldering of the ESP32S3 later.
Screenshot 2026-03-20 115334

It long time to figure out how to connect everything to the charging IC pads with the fewest overlaps.
image

Also, I chose to go with hand solder footprints for most footprints as it enables me to be able to switch components out more easily in case of any errors.

kianramezani09 kianramezani09 added to the journal ago

PCB Placement (retrospective)

I wanted to place everything so that I would get the most compact board possible. Originally, I had trouble with this because components like the MPU-6050 and the charging IC had a bunch of components around them, and not only did this make routing traces a pain, it also made it very cluttered and too close to the main chip. The barrel jack connector and the 6 pin header also didn't help.

Here is my original PCB routing.
image
The problem with this was that I was routing the EN trace of the barrel jack under the MAX30102, so everything gets pushed against the ESP32S3. Not only does this make it so that it is harder for the user to place their finger on the heart sensor, it also reduces the space I have for routing traces. This took a lot of time to realize, and the testpoints I added didn't help with tracing either. I changed the original PCB layout (shown above) so that there was more space between the ESP32S3 and the components. I also removed the diode for the charging IC, as it already handles charge backflow.

When routing the traces for the MPU-6050, I had a lot of trouble with the small pads, and getting everything to fit in a reasonable way around it. The testpads also complicated things, but I figured they would be useful for debugging.
image

I also had to use the bottom layer and cut up the GND pour (which isn't ideal) to connect some of the ESP32S3 pads to the components and the 6 pin header. I couldn't get around this in my final design as it would just make everything more cluttered if I wanted to point the esp32s3 out the side.
image

kianramezani09 kianramezani09 added to the journal ago

Modelled Wrist Holder/Case

For creating the wrist holder for the wearable health monitor, I measured my own wrist dimensions and modelled it after my own wrist shape. However, I only used this as a reference, and made sure to model the case in a way that would fit on most wrists well. One of the ways I did this was to include holes for a flexible wrist band (shown in beige colour), rather than a rigid holder for the case. I also wanted the case to protect the pcb from falling and moving, but not restrict it too much as I might want to take the case on and off easily, and to also have easy access to the connector ports like the UART header pins and the battery connector. There are three holes in my PCB, which allow me to restrict side to side movement of the board, and the removable top piece attaches to the bottom piece through the three holes using press fit pins, and restricts the board from falling out of the indent in the bottom piece. For the heart rate sensor, I left an indent with dimensions based on my index finger size, but I also included tolerances for different finger types and sizes. I decided to leave this part open on the top rather than include a rounded casing to allow easy placing and removing of the finger. As for where the battery will go, I wanted to remove the amount of things needed to be worn by taping it to the top piece.

Without Top Piece:
image

With Top Piece:
image

kianramezani09 kianramezani09 added to the journal ago

Routed the PCB

I decided to call my product "Guardian", as it protects the wearer from further harm by detecting falls and monitoring heart rates.

My PCB is 2 layers, double sided, with traces on both sides. My main priority when creating the PCB was keeping the size of the board small. The dimensions of this design are 55mm by 40.1mm, which are sized to fit comfortably on the wrist. The antenna of the ESP32S3 is left sticking out of the board to reduce the copper interference, and connectors are also slightly protruding for ease of connection. There is a ground pour on the bottom layer, and a 3V3 pour on the top layer.

I found out that the ESP32S3-WROOM-1 module cannot be soldered by JLCPCB under the Economic PCBA option, as castellated components require Standard PCBA, which requires a minimum panel size of 70mm x 70mm, making it larger than my board. I could have the ESP32S3 soldered by JLCPCB by panelizing my board to meet the size requirement, but this would make it very expensive as they would have to create at least 10 assembled PCBs. Instead, I will hand solder the WROOM-1 module myself after the board arrives, which is why I left a lot of space around the ESP32S3 module.

As for the board itself, I tried to organize everything in a compact, and practical way so that the user will be able to use the heart rate sensor easily. Connections that have a high amount of current running through them have thicker traces of about 0.8mm in places where possible, to reduce resistance. For example, connections from BAT+, EN, and 3V3 from pin header all have thicker traces. For the I2C clock and data lines I added test points for both the MPU-6050 and MAX30102. This will help me with debugging any issues in data transmission later, after programming the ESP32S3 through the UART interface that connects with the 6 pin header. Test points were also added for essential connections like 3v3, 1v8, BAT+, and GND. These will let me see if the voltage output of the regulators are correct, and if components are being supplied properly. Decoupling capacitors and voltage regulators for power lines were also placed near their respective power pins.

This is just the final routing, I will break the process down in future logs.

Front & Back Layer:
image

Front Layer:
image

Back Layer:
image

Front 3D Model:
image

Back 3D Model:
image

DRC Test Results (main complain was for silkscreens, no vital errors):
image

ERC Test Results:
image

kianramezani09 kianramezani09 added to the journal ago

Added Voltage Regulators

The ESP32S3, MPU 6050, and MAX30102 run on 3.3V, so my pcb power rail will need to be powered by a 3.3V power regulator. A reliable regulator chip I chose to go with was the TLV75533PDBVR, but later changed my choice because I realized that it didn't meet the max current capacity of my board. The battery for powering the board will be a Li-Po 3.7V 1500mAh battery, for which the choice was explained in the previous log.

The voltage regulator needs enough current output to supply all the components on the board, so I needed to go check and add the current pull from the ESP32S3, MPU-6050, and MAX30102. The max current draw of the ESP32S3 with WiFi is 355 mA. The max current draw from the MPU-6050 is very small, with about 4 mA needed for the gyroscope. The MAX30102 requires two different voltages supplied to it for it to run. The 3v3 rail goes to the VLED+ pin, which powers the LEDs, and this draws a maximum current of 200 mA. The other pin which needs 1.8V is the VDD pin, which powers the logical circuitry, and only draws at max 1.2 mA, and will need to be supplied by another voltage regulator. Adding up the currents of all the components gives a max current draw of 559 mA. This made me realize that since the max current output of the TLV75533PDBVR is 500 mA, I would need a voltage regulator with a higher max current output. I chose the TLV75733PDBVR instead, which had a max output current of 1 A, which is plenty headroom for the current requirements of my board. It was good that I checked this, as it could have led to a faulty board, in which no components can be tested.

3V3 Board Voltage Regulator:
image

1V8 Voltage Regulator for VDD pin on MAX30102:
image

kianramezani09 kianramezani09 added to the journal ago

Changed the Battery Charging IC

I decided to change the battery charging IC from MCP73831-2 to the Texas Instruments BQ24075RGT. I wanted a reliable charging IC with better safety and features. While the MCP73831-2 will work, the BQ24075RGT allows for powering the board while charging, and also gives more flexibility and better monitoring of the charging status.

The OUT pin on the BQ24075RGT will be connected to the 3V3 regulator for the board. When the battery is charging, the OUT pin directly powers the board from the 5V input of the barrel jack. When the battery is not charging, the BAT+ is routed to OUT, which powers the board. This allows for constant monitoring of the wearer's health, without having to lose power to the board while charging.

To set the max input current and the charging current, I set resistor values for ILIM and ISET and connected to VSS as instructed by the datasheet. The 1.1K resistor for ILIM allows for around 1.5A max input current, which gives a lot of headroom for the 0.79A charging current set by the 1.13K resistor on ISET. I chose 0.79A as the charging current as I plan to use a 1500 mAh capacity battery, which will prolong the lifespan of the battery and is a safe charging current.

image

kianramezani09 kianramezani09 added to the journal ago

Worked on Power Management

Today I worked on how my board will be powered. I plan to use a 3.7V lithium ion battery, and also be able to charge it on board. A barrel jack will power a charging chip, which will charge the battery. The battery will connect to the board via a JST connector, and its output will be run through a voltage regulator (yet to be added) that gives the board 3.3V.

For the battery charging chip, I wanted something small and compact in order for my pcb to fit on the wrist. However, I decided to compromise size for the barrel jack as it gives more range as to how much voltage is used to charge the battery. The battery charging IC I chose was the MCP73831-2, and I made sure that I chose the SOT-23 package, which makes it easier to work with if I needed to desolder anything later. I set the charging current to 500 mA, which is a safe value for most lithium ion cells while still allowing reasonably fast charging. I may change this value later if this current is too low for my battery of choice. I also added an LED to indicate the charging status, and also checked if the resistor value was suitable for the green LED that I plan to use.

Battery connector and charging IC:
image

kianramezani09 kianramezani09 added to the journal ago

Wired the schematic for base functions

I created the schematic and wired the base functions of the wearable device according to the prototype, but adding other components that were needed according to the datasheets of the esp32s3 chip, MPU-6050, and MAX30102. I added pull up resistors for all 4 I2C connections, which still run on one bus, and added decoupling capacitors for the power rails. In order to program the esp32s3, I will be using a UART interface, and an ESP-PROG to send code to the chip's internal bootloader. The pullup resistor for the Enable pin is also essential for proper programming. I also added an LED for power indication. The MAX30102 will also need a voltage regulator to bring down the voltage to 1.8 V for the logic functions within the module.

ESP32S3 Sheet:
image

Sheet Overview:
image

MPU-6050 sheet:
image

MAX30102 sheet:
image

kianramezani09 kianramezani09 added to the journal ago

Building a Prototype with Dev Board

For the prototype, I used the ESP32-S3-Touch-LCD-1.28 dev board. I also got a MAX30102 module and a supposed MPU-6050 module. When I was testing my prototype, I couldn't get the MPU-6050 to initialize and communicate with the esp32s3. I changed the library to a similar chip, the MPU-6500, and it suddenly started working. Turns out that the board is falsely advertising an MPU-6500 chip as a MPU-6050 chip, costing me lots of time trying to figure out what was wrong.

The prototype itself uses one I2C bus for the esp32s3 to communicate with the modules, as shown in the block diagram from the previous log. This allows for both heart rate monitoring and fall detection at the same time, as shown in the video below. The esp32s3 outputs the values from both the gyroscope and accelerometer from the MPU-6500, and the average beats per minute from the MAX30102, only if it is reasonably above 20 beats per minute. I tested the reliability of the heart sensor using a smart watch and the readings roughly matched.

Prototype:
Full Prototype View

Both sensors:
Both Sensors

Getting the average beats per minute from the MAX30102:
image

Serial monitor output of prototype:
Serial Monitor Output - Wearable Health Monitor

kianramezani09 kianramezani09 added to the journal ago

Researched for Components

First I needed to find a MCU with an integrated antenna that was small enough for my project. I settled on the ESP32-S3 module, which I will then solder onto my board. For the accelerometer, I already had a 6-axis IMU, the MPU 6050, so I decided to test my prototype with that, and it is generally seen as a very capable IMU. For the heart sensor, the only mainstream and most applicable module I could find was the MAX30102 heart rate sensor. This heart rate sensor does have some drawbacks as it can only send reliable heart rate readings from the finger, and not the wrist. This is because light passes through the finger as it has thinner skin and light passes through more easily, allowing for more accurate readings. This means that the wearer would have to manually place their finger on the sensor for an accurate reading. However, the advantage to this is that reading pulses from the finger is generally more accurate than wrist measurements, since the sensor receives a stronger signal from the finger’s blood vessels.

MAX30102 Heart Rate Sensor:
image

MPU-6050 IMU:
image

ESP32-S3-WROOM-1 Module:
image

kianramezani09 kianramezani09 added to the journal ago

Worked out the scope of the project

Today I started planning my wearable health monitor. The goal of this device is to track the wearer's heart rate, and detect any accidental falls. My inspiration for this project came from my grandfather. There have been several health incidents with my grandfather involving his heart and him falling as a result of these heart problems. Naturally, I was really concerned, so I decided to design a health monitor that could be used to monitor my grandfather's heartrate wirelessly, and detect any dangerous falls.

As for the components I need for this project is a microprocessor with wireless capabilities, a heartrate sensor, and a 6 axis IMU. I sketched a rough block diagram showing how the sensors will connect to the microcontroller and how data might be processed.

image

kianramezani09 kianramezani09 started Guardian - Wearable Health Monitor ago

3/1/2026 - Worked out the scope of the project

Today I started planning my wearable health monitor. The goal of this device is to track the wearer's heart rate, and detect any accidental falls. My inspiration for this project came from my grandfather. There have been several health incidents with my grandfather involving his heart and him falling as a result of these heart problems. Naturally, I was really concerned, so I decided to design a health monitor that could be used to monitor my grandfather's heartrate wirelessly, and detect any dangerous falls.

As for the components I need for this project is a microprocessor with wireless capabilities, a heartrate sensor, and a 6 axis IMU. I sketched a rough block diagram showing how the sensors will connect to the microcontroller and how data might be processed.

image

3/3/2026 - Researched for Components

First I needed to find a MCU with an integrated antenna that was small enough for my project. I settled on the ESP32-S3 module, which I will then solder onto my board. For the accelerometer, I already had a 6-axis IMU, the MPU 6050, so I decided to test my prototype with that, and it is generally seen as a very capable IMU. For the heart sensor, the only mainstream and most applicable module I could find was the MAX30102 heart rate sensor. This heart rate sensor does have some drawbacks as it can only send reliable heart rate readings from the finger, and not the wrist. This is because light passes through the finger as it has thinner skin and light passes through more easily, allowing for more accurate readings. This means that the wearer would have to manually place their finger on the sensor for an accurate reading. However, the advantage to this is that reading pulses from the finger is generally more accurate than wrist measurements, since the sensor receives a stronger signal from the finger’s blood vessels.

MAX30102 Heart Rate Sensor:
image

MPU-6050 IMU:
image

ESP32-S3-WROOM-1 Module:
image

3/6/2026 12 AM - Building a Prototype with Dev Board

For the prototype, I used the ESP32-S3-Touch-LCD-1.28 dev board. I also got a MAX30102 module and a supposed MPU-6050 module. When I was testing my prototype, I couldn't get the MPU-6050 to initialize and communicate with the esp32s3. I changed the library to a similar chip, the MPU-6500, and it suddenly started working. Turns out that the board is falsely advertising an MPU-6500 chip as a MPU-6050 chip, costing me lots of time trying to figure out what was wrong.

The prototype itself uses one I2C bus for the esp32s3 to communicate with the modules, as shown in the block diagram from the previous log. This allows for both heart rate monitoring and fall detection at the same time, as shown in the video below. The esp32s3 outputs the values from both the gyroscope and accelerometer from the MPU-6500, and the average beats per minute from the MAX30102, only if it is reasonably above 20 beats per minute. I tested the reliability of the heart sensor using a smart watch and the readings roughly matched.

Prototype:
Full Prototype View

Both sensors:
Both Sensors

Getting the average beats per minute from the MAX30102:
image

Serial monitor output of prototype:
Serial Monitor Output - Wearable Health Monitor

3/6/2026 9 PM - Wired the schematic for base functions

I created the schematic and wired the base functions of the wearable device according to the prototype, but adding other components that were needed according to the datasheets of the esp32s3 chip, MPU-6050, and MAX30102. I added pull up resistors for all 4 I2C connections, which still run on one bus, and added decoupling capacitors for the power rails. In order to program the esp32s3, I will be using a UART interface, and an ESP-PROG to send code to the chip's internal bootloader. The pullup resistor for the Enable pin is also essential for proper programming. I also added an LED for power indication. The MAX30102 will also need a voltage regulator to bring down the voltage to 1.8 V for the logic functions within the module.

ESP32S3 Sheet:
image

Sheet Overview:
image

MPU-6050 sheet:
image

MAX30102 sheet:
image

3/7/2026 - Worked on Power Management

Today I worked on how my board will be powered. I plan to use a 3.7V lithium ion battery, and also be able to charge it on board. A barrel jack will power a charging chip, which will charge the battery. The battery will connect to the board via a JST connector, and its output will be run through a voltage regulator (yet to be added) that gives the board 3.3V.

For the battery charging chip, I wanted something small and compact in order for my pcb to fit on the wrist. However, I decided to compromise size for the barrel jack as it gives more range as to how much voltage is used to charge the battery. The battery charging IC I chose was the MCP73831-2, and I made sure that I chose the SOT-23 package, which makes it easier to work with if I needed to desolder anything later. I set the charging current to 500 mA, which is a safe value for most lithium ion cells while still allowing reasonably fast charging. I may change this value later if this current is too low for my battery of choice. I also added an LED to indicate the charging status, and also checked if the resistor value was suitable for the green LED that I plan to use.

Battery connector and charging IC:
image

3/10/2026 - Changed the Battery Charging IC

I decided to change the battery charging IC from MCP73831-2 to the Texas Instruments BQ24075RGT. I wanted a reliable charging IC with better safety and features. While the MCP73831-2 will work, the BQ24075RGT allows for powering the board while charging, and also gives more flexibility and better monitoring of the charging status.

The OUT pin on the BQ24075RGT will be connected to the 3V3 regulator for the board. When the battery is charging, the OUT pin directly powers the board from the 5V input of the barrel jack. When the battery is not charging, the BAT+ is routed to OUT, which powers the board. This allows for constant monitoring of the wearer's health, without having to lose power to the board while charging.

To set the max input current and the charging current, I set resistor values for ILIM and ISET and connected to VSS as instructed by the datasheet. The 1.1K resistor for ILIM allows for around 1.5A max input current, which gives a lot of headroom for the 0.79A charging current set by the 1.13K resistor on ISET. I chose 0.79A as the charging current as I plan to use a 1500 mAh capacity battery, which will prolong the lifespan of the battery and is a safe charging current.

image

3/14/2026 12 AM - Added Voltage Regulators

The ESP32S3, MPU 6050, and MAX30102 run on 3.3V, so my pcb power rail will need to be powered by a 3.3V power regulator. A reliable regulator chip I chose to go with was the TLV75533PDBVR, but later changed my choice because I realized that it didn't meet the max current capacity of my board. The battery for powering the board will be a Li-Po 3.7V 1500mAh battery, for which the choice was explained in the previous log.

The voltage regulator needs enough current output to supply all the components on the board, so I needed to go check and add the current pull from the ESP32S3, MPU-6050, and MAX30102. The max current draw of the ESP32S3 with WiFi is 355 mA. The max current draw from the MPU-6050 is very small, with about 4 mA needed for the gyroscope. The MAX30102 requires two different voltages supplied to it for it to run. The 3v3 rail goes to the VLED+ pin, which powers the LEDs, and this draws a maximum current of 200 mA. The other pin which needs 1.8V is the VDD pin, which powers the logical circuitry, and only draws at max 1.2 mA, and will need to be supplied by another voltage regulator. Adding up the currents of all the components gives a max current draw of 559 mA. This made me realize that since the max current output of the TLV75533PDBVR is 500 mA, I would need a voltage regulator with a higher max current output. I chose the TLV75733PDBVR instead, which had a max output current of 1 A, which is plenty headroom for the current requirements of my board. It was good that I checked this, as it could have led to a faulty board, in which no components can be tested.

3V3 Board Voltage Regulator:
image

1V8 Voltage Regulator for VDD pin on MAX30102:
image

3/14/2026 11 PM - Routed the PCB

I decided to call my product "Guardian", as it protects the wearer from further harm by detecting falls and monitoring heart rates.

My PCB is 2 layers, double sided, with traces on both sides. My main priority when creating the PCB was keeping the size of the board small. The dimensions of this design are 55mm by 40.1mm, which are sized to fit comfortably on the wrist. The antenna of the ESP32S3 is left sticking out of the board to reduce the copper interference, and connectors are also slightly protruding for ease of connection. There is a ground pour on the bottom layer, and a 3V3 pour on the top layer.

I found out that the ESP32S3-WROOM-1 module cannot be soldered by JLCPCB under the Economic PCBA option, as castellated components require Standard PCBA, which requires a minimum panel size of 70mm x 70mm, making it larger than my board. I could have the ESP32S3 soldered by JLCPCB by panelizing my board to meet the size requirement, but this would make it very expensive as they would have to create at least 10 assembled PCBs. Instead, I will hand solder the WROOM-1 module myself after the board arrives, which is why I left a lot of space around the ESP32S3 module.

As for the board itself, I tried to organize everything in a compact, and practical way so that the user will be able to use the heart rate sensor easily. Connections that have a high amount of current running through them have thicker traces of about 0.8mm in places where possible, to reduce resistance. For example, connections from BAT+, EN, and 3V3 from pin header all have thicker traces. For the I2C clock and data lines I added test points for both the MPU-6050 and MAX30102. This will help me with debugging any issues in data transmission later, after programming the ESP32S3 through the UART interface that connects with the 6 pin header. Test points were also added for essential connections like 3v3, 1v8, BAT+, and GND. These will let me see if the voltage output of the regulators are correct, and if components are being supplied properly. Decoupling capacitors and voltage regulators for power lines were also placed near their respective power pins.

This is just the final routing, I will break the process down in future logs.

Front & Back Layer:
image

Front Layer:
image

Back Layer:
image

Front 3D Model:
image

Back 3D Model:
image

DRC Test Results (main complain was for silkscreens, no vital errors):
image

ERC Test Results:
image

3/15/2026 - Modelled Wrist Holder/Case

For creating the wrist holder for the wearable health monitor, I measured my own wrist dimensions and modelled it after my own wrist shape. However, I only used this as a reference, and made sure to model the case in a way that would fit on most wrists well. One of the ways I did this was to include holes for a flexible wrist band (shown in beige colour), rather than a rigid holder for the case. I also wanted the case to protect the pcb from falling and moving, but not restrict it too much as I might want to take the case on and off easily, and to also have easy access to the connector ports like the UART header pins and the battery connector. There are three holes in my PCB, which allow me to restrict side to side movement of the board, and the removable top piece attaches to the bottom piece through the three holes using press fit pins, and restricts the board from falling out of the indent in the bottom piece. For the heart rate sensor, I left an indent with dimensions based on my index finger size, but I also included tolerances for different finger types and sizes. I decided to leave this part open on the top rather than include a rounded casing to allow easy placing and removing of the finger. As for where the battery will go, I wanted to remove the amount of things needed to be worn by taping it to the top piece.

Without Top Piece:
image

With Top Piece:
image

3/20/2026 11:12 AM - PCB Placement (retrospective)

I wanted to place everything so that I would get the most compact board possible. Originally, I had trouble with this because components like the MPU-6050 and the charging IC had a bunch of components around them, and not only did this make routing traces a pain, it also made it very cluttered and too close to the main chip. The barrel jack connector and the 6 pin header also didn't help.

Here is my original PCB routing.
image
The problem with this was that I was routing the EN trace of the barrel jack under the MAX30102, so everything gets pushed against the ESP32S3. Not only does this make it so that it is harder for the user to place their finger on the heart sensor, it also reduces the space I have for routing traces. This took a lot of time to realize, and the testpoints I added didn't help with tracing either. I changed the original PCB layout (shown above) so that there was more space between the ESP32S3 and the components. I also removed the diode for the charging IC, as it already handles charge backflow.

When routing the traces for the MPU-6050, I had a lot of trouble with the small pads, and getting everything to fit in a reasonable way around it. The testpads also complicated things, but I figured they would be useful for debugging.
image

I also had to use the bottom layer and cut up the GND pour (which isn't ideal) to connect some of the ESP32S3 pads to the components and the 6 pin header. I couldn't get around this in my final design as it would just make everything more cluttered if I wanted to point the esp32s3 out the side.
image

3/20/2026 11:57 AM - PCB Routing (retrospecitve)

One of the most challenging parts of routing was the charging IC. The pads were very tiny, and there were many connections, almost on all pads. This made tracing around components very challenging:

Original route tracing:
image

Improved route tracing (removed diode & packed VR and other components closer):
image

The original tracing had too much space between the components, which I had foolishly left for silkscreen placement. The trace width of the EN was also very thin for the current that is passing through it. By moving the components closer to the charging IC, I was able to reduce the length of the thin EN trace.

This took me too long to figure out, but to connect the 3V3 pours that didn't have enough space to connect, I just had to use vias, and traces on the bottom layer.
imageimage

Vias were my best friend when designing the improved design. This allowed me to move the MAX30102 lower so that it is more accessible, and I also moved the decoupling capacitors for the 3V3 regulator closer to its IC. I also extended the left side a bit to add space for easy soldering of the ESP32S3 later.
Screenshot 2026-03-20 115334

It long time to figure out how to connect everything to the charging IC pads with the fewest overlaps.
image

Also, I chose to go with hand solder footprints for most footprints as it enables me to be able to switch components out more easily in case of any errors.

3/23/2026 - Finished Github Repository

I added all the files according to the submission guidelines and organized them into folders for my github repository. I used a plugin to create my production folder, and I also included my archived KiCAD project files in the folder /hardware. I finished modelling the 3D model of all the components by adding the battery. I also filled out an order from JLCPCB to get a quote on my PCB. I left the ESP32S3 out of the PCBA as I will be soldering that myself. The voltage regulator for the MAX30102 (TPS7A0518PDBVT) was not in stock in JLCPCB, so I will also be soldering that myself.

JLCPCB PCBA Render:
image

3D Model (all components):
image