Flower Productivity Tool
Nowadays there's many apps that link the tending of plants to productivity timers and I thought it might be fun to use that as inspiration to create a physical tool that uses the same visual rewards.
Hence my goal for this project was to make a tool that increases productivity by encouraging the user to finish tasks. Everytime a task is done, the user may place their pawn one step forward so that a flower lights up, they can do this until all flowers have been lit, leaving the user with a colourful light set-up.
Supplies
Arduino circuit
- Arduino Uno
- Jumper cables (male to male)
- Jumper cables (male to female)
- Ultrasonic Sensor HC-SR04
- LED's (5 different colours)
Other Arduino supplies
- Breadboard
- USB-B to USB-A Cable
- Electrical Tape
- Small Tyraps
Case materials
- Plastic flowerpot
- Coloured paper (120gsm)
- Coloured yarn
- Foam (floral or styrofoam)
- Dried moss
- Wooden plank
- Piece of (birch) branch (dia 4cm)
- Small game pawn (Ludo)
- Paint (acrylic)
Tools
- Drill 18mm (optional)
- Electric saw (optional)
- Soldering iron
- Soldering tin
- Knife
- Glue gun
- Regular glue
- Flat nose pliers
- Stripping pliers
- Scissors
- Pen
- Medium paintbrush
Concept
When I was younger there was a site in which you could grow a plant in a pot, I remember finding that really cool and it stuck with me. When I had to think of a concept for this project, the two main things that popped up were realistic mechanic flowers and productivity tools. Combining that with growing the plant on that site when I was younger I decided to make a tool that tracks your tasks and rewards your progress by opening a flower with every step you get to take forward when a task is done, eventually lighting up the flower with leds when it's completely opened.
For that initial idea I wanted to have a big flowerpot with the flower in it and a smaller pot that the user could put little blocks in to that corresponded with their tasks. A weight sensor would give me the data I'd need to progress the steps and the leaves of the flower would open by servos that would rotate, eventually the last block added to the weight sensor would trigger LEDs in the center of the flower.
(image below is the weight sensor setup I tried out)
When I tried this out it didn't really do what I wanted, I couldn't get the weight sensor to work the way I wanted to and servo movement ended up being more constricted than I thought, causing the steps to be very minimal, which wouldn't be good for showing progress.
After that I considered to switch the weight sensor with a distance meter and still have the flowers open with servos, but adjusting the number of leaves to three. This wasn't really a solution since the servos also were difficult to make look good as they were relatively big. This insight resulted in me letting go of this iteration as well, the distance meter part worked decently however, so I took that with me to the next iteration. Sadly I forgot to take pictures of the servo experiment since I thought I'd try again later but ended up discarding the Servos entirely.
After that last adjustment not working I didn't have many ideas on what else to do, I was pretty stuck on the idea I'd started with. I talked to a classmate and we brainstormed for a bit, eventually she mentioned just using LEDs as flowers and having the petals light up one at a time. I really wanted to incorporate elegant flowers though, so I took that suggestion but instead of having one flower that showed the task progress, I thought why not have a flower for each task finished and get a full flowerpot.
That idea is the one I went with in the end; a distance sensor that lets one flower core made with a LED light up everytime the player pawn gets moved forward on to the next task area. This way the user of the tool has a physical way to track their progress and gets rewarded with real life visuals, which hopefully stimulates their productivity a bit.
(Image below shows the final setup with multiple flowers and the 'playing board')
Testing
When I had a definite concept to work towards, I could start testing and assembling the electrical parts of the concept. I started with a circuit we worked on in class which lights just one LED consistently. I had managed to do that in class and recreating it again at home went smoothly.
(Image below is the single LED in class)
After I knew how to get a LED to turn on, I needed to figure out how to connect it to a distance sensor. I knew that in our class materials there was information on the distance sensor and I used that to create a circuit in which a certain distance activates the LED.
(Image below is the distance sensor connected to a LED)
From there I had to create a way to make multiple LEDs turn on sequentially. After looking some projects up on having multiple LEDs in a row it appeared that doing so wasn't very complicated; you had to duplicate the setup for the single LED next to it and place it into a seperate pin on the arduino. Then the next thing to do was to alter the code for the single LED by adding more instances that correspond with the pins used for the other LEDs. Then in the Void Loop you add more if statements with different distances; I used distances from 30cm to 10cm. Within those different if statements with their different distances, you add all the lights in the right order that need to be on when the player pawn is at that distance. So if 20cm from the sensor is 3 steps with the pawn, you list the 3 pins with their corresponding LEDs to that if statement and set their mode to HIGH to turn them on.
When that works you can get started on soldering and putting the elements in place.
(Images below is of distance sensor with sequential light set-up; distance sensor is missing in the first picture but is supposed to be plugged in below the red, orange, green and black wires)
Code
The code for this project is pretty straightforward.
It starts of with the void setup in which;
- the pins are setup so that they can receive and give data.
- the distance measurements are sent to the serial monitor in cm.
Then there's the void loop in which;
- a instance is made for 'distance' in cm, so that the if statements can use the output from the distance sensor.
- the base mode for the LED's is set to LOW so they all start unlit.
- there are multiple if statements; each stating how if a certain distance is measured by the sensor, the linked LED's turn on; the distances range from 30cm (where the first is turned on), to 10cm (where all five LED's are turned on). If the sensor reads the object at a programmed distance, corresponding lights turn on.
(In the attached files you can find the Arduino code)
Downloads
Soldering
After having a working setup on the breadboard, I had to solder and connect the elements without the breadboard, this went well as I could use male to female jumper cables to increase the cable length and combine the ends by stripping them and soldering them together, then covering them with electrical tape.
Firstly I got the distance sensor working by using male to female jumper cables on the pins of the sensor and plugging them into the right pins on the Arduino.
To get the loop of the LED's to work I had to have the cathodes connected to a 220 Ohm resistor and connect that to a ground cable. This was tedious as I decided to do this by having the ground cables be male to female and put one end of the resistor in the female end of the ground cable, followed by soldering the cathode to the other end of the resistor. This took a bit of time since the resistors didn't want to stay in place well, but later on soldering and tape made it more secure. That covered the ground part of the circuit.
The anode of the LED's I soldered to a male to male cable that got put into pins on the Arduino so the LEDs could receive the code. Both sides of the LED connections I covered in electrical tape so they wouldn't short circuit or otherwise interfere with the signals.
When all cables were put in the right place I organised them a bit by bundling them, securing the bundle with a small tyrap and covering it with electrical tape.
After that it was a matter of putting things into place and making them more stable and reliable.
Case Design
Since at the start the cables and connections were pretty frail and easy to damage I had to work carefully and guide the cables through a foam layer, but after several layers of tape and covering the stems in coloured yarn afterwards it was all a little easier and secure to work with. When the stems were thicker and coloured by the yarn I could start working on the flowers.
(Image below is of stems made more secure with tape and yarn)
The flowers I made from coloured paper; I cut out small petals in three different sizes and used a glue gun to secure them to a round piece of paper. After doing so I had to create a hole that the LEDs could fit through, which was difficult as the paper would easily tear and rip, but after a couple tries I got a method that worked decently. Finally with all the flowers in place I could add little frill details around the LEDs. The last part of the flower pot itself was to cover the foam with dried moss to finish the look.
(Image below is how the flowers look when finished)
With that part done, the only other thing to do was the board on which the user can move their pawn closer to the sensor. To do this I took a thin wooden plank that was 10cm x 50cm and rounded the corners to connect the round shapes of the flower pot to the player board. Next I had to measure exactly where the sensor readings gave the most stable results with the lights so that I could paint circles on the board that indicate the steps the user can take with their pawn. I made the circles a gradient from darkblue to lightblue as blue is a calming colour and fit the set-up well, especially since the center flower in the pot is also blue and it binds it all together.
Finally it was time to create the pawn which consisted of cutting a piece of a 4cm diameter birch branch, sanding it down a bit and using the glue gun to glue a small Ludo pawn on top of the birch piece. It doesn't necessarily have to be a birch branch, it could also be a big rock etc. As long as the user can tell that it is their piece they can move to track the progress (hence the recogniseable Ludo pawn) and the object is wide and high enough for the sensor to properly pick it up as just a Ludo pawn for example would be too small, causing flickerings in the light.
As a final touch I added some of the coloured yarn on the sides of the plank since I felt it made the entire set-up more of a whole and gave it a bit more life.
(Image below shows pawn and board)
Then this was what everything together looked like:
Result and Reflection
Here you can see how it works in the video above. Im glad I finally pushed through and made something of this project and am quite happy with how the result looks and works.
I struggled a lot with this project, using Arduino was new to me and I was very intimidated. I thought in the beginning of my concept that I had already picked a relatively easy plan, still I struggled so much with getting started since it involved multiple parts that to me were complex and didn't work as I'd intended them to. Because of my hesitation and overwhelm it was rare for me to actually test parts, causing me to have little pictures and documentation of the entire progress, next time I would like to try more out and document it better.
Eventually I concluded there were way easier ways to still get the same sort of user experience and after I scaled it all down to an extension of what we'd already gone over in our classes, I actually knew how to get this to work. I think that's the biggest thing I've learned from this; by focusing on an easier approach I was able to take steps, try things out and get feedback from the progress. This also gave me the time to focus on the visuals of it all, which was a major keypoint to the concept from the start. The project isn't very advanced technically, but because it wasn't I was able to actually make progress and learn, possibly allowing me to do more complex projects in the future.
All in all I now know that small and manageable expectations create the space you need to build on what you actually can do and transform it into something more complex or interesting along the way, which I think is a valuable take.