Inspiration
Periods, for generations, woman have been taught it is a thing to hide, not honor, especially in my country. That silence has a cost: we are ashamed of our bodies, we stop paying attention to them. As a result, the mood swings, the fatigue, the dip in immunity that comes with this cycle are dismissed. Over time, the neglect wears down both the physical health and the mental health of girls.
So we hope to use technology as a bridge, letting a woman's most primal physiological changes become the creator, allowing women to feel the beauty of their own bodies through interaction, reject body shame, and pay attention to their health.
What it does
Bloom Care is a wearable biosensor device paired with a generative art companion app.
First, the device continuously measures four physiological signals of woman in different menstrual cycle: heart rate, blood oxygen (SpO2), skin temperature, and physical activity.
Then, it stream the datas collected by the device in real time to a p5.js visualization flower. Each flowers' basic shape corresponds to one of the three structures of women's internal genitalia: corpus uteri, ovum, and uterus. Flowers would change based on the following logic:
- Higher heart rate → the flower's pulse animation quickens
- Higher blood oxygen → richer color saturation
- Warmer skin temperature → the palette shifts toward warmer hues
- Lower activity/more rest → fuller, more open bloom
Finally, every day's flower would be saved in the app. Users can record their mood and write memorable things in the box under the flower. They can check the condition of the flowers for the date they want to see.
When users See their flower is in a bad state, they would pay more attention to their bodies, making the flower more beautiful; while seeing it in a good state reminds them of how beautiful their bodies are.
How we built it
Hardware: An STM32F103 microcontroller reads live data from three sensors: an ADXL345 accelerometer (activity detection), a MAX30102 optical sensor (heart rate and SpO2, using Maxim Integrated's photoplethysmography algorithm with signal-validity filtering and moving-average smoothing), and a DS18B20 digital thermometer (skin temperature). Sensor readings are packaged into a JSON payload and streamed over UART/Bluetooth every ~200ms.
Backend of App: A Dart-based mobile app receives the Bluetooth JSON stream, parses it through a typed data model, timestamps each reading on arrival, and passes it to an embedded p5.js instance that renders and animates the generative flowers in real time.
Fronted of APP: Designed UI in Figma. Then Implemented it in Flutter. The frontend connects directly to our backend's Bluetooth data layer, subscribing to the parsed SensorData stream, and show the real time p5js generative flowers.
Design+p5.js: Draw basic flower shape on paper. Then put it on AI to draw the digital flowers. Polish the code generated by AI and put the code into p5.js to perfect flowers' style. Use p5.js to make flowers change their shape based on different data.
Challenges we ran into
Architecture: We had four separate pieces: embedded C firmware, a Dart backend, a Flutter frontend, and a p5.js generative sketch. Each built independently, in a different language as well as codebases, and by a different person. All data transformed are mismatched. It is difficult for us to turn four working parts into one working pipeline.
Data Gathering: Getting real data out of consumer-grade sensors was harder than expected. We discovered that our heart rate and SpO2 readings had been placeholder-simulated with random values during earlier hardware bring-up: the MAX30102 chip was already calculating filtered readings internally, but that data was being silently overwritten before it ever reached the app. So we had to trace back to the MAX30102's PPG algorithm, and then find the overriding logic in the source code and modified the code to let the real data through. This takes the most of our building time.
Balance Between Art and Technology: Art and technology can be in tension. It's difficult to keep the flower artistically beautiful while also keeping Bluetooth and data transmission stable. For example, heart rate jumps, SpO2 readings dropping to 0, and unstable signals right after putting on the device. If these raw fluctuations were mapped 1:1 onto the flower, it could glitch or suddenly distort in shape. So we had to trade off between preserving data authenticity and keeping the flower visually beautiful, by applying complicated moving-average smoothing function and even filtering out some of the signal spikes.
Accomplishments that we're proud of
We successfully connected four independently-built parts into one working closed-loop pipeline. Getting real sensor data to flow reliably from the STM32 over Bluetooth, through the backend's JSON parser, into the Flutter app, and finally into the p5.js flower in real time meant tracing and hardening every handoff along the way, until the whole chain could run end-to-end without breaking. This is the process our team never did before.
We built a flower that resonates with real audiences, despite starting with zero experience in p5.js. Relying on AI assistance and online tutorials, we learned how to generative coding from scratch and designed a flat, minimalist floral style intentionally shaped around female aesthetic sensibilities(we asked women around us).
We rebuilt our hardware foundation from the ground up after Arduino proved insufficient. During the checking process, we realized Arduino couldn't meet all of our sensing requirements, so we decided to switch to STM32, learning an entirely new microcontroller platform. We read through manufacturer-provided reference code we didn't fully understand at first, identified and fixed the parts that didn't work for our use case, and tested repeatedly until every sensor was reliably compatible with our system.
What we learned
This project changed how we think about what "tech + art" actually means. It's not simply using code to create something visually appealing, or using art as a skin over a technical demo. Real tech-driven art has to let the technology and the art shape each other instead of replacing each other: the constraints of real sensor data forced us to rethink what "beautiful" could mean, and our aesthetic goals forced us to build a more honest and complete data pipeline.
On the technical side, we learned how to combine physical hardware and digital media through real-time data sending through bluetooth, and learned JASON as a new language.
On the artistic side, we learned how to use p5.js to create digital images, and how to use AI to adjust.
What's next for Bloom Care
Full Development: Right now, what we have is a demo — the next step is full deployment: connecting the frontend, backend, and a proper database into a production-ready pipeline, and shipping Bloom Care as a real app.
Optimize Flowers: We also would optimize the visual craft using tools like TouchDesigner and 3D Gaussian Splatting, and even let users customize their own flower's style for a better user experience.
Add New Function: We'd like to add cycle-phase prediction based on longitudinal data trends, and gentle notifications that encourage body awareness.
Product Design: We want to make the detect hardware to become a watch that can be more portable. So we would try our best to make the device smaller and become a smart watch(like apple watch) to give users better experience.

Log in or sign up for Devpost to join the conversation.