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)

  • 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

  • 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 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 boring struct's (STL stl = {};)
      • we will use pointers (&array[i]/array + i, ...)
    • 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)

homework: load and save an STL https://ozeki.hu/p_1116-sample-stl-files-you-can-use-for-testing.html

the 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
  • 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 is Fn + 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

image

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)

motors

sensors