Fab Academy 2019
Learn how to make ALMOST anything!

Dyamic facade


So I choose Dynamic facade as my final project.As I described in the first week about dynamic facade. Now I have to cordinate all the things I learned from the past weeks to make this dynamic facade. So lets get started.

INTRODUCTION

Intial sketch

The processes that I am going to use for my projects are listed below
Computer Aided Designing (Mechanical and Electronics)
Electronics Production
Embeded Programming
3D Printing
Laser Cutting
Android App

Designing

I started using Fusion 360 for my final project in the academy. So i didnt have much experience in fusion 360 but since i already use other autodesk and 3d software i could easily follow the tutorials. I started by drawing the basic design from the above design.

The basic design is just a single unit i my design.

My first design mechanism was entirely different from the finalised one.

 

Actually the model was not a failure but thought of doing a better try,that why i started with a new thought

You can download the 3d file from here.

I designed the whole mechanism in fusion.According to that design the vertical glass windows were holded by 3d printed units.

 

But after doing a few trails with 3d printing,i got stucked with a better idea of doing the mechanism.Then I started with the new design on the way and tried to complete in fusion.

NEW DESIGN

I started with each individual units.started thinking of the whole dimesion of the product.so how should my small individual parts will look.dimension of each small units.

This u shape floder is designed to fold the 3mm arcylic plate.

 

 

I sat with the verneer and calculated the size of each holes which is to be made.

The whole idea was kept on working inside the mind inorder to draw the single units.I took many revision from my instructor during the process.

View of the connector laser unit which connects all the individual glass facade units.

Overall final model in fusion.

UNIT FOR 3D PRINTING

I designed a disc shape connector to connect the mechanism and the servo motor.

The demsion of the whole is designed to fit the rotating edge of the servo motor.

The major mechanical parts were made out of laser machine.

 

Before cutting the glass facade individual unit, my plan was to do sand blasting in the acrylic sheet so that the logo and writing can be made.

But after doing the blasting the overall finish was not upto my exceptation.Then i thought of doing the logo in laser using engraving method.

I have made the glass facade units in 3mm Acrylic sheet.i used engraving for the logo and writing of fab lab kochi.

 

After desinging i tried cutting all the design files.

 

The overall unit is assemblied for trial.

 

 

Final look of the glass pieces after connecting the pivoting mechanical part.

 

After doing all these ,i started doing the outer case to fit my individual units.

 

 

Just tried assembling the parts.

 

   

   

After assembling the box and the individual units in the box,i tried out the working of the system manually.

You can download the whole project from here.

OUTPUT AND INPUT DEVICES

INPUT DEVICE - RESETING THE FACADE USING BUTTON IS MY FINAL PROJECT INPUT DATA.

OUTPUT DEVICE - WORKING OF THE SERVO MOTOR IS THE OUTPUT FOR MY FINAL PROJCET.

ELECTRONICS PRODUCTION

i used my old ouput week board for working the model.

Servo motor is my output devie for my final project.

CIRCUIT DESIGN

I used Eagle software to make the circuit. I used an Attiny44 as micro-controller for the whole circuit.

Now shift to PCB mode and route.I used autoroutting first and then did some manuel routting after that.I added a 0 ohm resistor for completing my circuit board.

Now "Export" as .png of "Traces", "Drill holes", and "Cut".

MILL TRACE

DRILL TRACE

CUT TRACE

PCB PRODUCTION

 

 

Test Arduino Code

                                #include <SoftwareServo.h>
                                
                                SoftwareServo servo1;
                                
                                
                                void setup()
                                {
                                  servo1.attach(7);
                                
                                }
                                
                                void loop() {
                                  int pos;
                                  for (pos = 0; pos < 180; pos += 1) {
                                    servo1.write(pos);
                                    delay(10);
                                    SoftwareServo::refresh();
                                  }
                                  for (pos = 180 ; pos >= 1; pos -= 1) {
                                    servo1.write(pos);
                                    delay(10);
                                    SoftwareServo::refresh();
                                  }
                                }
                                
                                
                                
 

SERVO WORKING TRAIL

 
 

WORKING TRAILS

MIT APP INVENTOR

MIT app is my input device.

I used MIT APP inventor for making the app for working my final project.

APPLICATION DEVELOPMENT

 

The App Inventor Components are located on the left hand side of the Designer Window under the title Palette. Components are the basic elements you use to make apps on the Android phone.

   

 

 

I have given the name has Dynamic facade.

 

I have made a slider using the app.

 

positioning the slider from 0 to 180 degree.

 

Using the app we can slider from 0 degree to 180 degree.

 

You can download the app file from here.

ARDUINO CODE FOR RESETING THE FACADE USING THE BUTTON

                                    #include <SoftwareServo.h>
                                    #include <SoftwareSerial.h>
                                    
                                    //SoftwareSerial mySerial(0, 1); // RX, TX
                                    SoftwareSerial BTSerial(5, 4); // RX, TX
                                    
                                    #define SERVO_PIN 5
                                    #define SWITCH_PIN 3
                                    
                                    SoftwareServo servo1;
                                    
                                    String command;
                                    int past_addr = 0;
                                    int state = false;
                                    
                                    void setup()
                                    {
                                      servo1.attach(SERVO_PIN);
                                      BTSerial.begin(9600);
                                      pinMode(SWITCH_PIN, INPUT);
                                    }
                                    
                                    void loop() {
                                    
                                      if (digitalRead(SWITCH_PIN) == true) {
                                        state = !state;
                                        servoWrite(90 * state);
                                        while (digitalRead(SWITCH_PIN) == true);
                                        delay(50);
                                      }
                                    
                                      if (BTSerial.available()) {
                                        command = BTSerial.readString();
                                        int degree = command.toInt();
                                        servoWrite(degree);
                                      }
                                    }
                                    
                                    void servoWrite(int angle) {
                                      int change = angle - past_addr;
                                      int pos;
                                    
                                      if (change >= 0) {
                                        for (pos = past_addr; pos <= angle ; pos += 1) {
                                          servo1.write(pos);
                                          delay(10);
                                          SoftwareServo::refresh();
                                        }
                                      }
                                      else {
                                        for (pos = past_addr ; pos >= angle; pos -= 1) {
                                          servo1.write(pos);
                                          delay(10);
                                          SoftwareServo::refresh();
                                        }
                                      }
                                      past_addr = angle;
                                    }
                                    
                                    

ARDUINO CODE FOR WORKING THE BLUETHOOTH

                                    #include <SoftwareServo.h>
                                    #include <SoftwareSerial.h>
                                    
                                    //SoftwareSerial mySerial(0, 1); // RX, TX
                                    SoftwareSerial BTSerial(5, 4); // RX, TX
                                    #define SERVO_PIN 5
                                    
                                    SoftwareServo servo1;
                                    
                                    String command;
                                    int past_addr = 0;
                                    
                                    void setup()
                                    {
                                      servo1.attach(SERVO_PIN);
                                      BTSerial.begin(9600);
                                    }
                                    
                                    void loop() {
                                      if (BTSerial.available()) {
                                        command = BTSerial.readString();
                                        int degree = command.toInt();
                                        servoWrite(degree);
                                      }
                                    }
                                    
                                    void servoWrite(int angle) {
                                      int change = angle - past_addr;
                                      int pos;
                                    
                                      if (change >= 0) {
                                        for (pos = past_addr; pos <= angle ; pos += 1) {
                                          servo1.write(pos);
                                          delay(10);
                                          SoftwareServo::refresh();
                                        }
                                      }
                                      else {
                                        for (pos = past_addr ; pos >= angle; pos -= 1) {
                                          servo1.write(pos);
                                          delay(10);
                                          SoftwareServo::refresh();
                                        }
                                      }
                                      past_addr = angle;
                                    }
                                    
                                    

You can download the Arduino file from here.

Trying for loading the file.

 

APP WORKING TRAILS

FINAL WORKING VEDIO

FINAL PRESENTATION VEDIO