Emotional Flower

by RoboRen in Craft > Art

49 Views, 0 Favorites, 0 Comments

Emotional Flower

emotionwheel.png
teampic.jpg

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:

  1. 4 4'x8' Douglas Fir Plywood
  2. 2 4"x4" Wooden Posts
  3. 8ft Corrugated sheet metal
  4. 20 pcs L-shape brackets
  5. 1/2" x 30 course metal rod with about 1ft in length
  6. Lock nuts that fit 1/2"
  7. 3 screws for PIR
  8. 2 screws for plate
  9. 10 screws for the big flower?
  10. Organza
  11. 16 gauge wire (for organza petals)
  12. 3 screws for motor
  13. Roughly 70 screws for the L brackets
  14. The tap
  15. Lead screw stepper motor
  16. Wood glue
  17. Wood stain
  18. Clear and white Resin
  19. White PLA

Electrical Components:

  1. PIR Sensors
  2. Rotary Encoder with Push Button
  3. NeoPixel RGB 5050 LED 100 Pack (buy 2x)
  4. Arduino UNO R3
  5. Raspberry Pi Model 4 B
  6. 28 AWG Solid white wire (buy 2x)
  7. 3pcs Circuit Boards
  8. Push terminal block
  9. Screw terminal Connectors
  10. Phillips LCD TV Full-Range Speaker Modules (buy 2x)
  11. 2 x 30W High-Power Amplifier Board
  12. Arduino software IDE
  13. Audio jack wire
  14. Header wires
  15. Hot glue
  16. Tape

Tools Necessary:

  1. SolidWorks
  2. Bambu printer (PLA)
  3. Form 4 printer (resin)
  4. CNC machine
  5. Epilog Laser
  6. Manual metal shear
  7. Electric sanders
  8. Clamps & Weights
  9. Drill press
  10. Buzz saw
  11. Table saw
  12. Band saw
  13. Electric saw
  14. Soldering iron
  15. Leaded solder
  16. Wire strippers

Electronics Overview

breadboard2.png
breadboard1.png
overallwiring.png

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

raspialone.png
raspipinout.png
raspiwiring.png

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

  1. sudo apt install python3-adafruit-python-shell
  2. pip install pydub simpleaudio
  3. sudo apt install python3-pyaudio
  4. pip install sounddevice numpy
  5. sudo apt install alsa-utils
  6. sudo apt install libasound2-dev
  7. pip install simpleaudio
  8. pip install sounddevice
  9. sudo apt update && sudo apt upgrade -y
  10. sudo apt install python3 python3-pip -y
  11. pip3 install adafruit-blinka
  12. Enable I2C or SPI: sudo raspi-config
  13. Navigate to Interfacing Options.
  14. Enable I2C and SPI.
  15. Reboot your Raspberry Pi:
  16. Reboot when complete: sudo reboot


Find speaker/amplifier device connected to Raspberry Pi

  1. aplay -l
  2. Should see something like this: card #: sndrpihifiberry [snd_rpi_hifiberry_dac], device 0: HiFiBerry DAC+ ...
  3. aplay -D hw:#,0 mixed_output.wav
  4. Check/alter volume levels: alsamixer
  5. 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

  1. sudo nano /etc/systemd/system/my_script.service
  2. 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.

  1. sudo systemctl enable my_script.service
  2. sudo systemctl start my_script.service
  3. sudo systemctl status my_script.service
  4. sudo reboot


I2C

sudo apt update

sudo apt install python3-smbus

pip install smbus2


Arduino Set Up

arduinopinout.png
arduinopins.png
motorshield.jpg

Arduino Wiring

Stepper Motor and Driver

Necessary Supplies:

  1. Stepper Motor: 23LS18-2004E-300N
  2. Dual Bi-Directional DC Motor Driver Shield: Pololu VNH5019
  3. (Lenovo) AC Adapter: 100-240V ~1.5A AC Input 20V 3.25A DC Output

Wirings Instructions

  1. Ensure that all power is OFF and code is uploaded via COM port
  2. Disconnect COM Port cable
  3. Connect appropriate wires from AC Adapter to VIN and GND screw terminals of Motor Driver Shield
  4. Strip and tin wires
  5. White insulated wire = VIN & raw wire = GND
  6. Use a multimeter to determine winding pairs of the Stepper Motor
  7. If resistance between two wires is less than 1kOhm, that is a winding pair
  8. Connect one winding pair wires into Motor Driver screw terminals M1A and M1B
  9. Connect the other winding pair wires into Motor Driver screw terminals M2A and M2B
  10. 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.
  11. 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:

  1. D0: Flower Display LEDs
  2. D1: Encoder Switch
  3. D3: Encoder PinA
  4. D5: Encoder PinB
  5. D13: User Interface LEDs
  6. A3: Proximity Sensor LED (Test Only)
  7. SDA (I2C): SDA to 3.3V Pull-Up on Breadboard
  8. SCL (I2C): SCL to 3.3V Pull-Up on Breadboard

GitHub Download

github.png

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

wraparound.png
organza.png
bigpetal.png
together.png
sock.png
wireandflower.png
flowerled.png

Flower LED Strands

Materials:

  1. 30 AWG stranded white wire
  2. Soldering Iron + Solder
  3. 140 NeoPixel RGB 5050 LED with Integrated Driver Chip – SKC6812RV

Wiring Instructions

  1. 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.
  2. For each data IN/OUT tract cut the 30 AWG to the exact length
  3. 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.
  4. Strip 1-mm from each 30 AWG wire strand
  5. Tin the 30 AWG wire strands and LED solder pads
  6. Solder wires to the appropriate solder pad of each LED
  7. Use this datasheet to determine the pinout of LEDs: SKC6812RV Datasheet
  8. Repeat for all small stationary flower and large moving flower petals
  9. Splice the 5V+ wires of each flower together
  10. Repeat for GND wires
  11. Repeat for DIN wire for small stationary flowers ONLY
  12. Verify data IN/OUT connections with wiring diagram
  13. Thread the LED strands into the flowers and along the tracts of the petals
  14. Screw tinned wires into screw terminal connectors

Organza Flower Petal Covers

Materials:

  1. 18 AWG Craft Wire
  2. Iridescent Organza
  3. Hot Glue Gun + Glue Sticks

Moving Large Flower:

  1. Cut a ~30-inch strand of 18 AWG craft wire
  2. 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
  3. Form a tab between the split in the petal. (See Image)
  4. Hot glue the organza along the wire
  5. Cut off excess organza
  6. *Thread ends of 18 AWG craft wire through the hole at the base of the petal and bend the wire to secure the cover.
  7. 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

topknob.png
sideknob.png
bottomknob.png
userledcct.png
plate.png
slice.png

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:

  1. Bambu printer (PLA)
  2. Form 4 printer (resin)

Preparation:

  1. Download all of the linked STL files
  2. Use Bambu to slice the disk stl and print with minimal tree supports
  3. Send the disk STL to your Bambu printer and remove all supports
  4. Use PreForm to slice the remaining stl files
  5. 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):

  1. Feed the necessary wires for the encoder through a hole in the table
  2. Screw the user interface to the top of the table two #6 screws through the holes in the disk plate
  3. Hot glue breadboard #1 so that the holes on the breadboard align with those recently inserted screws
  4. Slide all printed slices into the disk
  5. Align LEDs with the necessary slots and hot glue them in
  6. Insert a tap into the flower knob
  7. Place the flower knob on top of the encoder
  8. Once firmly placed screw the set-screw into the tap until the flower knob is firmly set

Music Creation

music.png

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:

  1. Flat.io (or any composition software)
  2. Abelton
  3. Arturia MicroFreak Hybrid Synthesizer

If you have access:

  1. Consider recording the compositions with real performers to create an even more human experience

Audio System

speaker.png
amp.png
speakerdata.png
audiosub.png

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:

  1. Phillips LCD TV Full-Range Speaker Modules (buy 2x)
  2. 2 x 30W High-Power Amplifier Board
  3. RHINO Power Supply
  4. Power cable
  5. 3.5mm aux audio cable
  6. 1/2in-13 coarse nylon lock nuts
  7. 1/2 in x 1ft stainless steel threaded rod
  8. Table vise grip
  9. 3/4 ratcheting wrench

Electronic:

  1. Elongate power and ground wires on the speaker by soldering and shrink wrapping and extra 3ft cable to them
  2. If using stereo audio be sure to tape out which speaker is left and which is right
  3. Add power and ground wires from both speakers to the amplifier according to the silk screen printed on the part
  4. Create and connect power and ground wires that connect power and ground between the RHINO power supply and the amplifier
  5. Plug in 3.5mm audio cable to the respective jacks on the Raspberry Pi and amplifier
  6. Make sure to turn the volume knob to desired volume when playing audio

Shelf Installation (see Step 12 for order overall installation):

  1. Determine when the speakers should fit on the shelf to fit in the hole in the table
  2. Mark out where the holes for mounting on the speaker are respective to the shelf
  3. Drill those two holes slightly larger than 1/2" in diameter
  4. Cut the 1/2 in x 1ft stainless steel threaded rod in half
  5. 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
  6. 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
  7. Put the threaded rods through the holes and ratchet two lock nuts on the end to secure the rod in the shelf
  8. Lace the speakers onto the long end of the rods so that they fit where they should in the shelf
  9. Resecure the shelf to the table




Downloads

Flower Movement

petalledcct.png
motordriver.png
flowermovement.png

Necessary Supplies and Tools:

  1. Resin printed housing unit
  2. Resin printed rack
  3. Resin printed gear petals (5)
  4. Resin printed pin/caps (5 each)
  5. Screws to hold caps in place (5)
  6. Stepper motor & lead screw
  7. Plywood/screws/wood glue for cradle
  8. Nuts/bolts to secure motor to cradle


  1. 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.
  2. Resin is recommended over PLA for printing these parts, as the constant movement creates friction wear that requires a higher durability material to offset.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. Secure the motor itself to the cradle using appropriately sized nuts and bolts.


Base Bottom

20250422_125231-bcd4.jpg
metalcut.jpg
tablesaw.jpg
barebase.jpg
cornerpiece.jpg
metalandwoodlayout.jpg
woodlayout.jpg
woodpiece.jpg
Base Drawing.JPG
darkbase.png

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:

  1. 4 4'x8' Douglas Fir Plywood
  2. 2 4"x4" Wooden Posts
  3. 20 pcs L-shape brackets
  4. 8ft Corrugated sheet metal
  5. Wood stain
  6. Screws
  7. Table Saw
  8. Buzz saw
  9. Manual metal shear


  1. 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.
  2. ‘L’-shaped top/bottom (3): 48 x 26 x 22 in
  3. Larger sides (2): 28 x 40 in
  4. Smaller sides (4): 18 x 28 in


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


  1. Sand the wooden posts to prep for staining, then stain with two layers using a brush or paper towel and leave to dry


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


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


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


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

20250422_125231-50f6.jpg
20250422_125231-76bb.jpg
20250422_125231-cbbf.jpg
20250422_125231-ee65.jpg
20250422_125231-fbcd.jpg
20250422_184045-9dd7.jpg
bettertopoview.jpg
shelf.jpg
shelfassem.jpg
toplip.jpg
topoplan.jpg
base.png
sidebase.png

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:

  1. Laser-safe plywood sheets
  2. ‘L’-shaped top/bottom (2) made in Base Preparation step
  3. Remaining Douglas Fir Plywood
  4. 2 L-shape brackets
  5. 1/2" x 30 course metal rod with about 1ft in length
  6. Lock nuts that fit 1/2"
  7. Epilog laser
  8. Band saw
  9. Electric saw
  10. Wood glue
  11. Drill


  1. 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)
  2. 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)
  3. Determine the desired design for the topographic patterning on the top of the table
  4. Arrange the topography layers in SolidWorks to conserve space and maximize the use of the plywood
  5. Program the arrangement into the Epilog laser cutter to cut the plywood to the necessary specs
  6. Cut topography spacers using bandsaw and drill wiring holes using drill press
  7. Cut out spots for electronics on the table top using appropriate tools (electric saw, drill press, etc. depending on necessary size/shape)
  8. 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
  9. Screw the lip pieces on the two connected tabletops using 1.5 in screws so that the top does not slide off
  10. 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.
  11. Stain all of the components (meaning the topography layers and spacers, and the tabletop)
  12. Glue all of the spacers and topography layers on and allow them to dry. Ensure the holes are all aligned before gluing.
  13. Create a housing for the motor using excess plywood and wood glue
  14. Make sure that motor fits snug and secure
  15. Our implementation uses a shelving roller to ensure that the inner rack does not rotate, preserving the translational movement
  16. Attach PIR sensors to their casings and then screw them to the table


  1. 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.
  2. Cut out 2 holes
  3. Cut the metal rod in half
  4. Put lock nuts 3/4 on each half
  5. Thread those holes with the metal rod so that the lock nut is inside the shelf
  6. Put a lock nut on the small piece of metal rod hanging out of the shelf so that the rod is secured
  7. Put in the speakers
  8. Secure the shelf to the bottom of the tabletop so that the speakers fit the hole in the table

Base Completion

metalbasetopograp.jpg

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

  1. 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
  2. Drill holes through the metal and wood for the power cables
  3. Place table top on the base build
  4. Place user interface and screw into place using #6 1 in wood screws
  5. Make sure to test the entire interface together