Our Arduino project is part of the Fall 2018 class "Physical Interaction Design and Realization" at KTH Royal Institute of Technology. The overall topic of the course was "Shape Changing", so our task was to create a physical artefact that changes its shape based on the user's input.
Step 1: The Motivation
Lagom is a Swedish word that means "in moderation" or "in balance" commonly used by Swedish as in the proverb "Lagom är bäst", literally "The right amount is best" (meaning there is a virtue in moderation). We thought of a physical object that could help the user to balance between his different activities (working, resting, etc).
The Lagom Plant is an useful office tool to help people to increase their productivity and work motivation in an office desk environment. The goal is to "be productive the Lagom way", so doing just the right amount.
The Lagom Cube tracks the time spent on typical office tasks by flipping the cube to the correspondent side of the cube. Based on that, the Lagom Plant then outputs its health with changing stem height and LED color.
Our motivation for this project was to create something useful. We quickly went for a flower as the responding output, as a plant is an artefact that can easily change its shape. For the user input we got inspired by startups like Timeular or TimeFlip. Their idea is to provide a cube or polygon with different office tasks on each side. The object then tracks the time spent on each task and helps you to improve your personal productivity by exactly knowing how much time you spend on which task.
There are different approaches among those time tracking devices, for example whether you can define the sides of the objects by yourself or not. For the purpose of simplicity our cube has predefined typical office tasks including Phone, Social Media, Internet Surfing, Work and Break.
The Lagom Plant follows this concept: the user turns the cube to the side of what he is currently doing, for example Work. The plant responds to the high productivity with a straight stem and green, vital light. When the user switches to Social Media and possibly gets distracted from his actual work, the plant slowly lowers its stem and answers with a red light. This signalizes low productivity and plant health and should help the user to switch back to his actual work.
In general, our approach is to rate frequent task switching as positive for the plant health, but staying to long on specific tasks like Social Media, Internet Surfing or Break will result in the plant's health getting worse.
Step 2: The Material
The following material is needed for our project:
For the cube:
- Arduino Nano: micro controller
- 9V Battery: power supply
- MPU6050 Gyroscope and Accelerometer: movement and orientation detection
- nRF24L01+ 2.4GHz Antenna Wireless Transceiver: communication with the plant
- 3mm Birch wood: housing of the cube (80mm x 80mm x 80mm)
- ON / OFF Switch
For the plant:
- Arduino Uno: micro controller
- 4x Longruner SG90 Micro Servo Motor 9G: moving the flower stem and blossom
- nRF24L01+ 2.4GHz Antenna Wireless Transceiver: communication with the cube
- Adafruit 16 channel pwm servo driver: centralize power supply
- Male DC jack: connect pwm servo driver with external power plug
- 5V external power plug: power supply
- RGB LED strip: visualize plant health
- wood sticks, wires, pipe cleaners, cloth, felt, sponge: for the plant
- 3mm Birchwood: housing of the pot (150mm Width x 150mm Depth x 200m Height)
Step 3: The Boxes
At first we used Laser Cuting and Engraving to craft the Lagom Cube and the pot for the Lagom Plant. The sizes are (Lenght x Depth x Height) in mm 80 x 80 x 80 for the cube and 150 x 150 x 200 for the pot. If you wish to use different sizes, go on http://www.makercase.com/ to build your own case, otherwise you can use attached Illustrator files.
To craft the wooden boxes, we followed these steps:
- Use the attached Illustrator files to laser cut and engrave the boxes on the wood.
- Put the wood pieces for the cube and the pot together.
- Hot glue everything from the inside (except the top covers) to make the boxes more stable.
- On the top cover of the cube, drill holes for the switch and for the mini USB port of the Arduino Nano.
- On the pot top cover drill a hole in the middle for the servo motor fixation and one small hole next to it for the cables of the servo motors.
- On the back side of the pot housing drill a hole for the cable and LED strip.
Step 4: The Circuits
The following schematics show the circuits (left cube, right plant) with all required parts.
Some useful tipps and links for the correct wiring:
- For the Wireless Transceiver chip: http://arduinoinfo.mywikis.net/wiki/Nrf24L01-2.4GHz-HowTo
- For the PWM Servo Driver: https://learn.adafruit.com/16-channel-pwm-servo-driver?view=all
- It is important to know, that if using multiple servo motors an external power supply is better than using the 5V Pin of the Arduino board, as this can cause overheating or burnout of the board.
Step 5: The Code
Attached you can find the Arduino code of our project.
The following libraries need to be installed on the computer first:
- Adafruit Neopixel
- Adafruit PWM Servo Driver
The code is split up into two files.
The first file- LagomCube_Code, runs on the Arduino Nano inside the Lagom Cube. This code's main job is to receive and process IMU input from the MPU6050, run some quick error checking, and attempt to calculate the face of the cube that is currently facing upwards (an integer from 0-5). Once it has done that, it uses the radio transceiver to transmit the "cube face" to the LagomPlant. It also sends a verification number to let the LagomPlant validate that the transmission came from the right source. Transmissions occur every 250 milliseconds.
The LagomPlant_Code file runs on the Arduino Uno inside the Lagom Plant's pot. This code takes care of controlling the plant's visual output. First, it waits for transmissions from the cube, then takes the received cube face number, and adds that to a running tracker that to how long the cube has spent recently sitting with each of the 6 faces upwards. (One of the faces corresponds to pausing the cube, so that's not tracked). The tracker updates every time a radio transmission is received, so every ~250 milliseconds. Based off the tracked cube face values, the code then proceeds to calculate a plant health variable- this is then used to control servo angles and make the flower appear to wilt or grow healthier. This variable is also used to control the color of the LED strip surrounding the plant's pot- ranging from red (least healthy) to yellow, to green (most healthy). The pulsing effect of the LED strip is also affected by how recently the cube face has changed- a faster pulse indicates more recent change. The plant and LED strip aim to encourage users to be more productive and also have a healthy work-life balance.
The plant health calculations are not particularly straightforward. We don't want to discourage users from taking a break occasionally, but we also want to promote productivity. Therefore, we don't penalize users when they're distracted- as long as they haven't spent much time on other non-work tasks. We also offer a 'break' option, grabbing a snack, walking around a bit, etc. that leads to increased plant health when used sparingly. Of course, work improves plant health, but it also decreases health when at unusually high levels. When the user makes recent changes in activity, that also helps improve plant health! This promotes diversity in activity and prevents monotony. We hope that our algorithm helps users stay focused, and happy!
Step 6: Building the Flower
To create the flower blossom we did the following:
- Print out the flower template drawing on paper.
- Cut out one petal. Use this as a template.
- With the paper template, draw 8 petals on pink wiping cloth and 2 on green wiping cloth (will be used as leaves later).
- Cut out all petals.
- Stitch the 8 pink petals together as shown in the picture.
- For the pistil, cut a circle out of a standard yellow sponge.
- Glue the pistil in the middle of the petals to create the flower blossom.
The moving flower stem consists out of three servo motors connected by two wooden sticks. Here is how to build it:
- Glue the first wooden stick onto the propeller of the first servo motor.
- Glue the top of the stick onto the fixation of the second servo motor.
- Glue the second stick onto the propeller of the second servo motor.
- Glue the top of the second stick onto the fixation of the third servo motor.
- Glue the flower blossom onto the propeller of the third servo motor.
- NOTE: To make the construction more stable, we used additional wood pieces at the servo motor fixations as well as duct tape.
- Stitch a piece of green felt around the stem.
- Stitch the 2 green cloth leaves on the stem.
- For additional fixation tie a green pipe cleaner on the bottom of the blossom.
- Stick the first servo motor into the hole of the top cover of the pot. (You can use additional glue and wood to make it more stable.)
OPTIONAL: If you would like to have the flower blossom opening and closing, you can do the following:
- Attach long wires/threads to each of the petals.
- Knot the wires/threads loosely together to one string.
- Attach this string to a fourth servo motor, which can be mounted on the down side of the top cover. The movement of the servo propeller will open the flower blossom.
- NOTE: As the power of our servo motor was not enough to open the flower blossom properly, we decided to drop this feature.
Step 7: Putting Everything Together
Now the Lagom Plant with the cube is almost done. Just a few steps left:
For the cube:
- Glue all parts into the cube. Make sure that the switch and the mini USB port fit to the holes in the top cover.
- Glue the top cover on two corners (So in emergency cases it can be easily removed.)
For the plant:
- Thread the wires of the servo motors through the hole in the top cover.
- Before glueing the parts inside make sure that all is connected properly.
- Thread the LED strip through the hole at the back and glue it around the pot.
- Thread the power cable through the hole at the back.
- Connect the Arduino Uno of the plant to your computer with a USB cable and run the code. Remove the cable.
- Stick the top cover with the flower blossom on top of the pot.
- Flip the cube...
- ... and be productive!