Inspiration Link : https://create.arduino.cc/projecthub/jiripraus/ever-blooming-mechanical-tulip-1b0323
BLOOMING WALL MOUNTED ABLIQUE
I am inspired by the colors of the sunset throughout the day as the sun angles change and the shadows vary. This would difinetly contribute to the psychological factors in which you would feel pleased by the gradients of the following colors such as Red, Yellow, Green, Orange, Blue, and Violette. These colors will be my output colors using RGB LED strip to imitate the real sunset colors. Currently, I will connect LDR Sensor (Input Component) to control the RGB LED STRIP ( output component) in order to produce green, yellow, orange, red, Blue, and Violette colors in response to the intensity of the sunlight during daytime or the the light intensity in the room.
Kinetic Mechanism Inspiration : https://www.youtube.com/watch?v=n_lfZmhMrls&t=2s
KINETIC MECHANISM
I would like to make the blooming effect more realistic so i have added some kinetic mechanism using geers and push plungers which are 3d printed in order to move 4 arms in response to any movement infront of the wall ablique. This will be conducted using IR sensor input (input component) in order to feel any user which will pass infront of the ablique, and the servo Motor (output component) will rotate 70 degrees to push the plunger and move the fabric which will imitate the blooming mechanism.
PART A
This image is illustrating the maint component responsible for the mechanism of moving the 4 arms of the blooming effect. It is composed of the following parts :
1) servo gear: to rotate in 70 degress and push the plunger
2) the plunger: it is moved by the servo gear and cause the rotation of the arms gears
3) The gear Holder: to fix the gears in its position and respond to the friction of the push plunger with gears
4) gears: have holes to fix wooden sticks in the left part, while in the right part it is attached to the head of the push plunger to respond to the rotation effect of the servo and by default the stick will move in the 70 degress to imitate the blooming effect.
5) Servo holder: all of which are fixed in the servo holder which holds the components together and has openenings for each component and the mounting mechanism.
The Gear and push plunger is ready made from https://www.instructables.com/Origami-Interactive-Kinetic-Art-parallel-Processin/ to avoid any errors and make use of the previous experience, less waste of time and resources in the design process while the servo holder is made by me to fit to the components i have selected and the servo model is from grabcad https://grabcad.com/library/mg995_server-1
Servo Holder
Servo Gear
Push Plunger
Main Gear Holder
4 Gears
PART B
This image is illustrating the main components responsible for the wall mounting object of the ablique it is composed as follows
1) Circuit Compenents box: to hold the arduino, bread board, hbridge, ir sensor, ldr sensor, and the whole jumpers
2) The hangers : the arms that will carry the blooming component
3) LED skirt : A gap behind the blooming component which will held the led strip
The sketches of the holder of the wall mounted ablique
The Assembly of the holder of the wall mounted ablique
Component box with opening for the IR Sensor and lDR Sensor
Hangers arm
LED Skirt and Servo Holder
Revolvers to let the ablique lighting element rotates freely
FRONT
SIDE
BACK
REVOLVER AND SERVO HOLDER
Process of laser cutting :
Sheet 1
Sheet 1,2, and 3 in Laseworks
1) export the dxf sketches from fusion 360
2) opened the file in laserworks
3) do the chaset 30cmx50cm (three) to arrange the sketches and fit the plywood
4) selected the layer to cut in black color and speed 10 with power 75 min and 75 max.
5) download to send the file to printer
6) set the focus , adjust the origin and trackframe and run the file
sheet 2
sheet 3
Process of 3d printing in Cura:
1st Part
the holder body of the servo
layer height 0.3
added skirt and supports
infill 20%
temperature 215
speed 60
took 1hr 2 min (14g)
2nd Part
the holder body of the servo
layer height 0.2
added skirt and no supports
infill 20%
temperature 215
speed 60
took 40 min (5g)
3rd Part
The gears
layer height 0.1
no skirt and supports
infill 20%
temperature 215
speed 50
took 24min (1g)
Softwares:
TinkerCAD
360 Fusion
CURA
To get the actual sizes of the components
Tools:
PRUSAmk3 3d print (to print the servo holder part)
Laser cut machine (to cut the plywood sheets)
Driller (to make extra holes when needed)
sanding machine (Some of the available plywoods were not the same thickness so i used sanding machine)
Materials:
PLA Filament
SLA Filament (Strengthful for the push plunger 3d printing)
wooden sheets 3mm 30x50cm
4mm nails for the rotational gears
This type of nuts has allowed me to rotate the gears with no pressure
the 3mm nails is used in all the project
Flanges nuts are used in some parts of the project related to the gears of the servo to avoid gluing
TinkerCad Circuits were used to illustrate the wiring diagram
1) Power supply 12v is connected to a regulator (+ve to 12v input in regulator) and (-ve to ground of the regulator).
2) The LDR sensor ( +ve, GND, SIGNAL A0) are connected to (5v output of the regulator, common ground, and A0 in arduino)
3) The IR sensor (VCC, GND, OUT) are connected to ( 5v output of the regulator, common ground, and pin 6 in arduino)
4) the servo (+ve, -ve, signal) are connected to (5v output of the regulator, common ground, and pin 5 in arduino)
5) LED STRIP 12V (R, G, B , vcc, GND) are connected to pin 9,10, and 11 in Arduino through H-Bridge , common ground and +ve 12 volts in regulator.
Components :
Servo MG9550 which has metal gear and can hold up to 12kg
H bridge to connect the LED Strip and manage the voltage required for the LEDs'
IR sensor to feel the motion of any user passing in front of the ablique
LDR connected using the A0 PIN as it will read analog intensity of light which will vary by the daytime.
that has Red Green and Blue values, which will be manipulated.
It acts as a controller for all the components and does not supply any power.
1) the power source is 12v Adapter which is connected to the regulator as an input source of power.
2) The regulator is grounded (Common ground) -mid pin of the regulator.
3) the output pin of the regulator will have 5v which will be used to power up the Arduino by connecting it to VIN Pin (so it will not need to be connected to the laptop), the IR sensor, the LDR sensor, and the Servo.
to control the 12v input (optimum to power the LED strip) and transform 5v output to the rest of the elements (IR, LDR, and servo)
it is used to supply the components with power and mainly for the LED strip
And the arduino is connected to VIN (in arduino pins) 5v part of the regulator to power the arduino from the adapter
#define ldr A0 //input LDR Sensor
#define Rpin 9 // Red Pin in RGB LED
#define Gpin 10 // Green Pin in RGB LED
#define Bpin 11 // Blue Pin in RGB LED
int Rvalue;
int Gvalue;
int Bvalue;
#include <Servo.h>
Servo servo_5;
void setup() {
Serial.begin(9600);
pinMode(6, INPUT); //IR SENSOR INPUT
servo_5.attach(5);// Control SERVO MOTOR
}
void loop() {
int x = analogRead(ldr);
x = map(x, 0, 1023, 0, 100);
if (x <= 17) //if the light is less than 17%, turn purple
{ Serial.println("ARDUINO LDR SENSOR RGB ");
analogWrite(Rpin, 75);
analogWrite(Bpin, 130);
analogWrite(Gpin, 0);
Serial.print("COLOR PURPLE "); Serial.println(x);
delay(150);
}
if (x > 17 && x <= 34) // if the light is between 17-34%, the blue color will shine
{ Serial.println("ARDUINO LDR SENSOR RGB ");
analogWrite(Bpin, 255);
analogWrite(Rpin, 0);
analogWrite(Gpin, 0);
Serial.print("COLOR BLUE"); Serial.println(x);
delay(50);
}
if (x > 34 && x <= 50) //Green pin between 34-50%
{ Serial.println("ARDUINO LDR SENSOR RGB ");
analogWrite(Gpin, 255);
analogWrite(Rpin, 0);
analogWrite(Bpin, 0);
Serial.print("COLOR GREEN"); Serial.println(x);
delay(150);
}
if (x > 50 && x <= 67) //light up yellow
{ Serial.println("ARDUINO LDR SENSOR RGBB ");
analogWrite(Rpin, 255);
analogWrite(Gpin, 255);
analogWrite(Bpin, 0);
Serial.print("COLOR YELLOW"); Serial.println(x);
delay(150);
}
if (x > 67 && x <= 84) //glow orange
{ Serial.println("ARDUINO LDR SENSOR RGB ");
analogWrite(Rpin, 255);
analogWrite(Gpin, 165);
analogWrite(Bpin, 0);
Serial.print("COLOR ORANGE"); Serial.println(x);
delay(150);
}
if (x > 84) //glow red
{ Serial.println("ARDUINO LDR SENSOR RGB ");
analogWrite(Rpin, 255);
analogWrite(Gpin, 0);
analogWrite(Bpin, 0);
Serial.println("COLOR RED"); Serial.println(x);
delay(1500);
}
if (digitalRead(6) == HIGH)
{ Serial.println("IR SENSOR ");
servo_5.write(60);
delay(1500); // Wait for 1500 millisecond(s)
} else {
servo_5.write(0);
}
}
Description in text for each coding part :
defining the LDR sensor (ldr) that it is connected to A0 as an analogue input.
defining the red pin (Rpin) in the RGB LED that it is connected to pin 9.
defining the green pin (Gpin) in the RGB LED that it is connected to pin 10.
defining the blue pin (Bpin) in the RGB LED that it is connected to pin 11.
The three values of the red, green, and blue will use integers (int) with no decimals.
in void setup
the serial begin is used for serial monitor to check any bugs and errors in readings.
the IR Sensor is defined as 6 (since this is the number of its pin in arduino) and it is input components, it means that it will be used in digital read to write on the output pins of the DC motor.
The digital pins of the servo motor, the output pins will be Pin 5 is controling the motor degree of rotation
in Void loop (Commands that will be repeated)
x is an integer value to store the readings of the ldr sensor (analog read) and it is analogue because we will recieve different number of light intensity values to lighten the RGB LED (Not Digital which means HIGH OR LOW , YES LIGHT IT OR NO DO NOT LIGHT IT).
the mapping here will scale the readings of the values produced from the ldr sensor from (0-1023) which is the default range of readings to ( 0-100).
The formula is as follows:
1) If the LDR readings (light intensity) are less than or equal to 17 then turn the purple color of the RGB LED so analog write on the red and green pins with values (75 and 130 respectively).
serial print that LDR had received the light intensity values correctly.
serial print that the RGB led has produced the right values on each pin as the equation.
2) If the LDR readings (light intensity) are more than 17 and less than or equal to 34 then turn the blue color of the RGB LED so analog write on the blue pin with values ( 50 ).
serial print that LDR had received the light intensity values correctly.
serial print that the RGB led has produced the right values on each pin as the equation.
3) If the LDR readings (light intensity) are more than 34 and less than or equal to 50 then turn the green color of the RGB LED so analog write on the green pin with values ( 255 ).
serial print that LDR had received the light intensity values correctly.
serial print that the RGB led has produced the right values on each pin as the equation.
3) If the LDR readings (light intensity) are more than 50 and less than or equal to 67, then turn the yellow color of the RGB LED so analog values are written on the Red and Green pin with values ( 255 and 255 respictevly ).
serial print that LDR had received the light intensity values correctly.
serial print that the RGB led has produced the right values on each pin as the equation.
4) If the LDR readings (light intensity) are more than 67 and less than or equal to 84 then turn the orange color of the RGB LED so analog write on the Red and Green pin with values ( 255 and 165 respectively).
serial print that LDR had received the light intensity values correctly.
serial print that the RGB led has produced the right values on each pin as the equation.
4) If the LDR readings (light intensity) are more than 84 then turn the red color of the RGB LED so analog write on the red pin with value ( 255 ).
serial print that LDR had received the light intensity values correctly.
serial print that the RGB led has produced the right values on each pin as the equation.
The Values of RGB LED STRIP COLOR ranges are from this website : https://www.rapidtables.com/web/color/orange-color.html?fbclid=IwAR3jxbgYA9YUyjb4zYL-fhifhY7swLHIAEfvKkuc_nbJHVIQ9SDO2IlCK_w
4) To read the IR sensor readings on pin 6, i wrote digital read pin 6 and if it reads a movement (High) please move the SERVO on pin 5 to a DEGREE of 70
5) if the latter didn't happen, make the SERVO stop on pin 5 and make the SERVO rotate to zero degree.
For 3D Printing :
I used Ultimakercura to prepare my files into gcode.
In the body i used layer height 0.2 in the push plunger and the servo holder part while the gears and servo gear was 0.1 to obtain higher details and made the speed 50 instead of 60 and make supports. Finally I export my files then put them in the SD card. Then I used PRUSA i3 mk2 machine and PLA, and SLA (only for the push plunger) material.
1- I put the SD card in the 3D printing machine (PRUSA) .
2- clean the bed.
3-change the color to grey (
4- preheat.
5-choose my file.
The body tooks 2h54m - 45g (Some of the printed parts i have repeated because it was faulty in clearnce such as the servo gear which needs to be more detailed to get attached to the push plunger tooth firmly).
For Laser cutting:
I used laser works to open the dxf (saved from 360 fusion of the sketches)
the cut layer was set to 10 in speed and the power was 75 then i send it to the laser cut machine. It took 14 minutes and 33 seconds.
The servo is mounted infront of the led circle attached to the 3d printed servo holder
The LED is attached behind the servo in groove and held with zip tie around the circumference of the circle
The wiring of the sensors and the power supply adapter 12v
Integration:
1) I tried and tested the first input (ldr sensor) with the first output LED seperately to check that the LED is working.
2) then i tried the servo and tested it with IR Sensor.
3) both inputs and outputs of The project are integrated together and the LDR sensor is responding to the different intensities of the torch light. And the IR sensor is responding to any motion infront of the ablique which allows the servo to rotate in 70 degrees and cause the movement of the gears, then the gears moves the sticks attached to them and it causes the blooming effects of the fabric.
Green Color
Blue Color
Red Color
Viollette Color
Closed blooming effect (servo is zero degree)
Open blooming effect (servo is 70 degrees)
1) Amany has helped a lot. Firstly, in the coding part, I was intending to have both inputs from the microwave and IR sensor to make the blooming effect happen when someone passes in front of the ablique or just moves in the space within a range of 5 m because the IR sensor has a very limited distance to feel the motion, which might be less than one meter. I have developed a code for the latter; unfortunately, the code has worked but there was a confusion between both readings, so i reduced it to only IR since the microwave within crowds will not work well as suggested by Amany.
2) Ibrahim Raafat has helped me a lot and suggested that I could connect the LDR in an analog state instead of digital to feel the different values of the light intensity.
1) The push plunger was stuck in the shaft although I have clearance in the design of 0.2m but it happens because the PLA is not accurate after cooling so it expands and when the servo rotates it breaks the Push plunger so I replaced it with SLA material to gain some strength and become accurate in details.
2) I tried the code with RGB LED first before the LED Strip and the values of the RGB Ranges varied, so the analog indications are given in this chart https://www.rapidtables.com/web/color/orange-color.html?fbclid=IwAR3jxbgYA9YUyjb4zYL-fhifhY7swLHIAEfvKkuc_nbJHVIQ9SDO2IlCK_w
3) The gears does not rotate as it cannot hold the weight of the sticks so it stop and causes higher friction to the push plunger which prevent its movement so i had to lessen its length to the half in order to reduce its weight, prevents it from being broken and increase its strength and reduce the degree of the servo rotation from 90/180 to 70/60 which are optimum and it works well by then.
The broken PLA push plunger
The forces are distributed well when the length of the sticks are 10 cm and the degree of the rotation of the servo is set to 70 degrees.
I will add decorative finishing (gold and shiny ) painting and make many of the blooming effect in layers such as the example shown in the video.
I will make it controllable using a Bluetooth module controller (graphical remote control application).