Blueprint

Fluid Simulation Pendant

A small round disk about the size of a regular watch, it's a neat device which runs a particle simulation that responds to gravity in real time. In other words, water is displayed on it's LED display that flows and settles naturally as you move.

Created by Mason Mason

Tier 1

7 views

0 followers

alexren alexren ⚡🚀 approved Fluid Simulation Pendant ago

Tier approved: 1

Grant approved: $203.00

this is a really amazing project! i lowered the tier though due to complexity. also hack club does not cover customs!

Mason Mason submitted Fluid Simulation Pendant for ship review ago

Mason Mason added to the journal ago

Response to Review

Hey!

I'm writing this entry as a response towards cubit010's requested changes.
Thanks for your positive comment. Likewise, I understand that it's too expensive at the moment.

--

Due to the nature of my project, I cannot use economic PCBA.
Since V2 upgraded to a single board design, it would require a 2 sided PCBA.
Likewise, I require standard PCBA for the Accelerometer (ADXL363).

Screenshot 2026-04-16 184419Screenshot 2026-04-16 184423

However, by reducing the order to two boards, I can significantly reduce the original costs by 32%.

Screenshot 2026-04-16 184741Screenshot 2026-04-16 185448

cubit010 cubit010 ⚡ requested changes for Fluid Simulation Pendant ago

hey there!
this is a cool project but wayyy too expensive
as of right now. We cannot fund 2 sided pcba, only economic pcba, as well as 2 pcs
if you need standard pcba for some components please show us the screenshot for pcba to justify why you might need to do so

Mason Mason submitted Fluid Simulation Pendant for ship review ago

Mason Mason added to the journal ago

And the Future

Well, it's now April Fools.
The deadline has PASSED.

Although this project have already been submitted, I'd like to review some possibilities beyond the original intent of this board. Previously, I had toyed with the idea of custom animations and text banners. Thus, wouldn't be interesting to setup a custom firmware that would allow you to utilize an app? This way, you wouldn't need a nucleo or write additional programs to create cool animations. Already, I can think of a feature to pixelate a video into a readable format for the charlieplex display.

Screenshot 2026-02-21 044706
I used excel to animate frame by frame. The program parsed each csv frame to the corresponding LED. This was incredibly tedious.

Likewise, I could add pong to the game. Albeit, it'd be incredibly small.
Now that I'm really thinking, there are several possibilities beyond what I've already explored ->
1) Clock
2) Breathing animation (like that thing on an apple watch?)
3) Tilt maze, navigate a maze by tilting
4) Reaction game (maybe tilt in the direction the LED is, then display the number in ms?)
5) Sand dial?

I'll have to delve into my accelerometer's datasheet, but if I recall, it does have an onboard thermometer. I could display the value on the display.

The possibilities are VAST!

Mason Mason added to the journal ago

Towards Version Two

Now, this leads me to you! The "why I need funding" part.

Based on the several posts and comments, I'm aware of a small community who's interested in this gadget.

As I mentioned in my initial note, I've had the displeasure of shelving this project since February 21st. Luckily, spring break has provided me ample time to produce a version two.

In my initial prototype, I left numerous issues unresolved. Mainly, I was unable to get the sleep function working. The JST-2 wire would fall off often as well, which I soldered to the corresponding test pads. In hindsight, that was not wise.

Therefore, I decided to add an additional test pad to verify the WAKE pin signal. Addtionally, I'm soldering on a JST-2 connector on the physical board. For compatibility, I've upgraded from Micro-USB to USB-C.

Now, USB-C was more frustrating than expected. Due to the mechanical stress these ports are subject to, most USB-C connectors are designed with mechanical legs which require throughholes. This creates an unpleasant aesthetic.

image

Surprisingly, USB-C that do not possess these legs were incredibly difficult to find. Although USB4135 would serve as a viable option, it only allowed for power. Because I wanted to leave the option of an app viable (custom animations, programs, etc), I required a 16P USB-C.

Thankfully, I found it.

image

image

Mason Mason added to the journal ago

Enclosure

Since my family recently acquired a Bambu Lab 3D printer, I was able to print the necessary components for a case. With it, I was able to create iterations quickly and precisely. A feature I abused to the upmost extent. In all, there was at least 20 iterations.

Screenshot 2026-02-15 205843

Most of all, I had difficulty designing the back lid. Specifically, a method of retention.
Through all of my iterations, I tried snap on, screw on, you name it!

Screenshot 2026-03-31 035351

Eventually, I settled on this design. It utilizes clips which hang on to the side of the case.

Screenshot 2026-03-31 035601

Likewise, I created a cutout for a watch glass to protect the LED display.
Personally, I think it completes the look of the device.

image

image

image

Mason Mason added to the journal ago

POWER

Of course, there remains work to be done. The pendant currently runs off a LIPO battery.

image

However, I haven't been able to get the "deep sleep" to work. This is where the accelerometer tells the MCU (STM32) to go into extreme low power mode.

Without this function, the pendant won't be able to last beyond 12 hours, and even that's stretching it. I'll have to recharge every night or swap out the battery.

Currently, the accelerometer is supposed to detect motion. When none is detected over x period of time, it notifies the MCU to enter "deep sleep." When a threshold of motion is then detected, it notifies the MCU to wake up by dragging the WAKE pin to high, which is set to low by default.

Now, I suspect the issue is software. However, I cannot be sure that it is not a hardware issue.

It's possible that the accelerometer does not retain this information to "nudge" the MCU awake. It's possible that the MCU never receives the signal. Unfortunately, the pin for WAKE is miniscule. By shaking the device, it's impossible to properly probe whether the signal is being transmitted.

However, by resolving it, I do expect a signficant rise in battery life.

Mason Mason added to the journal ago

Accelerometer

At this stage, I encounted an issue with the accelerometer - I couldn't receive data.

Screenshot 2026-02-14 032304

Frustrated, I decided to create an animation instead. On the left of the image, you can see a frame of that program, which was an attempt at a walking sequence of a cat.

image

Fortunately, I was able to resolve the bug regarding the accelerometer. Unfortunately, I can't remember how I did it!

With the accelerometer communicating with the STM32, I created a program to illuminate an LED based on the direction of gravity at any given time - think the bubble inside a level.

Then, I used that program as a framework to integrate the particle simulation.

image

IT WORKS!

Mason Mason added to the journal ago

Programming

I just LOVE resolving bugs (Sarcasm, if you couldn't tell).

Over the next few weeks, I began to test the pendant.
To start, I wrote a program to illuminate each LED individually, then all at once.

image

Here, you can see me setting up the STM32's pin output.
Screenshot 2026-02-24 000732

Then, I made the display spell out my name. Through this program, I was able to understand how to illuminate LEDs quickly to create the illusion that more than one are on.

image

Mason Mason added to the journal ago

Assembly!

Assembly is incredibly stressful.

image

With the LED Display and Driver Board here, I was anxious to test them. Conveniently, other components also arrived on time.

image

image

And to my surprise, everything seemed to work!

Now, it wouldn't be a normal engineering project without some failure.
Despite my initial success, I bricked my first LED Display and Driver Board. When soldering them together, excess solder got between and shorted a connection together, preventing me from programming them.

Mason Mason added to the journal ago

Manufacturing is a pain

As the title goes, manufacturing is a pain.

At first, I went to PCBWay for a quote - their price was absurd. Then, I went to JLCPCB - their pricing seemed better.

Still, fortune was not upon us. JLCPCB didn't posess the accelerometer I required. So, I spent two weeks negotiating with a Chinese manufacturer through Alibaba who consigned the accelerometer to JLCPCB.

Screenshot 2026-01-26 233208

Screenshot 2026-01-26 234439

At this stage, I also noticed that the copper drill holes between the LED display and driver board did not match up. An incident so close to production was incredibly unsettling.

Anyway, remember when I said PCBWay's pricing was diabolical?
Screenshot 2026-01-27 002436

And somehow JLCPCB is still the cheaper option.

Mason Mason added to the journal ago

The Daughter Board

With the LED display completed, I set my sights on the driver board.
Despite Mitxela's extensive documentation, he was rather scarce on this particular matter.

Regardless, I was able to create this initial schematic.
Screenshot 2026-01-18 023957

When considering power, I initially planned to use a coin battery cell (LIR2450). But, because the cell's holder demanded a large footprint, I settled on a pouch-styled battery instead (LIPO 402025).

Similarly sized, it didn't require a mount. Likewise, it had the added benefit of removability. By soldering a JST PH 2 Male Header to Wire to the TP1 (+) and TP2 (-) pads, I could easily connect and disconnect the battery as I pleased. And, as an added bonus, it had built in circuit protection.

Screenshot 2026-01-18 005816

By consulting NCP73032-2-NC's datasheet, I was able to deduce that the correct resistor would be 20K to deliver a charge of 50mA.

Screenshot 2026-01-19 015022

After several revisions and reviews, I was able to route the driver board PCB. Now, the electronic designs were ready for manufacturing.

Screenshot 2026-01-19 021824

Mason Mason added to the journal ago

Project Start

Despite Mitxela's success, I was uncertain of my capabilities. So, I decided to split the electronic portion of this project into two daughter boards - the LED display and it's associated driver board.

First, I tackled the LED display by completing an initial 16x16 charlieplex schematic.

Screenshot 2026-01-12 214016

Then, I routed it. I found this process to be particularly irritating with net name conflicts.

Screenshot 2026-01-12 231256

In an early version of the PCB, I wanted to add pins so I could easily attach wires to probe each LED individually. Later, I decided against it.

Screenshot 2026-01-15 185647

Instead, I settled on a lilypad approach with exposed copper drill holes. With this setup, I could easily test and revise each board.

Mason Mason added to the journal ago

Foreword

Greetings Dear Reader!

Since my original submission, I've been instructed to split my journal into smaller segments. Thus, I will update my entries accordingly.

As a foreword, I wasn't aware of hackclub's blueprint grant program until recently. So, I was unable to fufill entries live due to other commitments (e.g college applications). Luckily, I've kept track of my progress.


Since January, I've been fascinated by Mitxela's Fluid Simulation Pendant.
If you're unfamiliar, you can check out his work here -> https://www.youtube.com/watch?v=jis1MC5Tm8k&t=2004s

As a beginner, I was thoroughly intrigued. With no former experience, I wanted to recreate a similar gadget. As you can imagine, I had underestimated the scale of this task.

To get started, I began with simple arduino circuits.

Arduino 1602 I2C LCD Demo - December 15, 2025 - 4 hours
image

Temperature Monitor - January 9, 2026 - 6 hours
image

To understand FLIP simulation, I began by creating a virtual pendant through HTML -> https://emperormurfy.github.io/

This took me about a day of work.

Next, I tackled KiCAD by following guides on Youtube.
I created this water detector in 6 hours.

Screenshot 2025-12-28 020431

Now, I was ready to set forth.

Souptik Samanta Souptik Samanta 🚀 requested changes for Fluid Simulation Pendant ago

lwk this is a cool project
but ur journal is cooked
plz subdivide in smaller chunk of 6ish hrs each

Mason Mason submitted Fluid Simulation Pendant for ship review ago

Mason Mason started Fluid Simulation Pendant ago

4/8/2026 9:45 PM - Foreword

Greetings Dear Reader!

Since my original submission, I've been instructed to split my journal into smaller segments. Thus, I will update my entries accordingly.

As a foreword, I wasn't aware of hackclub's blueprint grant program until recently. So, I was unable to fufill entries live due to other commitments (e.g college applications). Luckily, I've kept track of my progress.


Since January, I've been fascinated by Mitxela's Fluid Simulation Pendant.
If you're unfamiliar, you can check out his work here -> https://www.youtube.com/watch?v=jis1MC5Tm8k&t=2004s

As a beginner, I was thoroughly intrigued. With no former experience, I wanted to recreate a similar gadget. As you can imagine, I had underestimated the scale of this task.

To get started, I began with simple arduino circuits.

Arduino 1602 I2C LCD Demo - December 15, 2025 - 4 hours
image

Temperature Monitor - January 9, 2026 - 6 hours
image

To understand FLIP simulation, I began by creating a virtual pendant through HTML -> https://emperormurfy.github.io/

This took me about a day of work.

Next, I tackled KiCAD by following guides on Youtube.
I created this water detector in 6 hours.

Screenshot 2025-12-28 020431

Now, I was ready to set forth.

4/8/2026 9:57 PM - Project Start

Despite Mitxela's success, I was uncertain of my capabilities. So, I decided to split the electronic portion of this project into two daughter boards - the LED display and it's associated driver board.

First, I tackled the LED display by completing an initial 16x16 charlieplex schematic.

Screenshot 2026-01-12 214016

Then, I routed it. I found this process to be particularly irritating with net name conflicts.

Screenshot 2026-01-12 231256

In an early version of the PCB, I wanted to add pins so I could easily attach wires to probe each LED individually. Later, I decided against it.

Screenshot 2026-01-15 185647

Instead, I settled on a lilypad approach with exposed copper drill holes. With this setup, I could easily test and revise each board.

4/8/2026 10:07 PM - The Daughter Board

With the LED display completed, I set my sights on the driver board.
Despite Mitxela's extensive documentation, he was rather scarce on this particular matter.

Regardless, I was able to create this initial schematic.
Screenshot 2026-01-18 023957

When considering power, I initially planned to use a coin battery cell (LIR2450). But, because the cell's holder demanded a large footprint, I settled on a pouch-styled battery instead (LIPO 402025).

Similarly sized, it didn't require a mount. Likewise, it had the added benefit of removability. By soldering a JST PH 2 Male Header to Wire to the TP1 (+) and TP2 (-) pads, I could easily connect and disconnect the battery as I pleased. And, as an added bonus, it had built in circuit protection.

Screenshot 2026-01-18 005816

By consulting NCP73032-2-NC's datasheet, I was able to deduce that the correct resistor would be 20K to deliver a charge of 50mA.

Screenshot 2026-01-19 015022

After several revisions and reviews, I was able to route the driver board PCB. Now, the electronic designs were ready for manufacturing.

Screenshot 2026-01-19 021824

4/8/2026 10:13 PM - Manufacturing is a pain

As the title goes, manufacturing is a pain.

At first, I went to PCBWay for a quote - their price was absurd. Then, I went to JLCPCB - their pricing seemed better.

Still, fortune was not upon us. JLCPCB didn't posess the accelerometer I required. So, I spent two weeks negotiating with a Chinese manufacturer through Alibaba who consigned the accelerometer to JLCPCB.

Screenshot 2026-01-26 233208

Screenshot 2026-01-26 234439

At this stage, I also noticed that the copper drill holes between the LED display and driver board did not match up. An incident so close to production was incredibly unsettling.

Anyway, remember when I said PCBWay's pricing was diabolical?
Screenshot 2026-01-27 002436

And somehow JLCPCB is still the cheaper option.

4/8/2026 10:16 PM - Assembly!

Assembly is incredibly stressful.

image

With the LED Display and Driver Board here, I was anxious to test them. Conveniently, other components also arrived on time.

image

image

And to my surprise, everything seemed to work!

Now, it wouldn't be a normal engineering project without some failure.
Despite my initial success, I bricked my first LED Display and Driver Board. When soldering them together, excess solder got between and shorted a connection together, preventing me from programming them.

4/8/2026 10:20 PM - Programming

I just LOVE resolving bugs (Sarcasm, if you couldn't tell).

Over the next few weeks, I began to test the pendant.
To start, I wrote a program to illuminate each LED individually, then all at once.

image

Here, you can see me setting up the STM32's pin output.
Screenshot 2026-02-24 000732

Then, I made the display spell out my name. Through this program, I was able to understand how to illuminate LEDs quickly to create the illusion that more than one are on.

image

4/8/2026 10:24 PM - Accelerometer

At this stage, I encounted an issue with the accelerometer - I couldn't receive data.

Screenshot 2026-02-14 032304

Frustrated, I decided to create an animation instead. On the left of the image, you can see a frame of that program, which was an attempt at a walking sequence of a cat.

image

Fortunately, I was able to resolve the bug regarding the accelerometer. Unfortunately, I can't remember how I did it!

With the accelerometer communicating with the STM32, I created a program to illuminate an LED based on the direction of gravity at any given time - think the bubble inside a level.

Then, I used that program as a framework to integrate the particle simulation.

image

IT WORKS!

4/8/2026 10:26 PM - POWER

Of course, there remains work to be done. The pendant currently runs off a LIPO battery.

image

However, I haven't been able to get the "deep sleep" to work. This is where the accelerometer tells the MCU (STM32) to go into extreme low power mode.

Without this function, the pendant won't be able to last beyond 12 hours, and even that's stretching it. I'll have to recharge every night or swap out the battery.

Currently, the accelerometer is supposed to detect motion. When none is detected over x period of time, it notifies the MCU to enter "deep sleep." When a threshold of motion is then detected, it notifies the MCU to wake up by dragging the WAKE pin to high, which is set to low by default.

Now, I suspect the issue is software. However, I cannot be sure that it is not a hardware issue.

It's possible that the accelerometer does not retain this information to "nudge" the MCU awake. It's possible that the MCU never receives the signal. Unfortunately, the pin for WAKE is miniscule. By shaking the device, it's impossible to properly probe whether the signal is being transmitted.

However, by resolving it, I do expect a signficant rise in battery life.

4/8/2026 10:27 PM - Enclosure

Since my family recently acquired a Bambu Lab 3D printer, I was able to print the necessary components for a case. With it, I was able to create iterations quickly and precisely. A feature I abused to the upmost extent. In all, there was at least 20 iterations.

Screenshot 2026-02-15 205843

Most of all, I had difficulty designing the back lid. Specifically, a method of retention.
Through all of my iterations, I tried snap on, screw on, you name it!

Screenshot 2026-03-31 035351

Eventually, I settled on this design. It utilizes clips which hang on to the side of the case.

Screenshot 2026-03-31 035601

Likewise, I created a cutout for a watch glass to protect the LED display.
Personally, I think it completes the look of the device.

image

image

image

4/8/2026 10:30 PM - Towards Version Two

Now, this leads me to you! The "why I need funding" part.

Based on the several posts and comments, I'm aware of a small community who's interested in this gadget.

As I mentioned in my initial note, I've had the displeasure of shelving this project since February 21st. Luckily, spring break has provided me ample time to produce a version two.

In my initial prototype, I left numerous issues unresolved. Mainly, I was unable to get the sleep function working. The JST-2 wire would fall off often as well, which I soldered to the corresponding test pads. In hindsight, that was not wise.

Therefore, I decided to add an additional test pad to verify the WAKE pin signal. Addtionally, I'm soldering on a JST-2 connector on the physical board. For compatibility, I've upgraded from Micro-USB to USB-C.

Now, USB-C was more frustrating than expected. Due to the mechanical stress these ports are subject to, most USB-C connectors are designed with mechanical legs which require throughholes. This creates an unpleasant aesthetic.

image

Surprisingly, USB-C that do not possess these legs were incredibly difficult to find. Although USB4135 would serve as a viable option, it only allowed for power. Because I wanted to leave the option of an app viable (custom animations, programs, etc), I required a 16P USB-C.

Thankfully, I found it.

image

image

4/8/2026 10:31 PM - And the Future

Well, it's now April Fools.
The deadline has PASSED.

Although this project have already been submitted, I'd like to review some possibilities beyond the original intent of this board. Previously, I had toyed with the idea of custom animations and text banners. Thus, wouldn't be interesting to setup a custom firmware that would allow you to utilize an app? This way, you wouldn't need a nucleo or write additional programs to create cool animations. Already, I can think of a feature to pixelate a video into a readable format for the charlieplex display.

Screenshot 2026-02-21 044706
I used excel to animate frame by frame. The program parsed each csv frame to the corresponding LED. This was incredibly tedious.

Likewise, I could add pong to the game. Albeit, it'd be incredibly small.
Now that I'm really thinking, there are several possibilities beyond what I've already explored ->
1) Clock
2) Breathing animation (like that thing on an apple watch?)
3) Tilt maze, navigate a maze by tilting
4) Reaction game (maybe tilt in the direction the LED is, then display the number in ms?)
5) Sand dial?

I'll have to delve into my accelerometer's datasheet, but if I recall, it does have an onboard thermometer. I could display the value on the display.

The possibilities are VAST!

4/16/2026 - Response to Review

Hey!

I'm writing this entry as a response towards cubit010's requested changes.
Thanks for your positive comment. Likewise, I understand that it's too expensive at the moment.

--

Due to the nature of my project, I cannot use economic PCBA.
Since V2 upgraded to a single board design, it would require a 2 sided PCBA.
Likewise, I require standard PCBA for the Accelerometer (ADXL363).

Screenshot 2026-04-16 184419Screenshot 2026-04-16 184423

However, by reducing the order to two boards, I can significantly reduce the original costs by 32%.

Screenshot 2026-04-16 184741Screenshot 2026-04-16 185448