dummy


FINAL PROJECT


size

IDEA


1. "Kinetic Curtains"

Kinetic Facades in Architecture refer to elements that are responsive to changing stimuli in relation to mechanical elements, pattern use, and material properties.

The use of response facades has been used since modern Architecture, at the beginning, the elements were static e,g. "Brise Soleil", made of concrete. Nowadays the elements can be built from different materials that can change shape or position with light stimuli with the use of program software, giving different types of facade design compositions and changing the quality of light at the interior of the buildings.


Brise Soleil

Eyelid-like concrete window covers at Centennial Concert Hall ©www.thebohemianblog.com/

  

Brise Soleil

Arab World Institute by Jean Nouvelle

  

Brise Soleil

Dynamic Windows by Hoberman

  

For my Final Project, I proposed the concept of "Kinetic Curtains" that differs from Kinetic Facades. Unlike Kinetic Facades, which are integrated into the building design and cannot be controlled by users, I design the Kinetic Curtain for individual use. It allows people inside the building to have control over the quality and quantity of light using a remote control. The remote control comes with preprogrammed settings specifically designed for adjusting the "curtains".


In addition, the Kinetic Curtain incorporates a light sensor that detects the amount of light present. This information is then used to determine the appropriate angles at which the modules of the curtain should rotate. By adjusting these angles, the Kinetic Curtain effectively regulates the entry of light into the space.

Due to the complexity of this project, it is advisable to develop it in phases. Considering the time constraint of 20 weeks, I have decided to begin with the prototype design phase, focusing on a limited number of modules that respond to the values detected by the light sensor. These initial modules will be designed to move in accordance with the light sensor readings, serving as a starting point for further development.



2. Key design concepts


general design

In order to facilitate rotation, each module contains a Servo motor controlled by a Sub-Board and powered by a battery. The Sub-Board will establish a connection with a Mainboard via a Bluetooth Mesh networ, later as I made a small prototype the power came from the main board and the Network connection was through I2C Networking.


The main board will be connected to the light sensor, since there is only one source of natural light. In this case, it is assumed that all the modules are positioned in a window with the same sun exposure.


The PCB boards can be manufactured in the lab using an AT Tiny 412 Microcontroller, considering that there is no requirement for extensive connections.


In the main board, I will connect a light sensor and a Bluetooth component, both requiring only three signal pins (as pointed out, I changed the comunication protocol to I2C Networking). The sub-boards, on the other hand, will need to be connected to a Bluetooth component and a servo motor. Each board will be powered by an individual battery and will have pinouts for connecting to an UPDI (Unified Program and Debug Interface) for uploading the programmed movement, (the individual power supply was changed for supply coming from the main board and distributed through the I2C connection cables.


general design

3. Circular Progress

I broke the project into different phases to make it more manageable.

  1. Understanding the Project design's general concept, its parts and complexity, and giving the boundaries to the project stages.
  2. Making a prototype of ONE module, where I solve the mechanical rotation with a Servo Motor.
  3. Making the PCBs for the main Board, and the sub-boards that will be inside each prototype module.
  4. Programming the rotation of ONE module prototype and connecting with a Network protocol.
  5. Make another identical prototype and program with the existing one to communicate with the Bluetooth Mesh.
  6. Final prototyping with three to nine modules. I will do this number as it is manageable and the PCBs can be fabricated in the Lab. The programming can be very complex so I have to leave enough time for it.

4. Research


5. Fab Academy similar projects

Fab Academy has several documented projects where we can find the solution to potential problems or designs we are looking for. This is a list of some Student examples that made Kinetic facades:


DESIGN PROCESS

1. 2D and 3D Concept Modeling

First I started sketching the profile of the module that will constitute by repetition the curtain in Fusion 360.

Nodule one

Then I extruded this first element and copied vertically to have the vertical module. I rotated the Module 1 for each copy 15 degrees, from one modeule to the other one.

Nodule one

Each module in the Kinetic Curtain comprises a metal hollow tube at its core, serving as the axis for rotation. These tubes will be connected to top and bottom profiles, which will house and conceal the entire mechanism. The Kinetic Curtain will be mounted on a prefab structure.

Nodule one

2. Module's Mechanical Design

To design the rotation mechanism for the module, I initially considered using a servo motor that would rotate in parallel to a gear fixed at the shaft, which is the axis of the module's rotation.


size

I am considering using bevel gears instead of parallel gears to make the module slimmer. Bevel gears change the axis of rotation, allowing for slimmer sides, and maintain the gear ratio. Bevel gears are oriented at a 90-degree angle, saving space. I will be using the same ratio of 1:1 with the same number of teeth. These are called MITER GEARS and they are useful for transmitting rotational motion at a 90-degree angle.

The Bevel Gears or Miter-Gears are one of the 507 mechanical movements.

size size

Fusion 360 has a useful tool that can be accessed by going to Insert and selecting the tab for McMaster-Carr. This tool offers a wide range of mechanical parts that can be downloaded directly to the file as a 3D Step file. Once the component is in the file, it can be edited. There is a useful video available that explains how to do editing to components, ”HERE”.


size

For the module design, I edited the gears so that the one fixed in the shaft can be connected to the other one that has space to insert the Servo motor round arm, saving space in the center module. By rotating the servo motor arm, the entire module rotates around the fixed shaft.


size size size size

To facilitate the passage of cable wires, I have designed a connector specifically for the aluminum tubes. This connector not only accommodates the tubes but also features a central hole through which the cables can be threaded and connected to the Sub-board


size

3. 3D Printing the parts

I proceed to create the STL file for the Gears, see WEEK 5. 3D SCANNING AND PRINTING, for more details on how to create this file from Fusion 360.

After obtaining the STL file, I opened it in the Ultimaker Cura program to slice the model for 3D printing. For the gears, I required greater precision in printing to ensure they could withstand the torque of module rotation, so I configured the settings to make them stronger.

size

Then I proceeded to slice the model and generate the G-code to send to the 3D printer, I made the same process to both gears.


size

There were a few issues with the gears. For example, the shaft for the fix gear was too loose. Also, I should have added 3D printing support to the other gear where the servo wing is supposed to fit, which caused a not-so-neat finish. Unfortunately, I lost the photo showing this, but I was able to fix the issue with the gear and servo wing for the first module rotation test.


size

I used the same setting to 3D print the connectors


size

For the Modules case I used different Print settings as it could take long to 3D Print and it needed support.



size
size size

4. Module Mechanics test

As soon as I have the gears 3D Printed, I conducted a test for the project. Unfortunately, I didn't have enough time during the week to laser cut the cardboard for the module, so I opted for an analog approach instead. I used a pen and a compass to trace out the design on the cardboard, then cut it out with a utility knife and put it together with Hot glue. Although it was a manual process, it allowed me to save time and proceed with the mechanical testing of Module.


-The materials of the Mock up Module are:


size

For the testing I used my XIAO RP 2040 Board and a Potentiometer to control the Motor movement and used the following Arduino Code for it:


size

ELECTRONICS

1. Design and Making of Main Board

As previously noted I ended up making some changes to the original proposal. Initially, the plan was to use a Bluetooth system to communicate with the Sub-Boards, but I decided to go with an I2C system instead. As a result, wires will be used to connect each component to the main board.


The reason for this change is that I wanted to use cable power to supply each module with electricity, rather than relying on batteries. This approach makes it easier to repeat the modules over a longer distance, potentially spanning hundreds of them. It wouldn't be practical to power each module using batteries alone. By running power cables to the modules, I can also run data cables.


What I need to design the Main Board:


-I2C Bus connection

The I2C protocol is a ”SERIAL COMUNICATION” that is bidirectional between a mainboard (master) and sub-boards (slaves). The sub-boards are only allowed to transmit data when they are addressed by the mainboard. This communication takes place through a binary unit system (BUS) that transmits data across the network. See this ”LINK” for more details.


Physically the Bus needs four wires. The SCL which is the Clock Line, its purpose is to coordinate and harmonize the transfer of all data across the I2C bus. An SDA line, is the data line. The SCL and SDA lines should be connected to 5V and GND lines, these lines go to all the Sub-Modules.


These two lines are an ”OPEN DRAIN” driver (a concept I still don't understant), which means the chip can drive its output low, but it cannot drive it high. For the line to be able to go high I must provide pull-up resistors to the 5v supply. There should be a resistor from the SCL line to the 5v line and another from the SDA line to the 5v line. You only need one set of pull-up resistors for the whole I2C bus, not for each device, as illustrated below:


size

I2C Bus Schematic by www.robot-electronics.co.uk


-Light Sensor Connection

One of the purposes of the "Kinetic Curtain” is to be responsive to light stimuli, As the amount of light increases, the modules of the curtain move closer together, effectively blocking direct light from entering the space. To acquire this we need to gather information from a Light sensor, called ” Phototransistor” it detects the light pulses and converts them into digital signal, the phototransistor is an input device.

When the light intensity is measured, the information is transmitted to the main board microcontroller. The microcontroller, that has been pre-programmed with specific instructions, then sends a signal through the I2C Bus connections to the sub-modules, directing them to close to a specific angle based on the light intensity. For the light measurement, I will utilize the PT15-21C/TR8 "Phototransistor" model, which needs to be connected to a 10K resistor, 5V, and GND.

size

Phototransistor Schematic by www.elprocus.com


-UPDI (Unified Program and Debug Interface) and FTDI (programmer/debugger)

Since the ATTINY 412 Microcontroller that I am using for the main board has limited memory and no built-in boot loader, I must use a combination of a ”UPDI”, and an ” FTDI” to program it. This microcontroller has all the necessary I/O pins that I require so it is enough for the project.

size size

With the templates found at the FabAcademy page, I milled the FTDI and UPDI boards. But after milling the boards and solder the necessary parts, the computer didn't recognize them. UPS!


Debugging the FTDI and UPDI

  1. I connected the set to another computer, and It didn't work.
  2. I connected my UPDI to an FTDI from our Instructor Steven, and it worked, so the UPDI was working but not the FTDI.
  3. I connected the working set to my computer and wasn't recognized as a port. That meant I have to install the Driver for Windows to recognize the CH340 Driver, I looked for it on the web. ” Spark Fun Electronics.com” have a free download.

  4. size
  5. Once the Drivers were unzipped, I executed the SETUP.EXE from the folder I downloaded, and the driver didn't work.
  6. Then I did right-click into the file: CH341SER.INF and chose to install and this time worked!
  7. size
  8. The USB Serial CH340 Port was recognized by my computer!
  9. size
  10. Still my FTDI was not be recognized by the computer, and it was becuase the USB connection had the copper in front of it, I didnt know that it will create a bad conection. So I had to remove it.
  11. size
  12. Problem solved, the computer recognized the set of FTDI and UPDI. To be fair, Steven was next to me guiding me on how to fix these problems, I didn’t have any idea how to solve it by myself.

size

-ATtiny 412 Microcontroller Pin out

The ATtiny412 has a total of 8 Pins. The manufacturer has already assigned functions to some of these pins, but they are enough for me to connect the devices I need. As I will program in Arduino I have to follow the secuence of number colored orange, Pin 0 to 5, VCC and GND are common for all programs.

size

-Main Board and Photosensor Board in Eagle

I used Eagle in Fusion 360 to make the schematic and the Board taking all the information I gathered until now. But as the light sensor should be next to the "Curtains" modules I mage a separate PCB to connect the sensor, this board wirll be connected with wires to the Main Board.

Main Board:

size size

Light Sensor Board:

size size

Then I exported and edited the PNG files to send to Mods, for both PCB’s


size size size

size size size

Here are the two PCB's milled with all the components soldered in.


size

-Testing the Main Board

Before uploading the sketch into the Main Board, I had to Install in the Arduino Program the ATtiny 412 Board. For it, I opened Arduino, and had to go to File> Preferences> and when the window is open paste the this ”MegaTiny Core Link ” into the Boards Manager URL’s.

Then at the boards manager on the left we open the window and look for the Megatinycore and click in "select" to install the board package. Lastly select the ATtiny412 form the Tools> Board and the port number where the "UPDI" is connected.


size

Once the Board and the port are selected, I proceed with the testing. I run the Arduino File> Examples> 0.1Basics> Blink.
This sketch allows me to test whether the Main Board is functioning properly by checking if it is receiving both data and power, and if it can successfully transmit them to Output devices. In this particular case, the Output device is a LED light.


size

I uploaded the code to the board, and it worked, the light blinked.



-Light sensor testing

The light Sensor is an input device that measures the quantity of light as previously mentioned, this week I managed to test the sensor and the sensor miniboard. For it I uploaded a Code to read the quantity of light, and to write if the ambient was dark or bright. Unfortunatelly the code didn't work, but I could see that the sensor and the board were having contact, I have to work further in the programing of it. For further details refer to W12.Input devices.


2. Peripheral PCB design

For this board, the microcontroller is again the ATtiny 412 and its available pin outs. I used pins for the UPDI to be programmed, In and Out I2C BUS network connection, an inbuilt LED light to test the board, and the Servo motor pin outs. I also provided two options for powering the servo motors: one directly from the board using 3V, and another option in case there's not enough power, which is a direct connection with 5V.

This option is for the motor servo be powered direclty from the board:

size

This option is for the motor servo be powered from an external 5V:

size

These are respectevly the PCB design boards:

size size

The PCB board with an external power connection has a separate ground, but the program considers the ground as a common ground for everything inside the board. As a result, an error message appears stating that the ground is not connected, even though it is connected to 5V, but that is not a problem as it is intended.

Then we do the same procedure as the previous boards, we generate the PNG files of the boards, retouch them in GIMP and then proceed to Mods to generate the G-Code to mill the boards.


size size size
size size size

The boards are milled, now I am preparing for soldering and testing.


size

-Soldering the Perioheral Boards and testing them

After milling the sub-boards, I gathered the pieces for soldering. However, I noticed that the footprint of the capacitors was exceedingly small. To prevent soldering from reaching other areas, I had to cut away, with a utility knife, the excess copper around the capacitor location, restricting it to the intended traces.


size

Next, I used a multimeter to confirm that the paths had continuity and, more importantly, that the soldered components were not in contact with any other areas of the board. Everything appeared to be in order.


size

In the design of the Sub-boards I included an inbuilt LED light as I had spared Pin out and I could run the BLINK code easier to test the boards. So I connected the boards to the computer and uploaded the BLINK program and both of them responded. Next step is to connect the boards in a I2C protocol and move a servo motor, that requires another code.


size

PROGRAMMING

1. Connection between Boards via I2C Network

To establish communication between the two boards using the Serial I2C protocol, it is crucial to download the respective code separately onto each board, as covered in our learning materials during WEEK 14. NETWORKING AND COMMUNICATIONS.


Main Board Code:

size

Sub-Board Code:

size

In this testing setup, we do not utilize outputs on input devices since we are directly testing the Serial communication (GND-VCC-SCL-SDA). In the following video, you will find the Main Board Code displayed on the left side and the Sub-Board Code on the right.


At the Serial communication window, when I write a number on the Main Board, the Sub-board receives this number. Following that, a number 0 is displayed, this is the Sub-board response. This code is designed to facilitate one-way communication, with messages transmitted from the Main Board and received by the Sub-Board.

Connections:

size

2. Understanding the Final Code

As noted previously In Week 15. Input Devices, when I made the board for the Photosensor, I ran a code to see the range of reading the sensor has, it was around 75 for the very bright light to 1023 for the darkness reading. With this value range, I established the way I wanted to move the modules.

I had clear that I wanted the panels to move in angles that will block or leave the light getting into the space according to the quantity of light, see the following table:

size

Based on the photosensor read with a range of 75-1023 giving us a total range of value of 948, I divide that by 5 and this gives us a value range of 190.

size

Here is the breakdown of the range and corresponding values:

In the programming, we employ a table to assign positions to the modules. Each position in the table is linked to a specific code that the program reads and converts into three values enclosed in brackets. These resultant values represent the respective angles of movement for module 1, module 2, and module 3. Subsequently, these angle values are transmitted to the peripheral boards.


size

However, it is necessary to provide instructions to the program to convert the values received from the photosensor. These values need to be translated into the appropriate codes, which will then be converted into the specific angles as specified in the aforementioned table.

size

In the program, specifically within the Void Loop section, there is a code that guarantees the sequential transmission of angles to each board.

size

Before sending the code to the panels, Steven had the idea to perform a test using the Serial monitor. He wrote a value called "reading" and checked if the program correctly interpreted it as an angle position.

It is possible to see in the following video how I write a value and the program translates it into the paneling position. First I write 80 and then it says the position is 0,0,0, then I write 360 and it says the panel position is 45,0,45, and so on.


3. Final Code

Once we tested the code in the serial monitor, Steven helped me to modify the Main Board code, so this time instead of sending the information to the Monitor, the information will be sent via I2C protocol to the Peripheral Boards inside the modules.

size

ASSEMPBLY AND TESTING

To assemble the modules, I needed a structure that could hold the three modules together. I really liked the project from Week 7 because it had modules that could be assembled using "Tusk Tenon Joints," which made it easy to take them apart when needed.I used Fusion 360 to design this structure and its parts.

size

Afterwards, I milled the parts using the CNC machine and sanded and assembled them.

size

I put all the modules parts together and started to assemble them too.

size

I had to solder all the cable joints and make sure the connections were tidy to avoid a tangled mess of cables. To achieve this, I passed the cables through each 3D printed joint, which would later be connected to the peripheral boards. And then I checked with the multimeter that all the connections had continuity.

size

This is the prototypes mounted in the structure

size

This is the moment I have waited for: Testing the System


I have made a general BOM (Bill of materials) on WEEK 17. APPLICATIONS AND IMPLICATIONS, and the cost came around $100 Singaporean Dollars, fro the three modules and its structure. As I noted this cost doesn't take into consideration other operational expenses, time and human resources.


ACKNOWLEDGMENTS

The progress I have made on my project would not have been possible without the guidance and input of our instructor, Steven Chew. While I was able to navigate most of the subjects on my own during this journey, it was primarily thanks to his assistance with coding the panels to connect and move that I achieved success.

I also want to acknowledge the Fablab's staff who were there to assist me, not only with the production of my assignments but also with providing valuable input during the production process.


LICENSE

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