FINAL PROJECT.



PRESENTATION SLIDE

Robot Sketchup


PRESENTATION VIDEO


FIRST IDEA (NOT APPROVED):

MOTIVATION

Basically this idea came in mind because we live in remote area of Pakistan(Khairpur, Sindh)
Here, we face a lot of problem in Electricity in every 2 to 3 hours main Supply from WAPDA (Pakistan Water and Power Development Authority) cut On/Off.
My brother have a General Store most of time My Elder brother forgot to turn off the Appliances after closing of his Store.
So, It came in my mind that I will work on Home Automation(Smart Extension) to control Appliances ON/Off manullay as well as Online.



IOT BASED SMART EXTENSION BOARD

This is the Block Diagram of the Project it may change if required.

My idea for final project is to make low cost Smart Extension Board with Manual as well as Android Application/Ubidot Server.
I will Use the 4 output relays to control the load( Appliances )
One out put relay will be used to control the speed of Electric fan manullay with dimmer as well as Android Application/Ubidot Server.
I will use the lesser cutting for its Electric Board in addition with the Main Circuit Board with PCB.

SYSTEM DESIGN

In IOT automated systems, the architecture has 2 level of its design,
the first level is hardware architecture and the other level is software architecture.
Hardware architecture is the most essential part of the system.
once it is configured correctly then software application can easily integrate with hardware architecture
because the purpose of software application is to invoke the request.
The main output depends upon the hardware module.
Both should be made sync with each other.

WORKING

The working of the system is mainly based upon architecture of board.
Software application is responsible to provide the user interface to the users.
Users must need to login to the system and then he/she can control or monitor the status of devices.
Software Application receives the request generated from the user and passed it to hardware board
Application by means of IP Address access hardware board remotely and perform its execution with respect to user's input request.
The working of software application defines with the help of flow.

INPUT DEVICES

1. Android Phone/Ubidots.
2. Main Power Supply.

NETWORKING/PROCESS DEVICES

1. Main Board/Electronic Components.
2. ESP32 Controller.
3. wifi module.

OUTPUT DEVICES

1. Relay Module.
2. LOAD/Home Appliances.

WEEKLY DIVISION OF PROJECT

1. 2D designing and laser cuting: Press-fit of Smart Extension Using Acrylic
2. 3D designing and Printing: 3D desinging and printing of Extension Board.
3. Electronics desinging: Designing Of PCB circuit for Extension Board and other Electronic Components.
4. Electronics Production:Generating .rml files from mods, milling using SRM-20 and soldering components.
5. Microcontroller programming: Programming will be done in main ESP32 based board.
All Relays controlled with main board using manullay Buttons as well as controlled via Ubidots Server/Andriod Phone.
6. Interface and Application: Andriod app will be developed to controll the Smart Extension Board.
7. Networking: wifi module will used to make interface between mobile app/Ubidot server and Esp32 module to controll the Appliances.




IDEA FOR FINAL PROJECT:

Persistence of Vision (POV) "Propeller Led Pendulum Clock" displays are generally LED displays which ‘show’ images by displaying a section of an image at a given time, in quick rapid succession. The human brain perceives this as display of a continuous image. Basically, When I was searching for the Final Project I saw so many videos on YouTube then I found this video. I decided to develop this project in the fab lab and I will cover most of the weeks of fab lab during this project.



FINAL PROJECT SKETCH:

In this Project I will laser cut the frame or chassis of the final project. Fame of the project will be sqaure or circle it will be decided later. one dc motor will be connected in the center of the frame with pully. I will try to make whole electronic circuit in one PCB Board(strip) with 17 different color LEDS as a OUTPUT using along as well digital pins. Hall Sensor will be used as an Input.
HALL EFFECT SENSOR Hall effect sensors work by measuring the changing voltage when the device is placed in a magnetic field.

The most difficult part of the projects for me is mechanical stability. I want to make it Proper through fabrication and dissigning tools. I will try to make it noiseless as much as I can do. It will show the Analog as well as Digital display and will attract the person who will watch apart from the project.



Remote controller frame with 3D printing and circuit with PCB including electronics components incuding battery.

INPUT DEVICES

1. Batteries.
2. Hall Sensor.

OUTPUT DEVICES

1. 12v Dc Motor.
2. Leds "with different colors"

NETWORKING/PROCESS DEVICES

1. IR Receiver.
2. Hall Sensor.

MATERIAL NEEDED.

1. Arduino NANO
2. Leds with different colors.
3. Resistors with different values.
4. VS1838B 38KHz IR Receiver Sensor.
5. WSH/W130 Hall Sensor.
6. Female header connectors.
7. Male header connectors.
8. 3.7V Battery.
9. ON OFF Switch.
10.PCB.
11. Magnet.
12. DC Motor.



WEEKLY DIVISION OF PROJECT

1. 2D designing: 2D designing of Propeller Led Pendulum Clock frame.
2. CAD designing and Laser Cutting: 3D desinging using Solid Work Softwere and laser cutting using Acrylic Sheet.
3. Electronics desinging: full PCB Designing with SMD components and Microcontroller designing using ATmega 328p or may change.
4. Electronics Production:Generating .rml files from mods, milling using SRM-20 and soldering SMD components.
5. Microcontroller programming: Programming will be done in main ATmega328p based board.
All input output devices will be controlled with main board using manullay Button as well as controlled using IR sensor based board.
6. Interface and Application: Will be decided.
7. Networking: IR receiver sensor will be used for networking changing modes from digital to Analog.


MECHANICAL CAD DESIGNING

The Entire Design was done in Solid works with all the parts as seperate files. This made changing or editing parameters much easier. Four parts files were made then assembled to bring everything togetehr.


Dc 12v motor for my project I will use Power Supply for dc motor.

This is the front size hexagonal structure.

This is backside hexagonal structure.

This is led circuit connected with microcontroller. Here, hall sensor will be used as an magnetic input. this led strip will be attached with motor shaft, motor shaft It will rotate with the speed of motor.

ASSEMBLING THE PARTS

Side view of the machenical design, Here all the parts are mated together. This design may change at the time of milling/cutting.

Front view of the Mechanical Design here Dc motor is attached with led PCB circuit.

Backside view for hagging purpose I made a nail slot to hang it with wall nail.



3D PRINTING

I made 2 designs for 3d printing on solid works one is for remote casing and another for mechanical design.


I laser cut the Hexagonal shape for mechenical design.

gcode with some settings in cura file is generated then used ultimaker extended 2+ with pla material.


Hexagonal Shape is printed using red color pla material.

This is the 3d printing for IR remote.


Creating the gcode while moving .stl file into the cura. cura setting is well explained into the WEEK5.


After printing the remote.

ASSEMBLING THE Remote

Buttons and 328p board with coding is assembled in the casing.


Buttons and laser cutting parts are included.


VINYL CUTTING

I Vinyl cutted the logo of fablab and shortcut keys for remote buttons vinyl cutting steps are well expalined in WEEK3.

LASER CUTTING

I made this circular part with hexagonal shape pocket slot inside the circle in solid work then laser cut the part after all process of laser cutting.

This part is for IR Remote casing uper cover with buttons hole.

HALL EFFECT SENSOR

For my final project I am using HALL EFFECT SENSOR 44E as an Input device on the other hand for an Output I am using 5mm transparent round shape LEDs. I needed 17 pins for the output of the project, I milled with some changes in the SATSHAKIT using 328p microcontroller ic as an Arduino board.

What is a Hall effect sensor?

Named after the American physicist Edwin Hall, who discovered that electricity and magnetism can work together to move objects, Hall effect sensors use this principle to convert magnetically encoded information into electrical signals.

These devices have a range of applications, with Hall effect sensors often used in automotive systems to sense position, distance and speed. These clever devices are used in various fields, but perhaps most notably in anti-lock braking systems (ABS), and internal combustion engines to assist with ignition timings.

Magnetic sensors are designed to respond to a wide range of positive and negative magnetic fields in a variety of different applications and one type of magnet sensor whose output signal is a function of magnetic field density around it is called the Hall Effect Sensor.

So, how does a Hall effect sensor work?

When an electric current flows through any material, the electrons within the current naturally move in a straight line, with the electricity creating its own magnetic field as it charges. Using semiconductors (such as silicon), Hall effect sensors work by measuring the changing voltage when the device is placed in a magnetic field. In other words, once a Hall effect sensor detects that it is now in a magnetic field, it is able to sense the position of objects.

Hall effect sensors and magnets

Magnets are intrinsic to Hall effect sensors, which are activated by the presence of an external magnetic field. The device is then able to sense as an object moves either closer or further away, just through the differing strengths of the magnetic field. As an example, if a Hall effect sensor was placed in a door frame and a magnet on the door, the sensor would be able to detect when the door is open or closed through the presence of the magnetic field. The diagram below shows how a Hall effect sensor detects a magnet:

Hall effect sensors all have a thin piece of semiconductor material inside them, which passes a continuous electrical current through itself to generate a magnetic field. When the device is placed near an external magnet, the magnetic flux exerts a force on the semiconductor material:




TRIAL OF THE PROJECT

My local instructor suggested to me that before going to PCB designing of your Final Project you must implement your Project on the Vero board and observe the desire results. I just cut the big size Vero board then soldered the 8 Red, 7 Green, 2 Blue, and 2 Yellow LEDs with 100 Ohm reistor on the Vero board. Now, for Programming I used my Satshakit board which I designed in input

Week10

There are a total of 19 leds. For analog and digital display, 2 leds will be connected directly to the board's vcc and 17 will be wired to the board;s analog and digital data pins. there will be hall sensor for magnetic input.

Here, two leds are powered with vcc of the board and 12v dc motor is attached for rotating the whole pendulum led strip.

328p microcontroller board is used that I made in this input week. I soldered wires directly from the Arduino header pins towards the leds for outputs and the hall sensor for input. Here, switch is used for On/Off the power of 3.7v Battery.


MAGNETIC INPUT

Hall sensor / magnetic sensor gets the magnetic inforamtion and converts it into the Electrical signal. When the magnets move closer to the sensor, the 17 leds are turned on as an output and receive an input signal from the hall sensor. Unfortunately, two pins of my Board are not working internally.


CONNECTING WITH MOTOR AND DC SUPPLY

This is the result of the trial Pendulum Clock 2 pins of satshakit are not working properly.



ELECTRONIC SYSTEM

In this part I am discussing other half of project which is electronic system includes circuit boards, wiring from circuit board to output LEDs and programming of the system.

CIRCUIT BOARDS

First of all the system is based on two circuits one is 328p and other is led strip which is connected with 328p microcontroller Board with the nuts and screw after making holes on both boards. The main circuit is 328p Board I made changes in SATSHAKIT and milled the circuit then soldered it with electronic components and main 328p Ic. After that burn botloaded the circuit. Now, Board is ready for Programming and connect it with 17 output pins of the Board. from D3 to D13 and A0 to A5. D2 is used as the Input.

This is the schematic of the SATSHAKIT which I am using as a microcontroller for Pendulum clock.

This is the circuit Board here I can directly connect the FTDI cable for Arduino Programming In the Board.

This is my final project Board. Here I made changes in SATSHAKIT that FTDI cable can be directly connected with this Board.


LED STRIP

This is the led strip circuit diagram and board routing connections Here, I will use 19 leds in this Strip circuit 2 leds directly will be powered by vcc of the board and other 17 leds will be data pins of the board.

Milling process of the led Strip. Here, I used paper tape because copper sheet was not flate so, for making it straight I used paper tape tightly to hold the sheet.

After milling and cutting circuit is ready for soliding


CUTTING THE VENYL

I cut the venyl paper for my led strip board to paste it on negative size for having a nice look and black backgrouond.

I pasted Vinyl on the Led Strip Board.


LED STRIP BOARD

Solder the leds to the led strip board.

I made the holes on both circuits and compined both circuit with screw and nut then Soldered it with Arduino and led strip with wires.

3.7v 1000mah Lithium Ion Battery is attached to the circuit for powering the Arduino Board and led circuit.

Soldering and wiring of the Circuit. here, you can clearly see the hall sensor, on/off button.


TESTING THE IR REMOTE

Remote is working perfectly as expected.

HOW MUCH WILL THEY COST?

Bill of Material?

Components

Number of components * Price of
components(USD)

Total price (USD)

3.7v Lithium Ion Battery

2*1.5

3

12v Dc motor

1*1.4

1.4

Hall Effect Sensor

3*0.33

1

5mm Leds

20*0.032

0.64

IR Transmitter

1*0.06

0.06

IR Receiver Sensor

1*0.7

0.7

1.5*1.5-ft 3mm Black Acrylic Sheet

1*3.3

3.3

Atmega328p

2*2

4

PLA 3D printed pieces

0.021/1g required 82g.

1.722

15.822$



EXPLANATION OF CODE

Initilizing the characters, float, integers and string.


Initlizing the ports.


Initlizing the ports.


Reading the data from the sensor


Initializing the pins and applying if else coditions.

Calling the function for minute, Second, hour marker needles.

Updating the time with regards to previous time.

Serial Communication when data is transmitted from transmitter then it received.


CODE FOR PENDULUM CLOCK

char ch;
int sensorPin = 2;
unsigned int i,n,c,nc,k,d,y,bn,mp,m = 0;
float dl;
unsigned long timecurr,timeold,previousTime = 0;
int hours = 12;
int minutes = 15
int seconds = 00;
uint16_t timer_count_A=0;
byte number,t,a,temp,data = 0;
int val;

const PROGMEM unsigned char data1[]={0x3e,0x22,0x22,0x3e,0x00,0x12,0x3e,0x02,0x2e,0x2a,0x2a,0x3a,
0x2a,0x2a,0x2a,0x3e,0x38,0x08,0x08,0x3e,0x3a,0x2a,0x2a,
0x2e,0x3e,0x2a,0x2a,0x2e,0x20,0x26,0x28,
0x30,0x3e,0x2a,0x2a,0x3e,0x3a,0x2a,0x2a,0x3e,0x64,0x63,0x62,0x61,
0x60,0x5F,0x5E,0x5D,0x5C,0x5B,0x5A,0x59,0x58,0x57,0x56,0x55,0x54,0x53,0x52,0x51,0X51,
0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,
0x61,0x62,0x63,0x64,0x10,0x38,0x10,0x10,0x38,0x38,0x7c,
0x7F,0x7f,0x7F,0x7c,0x38,0x38,0x10,0x10,0x38,0x10,0x04,0x0e,
0x1f,0x0e,0x04,0x3e,0x08,0x08,0x3e,0x00,0x00,0x1c,0x22,0x22,0x1c,0x00,0x00,0x3e,
0x2a,0x2a,0x14,0x00,0x00,0x3e,0x2a,0x2a,0x14,0x00,0x20,0x10,0x0e,0x10,
0x20,0x00,0x00,0x3e,0x28,0x28,0x10,0x00,0x00,0x3e,0x28,0x2c,0x12,
0x00,0x00,0x1c,0x22,0x22,0x1c,0x00,0x00,0x0c,0x02,0x02,0x3c,0x00,0x00,
0x3e,0x2a,0x2a,0x22,0x00,0x00,0x1c,0x22,0x22,0x22,0x00,0x00,
0x20,0x20,0x3e,0x20,0x20,0x00,0x00,0x12,0x2a,0x2a,0x24};

void setup()
{
DDRD = 0xFA;
DDRB = 0xFF;
DDRC = 0x3F;
PORTD = 0x05;
PORTB = 0x00;
PORTC = 0x00;

if(hours > 11)
hours = hours - 12;

m = 0;

UBRR0 = 832; // baud rate 1200bps
UCSR0C |= (1 << UCSZ01) | (1 << UCSZ00);
UCSR0B |= (1 << RXEN0) | (1 << TXEN0) | (1 << RXCIE0);

attachInterrupt(0, us_time, RISING);
}

void loop()
{
val = digitalRead(sensorPin);
while (val == LOW
{
update_time();
val = digitalRead(sensorPin);
}

a=0;
k=82;
n=0;
nc=0;
number = 9
c = 44;

while(n < 120

if(m == 0

mp = 15;
bn = 0;

while(bn < 5)
{
img();
}

number=hours
if(number == 0)
number = 12
number=number/10;
c = 24;
Display

number=hours;
if(number == 0)
number = 12;
number=number%10;
c = 29;
Display();

c = 34;
data = 0x0A;
Display_();

number=minutes;
number=number/10;
c = 36;
Display();

number=minutes;
number=number%10;
c = 41;
Display();

c = 46;
data = 0x0A;
Display_();

number=seconds;
number=number/10;
c = 48;
Display();

number=seconds;
number=number%10;
c = 53;
Display();

mp = 61;
bn = 0;
while(bn < 5)
{
img();
}
}
if (a==0)
drawMinuteMarker();
if ((k==0) || (k==10) || (k==20) || (k==30) || (k==40) || (k==50) || (k==60) || (k==70) || (k==80) || (k==90) || (k==100) || (k==110))
{
drawHourMarker();
}
if ((k==0) || (k==30) || (k==60) || (k==90))
{
drawQuarterMarker();
}
if((k == hours*10) || (( k == 0 ) && (hours == 0)))
{
drawHoursHand
}
if(m == 0)
{
if(k == hours*10 - 2
digitalWrite(5,HIGH);
if(k == hours*10 + 2)
digitalWrite(5,HIGH);
if((k == 118) && (hours == 0))
digitalWrite(5,HIGH);
}
else
{
if(k == hours*10 - 2)
digitalWrite(9,HIGH);
if(k == hours*10 + 2)
digitalWrite(9,HIGH);
if((k == 118) && (hours == 0))
digitalWrite(9,HIGH);
}

if(k == minutes*2)
{
drawMinutesHand();
}
if(m == 0)
{
if(k == minutes*2 + 2)
digitalWrite(7,HIGH);
if(k == minutes*2 - 2)
digitalWrite(7,HIGH);
if((k == 0) && (minutes == 59))
digitalWrite(7,HIGH);
if((k == 118) && (minutes == 0))
digitalWrite(7,HIGH);
}
else

if(k == minutes*2 + 2)
digitalWrite(11,HIGH);
if(k == minutes*2 - 2)
digitalWrite(11,HIGH);
if((k == 0) && (minutes == 59))
digitalWrite(11,HIGH);
if((k == 118) && (minutes == 0))
digitalWrite(11,HIGH);
}

if(k == seconds*2)
{
drawSecondsHand();
}


if(m == 0)
{ if(k == seconds*2 + 2)
digitalWrite(9,HIGH);
if(k == seconds*2 - 2)
digitalWrite(9,HIGH);
if((k == 0) && (seconds == 59))
digitalWrite(9,HIGH); if((k == 118) && (seconds == 0))
digitalWrite(9,HIGH);
}
else
{
if(k == seconds*2 + 2)
digitalWrite(13,HIGH);
if(k == seconds*2 - 2)
digitalWrite(13,HIGH);
if((k == 0) && (seconds == 59))
digitalWrite(13,HIGH);
if((k == 118) && (seconds == 0))
digitalWrite(13,HIGH);
}

if(m == 0)
{
c = (pgm_read_byte(&(data1+40)[t]));

bn = 0;

while(bn < 17)
{
if(n==c)
{

temp = pgm_read_byte(&(data1+80)[bn]);

PORTC = temp >> 1;

if(temp & 1)

digitalWrite(13,HIGH);
else
digitalWrite(13,LOW);

}
bn++;
c++;
}
}

delayMicroseconds(dl);
Clear();
if ((k == 80) || (k == 81))
{

}
else
delayMicroseconds(dl*3);


a++;
if(a == 2)
a=0;
n++;
k++;
if(k == 120)
k=0;
}

val = digitalRead(sensorPin);

while (val == HIGH)
{
update_time();
val = digitalRead(sensorPin);
}
}

void Display()
{
if(n==c+0)
{
temp = (pgm_read_byte(&(data1+number*4)[0]));
PORTC = temp >> 1;
}
if(n==c+1)
{
temp = (pgm_read_byte(&(data1+number*4)[1]));
PORTC = temp >> 1;
}
if(n==c+2)
{
temp = (pgm_read_byte(&(data1+number*4)[2]));
PORTC = temp >> 1;
}
if(n==c+3)
{
temp = (pgm_read_byte(&(data1+number*4)[3]));
PORTC = temp >> 1;
}

c++;
c++;
c++;
c++;
c++;
}

void Display_()
{
if(n==c)
PORTC = data;
}

void img()
{
if(n==mp)
PORTC = pgm_read_byte(&(data1+97)[bn]);
bn++;
mp++;
}

void Clear()
{
for (int i = 3; i <= 20; i++)
{
digitalWrite(i,LOW);
}
}

void drawMinuteMarker()
{
if(m == 0)
{
digitalWrite(12,HIGH);
}
else
{
digitalWrite(A5,HIGH);
}
}

void drawHourMarker()
{
if(m == 0)
{
digitalWrite(11,HIGH);
}
else
{
digitalWrite(A4,HIGH);
digitalWrite(A3,HIGH);
}
}

void drawQuarterMarker()
{
if(m == 0)
{
digitalWrite(10,HIGH);
}
else
{
digitalWrite(A2,HIGH);
digitalWrite(A1,HIGH);
}
}

void drawHoursHand()
{
if(m == 0)
{
for (int i = 3; i <= 6; i++)
{
digitalWrite(i,HIGH);
}
}
else
{
for (int i = 3; i <= 10; i++)
{
digitalWrite(i,HIGH);
}
}
}

void drawMinutesHand()
{
if(m == 0)
{
for (int i = 3; i <= 8; i++)
{
digitalWrite(i,HIGH);
}
}
else
{
for (int i = 3; i <= 12; i++)
{
digitalWrite(i,HIGH);
}
}
}

void drawSecondsHand()
{
if(m == 0)
{
for (int i = 3; i <= 10; i++)
{
digitalWrite(i,HIGH);
}
}
else
{
for (int i = 3; i <= 14; i++)
{
digitalWrite(i,HIGH);
}
}
}

void update_time()
{ if (millis() >= (previousTime))
{
previousTime = previousTime + 25;
t++;
if (t == 40)
{
t = 0;
seconds++;
}

if(seconds == 60)
{
seconds = 0;
minutes++;
}

if(minutes == 60)v {
minutes = 0;
hours++;
}

if(hours > 11)
hours = hours - 12;

}
}

void us_time()
{
n = 0;
timecurr = micros()-timeold;
timeold = micros();
if(m == 0)
dl = timecurr/1000;
else
dl = timecurr/650;
}

ISR(USART_RX_vect)
{
ch=UDR0;
if (ch == '1')
{
hours--;
if(hours < 0)
hours = 11;
ch = '0';
}
if (ch == '2')
{
hours++;
if(hours == 12)
hours = 0;

ch = '0';
}
if (ch == '3')
{
minutes--;
if(minutes < 0)
minutes = 59;
ch = '0';
}
if (ch == '4')
{
minutes++;
if(minutes == 60)

minutes = 0;
ch = '0';
}
if (ch == '5')
{
seconds = 0;
ch = '0';
}
if (ch == '6')
{
m++;
if(m == 2)
m = 0;
ch = '0';
}
}




CODE FOR IR REMOTE

#define toneOutput_pin 8

int key1 = 5; // HR-
int key2 = 4; // HR+
int key3 = 6; // MIN-
int key4 = 3; // MIN+
int key5 = 7; // SEC_RESET
int key6 = 2; // Mode

int val;

void setup()
{
pinMode(key1,INPUT_PULLUP);
pinMode(key2,INPUT_PULLUP);
pinMode(key3,INPUT_PULLUP);
pinMode(key4,INPUT_PULLUP);
pinMode(key5,INPUT_PULLUP);
pinMode(key6,INPUT_PULLUP);

Serial.begin(1200);
tone(toneOutput_pin, 38000);
}

void loop() { val = digitalRead(key1);
while (val == LOW)
{
Serial.print("1");
delay(250);
val = digitalRead(key1);
}
val = digitalRead(key2);
while (val == LOW)
{
Serial.print("2");
delay(250);
val = digitalRead(key2);
}
val = digitalRead(key3);
while (val == LOW)
{
Serial.print("3");
delay(250);
val = digitalRead(key3);
}

val = digitalRead(key4);
while (val == LOW)
{
Serial.print("4");
delay(250);
val = digitalRead(key4);
}

val = digitalRead(key5);
if (val == LOW)
{ Serial.print("5");
delay(250);


while (val == LOW)
{
val = digitalRead(key5);
}
}

val = digitalRead(key6);
if (val == LOW)
{
Serial.print("6");
delay(250);

while (val == LOW)
{
val = digitalRead(key6);
}
}

}




ACKNOWLEDGMENT

Allah - beginning with the name of - the Most Gracious, the Most Merciful . All praise is due to Allah; we praise Him, seek His help, and ask for his forgiveness. I am thankful to Allah, who supplied me with the courage, the guidance, and the love to complete this course. Also, I can not forget the ideal man of the world and the most respectable personality for whom Allah created the whole universe, Prophet Mohammad(Peace Be Upon Him).

I would like to acknowledge my deep gratitude to Professor Neil Gershenfeld, director of Fab Academy whose lectures increases our exposure and encourage us to learn more, specially thanks to Vice Chancellor Sir Professor Nisar Ahmed Siddqui along with his team whose vision and mission make FABLAB possible in Pakistan. My instructors Fida Hussain Memon, Noor Ahmed Raza Pirwani and Rasheed Ahmed Qazi who guide me with best of their knowledge in every week to complete the task. There is other honorable Global instructor Luiscarvao and also thank to My colleagues who always their to hand me complete group assignments and all those who are available and somehow help me to complete this course I thank you all. Finally I thank to my family and friends who encourage me, financially support me and emotionally attached with me when I need them.

What I learned, made and shared here is thanks to you all.





Propeller Led Pendulum Clock by Engr. Rashid Ali is licensed under Attribution-ShareAlike 4.0 International



Download all files from here