Plan and sketch a potential final project
A soft robot which expands or contracts based on the object’s speed and direction. It costs around $9 and uses air-pump(2), check valve(2), Eco Flex 0030, tubes, Ultrasonic Sensor - HC-SR04, FTDI Wire, 3V Battery, ATTINY44 microcontroller(2), SMD pins(4), FTDI Header pin, 10K resistor(4), 1uF capacitor(2), 30V NMOSFET(2), acrylic white, acrylic clear white, tapes.
I am thinking of a shape changing morphological robot.
However, after talking to Neil, I realized that I need to narrow down the scope of my project. I got excited about building a robotic hand shaker which can shake your hand when you approach towards it.
During my input week, I fell in love with the Ultrasonic Sensor HC-SR04. It was exactly what I wanted for my robotic hand. It was able to provide the distance of object from hand. Since, I also needed the direction and velocity, I modified Neil's Ultrasonic sensor code for distance and extrapolated it to measure distance and velocity. I also decided that I would need 2 air pumps - one to inflate and other to deflate the robotic hand. Here is my proposed solution:
Each component of my final project is from my weekly projects.
The input board to detect the distance, velocity and direction was developed during the INPUT DEVICES week. These are the C code and the make file that were developed.
The output board to power the DC air pumps were developed during the OUTPUT DEVICES week. These are the C code and the make file.
The interface to display the velocity and direction was developed during the INTERFACES week. This is the Python script.
The networking communcation between input and output device through serial bus was established during the NETWORKING week.
The soft robotic hand was 3D printed and molded during the WILDCARD - SOFT ROBOTICS week.
The packaging for the project - pressfit box was developed during the CNC CUTTING week using the laser cutting on acrylic material.
Finally, for the final project, Soft Robotic Hand, it all came together.
Design, make, and document a parametric press-fit construction kit, accounting for the lasercutter kerf, which can be assembled in multiple ways.
I did not finish this week's assignment as I am still learning Fusion 360. I will circle back on this later.
I decided to make press fit box for my final project. I feel much more confident in CAD on fusion 360 now. I am going to use white acrylic and clear acrylic for my box.
I started my design of the press fit box with the base and sides
This is how the top side of my box should look.
I have saved the design file of my pressfit box here.
I imported my dxf file in CorelDraw and hit ‘Print’. CorelDraw will send the job directly to the GCC Laser Pro Spirit GLS laser cutter. The job will show up in the laser cutter LCD screen with the file’s name and the settings. I started the job.
After the components were cut, it was time for me to assemble them. I was happy that my measurements for Ultrasonic sensor heads alligned right into the side of the box.
I also rastered the top side of the box to make it look sexy !:)
This is how the final pressfit box looked.
I also made this sticker using the vinyl cutting.
Make an in-circuit programmer by milling the PCB.
This week we are making our own AV in-system programmer (ISP) board. For this project, I followed Brian's guidelines for fabricating the FabTinyStar, a low-cost ISP that can be built in the fab lab.
First, I milled the board with the Roland Modela MDX-20, a desktop precision milling machine. We are using PNG image files as the source file for the traces and outline of the board, controlled my Mods.
Mods takes the raster information from the image file, takes in the user input and applies image processing to extract the machine paths. I used 1000 dpi for export to make sure the paths were as accurate as possible.
Next, I secured the board to the machine to make sure the vibration was not affecting the quality of the milled paths. A useful tip is using plenty of double-sided tape along the longitudinal edge of the board instead of clamping the board into the machine.
The next step is zeroing the machine to make sure the origin of the board we used. Note that the machine takes the bottom lefthand corner as the origin.
The milling is done in two passes, that correspond to two different end mills and settings. The first pass is done using the 1/64 inch end mill for the traces. This step removes all the material that is colored black on the PNG. The second pass is done with the 1/32 inch end mill, and mods is adjusted to cut throughout all the material that is not white. The order of the passes matters, because cutting the traces first prevents the board from shaking when cutting the holes that go through.
Next step was soldering the components on to the board.
I struggled with soldering but eventually got it after multiple attempts. This is how my final board looks like. Looking forward to programming this board as my programmer.
Then, I installed CrossPack to set up AVR programming. After, I installed the firmware source code and ran the 'make' command to build the hex file that will get programmed onto the ATtiny45. Next, I used the blue AVR programmer to program my board. After plugging in the board, I was happy to see the red led was lighting up.
I also found the below commands useful for setting up AVR for mac users after installing CrossPack
Design and 3D print an object (small, few cm) that could not be made subtractively
This week I decided to design an inflatable finger and 3D print it. So I started with designing the file in fusion 360.
I exported the file in STL format and imported it in the 3D printer and began the print job
It took around 2 hours to print. It was very straight forward process. Here is how it looks.
For the 3D scanning, I decided to use the SENSE 3D Scanner. I took help of Mani to scan my face. After a couple of tries, he could scan my head properly without losing a lot of his facial profile. In these attempts, I learned that slow movement of scanner and staying focus on the head play a key role in getting a right profile scan. I found scanning the hair part much more difficult than the face. I felt that it's easy to get lost in scanning hair. Here is the process of scanning using sense followed by the result after solidification.
Finally, I used the scan file to print it. This is how I look :)
Redraw the echo hello-world board, add a button and LED check the design rules, make it, and test it.
This week’s assignment is to redesign the echo hello-world board, adding a button and and LED.The overall process to follow is the following: first, interpret the existing circuit, then, draw up the schematic with the new modifications, next draw the routes for fabrication scale, then machine the board, and finally stuff the board with components and program it to make sure it works.
To draw up the schematic of the circuit and draw the traces for machining I used Eagle. But first, I had set up Eagle to include the libraries of components that are stocked in the CBA electronics workshop.
The next step was drawing the schematic in Eagle. I placed the parts that are part of the echo hello-world plus an additional LED and a switch.
Next step was exporting the .png files for fabrication. I made sure the ‘monochrome’ setting is enabled and output resolution is 1000 dpi. Then, I exported two files, one for the traces and another one for the board outline. Some more useful shortcuts to display the correct layers:
After exporting the .png files, I started milling the board in mods.
After the milling was completed, I began soldering the components to have my board ready for programming with my ISP that I had created in week-3.
I was able to program my board with the USBTINY by following the steps provided by Neil here and was able to run the hello world example code.
Make something big
This week we are making something big. I decided to build a star shaped book shelf that I can use later as a storage for my favorite books. I started the design in fusion 360.
I designed the based of the book shelf first.
These would be the sides of the book shelf
This would be the shelf to keep the books
After I was done with my design, I exported my designs in STL files. Now, it was time for me to use the ShopBot.
The first step is loading the material onto the bed of the machine. The material goes on top of another wooden fiberboard medium density sacrificial layer, that gets damaged in order to be able to cut through the material. It’s important to make sure the material lays flat on the board and is parallel to the edges of the machine, to make the most use out of it. Then, we drill screws onto the edges to support it.
Then, we load the tool with the appropriate collet size. For this job, I used 1/8 in flat end mill. To load the end mill, we used the two wrenches to tighten it. Next, we move the end mill to the bottom righthand corner to the material and set the XY origin. After, we zero the Z axis using the metal plate attached to the machine. This process is automated, and when then mill meets the metal in calculates the 0.0Z point for the material.
The next step is opening the cad file in VCarve Pro. The software is not at all intuitive to use and it’s important to get all the parameters right in order to minimize surprises during the cutting process.
Then, we generate the tool paths from the cad files. First, we select the lines we want to create tool paths for and then calculate a path that matches the tool properties we are using. The pass cut depth shouldn’t exceed the diameter of the tools, so in order to cut all the way through the 0.44 in OSB board, the software will automatically do it in multiple passes. In my case, I had two types of tool paths, one for the outer cut and another one for inner cut.
Moment of truth, time to press the green button and keep a hand on the big red button in case the mill decides to drill where it shouldn’t.
After the lengthy setup, the milling process was going pretty smooth and I was able to verify the cuts
Once the shopbot stopped, I tried to fit it one of the book shelf sides to the base but I found out that the holes were not big enough for it to fit in :(
So, I increased the size of the holes, updated the inner cuts tool path and ran the shop bot again to increase the holes.
After the board was cut, it’s assembly time.
I assembled the components and here is how the book shelf looks. Yeee!
Read a microcontroller data sheet and program your board to do something
The goal for this week is to take the board we designed and fabricated in week 5 and program it to do something. My board had a button and a LED.
Reading the Atmel ATtiny44A data sheet was definitely not fun. But, going through the 286 pages helped me understand a bit better about the architecture and what each pin was doing. The ATTiny44A is roughly a low-cost computer in less that 0.5 mm2. The ATtiny44A is part of the AVR family and are modified Harvard architecture 8-bit RISC single-chip microcontrollers. They are also used in the Arduino boards. I found this tutorial super helpful
To get confortable in Eagle, I redrew the schematic design of hello world board that I drew in week 3, again.
After that I milled the board and soldered the components.
I then programmed my board with USBTINY.
I wanted to do something simple this week so I decided to turn the LED ON on button press and OFF when the button is released. Here is the C code.
Once the C code was compiled, I re-programmed the board.
Here is the demo
Design a 3D mold around the stock and tooling that you'll be using, mill it, and use it to cast parts
This week we are learning how to make our own molds to cast parts on. For this week, I wanted to cast something useful, something which can be used daily. So, after lot of thinking, I decided to go with necklace pendant for my girl friend 😊
Since, my girl friend loves high heels, I started designing the 3D model in Fusion 360.
After 3D designing the model comes the fabrication. The fabrication process has three main steps: making a rigid material mold, then making a flexible mold and then casting the final product.
I used the ShopBot Partworks 3D to calculate the tool paths. I used two different tool paths for the milling process, using the 1/8 in flat end mill for both. The first path is for roughing the shape, with a 50% step over at 6000 rpm. The second pass is the smoothing pass, a 10% step over and also 6000 rpm.
Next up was machining a mold with a piece of wax using the ShopBot Desktop. I secured the wax block by hot gluing a piece of OSB wood and drilling that to the sacrificial layer on the Shopbot. It ran smoothly and I was able to machine my rigid molds.
Next, I mixed the OOMO. The OOMOO comes in two separate jars. Each contains a compound that is (decently) shelf stable on its own. After mixing, I used a vacuum chamber to help remove bubbles that would otherwise compromise the mold.
I then sprayed my mold with antiadhesive and poured it in.
I waited for 3 hours and unmolded my mold. It picked up all the details from the rigid mold, even the passes of the endmill that were hardly visible.
I wanted to try both dry stone casting and metal casting.
I decided to start with drystone. The container indicated 100 parts drystone powder to 20 parts water, but I found that this produced a paste so thick I was worried about losing detail. So I added a bit more water until it had the consistency of a thick batter.
I then cleared the bubbles in the vaccum and poured in the paste onto the mold.
Next day, I took the cast out of mould. As I removed the cast, the heel of the shoe broke 😞
Next, I decided to cast another shoe in bismuth, a low melting point metal. I reused the same mold. I placed the cup with the block of metal in the oven at 400 degrees Fahrenheit and waited around 20 minutes for the metal to melt. Once the bismuth was melted, I poured it onto the mold.
The liquid metal cooled within 5 minutes. I was excited to take the metal cast out of the mold. I did not break this time. However, as I was trying to foil away the extra metal surface of the show, the heel knocked off 😞
I was disappointed but I didn't give up. I tried the metal casting again using the same mold. This time I was cautious while taking the cast out of the mold and foiling it. I also drilled the hole in casted pendant and polished it to make it look sexy 😊
I would like to thank Sara Falcone who helped me through out the process.
Measure something: add a sensor to a microcontroller board that you have designed and read it.
For this week, I wanted to design the input board from my soft robotic hand such that I can find the distance of the object as well as the velocity and direction. I wanted to use ATTINY44 microcontroller than ATTINY45 which Neil had used in his example Sonar Code as I wanted more leverage on the board with more PWM pins. Also, it would help me understand the microcontroller architecture much better.
I then started with milling the board on roland machine.
Once the traces came out clean I began soldering all the components. I had ATTINY44, 2 SMD pins, 10K resistor and a 1uF capacitor along with the FTDI pins.
Once all the soldering was done, I programmed the board with my USBTINY board that I had created before and ran the python script. I started with Neil’s Sonar Code and just changed my ATTINY44 pin outs in the code.
The code ran just fine and I was able to measure the distance of the object.
Since, I wanted to measure the direction and velocity of the object, I modified Neil’s Sonar C Code and Python script. Here is my C code and Python script. I would like to acknowledge Brain Mayton for guiding me on this.
I was able to run the code and display the velocity. Yeeee!
I enjoyed working with Ultrasonic Sensor - HC-SR04. So I decided to further play around with it and add an RGB led. I wanted to build a sensor which changes the color based on a defined range. So, I drew the schematics in eagle.
I then milled the board and soldered the components
I wanted the RGB led to change the color to blue when the object is less than 12 cm and red otherwise. I wrote my C code while referring to the Neil's Sonar Code and RGB led. I programmed it successfuly and got it working. Yay!
Add an output device to a microcontroller board you've designed and program it to do something.
Since, I was going to use DC air pumps for my soft robotic hand, I wanted to explore running the air pumps through the microcontroller.
I started with schematic design in eagle. I thought of using ATTINY44 to power my DC motor. I added just a resistor and a capacitor in the circuit. I didnt want to use a bridge like Neil had used in his DC motor example. I took it as an opportunity to learn. I knew that I was going to fail multiple times. Here are my traces and outlines.
I soldered the components, connected them and programmed it with my simple C code that I wrote.
Of course, the pump did not work! I realized that ATTINY44 can only provide 40mA max!
My 3V DC pump needed atleast 0.14A. I check that it needed 0.14A on 1V, 0.2A on 2V and 0.26A on 3V to drive the motor.
I decided that I would rather use a voltage regulator of 3V. So I added that after my power SMD. But that didnt help too! So, I decided to use mosfets in front of my dc motors. I drew the new schematics on eagle.
I milled the board again and programmed it with my C code.
I tested the air pump on one of the pins and it worked. Yeeeee!
Plan and make a machine.
For this week, we are building chocolate 3D printing machine. A group of 16 graduate students from CBA section worked on different sections of machine making such as machine design, fabrication, assembly, electronics and programming. Here is the documentation of our group.
I contributed to the design of the chocolate extruder. I used fusion 360 to design the extruder.
Once the design was completed, I helped in fabrication of the extruder using shopbot.
It all came together very well with the entire machine.
Finally, we had Neil posing with us with the machine :)
Write an application that interfaces with an input or output device that you made.
By now, I had already worked on computing the velocity and direction of the object. I wanted this to be dispalyed in the user interface. I began tinkering with tinker in python. I found this tutorial super helpful.
Here is my Python script that displays the velocity and direction of the object
And I can see my code in action with the ultrasonic sensor!
Design and build a wired or wireless network connecting at least two processors.
My goal for this week was to communicate my input device week board (distance & velocity detector) and output device week(dc air pumps). I wanted to synchronize my pumps based on the distance and velocity using a serial bus between the boards.
In my input device board, I used the following logic: I used 2 pins - enable and directional pins for my logic handling. If the distance is greater than 5 and less than 30 and the object is moving then I would set the enable pin else the enable pin should be clear. Also, if the object is moving in positive direction then I would set the direction pin ON else OFF. Here is the C code and the make file.
In my output devices board, I used the following logic: I would turn the dc motor pumps ON or OFF based on enable and directional pin. If the enable pin is ON then I would check for the directional pin status from the input board. If the directional pin is ON then I would turn ON the pump1 else I would turn ON the pump2. Here is the C code and the make file.
Using the above logic, I programmed both my boards and connected the power sources to each of the board.
I was able to successfully run the motors in synchronization on output board based on the distance & velocity from the other board. Yeeeee!
Create your own assignment
This week we had to make our own assignment. I teamed up with Mani to make a soft robotic arm. We attended the recitation in Harvard on soft robots.
At recitation we learnt that Ecoflex is used in mold making
Also, simple soft robots bends when air is pumped through the inlet. Usually any soft robot consists of two layers as seen in the following image. The stiff layer is made by gluing a cloth on the layer using the mold mixture.
After coming back from recitation, I designed the soft robotic finger and hand on fusion 360 - front and back layer
I then 3D printed the molds
I used Ecoflex PartA and PartB in equal proportions to make a uniform mixture, vaccumed for bubbles, poured them into molds and then let it cure for 4 hours.
I removed the casts and inserted a valve in between the layers and glued both layers with the valve using Ecoflex mixture again. It is important to ensure that there are no leaks.
Also, I glued a stiff cloth on the plane layer using Ecoflex mixture and let it cure for four more hours.
Finally, I had the finger and hand ready! Ready to test...
Here is how the soft robotic finger looks like. I was holding my hand onto the other pump because I did not have the check valve. The hand had some perforations in the end. I will have to cast it again.
I learnt from Ryan on metal laser cutting using Fablight. Here is the full video: