Final Project¶
Kinetic Rain Art ¶
I saw this art installation on youtube which was installed on Changi airport, Singapore. The animations in the origianl installation are so smooth and satisfying that I decided to make a smaller prototype of the same.
About the original installation¶
For research, I read about the original installation and below are some of the key points.
- Kinetic Rain consists of two parts installed above the terminal’s two central escalators.
- Each symmetrical element is composed of 608 copper-plated aluminium drops.
- The drops are connected by steel wires to computer-controlled motors that raise and lower them with precision.
- The entire installation spans a total area of more than 75 square metres and spreads over 7.3 metres in height.
About my project¶
- I decided to make a smaller version with only 16 stepper motors.
- Motors are divided into 4 modules of 4 motors each.
- Each module has its own controller and communicate with other controllers/master through serial communication.
Sketches¶
Below sketches give the rough idea of how the final project would look like.
BOM¶
Electronics
Component | Quantity | Price/unit(In INR) | Total(In INR) |
---|---|---|---|
Stepper Motor(Nema 17) | 16 | 599 | 9584 |
Motor Driver(DRV8825) | 16 | 399 | 6384 |
Limit Switches | 16 | 15 | 240 |
SMPS(12V, 20A) | 2 | 850 | 1700 |
SMPS(5V, 2A) | 1 | 350 | 350 |
DC Fans(12v, 120mm) | 2 | 250 | 500 |
Copper clads(standard size) | 5 | 15 | 75 |
AtMega328 IC(SMD) | 5 | 130 | 650 |
Female pin headers(1X40) | 8 | 10 | 80 |
Capacitor(100uF, 16V)) | 16 | 0.5 | 4 |
SMD Capacitor(1uF) | 5 | 0.5 | 2.5 |
SMD Capacitor(100nF) | 8 | 0.5 | 4 |
0 ohm Resistor | 10 | 0.5 | 5 |
ISP Pin header(2X40) | 1 | 20 | 20 |
Crystal Oscillator(16Mhz) | 5 | 10 | 50 |
2-pin Power connectors | 9 | 3 | 27 |
Push buttons | 5 | 5 | 25 |
male pin header(1X40) | 1 | 10 | 10 |
Structure
Material | Quantity | Price/unit(In INR) | Total(In INR) |
---|---|---|---|
Pine Blocks(1.5”, 10ft) | 2 | 200 | 400 |
Plywood(19mm) | 2X2 feet | 225 | 225 |
Plywood(5mm) | 2X2 feet | 150 | 150 |
Acrylic Sheet(3mm) | 3X4 feet | 900 | 900 |
The Total cost of the all the components is around INR 22,000.
Skills used¶
- CAD
- 3D Printing
- Laser cutting
- CNC routing
- Embedded Programming
- PCB Fabrication
- Input Devices
- Output Devices
- Networking
- Molding & Casting
Let’s Start¶
CAD¶
For designing, I divided the project into various parts which are:-
- Frame
- Motors
- Motors Base
- Base
- Top
- Sides
- SMPS, Fans
- Limit swithces
- Drops
and then I started to desing everything from scratch in Fusion360. It took me around 6 hours from figuring out the correct dimensions and designing.
Frame
motors, motor base, smps and fans
PCB
Limit Swithces
Sides
Drops
All Parts
Fabrication¶
Frame¶
I started by collecting the pine wood blocks and cutting them in the required sizes which were 476mm(8 pieces) and 188mm (4 pieces).
I searched/read about various types of joineries but the one that I needed was a corner joint. Ashish, my labmate, showed me this picture.
I needed only that type of joinery so first I designed this in CAD.
Then before cutting the joineries on the CNC machine I gave it a try by hand tools. I marked the dimensions on one side of a block and cut using handsaw and chisel. The outcome was satisfying and parts were fixing in each other easily.
Cutting these joints on the CNC machine was a big challenge to me. We didn’t have the 40mm length endmill and I had no idea how to cut these on CNC. Then, I came up with an idea of cutting it in two parts, half way down from top and then flip the piece 180 degree and cut another half. But in that case, there was the challenge of keeping the origin same or the piece at the exact position where it was while cutting the first half. So, first, I cut a jig/pocket 10mm deep on the bigger piece of plywood of the exact dimensions of my block. Then I inserted the block in the jig and clamped it tightly. For cutting, I used 6mm endmill but the cutting was very rough as the pine wood is soft in nature.
Then I cut using 3mm endmill. I cut the top half and then flipped the piece 180 degrees and run the machine for cutting bottom half.
Fixing one piece into another.
I cut total 12 pieces for the frame. one type of joint on both side of 8 pieces and other joint on both sides of 4 pieces
Assembly time :)
Motors’ Base¶
This is the part on which motors rest. The size of the base 476X476 mm and thickness 19mm. It has 3 sizes holes. 16 holes of 3mm from which the thread go down, 16 holes of 8mm dia from which the limit switches wires would pass, 5 holes of 4mm diameter to align the base with this motor base. First I cut the main features on CNC machine.
Then, marked the motors positions and on the top side and limitSwitches position on the bottom side using laser cutter.
SideFaces¶
Side and bottom faces I cut in 3mm acrylic. The bottom has 16 holes of 6mm each from which the thread pass. The sizes of the 4 side faces are 482X300mm and the base is 482X482 mm. I designed finger joints in that so that they align perfectly.
I used clear acrylic but later I decided to paint it black. I also wanted motors to be visible from outside, so I drew a rectangle on the paper of acrylic sheet from which I wanted to prevent from the paint.
Spacers¶
The thickness of the pine blocks which I used was 38mm but the lenght of the mounts of the limit switches was 42 mm so I needed to make that section atleast 4mm more thick/deep to prevent the switches from being pressed/touched from the base. For that, I laser cut 5 mm plywood in the dimensions of the pineblocks and screwed them on the blocks.
Assembly¶
For assembling the electronics, I needed to disassemble the frame completely. Then. I took 16 metal clips on which the limit switches would be mounted and srewed them at their positions using M3 screws.
Next was the motors turn. I flipped the board and using same screws, fixed all 16 motors at their positions.
To hang the plastic drops I used nylon thread. The reasons for selecting this over any other thread was that it has high tensile strength and is transparent.
I cut 16 threads of 2meters each and wrapped on the bobbins. and then inserted the bobbin on the shaft of the motor.
Paint¶
I removed the paper from the area I wanted to paint and used nomal acrylic spray paints.
Next, The metal strip of the limit switches needed to be drilled as I wanted the threads to pass from that. So I just picked up the drill and started drilling.
Then I mounted the swithces using 3 mm screws on the metal strips which were screwed on to the base earlier.
Wires¶
The wire for limit switches has 2 pin male connector on one side and crimps on the other. The crimps were simply pushed in the terminal of the switches. Black one is in the com and red one in Normally open.
Motors are connected to the pcbs using the wires with 6 pin connectors on both ends.
PCB prodcution¶
Schematic¶
The schematic is simple. I used Atmega328 IC and connected 4 stepper motor drivers, 4 limit switches to it with other necessary components.
Board¶
After spending 4 hours in routing, my board still had 4 airwires which then I decided to leave as it is and added copper pads/Ratsnet so that I could solder jumper wires later.
Traces
Outline
Holes
Milling¶
While milling one of my board lifted off of the platform. Fortunately this was while cutting the outline and it didn’t cut the traces. I removed the board from the machine to check and tried cutting manually using a blade and the moment I applied a little force, it broke from one corner. I just didn’t want to mill another board so I welded the two parts using soldering iron and solder ;)
Soldering¶
In 4 PCBs I had to solder all the components, but in the fifth one which is master, I only soldered the microcontroller with other necessary components as the purpose of this board is just to communicate with the slaves.There’s no motor connected to master.
Programming¶
Master board code¶
#include <SoftwareSerial.h> SoftwareSerial Serial1(2, 3); // RX, TX #define SQUARES_ANIMATION_DELAY 1500 #define ALTERNATE_V_DELAY 1000 // SQUARES ANIMATION char* squares_frame_1 = "3003333333333003!"; char* squares_frame_2 = "0220000000000220!"; char* squares_frame_3 = "r00rrrrrrrrrr00r!"; char* squares_frame_4 = "0rr0000000000rr0!"; // ALTERNATING LINES VERTICALLY char* alternate_v_frame_1 = "r3r33r3rr3r33r3r!"; char* alternate_v_frame_2 = "3r3rr3r33r3rr3r3!"; // HOMING char* homing = "hhhhhhhhhhhhhhhh!"; char* reverse = "rrrrrrrrrrrrrrrr!"; void setup() { Serial1.begin(115200); homeAll(); } void loop() { squareAnimation(SQUARES_ANIMATION_DELAY); delay(1000); reverseToHome(); alternateVAnimation(ALTERNATE_V_DELAY); delay(1000); reverseToHome(); } void homeAll() { Serial1.print("*16#"); Serial1.print(homing); delay(20000); } void reverseToHome() { Serial1.print("*16#"); Serial1.print(reverse); delay(100); } void squareAnimation(int delayTime) { Serial1.print("*16#"); Serial1.print(squares_frame_1); delay(delayTime); Serial1.print("*16#"); Serial1.print(squares_frame_2); delay(delayTime); Serial1.print("*16#"); Serial1.print(squares_frame_3); delay(delayTime); Serial1.print("*16#"); Serial1.print(squares_frame_4); delay(delayTime); } void alternateVAnimation(int delayTime) { Serial1.print("*16#"); Serial1.print(alternate_v_frame_1); delay(delayTime); Serial1.print("*16#"); Serial1.print(alternate_v_frame_2); delay(delayTime); }
Connections¶
Wiring diagram of motors, limit switches, power supplies and rx/tx with slave boards.
Setup communication between all boards
RainDrops¶
I designed the drops in Fusion360 and 3D printed 4 drops.
I needed 16 drops for the prototype but many more in future as this is just a prototype of a bigger project I am thinking of. so, I outsourced the injection molded drops. We learned about molding and casting in week10 but I wanted a proper injection mold so that in future if needed i would be able to make 1000s or lacs of pieces with ease. Here are some pictures of the injection mold.
Attach raindrops to the Nylon thread¶
Pass the thread from the hole of the limit switches and hang the drops to it using screws.
Final Look¶
Working Video¶
Presentation¶
Slide¶
Video¶
Files¶
base
eagleboard
drops
frame
joineries
joints
MotorBaseBottom
MotorBaseTop
Top
Animation
Communication
schematic
sides
spacer
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.