Skip to content

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


Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.