notes - james-bern/CS345 GitHub Wiki
part 0: about the course
- emphasis
- more "how"; less "why"
- very little theory
- lots of hands-on ("hobbyist") work
- the "why" is also cool!--it's just not going to be our focus
- more digital fabrication; less robotics
- robotics is also cool!--it's just not going to be our focus
- tools and techniques you can keep using after the course
- the printing & cutting services we'll use are cheap and accessible
- a great 3D-printer (BambuLab A1) is under $500 (NOT $50,000)
- most software we will use is free (besides, unfortunately, SolidWorks; but OnShape is pretty accessible)
- code has very few dependencies
- fundamentals
- projects will have only minimal starter code
- projects may not always be "flashy" (our robots will have fewer features than most LEGO robots)
- more "how"; less "why"
- lectures
- tuesday lecture will be live math-ing/coding/CADing and is mandatory
- thursday lecture will be fun (ethics, current events, a paper, guest lecture, etc.) and is optional
- homework
- homework will primarily involve making stuff
- you may also need to do reading and write summaries
- lab
- lab is time for you to...
- learn specific tools/techniques (3D-printing, soldering) in a supervised setting
- work on the homework
- you are expected to have read and started the homework before lab
- lab is time for you to...
- learning goals
- how to write straight-forward, relatively-fast, flexible ("boring") code
- arrays are the one true data structure
- "plain old data" structs (no constructors, no inheritance)
- for loops (using an index; using a pointer)
- "staight shot through
main
" (helper functions better actually help us with something)
- how to create straight-forward, functional ("boring") geometry (2D and 3D)
- in code (exporting DXF; importing & exporting STL)
- using CAD software (LAYOUT, SolidWorks, ZBrush??)
- programmatically (Manifold / OpenSCAD)
- how to fabricate geometry
- 3D-printer (by self; via online service)
- water jet / lasercutter (by self; via online service)
- how to make a machine
- adding threads (tapping, press-fit nut, T-slot nut)
- bearings
- how to make a circuit board
- bread-boarding
- how to make a robot
- how to write straight-forward, relatively-fast, flexible ("boring") code
- how to succeed in the course
- be willing to draw (and bring paper and pencil!)
- be willing to do repetitive ("boring") work
- be willing to ask questions (not asking questions about machines when uncertain is physically dangerous; you must ask questions in you're unsure what you're doing)
- have zero or more prior experience with digital fab or robotics
- know C or be willing to learn it quickly
- we will call
malloc
/calloc
,memcpy
,fopen
&fclose
,printf
/sprintf
/fprintf
like they're our bff's - we will make
struct
's; lots and lots of boringstruct
's (STL stl = {};
) - we will use pointers (
&array[i]
/array + i
, ...)
- we will call
- expect to spend 10-15+ hours per week on homework
- start homework early if you intend to finish it 🙂👍
topic: mechanical
notes: from material to machine
- material is metal or plastic
- manufacturing (fabrication) means turning raw material into a part
- a machine is made from parts
- a machine tool (3D-printer, water jet, mill, lathe, drill press, broach, brake) is a machine for making other parts and machines
- additive manufacturing means adding material (glue gun, laying bricks, 3D-printer)]
- subtractive manufacturing (machining) means removing (cutting) material (scissors, mill, lathe, water jet)
- assembly means putting different parts together (into a machine)
homework: load a DXF
- do NOT try to parse the entirety of the DXF spec; just parse one of these (thank you John Burkardt)
https://ozeki.hu/p_1116-sample-stl-files-you-can-use-for-testing.html
homework: load and save an STLthe power of digital manufacturing (from geometry to part)
- geometry is the shape of a part
- modeling means creating geometry on the computer
- DXF is a file format for 2D geometry
- STL is a file format for 3D geometry
- CNC (computer numerical control) is a class of machine tools that are controlled by a computer
- G-code is a programming language for CNC machines
- G-code is typically produced (semi-)automatically from geometry
- ✨ if we can model it, we can build it
3 TODO: designs, solidworks, layout, slicer, * CAD (computer-aided design) is the use of compute
2D
3D
Cheat Sheet
- Bambu Studio
- if you have overhangs, don't forget to
Enable support
- if you have overhangs, don't forget to
- Layout
- a reasonable hole for tapping an M3 screw is 2.5mm
- a reasonable through-hole for an M3 screw is 3.4mm
- a reasonable through-hole for the head of a socket cap M3 screw is 6mm
- a reasonable wall thickness for PLA is 2.0mm
- don't forget to Clean your sketch at the end! (removes duplicate lines, etc.)
- KiCad
- mashing escape can be helpful to deselect things
- SMT is surface-mount; THT is through-hole
- have to double-click to assign footprint
- Inspect -> Measure Tool
Insert
on Mac isFn
+Enter
- double-click to finish drawing a line
- the cross section of the switch pins is a rectangle (pythagorean theorem let's goooo)
- F is front; B is back
- (pcb) if you get something off grid, you can use M to move it back on
- Soldering
- use right gauge of wire for stripping or else the wire will break when you use it
- be very fast (and not too hot) when soldering to the switch or you will 100% melt it
- WASH YOUR HANDS after soldering (do NOT touch your mouth)
- LED circuit through-hole PCB
- LED circuit surface-mount PCB
2d cutting
(one project that goes through all the techniques would be good)
wheels?
OMAX LAYOUT
building a box with standoffs sounds cool
add some motors?
vinyl cutting
some surface finishing
? silicone casting
T-nuts https://www.instructables.com/How-to-Build-your-Everything-Really-Really-Fast/
maybe a lamp?
-
water jetting
-
standoffs
-
deburring tool
-
tapping
-
reaming / press fitting ?
3d printing
solidworks square nut press fitting teardrop shapes
✨ OpenScape + ShapeWays for "impossible print" (powder bed)