You can find Version 2.0 below after version 1.0 downloadable files.
This Project is protected under the (Apache License 2.0) and the text of the licensing can be found Here!
My project idea briefly is a chandlier called (Chandella) that detects your existense in the room and you're below it and lights upon it and the variations of colors will be used for photography purposes which will help me a lot in my photography projects and upcoming youtube channel.
The input motion detection sensor once triggered it will use the RGB variation of lights to make different colors that will be used for 2 things: Color Therapy and Portrait photography.
During the previous week I've worked as start on a simple vision/design for my final project shape in the Computer Aided Design week.
Then we came to electronics and how to fabricate our boards and when the real work started for my final project was in the Input devices week, by making a board for my motion detection sensor which later on change to be an IR sensor for better detection of someone sitting below it or not not just movement.
Then the most crucial board of them came in the Output devices week which the board that will control my RGB LED strip.
Then I went further in weeks by experimenting the molding and casting week, but I didn't find it that handy to work with it in the final project as the time consumption is too high
Then I experimented in the Wild card week by making a basic frame for the chandlier mixed with Flourscent chemical and this made me realise that probably I'll work using the molding and casting techniques, but the difference that in composite week my horizons was widen about ways to make ENORMOUS molds, but I ended using the composites because it's more easy to make and produce and light in weight as well.
COMPONENT | COUNT | UNIT PRICE |
TOTAL PRICE |
VENDOR | NOTES |
---|---|---|---|---|---|
IR Sensor | 1 | 3.47 USD | 3.47 USD | Deal Extreme | Link |
Attiny 45 | 1 | 1 USD | 1 USD | Farnell | |
FTDI headers | 2 | 0.25 USD | 0.5 USD | Farnell | |
10K Ohm Resistors | 2 | 0.2 USD | 0.2 USD | Farnell | |
Connector Header Surface Mount 6 position | 3 | 1.09 USD | 3.27 USD | Digi-Key | |
499 Ohm Resistors | 1 | 0.1 USD | 0.1 USD | Digi-Key | |
0 Ohm Resistors | 1 | 0.1 USD | 0.1 USD | Digi-Key | |
Red LED | 1 | 0.25 USD | 0.25 USD | Farnell | |
MOSFET N-CH 30V 1.7A | 3 | 0.58 USD | 1.74 USD | Farnell | |
IC REG LINEAR 5V 1A | 1 | 0.50 USD | 0.50 USD | Digi-Key | |
RGB strip LED | 2.5 meters | 1.12 USD | 2.8 USD | (local Store) MTM Electronics | |
Capacitor 1uf | 2 | 0.46 USD | 0.92 USD | Farnell | |
Attiny 44 | 1 | 1 USD | 1 USD | Farnell | |
Copper Tape | 1 | 3 USD | 3 USD | Farnell | |
3D Printing | 1 | 1 Gram = 0.34 USD | 29 Grams = 9.86 USD | Fab Lab Egypt | |
Power Supply (12V 2A) | 1 | 4.5 USD | 4.5 USD | (Local Store) Maamoon |
In the Wild Card Week I designed my frame and it was 2D, but because it went through the Computer aided machining I made it as a 3D part.
I also designed 3D printed pcb holders to stick the PCB's to the frame and avoid the slipping of them from the frame.
First, I drawed two arcs to make something looks like a shell over the orbits.
then I drew a square with exact dimensions to fit with the Output devices week PCB including the holes that will help me fix the 3D printed part and the already made holes in the output circuit.
it doesn't look the best thing in the world, but it does its desired functionality
In Input devices week I made my board which's compatible with any 3 pins sensor (GND, Signal, VCC) at first I thought I would use PIR sensor to detect motion and upon it the chandella should light up!
I knew later on that my project needs IR sensor to change chandlier colors and could also detects if someone sitting below it to take a photo.
Note: The fingers on the board is used to sense the heat in case of any high temperature occurance from the MOSFETs or the Voltage regulator.
In this last photo you can see in the top left corner the board is powered up (after being programmed) only using single IDC cable that's connected to wall outlet.
#include <SoftwareSerial.h> // This is a library that make us initialize the communication to use the TX & RX pin. #define RX 1 // This the pin I'll use later on to receive the confirmation message from the slave board. #define TX 2 // This the pin I'll send my data through, to the slave board. SoftwareSerial Serial(RX, TX); // giving the pin variables to the softwareSerial library after defining them in the line upward. int val=0; // variable to store the values coming from the reading process. int flag=0; // variable to used as a condition to switch between colors for several IR signals. void setup() { Serial.begin(9600); // define the baud rate that the communication will start on. pinMode(3,OUTPUT); // set the pin connected to the board LED as output to give it (0v or 5v) pinMode(4,INPUT); // set the pin connected to the the sensor as input to receive signal from (0:ON or 1:OFF) } void loop() { //#########################################Sending Data to Slave######################################### val = digitalRead(4); // read the input pin and store it in "val" variable. if (val == 0) { // checks if the variable "val" value is 0:ON, and turns the LED on the board which means will start colors picking. flag++; // Increase flag variable by 1 ( same as " flag = flag + 1; ) digitalWrite(3,HIGH); // turning the LED on on the input board, which gives me an indication that the value is incremented successfully. delay(1000); // delay used to read every second not all the time to allow changing colors value easily and avoid skipping ones because of the read speed. if (flag == 1) { // checks for the flag value to send the corresponding message. Serial.write('R'); // Sending a message using the TX pin that the slave board will receive and turn on the corresponding color for each letter. } if (flag == 2) { // checks for the flag value to send the corresponding message. Serial.write('G'); // Sending a message using the TX pin that the slave board will receive and turn on the corresponding color for each letter. } if (flag == 3) { // checks for the flag value to send the corresponding message. Serial.write('B'); // Sending a message using the TX pin that the slave board will receive and turn on the corresponding color for each letter. } if (flag == 4) { Serial.write('Y'); // Sending a message using the TX pin that the slave board will receive and turn on the corresponding color for each letter. } if (flag == 5) { // checks for the flag value to send the corresponding message. Serial.write('V'); // Sending a message using the TX pin that the slave board will receive and turn on the corresponding color for each letter. } if (flag == 6) { // checks for the flag value to send the corresponding message. Serial.write('P'); // Sending a message using the TX pin that the slave board will receive and turn on the corresponding color for each letter. } if (flag == 7) { // checks for the flag value to send the corresponding message. Serial.write('W'); // Sending a message using the TX pin that the slave board will receive and turn on the corresponding color for each letter. } if (flag == 8) { // checks for the flag value to send the corresponding message. Serial.write('Z'); // Sending a message using the TX pin that the slave board will receive and turn on the corresponding color for each letter. flag=0; // sets the flag value to zero in order to star the sequence/pattern all over again. } } else { digitalWrite(3,LOW); // turning the LED off on the input board if there's no reading comming, and lets me know when I can increment to the next value. delay(1000); // delay used to read every second not all the time to allow changing colors value easily and avoid skipping ones because of the read speed. } }
#include <SoftwareSerial.h> // This is a library that make us initialize the communication to use the TX & RX pin. #define RX 4 // This is the pin that will receive the data from the Master board to turn on the LED. #define TX 1 // This is the pin that will send the #define R_PIN 8 //Pin coming from the N-MOSFET to the ATTiny pins and corresponds to the Red light. #define G_PIN 6 //Pin coming from the N-MOSFET to the ATTiny pins and corresponds to the Green light. #define B_PIN 7 //Pin coming from the N-MOSFET to the ATTiny pins and corresponds to the Blue light. SoftwareSerial Serial(RX, TX); // giving the pin variables to the softwareSerial library after defining them in the line upward. int ser = 0; // variable to store the values coming from the serial reading process. void setup() { Serial.begin(9600); // define the baud rate that the communication will start on. pinMode(R_PIN, OUTPUT); //Defining the LED strip pins as output pinMode(G_PIN, OUTPUT); //Defining the LED strip pins as output pinMode(B_PIN, OUTPUT); //Defining the LED strip pins as output } void loop() { //#########################################Receiving data from the Master######################################### if (Serial.available()) { // if there's any data coming to the RX pin. ser = Serial.read(); // Read it and store this data in the variable "ser". // (Low Intensity : 100) (High Intensity : 200) if (ser == 'R') //Red //Verify that the data received from the master board and act upon the letter received. { analogWrite(R_PIN,200); // turning the Red pin on. analogWrite(G_PIN,0); // turning the Green pin off. analogWrite(B_PIN,0); // turning the Blue pin off. } if (ser == 'Y') //Yellow // Verify that the data received is S from the master board and act upon it. { analogWrite(R_PIN,100); // turning the Red pin on. analogWrite(G_PIN,100); // turning the Green pin on. analogWrite(B_PIN,0); // turning the Blue pin off. } if (ser == 'G') //Green // Verify that the data received is S from the master board and act upon it. { analogWrite(G_PIN,200); // turning the Green pin on. analogWrite(R_PIN,0); // turning the RED pin off. analogWrite(B_PIN,0); // turning the Blue pin off. } if (ser == 'B') //Blue // Verify that the data received is S from the master board and act upon it. { analogWrite(B_PIN,200); // turning the Blue pin on. analogWrite(R_PIN,0); // turning the RED pin off. analogWrite(G_PIN,0); // turning the Green pin off. } if (ser == 'P') //Light violet // Verify that the data received is S from the master board and act upon it. { analogWrite(B_PIN,100); // turning the Blue pin on. analogWrite(R_PIN,100); // turning the Red pin on. analogWrite(G_PIN,0); // turning the Green pin off. } if (ser == 'V') //Heavy violet // Verify that the data received is S from the master board and act upon it. { analogWrite(B_PIN,200); // turning the Blue pin on. analogWrite(R_PIN,200); // turning the Red pin on. analogWrite(G_PIN,0); // turning the Green pin off. } if (ser == 'W') //White // Verify that the data received is S from the master board and act upon it. { analogWrite(B_PIN,220); // turning the Blue pin on. analogWrite(R_PIN,220); // turning the Red pin on. analogWrite(G_PIN,220); // turning the Green pin on. } if (ser == 'Z') //Slowly fades from white to OFF // Verify that the data received is S from the master board and act upon it. { for (int i=200; i>=0; i--){ // loop that decrements from 200 to 0 in the 3 colors (R,G,B) analogWrite(B_PIN, i); // decrementing the Blue pin value. analogWrite(R_PIN, i); // decrementing the Red pin value. analogWrite(G_PIN, i); // decrementing the Green pin value. delay(20); // delay to smoothen the fading. ;) } }}}
I had to assemble my 3D printed part and my Output PCB which's the core PCB the input one is not that important for me to fix in a certain place.
Then I mounted it as I designed on the frame and added couple of wires for (VCC,GND,SIGNAL) between the boards, and the extending wire that contain the (VCC,GND,SIGNAL) for the IR sensor.
After putting the wires and fixing the IR sensor I was still in doubt whether I should fix the Input board using anyway or not, yet it was almost not moving, so I guarnteed that it won't move by making a small slot for it in the 3D printed part using a wire clipper.
Wire Clipper:
I previously had 4 hook screw, so I used them to wrap the RGB strip around the frame, without falling and getting loose.
After doing I recalled that I wasn't 100% satisfied by my IDC 12v supply wiring because I'm intending to to add my UV light neon lamp to the project in the future so I want to be able to add more things that work on the 12v powersupply specially that I barely consume half of the current it can give (1A usage from 2A supply).
So what I did basically is what I exactly described in the Computer Controlled Cutting week in the video that I explained how to import a photo and get the vinyl cuttter to cut it.
I brought flexible copper and cut it as arcs which's a bit fancy thing you can cut it as short strips which I found later on to be better for general purpose usage in case you changed your mind.
and after drawing the part roughly on SolidWorks I exported it as (.DXF) file and from that file I used illustrator on one of my friend laptops and exported them as JPG to import it on RolandCut studio.(Solid Part, PNG and .CST (Roland machine format) are included in the download files)
Note: you can change the arc dimension by clicking right click then properties (Alt+Enter)
After Cutting:
The reason you might ask yourself why I cut a lot of arcs not only the two ones I'll need, honestly because it's my first time using it, so I made failure tolerance and added some for experimenting later :D
So in the picture below I've soldered the VCC terminal to the copper and the other one was soldered and extended by a wire that layed under the GND copper tape.
To differentiate between positive and negative terminal later on without using AVO meter I used extra copper tape to make on the VCC Copper tape a "+" sign.
Almost done with the assembly WOHOO!
I started after finishing the frame electrical connection I had to hang the frame using a wire, but to provide a wire that can hold this frame (Which's pretty light btw) but transparent and doesn't affect the over all shape that much, I used Nylon string that's normally used for fishing.
Then I connected each two hook screws together to make some sort of triangle to hang the frame from and because I have only two already made holes up in the wall also (because I didn't have enough nylon string :D)
reaching this point i've successfully finished the chandelier assembly and its integration with other parts.
WARNING: DON'T TRY IF YOU DON'T HAVE EXPERIENCE WITH HIGH VOLTAGE SAFETY PRECAUTIONS!!
This part I literally thank god I'm not dead or burnt the house while doing it.
At the beginning I had a a fluorescent lamp in the room, so I decided to remove it and add a female power outlet socket.
NOTE: use avometer to check there's 0 electricity going through the live wires, and try to make an open circuit with your body in case of any saftey faults, again I don't advise you to do that on your own!
I opened it and fixed a short wire to fix them to the main house supply wires.
after connecting the wires I made from the female socket to the house's live wires, I wrapped both wires seprately using electrical tape I used before to avoid electrical short circuit that can blow up the house and take my life with it :'D
After doing this I felt that the wire I made for it is too long, so I shorten it and used electrical tape to hold the folds I made.
However, I did that to the power supply cable too!, but with much cooler way.
I brought the Nylon string wheel after finishing it, and wrapped the wire around it and I almost only let the length I wanted out as you can see.
After finishing the hanged socket part I need something to hold the triangles I made in my frame so I brought two more hook screws like the ones I used earlier to fit in the wall (The holes was already there to fix the old fluorescent lap to the wall)
Then I hanged the chandelier as shown below:
Note: The chandelier might looks a bit tilting towards a certain edge, that's because the triangles are not equally made because I couldn't tie the nylon string probably, but if I did it was going to be perfectly horizontal.
White color from chandella vs. Blue. (Excuse picture quality due to resizing)
Violet:
Purple:
I was pointed by both Neil Gershenfeld and my global evaluator Francisco to change the the old version design because it was poorly wrapped around the orbit and it doesn't have an artistic side.
So I started the process all over again with a new firm design to improve some points which considered as drawbacks in the old design:
Note: Highlighted items are the new ones.
COMPONENT | COUNT | UNIT PRICE |
TOTAL PRICE |
VENDOR | NOTES |
---|---|---|---|---|---|
IR Sensor | 1 | 3.47 USD | 3.47 USD | Deal Extreme | Link |
Attiny 45 | 1 | 1 USD | 1 USD | Farnell | |
FTDI headers | 2 | 0.25 USD | 0.5 USD | Farnell | |
10K Ohm Resistors | 2 | 0.2 USD | 0.2 USD | Farnell | |
Connector Header Surface Mount 6 position | 3 | 1.09 USD | 3.27 USD | Digi-Key | |
499 Ohm Resistors | 1 | 0.1 USD | 0.1 USD | Digi-Key | |
0 Ohm Resistors | 1 | 0.1 USD | 0.1 USD | Digi-Key | |
Red LED | 1 | 0.25 USD | 0.25 USD | Farnell | |
MOSFET N-CH 30V 1.7A | 3 | 0.58 USD | 1.74 USD | Farnell | |
IC REG LINEAR 5V 1A | 1 | 0.50 USD | 0.50 USD | Digi-Key | |
RGB strip LED | 2.5 meters | 1.12 USD | 2.8 USD | (local Store) MTM Electronics | |
Capacitor 1uf | 2 | 0.46 USD | 0.92 USD | Farnell | |
Attiny 44 | 1 | 1 USD | 1 USD | Farnell | |
Copper Tape | 1 | 3 USD | 3 USD | Farnell | |
3D Printing | 1 | 1 Gram = 0.56 USD | 15 Grams = 8.4 USD | Fab Lab Egypt | |
Spray paint | 2 | 0.95 USD | 1.9 USD | wall paint and tools shop | |
3mm plywood | 5 | 2.79 USD | 14 USD | Fab Lab Egypt | |
Power Supply (12V 2A) | 1 | 4.5 USD | 4.5 USD | (Local Store) Maamoon |
My design Idea was simply because one of the things I learnt through years that simplicity in designs always wins!
so I made 2 Circles with sector cut from both of them to with the same internal diameter,but different external diameter to act as a groove for the LED strip.
Here's the grove made due to difference in outer diameter between the two circles:
Also, there's a slight difference between the two circles if you noticed which will be used as a junction to hold the 3D printed part I made for the electronics.
As you saw in the previous pictures there's 2 holes in almost every 45 degree in both circles that I'll use for aligning layers over each other and hanging the chandlier later on so I made 2 parts one for the alignment and the second one is for stopping the layers from simply falling and not stick together.
Here's how it's assembled:
The final part I needed to add is the part that will contain the PCB's and at the same time make a sneaky entrance for the power and control cable to the circuits without having to much cables that can be seen by eye, So I made a sector that fills the gap in my circle with holes for fixing the part with original chassis and will act as a second layer with the long screw to hold my PCB.
The assembled version:
The manufacturing part of this design was way easier because it's not as hard as composites I must admit that.
I cut my frame on a 3mm plywood (I had to cut several times to make the desired thickness) on laser cutter with bed size (75cm*90cm) to fit my design which's 50 cm diameter.
After putting the layer on top of each other; I added the locking parts to hold them tightly.
I 3D printed the remaining part to complete the circle.
I sprayed the entire chassis with white color give it a nice soothing color also, the white color reflect all colors and doesn't absorb them like the black for example.
Note: Make sure you're in well ventilated area or an open area and spary each face several times each time spary gently from a approx. 20 cm distance away then let it dry and repeat the process, this gives much smoother finish than spraying close to the material and will take more time to dry.
I put both boards in the 3D printed part and wired them with only the sensor fixed away from the 3D printed part.
I made the same arc shaped vinyl cutted flexible copper I used in version 1 to put the female power cable.
Finally I used fishing string yet I made fixed wire length for each holder to ensure I have all the flexiblity of hanging it from the ceiling.