Skip to content
Snippets Groups Projects
Commit 3a6a69ab authored by Mitalee Parikh's avatar Mitalee Parikh
Browse files

update names

parent 827330bc
No related branches found
No related tags found
No related merge requests found
Pipeline #217686 passed
# 3D Scanning and printing
This week I made some 3d printed tools and 3d scanned using photogrammetry.
I wanted to make simple tools this weeks, so I experimented with simple joint mechanisms. Some references that I used to develop my designs:
- [Compliant Mechanisms Research (CMR by BYU)](<https://www.compliantmechanisms.byu.edu/maker-resources>)
- [Why machines that bend are better](<https://www.youtube.com/watch?v=97t7Xj_iBv0>)
- [Compliant mechanisms by Devin Montes](<https://www.myminifactory.com/users/MakeAnything/collection/compliant-mechanisms>) \- [video](<https://www.youtube.com/watch?v=PgDJlLqeTdo>)
- [These transformed chopsticks](<https://www.myminifactory.com/object/3d-print-96658>)
## Design
I first made a scaled-up version of a simple Gemclip and some other simple geometry clips. I bent one end to add a dimension, that does not allow it to be made using only one subtractive method.
![simpleclips](<./images/3dpd/simpleclips.jpg>)
I first made it in 2D in plan to the size and proportion I wanted, and then extruded it in Z. Later I bent the inner part so that the model could no tbe made only subtractively easily, as now it had an undercut.
![side](<./images/3dpd/side.jpg>)
Then I used some parts of these tranformed chopsticks reference above that I found
![transformedchopsticks](<./images/3dpd/transformedchopsticks.jpg>)
And then made normal tweezers and then modified the geomtry to make it compliant like the chopsticks above.
![designing](<./images/3dpd/designing.jpg>)
## The models
<div class="sketchfab-embed-wrapper"><iframe title="A 3D model" width="640" height="480" src="https://sketchfab.com/models/acabba4a8e95408484dcc6343d08ade7/embed?autospin=0.2" frameborder="0" allow="autoplay; fullscreen; vr" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe><p style="font-size: 13px; font-weight: normal; margin: 5px; color: #4A4A4A;"><a href="https://sketchfab.com/3d-models/gemclip-acabba4a8e95408484dcc6343d08ade7?utm_medium=embed&amp;utm_source=website&amp;utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">Gemclip</a> by <a href="https://sketchfab.com/emaitee?utm_medium=embed&amp;utm_source=website&amp;utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">emaitee</a> on <a href="https://sketchfab.com?utm_medium=embed&amp;utm_source=website&amp;utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">Sketchfab</a>
Next after, watching some videos on making compliant mechanisms, I made a simple pick-and-place plier to test out the bending.
<iframe title="A 3D model" width="640" height="480" src="https://sketchfab.com/models/850342b563e44e1eb9413b347701a423/embed?autospin=0.2&amp;camera=0" frameborder="0" allow="autoplay; fullscreen; vr" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe><p style="font-size: 13px; font-weight: normal; margin: 5px; color: #4A4A4A;"><a href="https://sketchfab.com/3d-models/compliant-mechanism-pliers-850342b563e44e1eb9413b347701a423?utm_medium=embed&amp;utm_source=website&amp;utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">Compliant mechanism, pliers</a> by <a href="https://sketchfab.com/emaitee?utm_medium=embed&amp;utm_source=website&amp;utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">emaitee</a> on <a href="https://sketchfab.com?utm_medium=embed&amp;utm_source=website&amp;utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">Sketchfab</a></p></div>
Some tweezers we used for holding down electronic components:
<div class="sketchfab-embed-wrapper"><iframe title="A 3D model" width="640" height="480" src="https://sketchfab.com/models/85e7031fa9fa444eabe54ac6152ed525/embed?autospin=0.2&amp;camera=0" frameborder="0" allow="autoplay; fullscreen; vr" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe><p style="font-size: 13px; font-weight: normal; margin: 5px; color: #4A4A4A;"><a href="https://sketchfab.com/3d-models/simple-tweezers-85e7031fa9fa444eabe54ac6152ed525?utm_medium=embed&amp;utm_source=website&amp;utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">Simple tweezers</a> by <a href="https://sketchfab.com/emaitee?utm_medium=embed&amp;utm_source=website&amp;utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">emaitee</a> on <a href="https://sketchfab.com?utm_medium=embed&amp;utm_source=website&amp;utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">Sketchfab</a></p></div>
I wondered if it was easier to use the tweezers with a reversed action, where applying force releases the object. And by default it holds the object. For this, I used this [mechanism designed by Devin Montes](<https://www.myminifactory.com/users/MakeAnything/collection/compliant-mechanisms>) \- [video](<https://www.youtube.com/watch?v=PgDJlLqeTdo>) and transformed it for the tweezers.
<div class="sketchfab-embed-wrapper"><iframe title="A 3D model" width="640" height="480" src="https://sketchfab.com/models/43feaabeb46647b8a4778c10bea22740/embed?autospin=0.2&amp;camera=0" frameborder="0" allow="autoplay; fullscreen; vr" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe><p style="font-size: 13px; font-weight: normal; margin: 5px; color: #4A4A4A;"><a href="https://sketchfab.com/3d-models/compliant-tweezers-43feaabeb46647b8a4778c10bea22740?utm_medium=embed&amp;utm_source=website&amp;utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">Compliant tweezers</a> by <a href="https://sketchfab.com/emaitee?utm_medium=embed&amp;utm_source=website&amp;utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">emaitee</a> on <a href="https://sketchfab.com?utm_medium=embed&amp;utm_source=website&amp;utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">Sketchfab</a></p></div>
## Creating toolpaths
I used Cura to make toolpaths for my 3d prints. I uploaded my stl files, set my machine, choose PLA as my material and used these settings:
![null](<./images/3dpd/cura.jpg>)
## Printing
I used an [Anycubic Kossel Plus 3D printer](<https://www.anycubic.com/products/anycubic-kossel-3d-printer>) to print with a black 1.75mm PLA filament.
![null](<../images/3dpd/anycubic.jpg>)
Printing the gemclip: The finish was alright, as the first layer spread a little too much, causing it to be broader then the actual form. The first layer has a layer height of 0.3mm, and all the consecutive ones were 0.15mm. I used a cutting blade to finish these edges.
![null](<./images/3dpd/gem3d.jpg>)
![null](<./images/3dpd/gemedge.jpg>)
In the next print, I used the same layer height for all layers. I printed a simple pick and place plier using a bent compliant joint.
![null](<../images/3dpd/simpleplier.gif>)
Simple nose-end tweezers:
![null](<./images/3dpd/simpletweezers.jpg>)
Used the transformed chopstick geometry, modifoed it for the tweezers: ![null](<./images/3dpd/comptweezers.jpg>)
The bending details were too small, they broke while I was trying to clean them up.
![null](<./images/3dpd/brokentweezers.jpg>)
Overall, I made some small experiments with simple tools. I hope to remake the tweezer with the semi-compliant mechanism again after modifying the design.
![null](<./images/3dpd/lot.jpg>)
Useful reference:
[Design for 3d printing tutorials](<https://www.3dhubs.com/knowledge-base/>)
### For next time
If I can have more time on the machines I can modify the mechanisms by trying out various different tollerences, size and setting. And maybe make a small set of complaint mechanism tools.
## Photogrammetry
I used Agisoft Metashape to make a pointcloud. I followed this [tutorial by Agisoft](<https://agisoft.freshdesk.com/support/solutions/articles/31000152092-3d-model-reconstruction>).
I clicked 53 images of the object on a plain background from all around. Steps to make a pointcloud:
1. Workflow > Add photos
2. Workflow > Align Photos (this step take some time depending on the number of key point limit and tie point limit you set.)
3. Some photos failed to align, but I got 9003 points
4. Workflow > Build dense cloud - medium quality.
5. Workflow > Build Mesh
6. Workflow > Build textures
The process: ![metashape](<./images/3dpd/agisoft.gif>)
The output:
<div class="sketchfab-embed-wrapper"><iframe title="A 3D model" width="640" height="480" src="https://sketchfab.com/models/a3fdb19895234d9f9834fb48305ed7a4/embed?autospin=0.2&amp;camera=0" frameborder="0" allow="autoplay; fullscreen; vr" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe><p style="font-size: 13px; font-weight: normal; margin: 5px; color: #4A4A4A;"><a href="https://sketchfab.com/3d-models/nut-and-bolt-a3fdb19895234d9f9834fb48305ed7a4?utm_medium=embed&amp;utm_source=website&amp;utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">Nut and bolt</a> by <a href="https://sketchfab.com/emaitee?utm_medium=embed&amp;utm_source=website&amp;utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">emaitee</a> on <a href="https://sketchfab.com?utm_medium=embed&amp;utm_source=website&amp;utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">Sketchfab</a></p></div>
## 3D Scanning
I used a Roland Modela MDX-20 to scan the same object. I used the [step-by-step manual](<http://fab.academany.org/2018/labs/barcelona/students/jeanbaptiste-natali/download/scanning_with_mdx-20_step_by_step.pdf>) for this. ![nutbolt](<./images/3dpd/nutbolt.jpg>)
Stuck the bolt and nut using a double sided tape on the raised level bed. ![setup](<../images/3dpd/setup.jpg>) I set the scanning area, as close to the object as possible. And a scanning grid of 0.5mm on both X and Y axes.
The output: ![output](<./images/3dpd/output.jpg>)
<div class="sketchfab-embed-wrapper"><iframe title="A 3D model" width="640" height="480" src="https://sketchfab.com/models/c7382a9ac481437c8df7386913506f23/embed?autospin=0.2&amp;camera=0" frameborder="0" allow="autoplay; fullscreen; vr" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe><p style="font-size: 13px; font-weight: normal; margin: 5px; color: #4A4A4A;"><a href="https://sketchfab.com/3d-models/3d-scanned-nut-and-bolt-c7382a9ac481437c8df7386913506f23?utm_medium=embed&amp;utm_source=website&amp;utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">3D scanned nut and bolt</a> by <a href="https://sketchfab.com/emaitee?utm_medium=embed&amp;utm_source=website&amp;utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">emaitee</a> on <a href="https://sketchfab.com?utm_medium=embed&amp;utm_source=website&amp;utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">Sketchfab</a></p></div>
### Design files
[All 3D models for printing](<./images/3dpd/clampsandclips.3dm.zip>)
[Probe scan of a lump of clay](<./images/3dpd/clay.probe.scan.stl.zip>)
[Photogammetry of nut and bolt](<./images/3dpd/photogrammetry.obj.zip>)
[Probe scan of nut and bolt](<./images/3dpd/probescan.zip>)
[These transformed chopsticks](<./images/3dpd/reference.file.zip>)
Computer Aided design
=====================
This week I tried to explore new softwares I haven't used before. I also tried to figure out what software is good for what purpose and when to use which one.
2D design
---------
### Raster vs Vector
**Raster** Images are made of pixels. Pixels are the smallest _pi(x)_ -cture _el_ -ements that contain colour information. They follow a co-ordinate system and are generally square, sometimes rectangular in shape. They do not scale up without loss of quality. They allow control over individual pixels.
Some raster formats:
**JPEG/JPG** (Joint Photographic Experts Group): JPGs can be compressed with a control on quality and file size. So they are good for web browsers. Generally the standard screen resolution for internet images is 72 ppi. JPGs support the 24-bit colour palette. I use this format for photographs.
**GIF** (Graphics Interface Format): GIF works well for illustrations and animations. It supports a maximum of 256 colours per frame (8-bit per pixel) selected out of the 24-bit RGB palette. It uses lossless compression. I use this format for animations with less number of colours.
**PNG** (Portable Networks Graphic): PNGs support transparency, so they are very useful for non-rectangular looking images. It uses lossless compression just like GIFs. I use this format for images with text or line-art and transparent background.
**TIFF** (Tagged Image File Format): This format is used to store large sized images that need high quality for print. It contains a lot of meta information, so is good for editing.
There are other formats like RAW, NEF that are super editable and large when your camera captures an image.
**Adobe Photoshop** needs a subscription. It is my go-to software for photo editing. I use it quite often to manipulate raster images to transform them or remove backgrounds for objects, etc.
**GIMP** Since I haven't used it before, this week I explored GIMP. It is an open-source raster image editor. It is good as a free-form paint tool, for image retouching and format converting and compressing.
Here are some experiments in GIMP.
Free-form sketching to represent an initial idea by exploring brushes:
![](./images/cad/gimp-freeform.jpg)
Image retouching by modifying colour levels, saturation, etc:
![](./images/cad/gimp-retouching.jpg)
These screenshots have been resized and compressed in GIMP as well.
Workflow for this documentation: Image from screenshot(PNG) or phone camera(HEIC) > Edit in Photoshop/GIMP > Compress/Resize with ImageMagick
**Vector** images are made of points connected by curves to form polygons or other shapes. Vector images are controlled by equations, so they are infinitely scalable, without loss of quality. I have been using Adobe Illustrator extensively to make/edit vector images. Vector Formats:
**AI** (or **CDR**):These are generally made in Adobe Illustrator (or Corel Draw) and completely editable. They are generally stored separately for editability and saved as other formats depending on application.
**EPS** (Encapsulated PostScript): This is a versatile format used by all editing softwares, both vector and raster.
There are other formats like SVG and EMF that I don't use as much.
**PDF** (Portable Document Format) is a versatile format that can be either raster or vector depending on the way it was created. PDFs support text, vector images, bitmap images, interactive links, encryption, fonts etc. Adobe Illustrator needs a subscription, it is my go-to software for illustrations or diagrams. I use it often to manipulate vector images.
**Adobe Illustrator** I like to use this for diagrams and digitising sketches or hand-written notes.
Workflow: I upload a photograph of the notes (written with thick pens works better). Perpendicularly shot with no shadows/ uniform light. Opening this and selecting it makes the image trace pop open. Open the image trace panel and adjust the threshold, paths, corners, noise. Keep the preview on, so I can see the changes while I fine-tune the result. Explode and ungroup. Tweak some curves if required. Add colours, etc.
**INKSCAPE** I explored Inkscape to make charts and diagrams. A combination of lines, text, illustrations, etc. I save the file in both editable vector format, so I can evolve it in the future. And a png/jpeg for presentation or communication.
3D design
---------
### Rhino + Grasshopper
I use Rhino frequently for 3D modelling. I like it because it is very versatile and NURBS modelling allows exploring forms fast and easily. Extracting axonometric/isometric/perspective views is easy too.
I've used grasshopper before but have never applied it to an actual progress. So I took this opportunity to explore it more. In the file here, I tried all different box options and some list options. [Box](./images/cad/gh.zip)
Basically, I picked one category and explore all the functions within it using some grasshopper help.
![](./images/cad/rhino.jpg)
![](./images/cad/gh.jpg)
Next I started doing the next assignment - lasercutting a press-fit construction kit. I used grasshopper to try out various strategies for making press-fit joints for different thicknesses of material. You can find documentation about this on the [Computer Controlled Cutting page.](../assignments/week04.md)
### Fusion 360
Using Fusion had a different workflow, that I haven't gotten used to yet. But it seems to be very helpful for making more complex parametric designs with proper constraints.
![](./images/cad/fusion1.jpg)
I explored how constraints work. I made some simple shapes and tried out all different constraint options.
![](./images/cad/fusion2.jpg)
Then, I started making next week's assignment.
![](./images/cad/fusion3.jpg)
I use Fusion again next week to create parametric modules. You can find the description [here](../assignments/week04.md).
### Blender
Blender is an all-in-one software. To model, render, animate, sculpt. It has an overwhelming number of function. I started from the very basic, making a wavy surface like water, trying the fire effect, making some geometric shapes, etc. as seen in the images below.
![](./images/cad/blender1.jpg)
![](./images/cad/blender2.jpg)
![](./images/cad/blender3.jpg)
I hope to use more Blender in the future to make some cool animations or renders. Blender also has a cool community for development and things. I was very surprised to learn that it is completely open-source and has come a long way in development. Usually the other open-source softwares have a very raw user experience, but not this.
* [Victor's Notes - hackmd](https://hackmd.io/ojtXMAVIQYyJJ86pPzzNpA?view)
* [Blender](https://www.blender.org/)
* [Blender Fundamentals](https://cloud.blender.org/p/blender-fundamentals)
* [Blender Nation](https://www.blendernation.com/)
* [Blender Artists](https://blenderartists.org/)
### Checkout
This week, for 2D design I'm not yet sure what benefits softwares like GIMP and Inkscape offer me personally. I still feel very comfortable using Adobe softwares for both vector and raster work. Maybe using them more I can explore what else they have to offer. For 3D, my go-to has been Rhino. But now I feel using Fusion to make models with version control is amazing and I hope to use Blender to learn animation, rendering later on.
### Design files
[Grasshopper exploring boxes](./images/cad/gh.zip)
[GIMP explorations](./images/cad/gimp.zip)
[Blender trials](./images/cad/blender.zip)
[Different fusion trials](./images/cad/fusion.zip)
Computer controlled cutting
===========================
This week I worked on designing parametrically for laser cutting. Also, tried out cutting small things on the vinyl cutter.
Laser cutting
-------------
### Designing the construction kit
I sketched out a simple module so all dimensions were a multiple of the either the:
1. Thickness of material
2. Kerf
I wanted to keep the module itself simple so that it would:
* Use less material
* Provide multiple ways of assembly
So I sketched out frame modules with notches at the ends for connections.
![module idea sketch](./images/ccc/sketch.jpg)
### The script
After various attempts in rhino+grasshopper and fusion360, I found a tutorial on notching. I tried that out, modified it to work for my module idea, and then ended up with a file where you could modify:
1. Thickness of Material
2. Kerf of laser
3. Number of arms on the module
4. Type of notch - press-fit, chamfer, or snap-fit
You can find the script at the bottom of this page.
Some attempted scripts that didn't work as a whole:
![](./images/ccc/1.jpg)
![](./images/ccc/2.jpg)
![](./images/ccc/3.jpg)
![](./images/ccc/4.jpg)
### The machine
We could use one of [three laser cutters at FabLabBCN](https://fablabbcn.org/machines.html). I started with the smallest Trotec Speedy 100 this week. It has a bed size of 610mm x 305mm and power of 12-60W. It is good for cutting paper, cardboard, MDF, plywood, acrylic.
### Material dimensions
First I cut out a ply of 300mm by 600mm out of a big sheet. Using a vernier calliper I measured the thickness of the material in several places.
![Material thickness: 4.35 mm](./images/ccc/material.jpg)
### Setting focus
The focus of the machine can be set by adjusting the distance of the Z axis of the bed from the material's top surface. We have a small probe at the lab, an attachment that you hang on the side of the laser nozzle. You manually move the bed up and when the probe touches the material, it falls off. This position sets the z-axis of the machine.
![gif of probe falling](./images/ccc/focus.gif)
### Measuring kerf
First, I cut a small square of 20mm x 20mm to check:
1. Power and speed settings - I used the cutting guide to set the power to 75% and speed to 0.5mm/s for cutting.
2. Kerf - After measuring the outside dimension of the square itself and the inside dimension of the negative left in the sheet, I divided the difference by 2 and found the kerf of the machine to be 0.15mm.
![](./images/ccc/inside.jpg)
![](./images/ccc/outside.jpg)
![](./images/ccc/difference.jpg)
### Add to parametric file
Now that I had found my 2 parameters : thickness=4.35mm and kerf=0.15mm, I adjusted the sliders on my gh script.
![Parameters](./images/ccc/parameters.jpg)
### Bake model
I tried multiple different combinations of the number of module arms, and the type of notches to test everything and baked them separately. I adjusted them manually in Rhino to fit inside 300mm by 600mm. I put them in a the same layer in black for cutting.
Here is the Rhino file.
![various modules](./images/ccc/modules.jpg)
### Set cutting parameters
Checked for no duplicate and all flat lines, and set material parameters.
![settings](./images/ccc/settings.jpg)
### Assembly
The pieces came out neat using the cutting settings. ![](./images/ccc/pieces.jpg)
Some different assemblies:
![](./images/ccc/assembly1.jpg)
![](./images/ccc/assembly2.jpg)
![](./images/ccc/assembly3.jpg)
### For next time:
1. Cut inside parts first, because the piece shifted when it cut the outside first. Put them in a separate layer.
2. Since ply is a little warped - put the material concave side up to allow sticking the edges to the bed.
![](./images/ccc/warped.jpg)
3. Lots of material wasted in the sheet - use nesting software/plug-in to optimise curves.
![](./images/ccc/waste.jpg)
4. Modules too big and long - modify some multiples of thickness in script and make them shorter.
5. The snapping part of the snap-fit notch was too small (equal to the kerf) - modify the script to make it bigger.
![](./images/ccc/snap.jpg)
### Design Files
Final files: [The rhino notch file](./images/ccc/notch.rhino.zip) used with this [grasshopper script](./images/ccc/parametric.modules.gh.zip)
[All failed Fusion files](../fabacademy/images/week2/fusion.zip)
[All grasshopper script attemps](./images/ccc/gh.zip)
Vinyl cutting
-------------
I used a Roland Camm-1 in our lab to cut some white vinyl stickers.
![](./images/ccc/machine.jpg)
### Designing a vector sketched
I made two sketches, one an axonometric cube stack and the other a some letters. I cut some simple curves that I made on Adobe Illustrator. I made them with the line tool. Gave some thickness to the lines. Made path outlines and then did a boolean union on pathfinder tools to make single outlines. The figure on the left is outlines, the one on the right is just paths. ![](./images/ccc/designing.jpg)
### Testing and setting Parameters
After loading the material as a roll, I used these settings:
Speed: 5cm/s
Force: 180 gf
Depth: 0.250mm
![](./images/ccc/setting.jpg)
I tried the first test cut and it came out perfectly. The circle outside the inner square came out perfectly without cutting through the backing.
![](./images/ccc/test.jpg)
### Loading file and cutting
So I loaded my design file and used the ai Roland plug-in to cut. The cutting was quite fast. Here is a picture of the vinyl still loaded: ![](./images/ccc/cutting.jpg)
### Peeling Vinyl
After finishing, I unloaded the vinyl and cut out the parts separately. ![](./images/ccc/cut.jpg)
I then used a nose-end tweezer and started to remove all the negative parts. It actually took some time, as they were as thin and intertwined with the positives. Here are some pictures of that process: ![](./images/ccc/peel1.jpg)
![](./images/ccc/peel2.jpg)
And this is how it looks like: ![](./images/ccc/peel3.jpg)
I haven't yet applied to any surface, but I will have to do this step carefully, as the parts are quite thin.
### Design files
[AI file](./images/ccc/vinylcutter.ai.zip)
Electronics design
==================
This week is about learning to design a PCB according to a particular microcontroller using its pinout/data sheet by modifying an existing hello echo board.
#### Designing
I chose a hello.echo board based on ATtiny44 as it has the most available documentation. I don't understand completely which microcontroller to chose for what functions. So, I went with this one.
Here is what the actual board looks like
![](http://academy.cba.mit.edu/classes/embedded_programming/hello.ftdi.44.png)
To add an LED and a switch, I started by making a list of the components required:
Components list:
1x ATtiny44 microcontroller
1x 1uF Capacitor
1x header 2x3
1x FTDI connector
1x 10k ohm resistor
1x 20MHz resonator
Added components:
1x LED
1x 1kΩ Resistor
1x switch
1x 1kΩ Resistor
[Data sheet for ATtiny44](http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7701_Automotive-Microcontrollers-ATtiny24-44-84_Datasheet.pdf)
Pinout for Attiny44
![](../fabacademy/images/ED/pinout44.jpg)
#### Creating the schematic
I used [KiCad 5.1.6](https://kicad-pcb.org/) to design my PCB. KiCad is an open source software suite for Electronic Design Automation (EDA). The programs handle Schematic Capture, and PCB Layout with Gerber output (this is what you send to a manufacturere). I started by creating a new project and opened the .sch file in Eeschema.
#### Update libraries
First step was to import all of the symbol and footprint libraries adapted for SMD components. These libraries can be found [here.](http://academany.fabcloud.io/fabacademy/2020/labs/barcelona/site/local/#material/extras/week06/assets/kicad_libraries.zip)
![](../fabacademy/images/ED/LIBRARIES.jpg)
#### Designing schematic
I placed the components listed above one by one, using the place component tool. Then changed properties like annotations and values, by hovering above the component and pressing E which opens the symbol properties window.
I also placed some tags using the tag tool - like GND and VCC, to make the schematic neat and clear.
![](../fabacademy/images/ED/schematic.jpg)
Finally, I generated a Netlist by pressing the green netlist symbol on the toolbar.
![](../fabacademy/images/ED/generate-netlist.jpg)
However I got an error saying that component R1 did not have footprints defined.
![](../fabacademy/images/ED/error.jpg)
So I went back and assigned footprints to the missing part, by going to its properties again, and selecting the correct footprint from the newly installed libraries. And generated the netlist again.
![](../fabacademy/images/ED/addfootprint.jpg)
![](../fabacademy/images/ED/assign.jpg)
#### Drawing traces
Then I opened the KiCad pcbnew part, and found the netlist created and stacked of all components in the middle of the board.
![](../fabacademy/images/ED/ratsnest.jpg)
I first editied the design rules in its menu and set the grid size.
![](../fabacademy/images/ED/designrules.jpg)
The components all have an indicative line connection, so I used that to rearrange them and then added the traces, using the trace tool.
![](../fabacademy/images/ED/arranged.jpg)
After connecting them all, I used the line tool to draw the outline like so.
![](../fabacademy/images/ED/drawoutline.jpg)
Next I exported this as svg with these settings:
![](../fabacademy/images/ED/exportsvg.jpg)
I opened the svg in Adobe Illustrator, made new layers for the traces and outline respectively.
![](../fabacademy/images/ED/ai.jpg)
Then, after checking that the model is in mm, exported both layers separately at 150dpi in png.
![](../fabacademy/images/ED/exportpng.jpg)
#### Creating Toolpaths
I followed the same process as [Electronics Production](../fabacademy/ep.html) week to make toolpaths, mill the board, solder components and test the board.
But this time I used [Mods](http://mods.cba.mit.edu/) instead of Fabmodules. Here's the process:
![](../fabacademy/images/ED/mods.gif)
I could not fabricate this board because did not have access to a lab.
#### At the lab
So steps remaining for this week - mill the board, solder the components, test.
#### References
[Sparkfun KiCad beginners guide](https://learn.sparkfun.com/tutorials/beginners-guide-to-kicad/all)
#### Design Files
[KiCad Schematic](../fabacademy/images/ED/attiny44.sch.zip)
[KiCad pcbnew](../fabacademy/images/ED/attiny44.kicad_pcb.zip)
[SVG](../fabacademy/images/ED/attiny44-brd.svg)
[AI](../fabacademy/images/ED/attiny44-brd.ai.zip)
[traces.png](../fabacademy/images/ED/traces.png)
[outlines.png](../fabacademy/images/ED/outlines.png)
[traces - toolpath for srm20](../fabacademy/images/ED/traces.srm20.rml.zip)
[outlines - toolpath for srm20](../fabacademy/images/ED/outlines.srm20.rml.zip)
Electronics production
======================
This week I made an in-circuit programmer- the FabISP.
FabISP
------
### Making toolpaths
I downloaded the png files for the traces and the interior. I used [FabModules](http://fabmodules.org/) to create toolpaths.
![traces](http://academy.cba.mit.edu/classes/embedded_programming/hello.ISP.44.traces.png)
#### Traces
The major settings for cutting traces: Input image as **.png**
Output file as **.rml**
Output file as **.rml**
Machine: **Roland SRM-20**
Speed: **3.5mm/s** as I was using a new endmill
Origin X,Y,Z as **0,0,0** to match the origin set in the machine locally Tool diameter **1/64"** Offset paths **4**, to clean area around the traces but not very time consuming Overlap **50%**, overlaping the tool paths by 50% of the tool diameter Cut depth **0.1mm** to clean the top copper layer thorugh it's thickness
![trace toolpath](./images/ep/toolpath.jpg)
![interior](http://academy.cba.mit.edu/classes/embedded_programming/hello.ISP.44.interior.png)
#### Interior
Settings for cutting the outline: Input image as **.png**
Output file as **.rml**
Machine: Roland **SRM-20**
Speed: **0.5mm/s** Material depth **1.7mm**, equal to the one-sided FR1 board used Cut depth **0.5mm**, cuts the outline 4 times going 0.5mm deeper with every loop Origin X,Y,Z as **0,0,0** to match the origin set in the machine locally and match the traces file Tool diameter **1/32"** Offset paths **1**, to cut the board from the material
### Milling the board
Cleaned a small piece of one-sided FR1 board with rubbing alcohol Stuck it using a double-sided tape on an MDF base we have pre-installed at the lab, that is levelled periodically. Installed a 1/64" tool Set the X and Y origin on the bottom left corner of the board. Brought the Z really close to the top of the surfect. Loosened the collet and let the bit touch the surface completely. Set the Z origin here. Lifted the Z, loaded the rml traces file and start cutting. Evrything seemed fine. I could see the tool cut though the copper. It took about 15 minutes to cut the whole file. Later, I lifted the Z, changed the tool to the 1/32" endmill to cut the interior file. I set the Z origin again exactly as before. Keeping in mind not to change the X and Y origin. Started cutting the file. Got it done on the first try. I unattached the board using a scraper. ![trace toolpath](./images/ep/traces.jpg) ![trace toolpath](./images/ep/interior.jpg)
### Soldering Components
#### Gathering Components
Edu showed us the best way to do this was to make a shopping list, collect components and stick them on using tape. Later, we update the inventory sheet to keep count in the lab.
A list of all the needed components:
1 x ATtiny44 (Ict44)
1 x 6-pin(2x3) header (J1 ISP)
1 x MiniUSB header (J2 USB)
1 x 20MHz Crystal (20MHz)
1 x 1uF Capacitor (C1)
2 x 10pF Capacitor (C2,C3)
2 x 3.3v Zener Diodes (D1,D2)
1 x 1kΩ Resistor (R1)
1 x 499Ω resistor (R2)
1 x 100Ω resistor (R3,R4)
1 x 10kΩ resistor (R5)
2 x 0Ω Resistor (SJ1, SJ2)
![Gathering components](./images/ep/shoppinglist.jpg)
#### The solding set-up
Tools that I need to solder the components on the board: A schematic diagram that shows what components goes where.
![schematic](http://academy.cba.mit.edu/classes/embedded_programming/hello.ISP.44.png)
The components, gathered on the list. A soldering iron - I used a Weller WES51 with temperature control. Set it to 750F, not too hot, not too slow. A wet sponge, to clean the tip of the iron. Solder wire, Kester without a flux co. A anti-static curved tweezer to place down components accurately. A copper braid for desoldering excess solder. A table-top light, a silicon base to hold the board stationary, and a fan to remove fumes.
#### Soldering order
I started from the complex to the simple, then top to bottom. I soldered the microcontroller first, matched the orientation from from the data sheet. Second, I soldered the MiniUSB, since, it had very tiny trace connections. The zener diodes, have polarities. i soldered them next. Oscar taught me how the way to remember their direction, the electric symbol has a line that corresponds to the Cathode. Similarly, the component is marked with a line in its cathode side. Polarity symbol The rest of the components don't have any polarities, so I soldered them from top to bottom inside-out in this order: R1>R2>R3>R4>SJ2>20MHz>C2>C3>SJ1>R5>C1 and the J1 header in the end, because it had comparatively larger feet
#### Checking connections
I visually checked the board under a lens to check no traces or solders touched each other. Then using a multimeter setting with no resistance, I connected all pin legs to where the traces connected using the schematic diagram. And checked that all beeped, suggesting there was no short. I cleaned the board again, using some rubbing alcohol. This is how my finished board looks: ![Soldering components](./images/ep/finished.jpg)
#### Testing the board
[steps](http://archive.fabacademy.org/archives/2017/fablabverket/students/100/web/assignments/week4/index.html#programming) [or these](http://archive.fabacademy.org/archives/2017/fablabverket/students/100/web/assignments/week4/index.html#programming)
## Final Project
![first sketch](./images/final-project/1.JPG)
Principles, Practices and Project Management
============================================
(old)
![](../fabacademy/images/week1/cubes.png)
##### Week of 29 January 2020
##### Principles and Practices - [notes](https://fabacademy.org/2020/labs/barcelona/local/#material/week01/) + [video](https://vimeo.com/388191611)
##### Project Management - [notes](http://academy.cba.mit.edu/classes/project_management/index.html) + [video](https://vimeo.com/388201669)
make making easier > tool / machine > robotic arm? > infinite axes > modular
I'm interested in making a robot of some kind. A machine that does a specific series of tasks. I read about kinds of [robots](https://wiki.fablabbcn.org/Category:Robotic) according to [application](https://robots.ieee.org/learn/types-of-robots/), [geometry/axes](https://robots.ieee.org/learn/types-of-robots/). Instead of having limited axes for movement. I wondered if the arm could be modular and move in any direction possible. That's how I came to the idea of having robotic modules, that can be versatile for functions.
References
----------
* [Cubelets: Modular Robot Cube Toys](http://hight3ch.com/cubelets-modular-robot-cube-toys/)
![](../fabacademy/images/week1/cubelets.jpg)
I found some projects that have done this in different ways. Many of them are educational toys for kids - meant to learn programming/ coding.
* [Mabot by bellrobot](https://www.bellrobot.com/mabot.html)
* [Project Bloks](https://www.kickstarter.com/projects/28168150/mabot-teach-kids-robotics-and-programming)
* [Cubroid Coding Blocks](http://codingblocks.cubroid.com/)
* [Sphero's Spark](https://www.sphero.com/sphero-sprk-plus)
* [Sphero's Spark](https://www.robospace.cc/tacobot-en/)
* [Tern by TUFTS](http://hci.cs.tufts.edu/tern/) programming with wooden Blocks
![](../fabacademy/images/week1/block-references.jpg)
Some projects that do this in different ways:
[Mblocks](https://interestingengineering.com/m-blocks-robotic-cubes-that-can-build-themselves) and [Mblocks 2.0](https://www.slashgear.com/m-blocks-2-0-revealed-now-these-cube-robots-can-collaborate-30597942/): are self-assembly cubes
![](../fabacademy/images/week1/mblocks.jpg)
[Cubli](https://idsc.ethz.ch/research-dandrea/research-projects/archive/cubli.html) can balance on it's edge and corner
![](../fabacademy/images/week1/cubli.jpg)
[Topobo by Tangible media, MIT](https://tangible.media.mit.edu/project/topobo/), has kinetic memory. It can record and playback physical motion.
I read about [self-reconfiguring robots](https://en.wikipedia.org/wiki/Self-reconfiguring_modular_robot), and discovered that while a cube can be combined with other cubes according to functions, the same cube cannot do multiple functions. Therefore, I want to design a cube that does multiple functions, that can be modified by chaning faces or edges or corners of the cube.
![](../fabacademy/images/week1/mtm.jpg)
The modular approach that [Machines that make](http://mtm.cba.mit.edu/) project takes, so the application is up to the user is what I want to follow while making this robotic cube.
Maybe make a flying one? Like a ball drone?
![](../fabacademy/images/week1/snitch.jpeg)
2\. Project management
======================
This week I learned about version control, web development using SSGs, and sketched out an initial final project idea.
Git
---
I've used git a little for my Master's documentation. But till now, just used some basic commands like:
`git init` to initialise a new repo
`git status` to check what's happening with the current directory
`git add .` to add all changes from the working directory to the staging area
`git commit -m "action msg"` to commit changes from the staging area to the local repo
`git push` to push changes from the local repo to the remote repo
`git pull` to pull files from the remote repo to the local repo
I find this diagram very helpful to visualise the directory structure:
![](../fabacademy/images/week1/git-structure.png)
To learn more about branching, merging and other actions, I did a tutorial:[](http...)
Found my existing SSH key using `~/.ssh/id_rsa.pub`
Copied and added it to my FabCloud account.
Then I cloned the default repository to a local folder using:`git clone git@gitlab.fabcloud.org:academany/fabacademy/2020/labs/barcelona/students/mitalee-parikh.git`
Web Development
---------------
I recently learned how to make a website using HTML, CSS with a Bootstrap framework. To develop my webpage, I wanted to explore different Static Site Generators before fixing on one. So I started by setting up both Mkdocs and Jekyll. Hugo was another option I want to look into in the coming weeks.
Setting up jekyll
-----------------
I followed this [Jekyll tutorial](https://jekyll.org) by [Giraffe Academy](https://www.youtube.com/playlist?list=PLLAZ4kZ9dFpOPV5C5Ay0pHaa0RJFhcmcB). Before installing jekyll, I checked if I had these supporting things, and updated them:
1\. **Homebrew:** to easily install software packages
2\. **Ruby:** programming language that jekyll is written in
3\. **RubyGems:** package manager for ruby
4\. **Bundler:** to track and install gems and versions in a group, for jekyll themes
Homebrew, Ruby and Gem were all pre-installed.
So I checked versions using
`ruby -v` and `gem -v`
I installed bundler with `gem install jekyll bundler`, but got a permissions error msg.
So, I tried it with sudo like so: `sudo gem install jekyll bundler` and it worked.
And then to make sure checked version: `gem install jekyll bundler`
To view the changes on my local server `http://localhost:4000` I used `bundle exec jekyll serve` the first time and `jekyll serve` everytime after.
### Setting up Mkdocs
Setting up Mkdocs was a similar process. Intalling and upgrading package manager pip `pip install --upgrade pip` to install mkdocs: `pip install mkdocs`
To view the changes on my local server `http://127.0.0.1:8000` I used `mkdocs serve`
### Themes
I tried to clone and modify some jekyll themes I downloaded from [rubygems.org](https://rubygems.org/). While pushing it to gitlab, I wasn't sure what files to keep from the default fabcloud repo. So I replaced them all, but there was an issue with my pipeline. I think it has something to do with the config.yml file. While I figure that out, I'm using this default template to document my process.
### Useful links
* [Jekyll](http://jekyll.org) [tutorial by Giraffe Academy](https://www.youtube.com/playlist?list=PLLAZ4kZ9dFpOPV5C5Ay0pHaa0RJFhcmcB)
* [Markdown](https://en.wikipedia.org/wiki/Markdown) [basic tutorial](https://www.markdowntutorial.com/)
* [Mkdocs guidelines](https://www.mkdocs.org/)
### Misc Practices
Before pushing, I used `ncdu` to check sizes of files. To compress my images I installed and used [ImageMagick](https://imagemagick.org/index.php). I found it very efficient to quickly convert or compress images for the web, and also to make quick GIFs.
After some trial and error, i figureed these basic commands and settings I can use for my workflow:
To compress photos taken from my phone:
`convert IMGname.HEIC -resize 25% -quality 50% -density 72 jpg:extent=300kb IMGnewname.jpg`
To compress images taken as screenshot from my computer:
`convert Screenshot\ 2020-02-18\ at\ 10.54.27\ AM.png -resize 50% -quality 50% -density 72 jpg:extent=300kb newname.jpg`
To make a quick GIF:
`convert -resize 25% -delay 15 -loop 0 IMG_1380.HEIC IMG_1381.HEIC IMG_1382.HEIC IMG_1386.HEIC IMG_1387.HEIC IMG_1388.HEIC animation.gif`
And to check the existing properties of an image:
`magick identify -verbose focus.gif`
I also check individual file sizes by changing current directory in terminal and using `du -sh *|sort -n`
docs/images/final-project/1.JPG

63.1 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment