Sculpture 1 Process: Daphne
❁Sculpture 1 Process: Daphne❁¶
On this page you will see the process that brought my Daphne sculpture to life. It will run through the initial design process, prototyping journey and material research. This page will conclude with the full blueprints for the sculpture and fabrication files.
⍣Research and Ideation:⍣¶
My first sculpture Daphne is inspired by blooming cycles of flowering plants. This is one of the 3 natural cycles I was interested in as flowers are all around us and captivate our wonder so easily, but we do not often notice the disruption climate change has on their blooming rhythmns or the knock on affects if their cycles are disrupted.
Graph and more information can be found at National Environmental Education Foundation https://www.neefusa.org/story/climate-change/early-blooms-spring-how-climate-change-impacts-growing-seasons-and-you.
Early blooming cycles is been a phenomena caused by climate change. As plants use a set of triggers to synchronize the timings of their growth and reproduction with their environmental conditions, the drier and warmer conditions brought about by climate change have resulted in progressively earlier blooming having wider consequences for entire ecosystems e.g impacting plant pollinators and animals who rely on timely production of nectar, fruit and seeds.
This video is a good summary of the wider context, as botanist and ecologist, Liana May explains how an understanding of phenology (the study of seasonal change in plants and animals) can be used to track the impacts of climate change.
I knew that I wanted to create a sculpture that would bloom progressively faster as the person approached it. I began sketching ideas and started to see Daphne on a 1 to 1 human scale with a large flower head that would meet the viewer eye to eye as it opened and closed.
I collated inspiration in a moodboard and looked at lots of timelapses of flowers to see what kind of motion I wanted.
I was quite inspired by the forms of orchids as they already had quite an otherworldly and anthropomorphic appearance and had many soft and intricate petals which make the opening and closing movement more dramatic.
I began sketching out my ideas and came up with this initials design. It is meant to be suspended at eye level and will have 4-6 moving parts around a central mechanism. I wanted it to have these long fabric arms, so that its silhouette was both reminiscent of a plant with leaves but also a figure.
Finally, I went looking for examples of mechanical flowers and started catagorising them into different types of mechanisms I would research and prototype.
⏣PROTOTYPING MOTION⏣¶
From this research I selected 3 possible mechanisms to explore. I began trying to understand how to create movement and making quick and dirty prototypes.
GEAR AND RACK.¶
Diagram from Encyclopedia Britannica.
This mechanism is based on the movement of a gear across a rack.
However, in this case the rack moves back and forth rather than the gear and the gear is held in a fixed position above it. This allow the gear and its extension to move in a 90 degree arc rather than a linear back and forth.
To explore this mechanism I used this instructable: Solana the Sunflower. As I don't have any experience with designing mechanisms I felt like the best way to get started would be to make one in real life and understand how things work by trial and error. I used the .dwg files they include in their documentation to create a laser cut file and fabricate the pieces.
HERE IS IT IN ACTION:
ANALYSIS:
-
I found this mechanism unreliable and reliant on a materials such as fishing line and elastic bands to create the motion which were not very resiliant and temperamental.
-
There was a lot of friction between the different parts which were designed to be fitted together very close. This created a lot of inertia in the movement.
-
The motion was hard to control and requiring a lot of force. It didn't give me hope that i could make it work with a motor if I had to keep changing the way I pulled the mechanism with my hands.
GEARS IN THE ROUND¶
As I learnt in Open source hardware week, I killed my darling and moved on to exploring another mechanism I found on... you guessed it ✦ Instructables ✦.
I had been to see William Darrell's exhibition "On the Shores of Obliion" at Somer Gallery recently and was amazed by the graceful movement a multigear system could create.
I ended up finding this amazing project Kinetic Origami Interactive Art . I was drawn to this project as I had used a linear servo actuator in wearables week and had a good understanding of how this mechanism worked and could be adapted.
The mechanism is essentially a linear servo actuator that moves a plunger with gear teeth up and down. When this moves up and down it turns the gears fixed around it by hinges (much like the first mechanism) so that they move in a 90 degree arc.
I drew out my understanding and how I would adapt it to my project:
Then I got to work slicing the files with Prusa Silcer and 3D printing the pieces on the Creality Ender 3 (Ø1.75mm, Bowden) with 1.75 mm PLA Traffic White filament.
N.B I had some issues perhaps with the files and also the tolerance on the printer. The **ratios between the servo gear and pusher plunger ** were very off.
I scaled the plunger rack by 90% on the z and y axis but 80% on the X axis using my slicer software. I similarly had to change the dimensions of the servo gear in rhino to fit the servo motor I was using (Tower Pro Micro Servo 9g SG90). I also scaled this by 90% in Rhino, added a top covered the top of the gear and added a 2mm hole for the servo screw.
The .stl file for the adapted servo gear is downloadable on sketchfab:
HERE IT IS IN ACTION:
I immediately felt like this was the right mechanism for Daphne. The movement was very smooth and predictable and could easily be modified by the length of the rack and the code and the model was simple enough that I could redesign parts and scale it to fit my design.
ANALYSIS
-
I would probably need to use a higher torque servo motor and therefore I would need to frankenstein into the file a different linear actuator e.g this one from thingiverse
-
I really loved the 6 "arms" on the first model rather than 4, I think the blooming would be nicer and they would come together to make a more curved shape when the flower is closed.
-
The attachments on the gears were designed specifically for the 4 poles which give a very inorganic and boring shape. I would need to remodel the gears with attachments for a more complex petal design which won't impediment the mechanism's movement.
✻ITERATION 2:✼¶
I began playing with the design in Rhino. I wanted to change the scale and make the mechanism so that it worked in the round. This meant adding at least another 2 gears into the system and ensuring they all still had contact with the central cog. I used the Array Polar function to make the mechanism work with 6 gears..
Here is the .stl file for the new model:
I printed this using the same filament and printer using pieces of 6mm wooden dowel to secure the gears into the holder around the central gear.
Prior to printing I found a Linear Actuator that would fit the dimensions of the Hi Torque Servo motor I wanted to use: Tower Pro Digi Hi Torque Servo Motor MG 996R. I chose this motor due to its high torque, fixed rotation and metal gears.
The linear actuator I found was this one on Thingiverse (THE LARGE VERSION). I ensured that the rail was within the correct dimensions to fit my mechanism, then prepared and printed these files also.
To construct: I used Sency Super Glue and Book Screws to assemble the parts. This allowed for sturdy connections between the parts and smoother movement of the gears. I also glued some wire petals to each gear so that I could test range of motion of the mechanism:
ELECTRONIC INTERACTION¶
Now that I had the mechanism up and running. I started to integrate the electronics and write the code.
I used these tutorials to get a basic understanding of how the ulrasonic sensor HCSR04 would work. I have linked Rachel De Barros's starter code here to initiate and start getting readings from the sensor which I used as a starter in Chat GPT to generate my final code:
Below is the schematic, breadboard and code for reference:
CODE: The interaction maps the servo delay to the proximity of an object to the Ultrasonic Sensor.
#include <ESP32Servo.h>
const int servoPin = 2; // GPIO 4 (ensure this matches your hardware)
const int trigPin = 4; // GPIO 3 (ensure this matches your hardware)
const int echoPin = 3; // GPIO 2 (ensure this matches your hardware)
float duration; // variable to store pulse duration
float distanceCM; // variable to store distance in CM
float distanceIN; // variable to store distance in IN
Servo myServo;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
myServo.attach(servoPin);
}
void loop() {
// start with a clean signal
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// send trigger signal
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// return pulse duration in microseconds
duration = pulseIn(echoPin, HIGH);
// convert m/s to cm/microseconds (343 m/s = 0.034 cm/microsecond)
distanceCM = (duration * 0.034) / 2;
// convert to inches (1 inch = 2.54 cm)
distanceIN = distanceCM / 2.54;
// If the distance is greater than 70 cm, ignore it and don't print to Serial Monitor
if (distanceCM > 200) {
return; // Skip this loop iteration and don't process the servo or print to Serial Monitor
}
// print distance to Serial Monitor only if it's <= 70 cm
Serial.print("Distance: ");
Serial.print(distanceCM);
Serial.print(" cm | ");
Serial.print(distanceIN);
Serial.println(" in");
// Map the delay time based on the distance (closer = shorter delay)
int delayTime = map(distanceCM, 2, 60, 10, 100); // Slower overall delay range
delay(100); // fixed short delay before reading again
// If object is less than or equal to 60 cm, move servo with dynamic delay
if (distanceCM <= 60) {
// Sweep servo from 0 to 180 degrees with dynamic delay based on distance
for (int pos = 0; pos <= 180; pos += 5) {
myServo.write(pos); // move the servo to the position
delay(map(distanceCM, 2, 60, 10, 100)); // dynamic delay for smooth movement
}
// Sweep servo back from 180 to 0 degrees with dynamic delay based on distance
for (int pos = 180; pos >= 0; pos -= 5) {
myServo.write(pos); // move the servo to the position
delay(map(distanceCM, 2, 60, 10, 100)); // dynamic delay for smooth movement
}
}
// If object is farther than 60 cm, move the servo back and forth very slowly
else {
// Gradual movement for objects greater than 70 cm
// Move servo gradually from 0 to 180 degrees with small increments
for (int pos = 0; pos <= 180; pos += 5) { // Small increments for smooth gradual movement
myServo.write(pos); // move the servo to the position
delay(100); // Longer delay for slow movement
}
// Move servo gradually back from 180 to 0 degrees with small increments
for (int pos = 180; pos >= 0; pos -= 5) { // Small increments for smooth gradual movement
myServo.write(pos); // move the servo to the position
delay(100); // Longer delay for slow movement
}
}
}
The initial results were a little stuttered as I didn't get the sweep right on the servo, but as I progressed I got the sweeping and mapping to be much smoother with the proximity readings. I also found the most organic sweep to use as the default movement when the sensor readings are out of mapping range:
From seeing how the mechanism worked all together with the electronics I noticed a few adjustments that needed to be made to the mechanism:
- The Gear attached to the Servo motor did not attach securly enough, perhaps from problems with the original design or the tolerance of the 3D printer. I remodelled the gear and added a hole for a screw to be inserted and create a secure join between the gear and the motor.
- The petals needed to be attached securely in a way that didn't disrupt the movement of the gears. I measured the rotation of the gears and worked out where it would be safe to attach wires. I then used this information to extend the gear and add holes where I could attache things to them.