Emotional Flower


The Emotional Flower project aimed to intersect art with technology through a unique robotic art installation created by blending the ideas of the seven F24-101 team members. Through those iterations of ideas, we have created an interactive table inspired by the Emotion Wheel taught in CSM 202 that plays music and lights up according to the input emotions of the community.
Supplies
Mechanical Subsystem:
- 4 4'x8' Douglas Fir Plywood
- 2 4"x4" Wooden Posts
- 8ft Corrugated sheet metal
- 20 pcs L-shape brackets
- 1/2" x 30 course metal rod with about 1ft in length
- Lock nuts that fit 1/2"
- 3 screws for PIR
- 2 screws for plate
- 10 screws for the big flower?
- Organza
- 16 gauge wire (for organza petals)
- 3 screws for motor
- Roughly 70 screws for the L brackets
- The tap
- Lead screw stepper motor
- Wood glue
- Wood stain
- Clear and white Resin
- White PLA
Electrical Components:
- PIR Sensors
- Rotary Encoder with Push Button
- NeoPixel RGB 5050 LED 100 Pack (buy 2x)
- Arduino UNO R3
- Raspberry Pi Model 4 B
- 28 AWG Solid white wire (buy 2x)
- 3pcs Circuit Boards
- Push terminal block
- Screw terminal Connectors
- Phillips LCD TV Full-Range Speaker Modules (buy 2x)
- 2 x 30W High-Power Amplifier Board
- Arduino software IDE
- Audio jack wire
- Header wires
- Hot glue
- Tape
Tools Necessary:
- SolidWorks
- Bambu printer (PLA)
- Form 4 printer (resin)
- CNC machine
- Epilog Laser
- Manual metal shear
- Electric sanders
- Clamps & Weights
- Drill press
- Buzz saw
- Table saw
- Band saw
- Electric saw
- Soldering iron
- Leaded solder
- Wire strippers
Electronics Overview



This step provides the overall wiring diagram needed to make the project function, which means that it connects the small flowers and their LED layouts, the big moving flower, the flower movement mechanism, the speakers, and the user interface.
The pins utilized and the set up for both the Raspberry Pi and the Arduino are in further steps, but be sure to create and wire Neopixel strands to place in the flowers and wire them together using terminal blocks.
Downloads
RasPi Set Up



In order to be able to run the code that we have created for this project, it is necessary to have a valid environment with the correct dependencies for the program. Follow the steps below to prepare your RaspberryPi for implementation.
Raspberry Pi Installation for Libraries to Import
- sudo apt install python3-adafruit-python-shell
- pip install pydub simpleaudio
- sudo apt install python3-pyaudio
- pip install sounddevice numpy
- sudo apt install alsa-utils
- sudo apt install libasound2-dev
- pip install simpleaudio
- pip install sounddevice
- sudo apt update && sudo apt upgrade -y
- sudo apt install python3 python3-pip -y
- pip3 install adafruit-blinka
- Enable I2C or SPI: sudo raspi-config
- Navigate to Interfacing Options.
- Enable I2C and SPI.
- Reboot your Raspberry Pi:
- Reboot when complete: sudo reboot
Find speaker/amplifier device connected to Raspberry Pi
- aplay -l
- Should see something like this: card #: sndrpihifiberry [snd_rpi_hifiberry_dac], device 0: HiFiBerry DAC+ ...
- aplay -D hw:#,0 mixed_output.wav
- Check/alter volume levels: alsamixer
- Do not use ^Z command, wait to audio to play through
Git Clone Emotional Flower Repository
The repository link is the following just click on the link and do sutff.
Set-Up Pi to run code on boot
- sudo nano /etc/systemd/system/my_script.service
- Add the following content with appropriate script name:
[Unit]
Description=My Script
After=multi-user.target
[Service]
ExecStart=/usr/bin/python3 /path/to/your_script.py
Restart=always
User=pi
WorkingDirectory=/home/pi
[Install]
WantedBy=multi-user.target
Exit out of that file and continue with the following commands.
- sudo systemctl enable my_script.service
- sudo systemctl start my_script.service
- sudo systemctl status my_script.service
- sudo reboot
I2C
sudo apt update
sudo apt install python3-smbus
pip install smbus2
Arduino Set Up



Arduino Wiring
Stepper Motor and Driver
Necessary Supplies:
- Stepper Motor: 23LS18-2004E-300N
- Dual Bi-Directional DC Motor Driver Shield: Pololu VNH5019
- (Lenovo) AC Adapter: 100-240V ~1.5A AC Input 20V 3.25A DC Output
Wirings Instructions
- Ensure that all power is OFF and code is uploaded via COM port
- Disconnect COM Port cable
- Connect appropriate wires from AC Adapter to VIN and GND screw terminals of Motor Driver Shield
- Strip and tin wires
- White insulated wire = VIN & raw wire = GND
- Use a multimeter to determine winding pairs of the Stepper Motor
- If resistance between two wires is less than 1kOhm, that is a winding pair
- Connect one winding pair wires into Motor Driver screw terminals M1A and M1B
- Connect the other winding pair wires into Motor Driver screw terminals M2A and M2B
- Place a jumper on male pins labelled ARDVIN = VOUT on Motor Driver so that the Arduino is and Motor Driver are both powered by the AC Adapter.
- Turn ON power/surge protector
Note: Arduino Uno may be powered via Motor Driver screw terminals and upload code via the COM Port at the same time.
Remaining Arduino Pins:
- D0: Flower Display LEDs
- D1: Encoder Switch
- D3: Encoder PinA
- D5: Encoder PinB
- D13: User Interface LEDs
- A3: Proximity Sensor LED (Test Only)
- SDA (I2C): SDA to 3.3V Pull-Up on Breadboard
- SCL (I2C): SCL to 3.3V Pull-Up on Breadboard
GitHub Download

Follow this link in order to get to the code repository for this project. Once on the page navigate to the green code button and click it. Then download the zip file and extract it to your preferred location on your computer. The process of downloading the repository is in the mp4 file.
Downloads
Flower Creation







Flower LED Strands
Materials:
- 30 AWG stranded white wire
- Soldering Iron + Solder
- 140 NeoPixel RGB 5050 LED with Integrated Driver Chip – SKC6812RV
Wiring Instructions
- Use the small stationary flower and the petal of the large moving flower PLA or resin printed rendering to measure wire length between each LED along the tracts.
- For each data IN/OUT tract cut the 30 AWG to the exact length
- For each 5V+ and GND tract cut the 30 AWH to ~12-inch strands so that they can be thread through the hole at the base.
- Strip 1-mm from each 30 AWG wire strand
- Tin the 30 AWG wire strands and LED solder pads
- Solder wires to the appropriate solder pad of each LED
- Use this datasheet to determine the pinout of LEDs: SKC6812RV Datasheet
- Repeat for all small stationary flower and large moving flower petals
- Splice the 5V+ wires of each flower together
- Repeat for GND wires
- Repeat for DIN wire for small stationary flowers ONLY
- Verify data IN/OUT connections with wiring diagram
- Thread the LED strands into the flowers and along the tracts of the petals
- Screw tinned wires into screw terminal connectors
Organza Flower Petal Covers
Materials:
- 18 AWG Craft Wire
- Iridescent Organza
- Hot Glue Gun + Glue Sticks
Moving Large Flower:
- Cut a ~30-inch strand of 18 AWG craft wire
- Bend the wire into the shape of the large flower petal using the 3D printed PLA or resin printed rendering so that the wire outlines the shape of the petal. See
- Form a tab between the split in the petal. (See Image)
- Hot glue the organza along the wire
- Cut off excess organza
- *Thread ends of 18 AWG craft wire through the hole at the base of the petal and bend the wire to secure the cover.
- Repeat 1-5 for each petal in large moving flower
* This step should be done after the LED strands are routed through the tracts in the petals, see Electrical: Flower LED Strands for more information
User Interface






Like all other aspects of this piece, the user interface was customized in order to not only uphold a continuous artistic vision, but to ensure that accessibility was the highest priority. Due to this, the user interface went through several iterations—we considered touch pads, buttons, braille, and being visually accessible—to end up with this final plate and knob combination.
Necessary Supplies and Tools:
- Bambu printer (PLA)
- Form 4 printer (resin)
Preparation:
- Download all of the linked STL files
- Use Bambu to slice the disk stl and print with minimal tree supports
- Send the disk STL to your Bambu printer and remove all supports
- Use PreForm to slice the remaining stl files
- Print all of the emotion slices in clear resin and print the UI knob in a white resin
Assembly (see step 12 for overall installation):
- Feed the necessary wires for the encoder through a hole in the table
- Screw the user interface to the top of the table two #6 screws through the holes in the disk plate
- Hot glue breadboard #1 so that the holes on the breadboard align with those recently inserted screws
- Slide all printed slices into the disk
- Align LEDs with the necessary slots and hot glue them in
- Insert a tap into the flower knob
- Place the flower knob on top of the encoder
- Once firmly placed screw the set-screw into the tap until the flower knob is firmly set
Music Creation

Another key part of this project was having an auditory interaction to go along with the user interface, lights, and flowers. The initial idea was to create a short composition with an instrument an emotion. It would layer and play with differing volumes based on the proportion of selected emotions. With this idea, we went to the university's music theory professor and learned that it would be far easier to create a short composition for each emotion.
Once we created a first draft of the compositions, we created a stakeholder feedback survey to see how well each composition communicated the intended emotion. With this feedback, we went back to the professor to get more ideas on how to incorporate the comments. The updated composition is attached.
One of the comments from the survey was to incorporate different sounds and variety into the compositions. Therefore, a second set of compositions was created. With the two sets created, we have the code pick a random set to play every interaction to create a more unique experience.
Tools Used:
- Flat.io (or any composition software)
- Abelton
- Arturia MicroFreak Hybrid Synthesizer
If you have access:
- Consider recording the compositions with real performers to create an even more human experience
Downloads
Audio System




This audio system utilizes TV speaker modules in order to output quality sound and has its own installation needs to prevent the sound from bouncing in weird directions.
Necessary Supplies and Tools:
- Phillips LCD TV Full-Range Speaker Modules (buy 2x)
- 2 x 30W High-Power Amplifier Board
- RHINO Power Supply
- Power cable
- 3.5mm aux audio cable
- 1/2in-13 coarse nylon lock nuts
- 1/2 in x 1ft stainless steel threaded rod
- Table vise grip
- 3/4 ratcheting wrench
Electronic:
- Elongate power and ground wires on the speaker by soldering and shrink wrapping and extra 3ft cable to them
- If using stereo audio be sure to tape out which speaker is left and which is right
- Add power and ground wires from both speakers to the amplifier according to the silk screen printed on the part
- Create and connect power and ground wires that connect power and ground between the RHINO power supply and the amplifier
- Plug in 3.5mm audio cable to the respective jacks on the Raspberry Pi and amplifier
- Make sure to turn the volume knob to desired volume when playing audio
Shelf Installation (see Step 12 for order overall installation):
- Determine when the speakers should fit on the shelf to fit in the hole in the table
- Mark out where the holes for mounting on the speaker are respective to the shelf
- Drill those two holes slightly larger than 1/2" in diameter
- Cut the 1/2 in x 1ft stainless steel threaded rod in half
- Thread a nylon lock nut on both rods almost all the way to the end by placing it in the table vise grip and ratcheting it down
- Make sure to leave enough room so that the smaller end of a rod can fit another lock nut as well as be threaded through the shelf
- Put the threaded rods through the holes and ratchet two lock nuts on the end to secure the rod in the shelf
- Lace the speakers onto the long end of the rods so that they fit where they should in the shelf
- Resecure the shelf to the table
Downloads
Flower Movement



Necessary Supplies and Tools:
- Resin printed housing unit
- Resin printed rack
- Resin printed gear petals (5)
- Resin printed pin/caps (5 each)
- Screws to hold caps in place (5)
- Stepper motor & lead screw
- Plywood/screws/wood glue for cradle
- Nuts/bolts to secure motor to cradle
- The opening mechanism is an alternative version of a worm gear mechanism, with five gears with flower petal attachments, pins that run through the gears, caps to keep the pins in place, a housing unit to hold all of it, and a rack (alternative of a worm gear) that runs vertically through the housing unit and moves the gears accordingly.
- Resin is recommended over PLA for printing these parts, as the constant movement creates friction wear that requires a higher durability material to offset.
- The movement itself is powered by a stepper motor with a lead screw and nut. The rack will be attached directly to the nut using screws (and/or nuts and bolts) with a hollow center for the lead screw to run through.
- Create a cradle for the motor that will attach to the underside of the tabletop, placed so that the rack/lead screw can run through the large holes cut through the topography. The cradle itself can be constructed using three pieces of plywood, making a bottom for the motor to rest on, and two sides that will attach directly to the tabletop.
- Note that in order for the rack to move up and down, the nut cannot rotate along with the lead screw. To prevent rotation of the nut, simply attach a small piece of wood (or another relatively strong material) to one of the holes in the nut so that it extends horizontally.
- Create a track on the motor cradle (this can be done by screwing on two small panels of wood with a gap in between for the end of the wood piece to fit into) to prevent the nut from rotating.
- Secure the motor itself to the cradle using appropriately sized nuts and bolts.
Base Bottom










The base is the foundation of our artistic table and, therefore, needs to be sturdy and well-built in the event that users interact with the table in unforeseen ways. For this step in the project, we initially determined the desired table dimensions, performed FEA analysis on the table top, and purchased the wood and sheet metal.
Necessary Supplies and Tools:
- 4 4'x8' Douglas Fir Plywood
- 2 4"x4" Wooden Posts
- 20 pcs L-shape brackets
- 8ft Corrugated sheet metal
- Wood stain
- Screws
- Table Saw
- Buzz saw
- Manual metal shear
- Cut the larger pieces of fir plywood down into our desired table dimensions by marking out a layout in which all pieces fit and cutting the below dimensions using a table saw.
- ‘L’-shaped top/bottom (3): 48 x 26 x 22 in
- Larger sides (2): 28 x 40 in
- Smaller sides (4): 18 x 28 in
- Cut the wooden posts down to size using a buzzsaw (4x4 in, 28 in tall each), then add 0.5 in wide and 0.5 in deep slots using table saw passes to ensure the posts can easily slot the panels made in step 1. Make sure to cut adjacent sides as the posts are acting as corner pieces for the table. At the end of this step, you should have a minimum of 6 posts about 28 inches tall that look similar to picture 5.
- Sand the wooden posts to prep for staining, then stain with two layers using a brush or paper towel and leave to dry
- Mark out desired cuts on the corrugated sheet metal so that you have panels that are the same size as the larger and smaller sides of the table (make sure to take into account that the panels will be 0.5 in shorter on either side once slotted into the posts). Once finished, cut the sheet metal to size using the manual metal shear.
- Quality check all components to ensure each piece is cut to the correct size. This is best done by 'assembling' all pieces into the full table without making any actual attachments. If there is any warping in the wood, it can be flattened by wetting the wood down and clamping it to a flat surface until dry (using additional weights if needed). Once flattened and correctly sized, sand if needed and stain the bottom. Note that the side panels will be covered by sheet metal, so it's not necessary to stain them.
- Assemble the body of table using 3/8 in screws, wood glue, and the L-shape brackets. L brackets should be screwed into place with one side flush to the post and the other flush to the adjacent panel to ensure a perfect right angle attachment. Roughly 4 brackets per post (two on each side) provided a fair amount of stability. Put aside two of the L-shapes for the top layer, and screw the remaining one into place on the bottom using the post bottoms. If there are any remaining brackets, they can also be used on the longer sides to strengthen the attachment between the sides and the bottom layer (save two for the shelf on the top layer).
- Attach the sheet metal cut outs to the side panels by drilling 6 holes in the metal (3 on top and 3 on bottom) and then screw through them
Base Top













The base top is essential to the aesthetics of our piece. The topography built in this component adds a large visual effect to the piece and helps tie back our art to some of the themes of Colorado that we have tried to establish in our art. Furthermore, it frames all of the other components of this art piece.
Necessary Supplies and Tools:
- Laser-safe plywood sheets
- ‘L’-shaped top/bottom (2) made in Base Preparation step
- Remaining Douglas Fir Plywood
- 2 L-shape brackets
- 1/2" x 30 course metal rod with about 1ft in length
- Lock nuts that fit 1/2"
- Epilog laser
- Band saw
- Electric saw
- Wood glue
- Drill
- After the top pieces are flattened and correctly sized, use wood glue to glue them together and clamp down until glue is cured (roughly 24 hours)
- Use a table saw to cut out pieces for a lip on the top (length identical to the side it will be attached to, and about 1 in wide)
- Determine the desired design for the topographic patterning on the top of the table
- Arrange the topography layers in SolidWorks to conserve space and maximize the use of the plywood
- Program the arrangement into the Epilog laser cutter to cut the plywood to the necessary specs
- Cut topography spacers using bandsaw and drill wiring holes using drill press
- Cut out spots for electronics on the table top using appropriate tools (electric saw, drill press, etc. depending on necessary size/shape)
- You need holes in all of the layers for the wiring to pass through, need a hole big enough for the motor movement (for the rack pin to pass through), need a hole big enough for the UI wires to pass through, and a hole for the speakers
- Screw the lip pieces on the two connected tabletops using 1.5 in screws so that the top does not slide off
- Identify where the electronics shelf will be attached (it should be under the speaker hole, and allow for all the wiring to reach the corresponding electronics). Attach the shelf to the underside of the table top using two brackets on either side.
- Stain all of the components (meaning the topography layers and spacers, and the tabletop)
- Glue all of the spacers and topography layers on and allow them to dry. Ensure the holes are all aligned before gluing.
- Create a housing for the motor using excess plywood and wood glue
- Make sure that motor fits snug and secure
- Our implementation uses a shelving roller to ensure that the inner rack does not rotate, preserving the translational movement
- Attach PIR sensors to their casings and then screw them to the table
- Construct a shelf for electronics. Sizing for this doesn't have to be exact, as long as it's large enough to house all the electronic components (Arduino, Pi, speakers, etc.) The shelf should fit flush against the underside of the top on three sides, leaving the fourth mostly open with a small lip attached to prevent components from falling out when moved.
- Cut out 2 holes
- Cut the metal rod in half
- Put lock nuts 3/4 on each half
- Thread those holes with the metal rod so that the lock nut is inside the shelf
- Put a lock nut on the small piece of metal rod hanging out of the shelf so that the rod is secured
- Put in the speakers
- Secure the shelf to the bottom of the tabletop so that the speakers fit the hole in the table
Base Completion

This step is where all of our components come together into the art piece. Make sure to assemble the table by having the base build made, having the top of the table prepared, and connect all of the wiring to power.
Make sure to...
- Measure out where the PIR sensors are on the table and make cuts in the metal and wood to allow for wires to pass through
- Drill holes through the metal and wood for the power cables
- Place table top on the base build
- Place user interface and screw into place using #6 1 in wood screws
- Make sure to test the entire interface together