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
Tier 1
7 views
0 followers
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
submitted Fluid Simulation Pendant for ship review ago
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).


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


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
submitted Fluid Simulation Pendant for ship review ago
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.

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
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.

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.


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.

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!

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

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



Mason
added to the journal ago
POWER
Of course, there remains work to be done. The pendant currently runs off a LIPO battery.

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
added to the journal ago
Accelerometer
At this stage, I encounted an issue with the accelerometer - I couldn't receive data.

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.

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.

IT WORKS!
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.

Here, you can see me setting up the STM32's pin output.

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.

Mason
added to the journal ago
Assembly!
Assembly is incredibly stressful.

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


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
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.


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?

And somehow JLCPCB is still the cheaper option.
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.

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.

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.

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

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.

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

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.

Instead, I settled on a lilypad approach with exposed copper drill holes. With this setup, I could easily test and revise each board.
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

Temperature Monitor - January 9, 2026 - 6 hours

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.

Now, I was ready to set forth.
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
submitted Fluid Simulation Pendant for ship review ago
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

Temperature Monitor - January 9, 2026 - 6 hours

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.

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.

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

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.

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.

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.

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.

After several revisions and reviews, I was able to route the driver board PCB. Now, the electronic designs were ready for manufacturing.
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.


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?

And somehow JLCPCB is still the cheaper option.
4/8/2026 10:16 PM - Assembly!
Assembly is incredibly stressful.

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


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.

Here, you can see me setting up the STM32's pin output.

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.
4/8/2026 10:24 PM - Accelerometer
At this stage, I encounted an issue with the accelerometer - I couldn't receive data.

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.

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.

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.

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.

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!

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

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



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.

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.

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.

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).


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

