In the second year of my MBA at MIT Sloan, I decided I want to get out of the classroom and actualy build something. As a design loving, electrical engineer, I wanted to acquire the complementary skills that would enable me to independantly create products (or at least prototypes).
I am passionate about fashion, furniture, and wearables and excited to incorporate technology and design into smart, useful, and beutiful products.
Join me in my journey of how I learned to make (almost) anyting!
The assignment for our first week was to plan our final project using computer design software.
One of the ideas I had in the past year was making a sweater that could react to body tempature and change its density to allow and block air flow and by that help the body adjust to changing tempatures.
I started with a basic scatch of the idea.
I then searched for a sweater image online and imported it to Gimp.
I tried to learn the different features Gimp offered and used the scissors to cut the background of the image.
I also try to show the fabric expending and shrinking ny using the magnifying tool but wasn't very successful.
Finally, I tried to create a 3d image of the sweater in Antimony but I was way over my head. I had no idea how to move forward with a non geometric shape.
This week exposed me to so much that I don't know but also made me curios to learn and experiment further with these tools.
This week we learned how to use a laser cutter and a vinyl cutter.
When we were first told that we would be using cardboard as the material for the laser cutter I asked my self what could I do that would also be useful.
I then recalled one of the ideas I worked on last year that had to do with modular furniture. In the image below are scatched from last year when I thought of a wat to build a modular sofe thta could be easy to manufacture, deliver, and expend over time.
I thought that it could be a cool proof of concept if I could show using cardboard how the different pieces would connect and how easy it would be to change shapes and add extra units.
So I started drawing the joints of each unit.
Then I planned the diffrent pieces of the basic unit in Antimony.
I wasn't familiar with the tool and it took me many hours to understand how to get the shape that I want and how to export it properly.
At first, I tried to plan in 3d, then export to stl, import to blender, turn back to 2d, and export to dxf, because I thought CorelDraw only accepts DXF.
The problem with that flow was that it was long, complicated, and created too big of files that were very slow to work with in CorelDraw.
After a few experiments and help from my fab lab friends, I found a simple flow that worked smoothly.
I created the shape in Antimony in 2d, extruded it to 3d, and then exported it as png. CorelDraw imported the png image perfactley and the iterative process was very easy.
Once in CorelDraw, I set the hairline configuration on the shapes outline an sent the job to the laser cutter.
I have done more than 6 iterations of laser cutting my cube. I had a real problem calculating the location of the different joints which was veru frustrating.
My final version was the best one but still far from perfect.
What bothered ne most was that I spent all that time trying to make a 3d cube and I didn't get to create the joints that would connect the diffreent units.
I shouldv'e downloded a plan of how to cut a 3d cube and focus my energy on my proprietry connectors.
Using the vinyl cutter, I created a tapet for my cube.
The pasting on the cardboard wasn't very percise.
I learned many new skills this week but my biggests takeaway is to not try and reinvent the weel. There are so many resource online for anything you can think of. In the future I would take better advantage of those resources and dedicate my time and energy for the things I can't find.
This week we learned the fabrication process of electronic circuits
In the first step, I used the Modela milling machine to make the PCB
I picked a small piece of PCB that would fit my design, placed it on the sacrificial layer, uploaded the design to the milling software, and send the milling job to the machine
As can be seen in the image below, my first attempt wasn't successful since as the millig wasn't done evenly over the PCB
For my second attempt, I chose a cleaner surface of the sacrificial layer and the milling was successful.
Once I had my PCB ready I went to the electronics lab and found all the needed parts for the cuircuit.
I then learned how to solder the different components to the PCB and after about three hours finished soldering my circuit.
When I first connected my circuit to the computer it indicated that there something is wrong. After consulting with my lab friends I tried to remove one of the 0 resistors and use solder instead to connect between the traces. That did the trick and I could upload the program.
Even though I'm an electrical engineer I never experienced with milling and soldering myself. It was very interesting going through these phases hands on.
This week we learned how to plan and execute a 3D printing process.
Since I have never experimented with 3D printing before I wanted to minimize the room for error in my first try.
I therefor decided to print a 3d model that Neil showed us in class.
In Antimony, I reconstructed the 3d shape I wanted to print.
I then chose the 3dWax as the 3D printer I was going to use and dowloaded it's softawre.
I uploaded my srt design to the 3DWax software, changed the design dimensions to fit my needs and chose the appropriate position for the print.
I Also added the support needed for the structure.
I then uploaded the print file to the 3DWax printer using the dedicated usb stick.
and started the printing job.
It took 1:30 hours to print this model.
when the job finished, I removed the tray from the printer
Jentely detached the model from the tray
Removed the unwanted support
and got the result I was expecting.
I have never used a 3D printer before and was looking forward to this assignment.
After going through the process I have the knowledge to move forward with more complex designs.
However, it was hard for me to think of anything useful I could create with a 3D printer given the material, the quality, the size, and the time it takes.
At this point, I view it as a skill worth having.
This week we learned how to desing an electronic circuit prepared for milling.
I used Eagle to design the circuit.
After dowloading eagle, I uploaded the fab.lbr file that included the necessary components.
Using the Hello-World board reference, I found all the needed components for the circuit and placed them on the schematics view.
At first, I was confused because the parts didn't have the same orientation as on the board but them I realized that when moving from schematics to layout the parts look as expected.
I then connected the different pins with wires and net names.
I ran an EVC test and got many warnings that I didn't fully understand.
I rechecked that everything is connected correctly and puched the "generate board" button.
When generated, all the parts were disorganized so I moved them to the wanted orientation.
I then tried the autoroute tool, but I saw it used two different layers for routing and I needed to use just one.
So I dissmissed the autorouting and started routing myself.
When finished, I ran a DRC test using the fab.dru set of design rules to check that I meet the Modella milling machine requirements.
Most of the errors were about the minimum space requires between the wires.
I saw that the width of each wire is a lot more than the minimum required so I fixed the errors by decreasing their width.
I added a frame in a different layer to mark the board boundery.
I looked at the view of only the Top layer to see how the milling would look like and saw that the ISP component doesn't look like I expected.
So I went back to the schematics view and found the right ISP. I replaced th eold one with the new and went back to the board view to fix the traces.
Now when I saw the Top layer view I was satisfied and I went on to export the board as a monochromatic png.
I also exported the frame as a seperate png file.
OMG!! This week we had to make something BIG!!!
I tought a lot about what I want to make.
Looking for something useful, I noticed that I was missing a loaptop stand while I am working on the sofa or in the bed.
So I started sketching ideas for my laptop stand.
Once I had my concept, I started thinking how and with which program to design it.
This was a very long and frustrating process. I thought about Antimony but remembered that it doesn't export the dxf files needed for the CNC machine. I then played around with blender, watched a ton of tutorials, but just couldn't figure it out. When I was ready to give up, one of my section mates recommended OnShape. I tried it out, watched the five tutorials, and got my design going. It was so intuitive and simple. I really recommend it for people starting out with CAD design.
The first part I designed was the top of my laptop stand.
I then extruded it to a 3d shape.
And moved on to design the legs of the stand.
I tried to make a smart joint that could connect the pieces without screws.
And extruded to 3D the leg too.
Later, I tried out the assembly section, which was very intuitive and made me feel more confident about my design.
Finally, I moved to the drawing section to get the 2d traces needed for the machine and exported as a dxf file.
After uploading to VcarvePro I placed my design in the right orientation compared to the OSB and planned the different cutting traces.
I used a 0.25 endmill. I thought it would be to rough for my design but it was actually fine.
I had two different depths of cutting. One the cut all the way through and the other only half way through.
Programming week. Summary - Failure
I started this week by researching the different processes for programming a board
First I read this tutorial about Arduino.
Dowloaded the Arduino software and added the Attiny44 support as explained.
I read somewhere that the for the Attiny44 we use the USBtinyISP so that's what I chose for the progemmer under tools.
I then played around with the examples and changed the code to fit my microprocessor configuration according to the datasheet.
The second thing I did was go over the flow of how to build your own make files.
I followed this tutorial and ran the following commands in my terminal:
brew tap osx-cross/avr brew install avr-libc brew install avrdude --with-usb
At first I had some errors with the dowload but after googling the error in a few forums I find a fix.
I ran "brew doctor" and saw the follwing "Warning: You have unlinked kegs in your Cellar" so I ran "brew link" on the needed directories as instructed.
With these programs dowloaded I could build my one c file and make files and run the program on the board using the following commands: make -f [makefile_name].make // compile the .c code and make hex file make -f [makefile_name].make program-usbtiny-fuses // setting the fuses (once) make -f [makefile_name].make program-usbtiny // uploading the program
Example for a c file:
Example for a make file:
I also found this very helpful article about the implementation of Arduino.
After this preperation work I went back to the lab to finish soldering my board and uploading the program
Unfortunatly, after my board was ready I connected it to the AVR programmer and got the awful blinking orange light indicating something is wrong
After many checks with the multimeter and resoldering I finally got the green Light!
But when I tried to upload the Arduino program I recieved an error message saying that that there is a communication error and that something is not connected properly.
And when I removed the ISP connector the ISP part diconnected from the board taking some of the traces with it :(.
I will redo my board and continue the work in the following weeks.
I started this week very late since I was out of town for the weekend.
So I knew I needed to make something simple. I decided to try and make a coaster.
I used Antimony since I knew I needed an .stl file for the shopbot.
In the first version I wanted to make an interesting pattern for the coaster so I used an intersect of a circle and the diamond volume in the XY plane.
In the stl viewer it seemed kind of messy so I exported it to png and opened it in Inkscape
But after cleaning the design I got stuck. I didn't find a program that would take my svg file and extrude it to a 3D shape.
I tried Antimony, OnShape, Fusion360, and 123D Make before giving up.
So I decided to go back to Antimony and make an even simpler design to be exported to stl.
In stl viewer that design looked not very clean too but I figured it's good enough for the assignment.
When I uploaded the design to the ShopBot I saw that even with a 0.0625 endmill the letter cannot be milled.
But again due to lack of time I went with it.
I used a gun to attach my piece of wax to the OSB
Then, I attached the OSB to the ShopBot surface and set the bot to the right X,Y,Z coordinates.
The milling job didn't take a long time since my design was very close to the surface.
This was also the reason I oculd use the smaller endmill since the head of it was more narrow than the rest.
When the machine finished I decided to hand carve the letters that were missing.
And on the way I added some other additions.
I then went on and built the mold. I added a cardboard frame so the sillicon liquid won't spill.
I poured even portions of A and B oomoo liquid and hand mixed it.
There were many bobbles.
So after I pured the mixed liquid into my wax mold I used the vaccum machine to remove some of the bubbles.
When I came back the next day, I found that the silicon mold was in good shape and I could go on to the next step of casting.
I used dry stone and mixed the powder with water in 5 to 1 ratio.
Again, after pouring the drystone to the mold I used the vaccum to remove the bubbles and let it set for the night.
When I came back the next morning the cast was ready and the result was good.
My biggest learnings from this week are the following:.
- I still have a lot of work when it comes to CAD SW. I want to better understand which is best for each file type and the conversion from one SW to the other.
- Wax milling is fun. 3D milling is a great tool. You just need to make sure the endmills you use can actually mill your design.
- Molding and casting is pretty stright forward. The vaccum machine is a life saver!.
Can wait to come up with my next mold!
This week I tried to think about my final project as I chose the input device I used.
I thought it would be fun to add lighting to the frame that could dymanically change as the light in the room changes.
I used Neil's board with the phototransistor light sensor.
I calculated the traces and previewed the job to see that all the traces will be milled.
I aligned the endmill to the start point of my board and started the job.
After vaccuming my board by mistake and fishing it out, I saw it was milled as expected.
I went on to soldering the bord using the components file.
I tried the overflow method becase I felt my soldering needs more practice.
And felt pretty confident about my work.
But when I connected the board to the computer for the forst time I again got a blinking orange light. Fortunatly, this time the solution was simple. I turned out that the tiny45 was in the wrong polarity.
When I resoldered the microprocessor the board worked!
Once the board work, it was time to ran the programs. I used these files:
make -f hello.light.45.make
make -f hello.light.45.make program-usbtiny
avrdude: Error: Could not find USBtiny device (0x1781/0xc9f)
make -f hello.light.45.make program-avrisp2
ImportError: No module named serial
brew search pyserial
No formula found for "pyserial".
sudo pip install pyserial
sudo: pip: command not found
brew install pip
Error: No available formula with the name "pip"
sudo easy_install pip
sudo pip install pyserial
ImportError: No module named serial
brew install python
ImportError: No module named serial
sudo pip install pyserial
pip install --upgrade pip
ImportError: Symbol not found: __PyCodecInfo_GetIncrementalDecoder
sudo pip uninstall pyserial
sudo pip install pyserial
ImportError: Symbol not found: __PyCodecInfo_GetIncrementalDecoder
hash -r python
command line: hello.light.45.py serial_port
python hello.light.45.py /dev/tty.usbserial-FTE3QCQF
Finally, with Sam's help, we got it to work and the sensor worked great!
Composits week was the first week I actually felt successful!
I thought what I could make out of bulap that would actually look nice, so I came up with a plant holder.
I designed it with Onshape that I have really grown to love in the past weeks.
I then imported it to 123d make and sliced it to three 2 inch pieces, so they would fit the foam height.
I milled the three different pieces with the CNC machine.
And glue gunned them together to create my mold.
I then cut the different burlap pieces. I made enough pieces for 3 layers of burlap.
I made holes in the teflon that will eventually wrap the mold.
And also covered the mold with teflon (without holes) to keep the foam from absorbing the epoxy.
I used adhasive spray but it was still pretty challenging to get it to cover it properly.
I then mixed the epoxy with the hardner in a 2:1 ratio and started applying the mix to the burlap.
I arragned the different burlap pieces inside the mold.
When I was done, I covered it with the teflon and the breather and put it in a vaccum bag for three hours.
The result was satisfying. The burlap had the exact shape of my mold. Even the small texture I created.
This week we learned about different output devices.
For my final project I need a motor that would spin the sprocket that move the chain inside the frame.
I read about the three different motors because I wasn't sure what I needed.
I read this artical that compared servo motor, DC motor, and stepper motor.
I decided to go with the stepper motor because I needed continuous movement but also location percision.
I designed the circut in Eagle schematics.
I routed the board and checked the design rules.
When I exported it to png the images looked pretty small and when I loaded the traces to the milling machine I saw that the traces are not milled correctly.
Eventually I realized that when I exported the files I needed to choose a higher resolution.
Here are the two versions of the same circuit milled with the two resolutions.
When the board was ready I went on and stuffed it. It went pretty smoothly and worked on the first try.
It was the first time I used a 4 pin as a power input and learned how to make my own header to connect the board to the power supply.
Then I connected the board to the avrisp and ran Niel's program.
But when I connected the motor it didn't work.
Spent 2 hours debugging but still didn't figure out what's the problem.
The voltage is as expected on all the traces.
The motor pairs react to direct current applied.
These are two of the four inputs to the motor:
After 5 hours of debug and eventually with the help of brian I realized my board design was wrong!
The LSS output pins were supposed to be connected to GND but I missed it. Keeping them floating meant that they see an infinite rsistence and limit any current that is coming to the motor.
That is why the motor didn't move!
By connecting these pins to GND we change the resistence to 0 and the internal current control mechanism doesn't work. Which is ok because we don't need it.
To check that that was indeed the problem we added wires to connect the LSS to GND:
When we connected the motor it worked!
I can't believe the number of hours I spent debugging this mistake. Painful:/At first I used Niel's c programm and ran it in the terminal
make -f hello.stepper.bipolar.44.full.make
make -f hello.stepper.bipolar.44.full.make program-avrisp2
It seemed to work as expected.
I then wanted to try and program the board through Arduino. I used the following code:
The code seemed to work but something happened that I didn't understand.
When the motor started moving the power from the power supply dropped from ~9V to ~7V and the green light turned red.
The motor still worked as expected but the voltage was capped and seemed like an error.
It might have something to do with the fact the motor I used was 5V but I am not sure
I was so clueless this week. I spent three days just reading about serial communication and writing web applications from tutorials, forums, and past student pages.
After reading many option of coding the different interfaces I decided to use html, node.js, and arduino. I didn't need the visualization for my final project so I preffered using techniqes that would be useful later on.
I found this tutorial about Serial Communication with Node.js very useful.
Through the inner links I refreshed my knowledge about microcontrollers and serial communication.
I dowloaded Node. from this website.
I followed the above tutorial until the "Serialport Library Events" section where I got confused again.
This image shows in high level the interface between the different components. I found it useful:
I then read Jasmin's page about interface programing. I could understand her code and tried to reuse it.
But I still didn't understand most of the commands so I did some more web digging.
Here I learned the concept of anonymous functions and asynchronous callbacks.
Here I learned what each of the serial port functions does.
Here I learned how to write html web socket functions.
And here I learned how to use the arduino SoftawreSerial functions.
A LOT of learning:)
At that point I went back to the electronics lab. I wanted to build an application that would contol the number of steps the stepper motor takes. It is a very simple functionality but I could further build on that in my final project.
I knew that I needed a new board to control my stepper motor because it didn't have an FTDI connection for TX/RX.
So I changed my initial board:
I then encountered milling issues with the modela in the elec lab:
When I asked for help in the group I learned that the machine works well only when you place the pcb in the left top part of the sacrificial layer.
When I did that the board turned out good and I stuffed it pretty fast.
At first I connected the motor and ran Niel's c code from last week just to see that the circuit is working:
Then I connected the FTDI and started working on the serial communication.
I wrote Arduino, js, and html code and started debugging.
The problems I faced:
1) finding the serial port - i ran the ListPorts code from the first tutorial:
2) I wasn't sure which port to connect to. I tried opening Network Utility and find a free port:
But in the end I just used 8080 without really understanding why. It seemed to work.
3) I used an old js serial port function sp.open() that caused an error becasue it opened the serial port twice.
4) Several syntax issues that I solved by googling the error and fllowing forum's guidence.
Final Arduino code:
Final js code:
Final html code:
At this point the code seems to work but the motor is not moving.
This is the flow of running the js code and entering data on the ws side:
More debugging is needed to understand what is happening on the serial port side and why the motor doesn't get the dignal.
For my final project I want to be able to control the different parameter of the frame from an Iphone app. I also want it to be as low power as possible because the distanse can be small and I would rather avoid switching batteries. Therefore I decided to use BLE low energy bluethooth
I folllowed Jasmin's week 8 Page
and her week 11 Page
I used the HM-10 Bluetooth module
Getting the BLE chip to work was pretty simple
First, I connected the HM-10 to the FTDI and established connection.
Using the Arduino monitor I communicated with the BLE chip with the AT commands
I then disconnected the BLE from the FTDI and connected it tomy stepper motor chip
I downloaded the LightBlue App, found the BLE device on the list and was able to read and write to my board.
If only every week was this simple:)
Very fun week. If it happened earlier in the semester it wouldv'r worked better.
We were all so strested about the final projects.
Building the machine was great. I focused on the different assemblies that we git from the people that were laser cutting.
We worked in good pase and were able to complete the assembly within the time frame.
We then decided to build a 3d printer from glue gun.
We planned the design and started working on it but then there was a fire alarm in the media lab.
After that some people continued to work, but when we wanted to reconvine we couldn't find the machine.
Oh well, so much work to do for the final project anyway!
After abandoning my initial idea due to fisibility issues, I started to think what I could do for my final project.
I wanted to create something that would solve a personal need of mine. I remembered that I have a pack of physical wedding photos that I want to frame and hang on the wall, but I couldn't choose which and all of the current frame solutions seemed kind of boring.
I then came up with the idea of creating a wall frame that can hold a stack of physical pictures but alternate the pictures that are presented and their arrangement inside the frame.
The inspiration for the project came from solutions like these:
But with samrter elements like these:
I started sketching my idea
And designing the basic frame in Onshape.
Creating the design for the mold.
Milling the wax mold.
Preparing for oomoo.
Creating the ommoo mold
Experimenting with casting: Epoxy Vs Plastic
Casting the 3 part frame.
First Assembly. Cardboard.
Attaching the frames.
Moving to electronics.
Stepper motor plus FTDI board for serial communication.
Adding the BLE bridge.
Connecting to power supply and to the motor
Running Arduino serial code through BLE from my phone to activate the motor
Connecting the circuit to the initial prototype.
back to mechanics
3D printing idle gear. Designed in Antimony.
Printed in 3DWOX.
Production in the better 3D printer to minimize support residue
Glueing the magnet to the top of the gear.
Super strong magnets.
Designing the base and cover and cut OSB in with the shopbot
Placing the gears and chain. Second Assembly.
Biggest headake - glueing the 2d printed gears to the chain.
In the background - continueing the frame production
Cut and sand rectangular peices that to connect the two surfaces.
Final try to glue the 3d printed gears with the chain. Over might epoxy
Also didn't work - last resort, in the last day, I connected the gears with metal wires. It fixed the gears, but bothered the fluidity of the chain through the permanent gears.
I connected the motor and electronic circuits. Unfortunaltely, the motor refused to work with the same exact configurations it worked two days before!
I tried both Arduino and Neil's code. In Arduino I changes the set_speed() function and added delays between each step. In Neil's code I played with the "on_delay" parameter and the number of PWM cycles per step. Nothing worked. I saw from the power supply that the motor is pulling ~1.5A per step and the current limit was at 3A. After a long debug session with Sam we gave up.
I connected the portable 12V/8A charger and went up to the sixth floor
The motor trying to move the chain
Where to go next?
I am really passionate about this idea and would love to keep iterating until I am pleased with the result
1) Fix the motor configuration - find the right configuration for this motor or find another motor that can be configured to move the chain with the right turk.
2) Rethink the picture frames positioning - see how I can have better control so the frames would be exactly parallel to the surface.
3) Find the best way to connect the 3D gears to the chain - none of the glue worked and the wire didn't do do good enough job.
4) Select a lighter material for the base and cover - the OSB was heavier than expected. Also make it smaller! find the minimum space possible between two picture frames that could still move freely on the chain.
Those are the main things, but I am sure I will discover so much more as I work through this.
Than you for an unforgettable experience.