Quick reference

Weekly assignments

Key: 💯 indicates especially successful weeks and/or weeks that I expect will be useful for others.

1Project prototyping

I imagine building an artifical skylight using mirrors and optical effects to create a physically-accurate illusion of an infinitely distant sun in a blue sky. (Note: This project prototyping page is deprecated. I eventually go with a different idea.)

2 Computer controlled design

I cut a star key sticker out of vinyl and use a laser cutter to make tinkertoy-like toothed polygons out of cardboard. Success level: learned how to use equipment.

3 Electronics production

I mill my first PCB, learning how to solder and "stuff" (add electrical components to) boards.

4 3D scanning and printing

Using OpenSCAD (CAD software), I design a three-dimensional celtic knot that envelops an icosahedron. I 3D print it and it turns out great! I also 3D scan various shapes, the best of which turns out to be my wallet.

5 Electronics design 💯

Using the KiCad software, I design my own circuit. Success level: Exceeded weekly expectations. It eventually worked well enough to program, and I took a decent amount of notes.

6 Computer-controlled machining

Using OpenSCAD (CAD software), I design a parametric shelving unit. The code lets you choose the number of shelves and also packs the pieces densely to reduce the number of cuts. Success level: The design is robust, but the shapes were the wrong dimension to print.

7 Embedded programming 💯

Using KiCad, I modify the hello-world board to have an LED. I learn how to write programs in C which control the signals on the pins of the microcontroller. I learn all about PCM (pulse-controlled modulation) which lets you control the brightness of an LED by switching it on and off faster than humans can see.
Success level: Amazing! Read this for detailed example programs to run on a board.

8 Molding and casting 💯

I attempt to make a pumpkinoid shape for Halloween. I design it in OpenScad and prepare to mill it out of the provided machineable wax. The project goes badly through several iterations of trial and error. Eventually, I change tack and instead make a flat triforce shape which is easier to mill. Success level: Learn from my many, many mistakes. I took notes.

9 Input devices

I attempt to make a step-response input combined with a speaker output. I do not succeed, but I learn some things.

A Output devices

I make my own speaker and learn how to use the hardware PCM (pulse-controlled modulation) on the ATTiny44 to generate sound. The speaker was very quiet, but it did work. I learned about using MOSFETs to protect microcontrollers from devices (like speakers and motors) that draw large, board-frying amounts of current. I learn how to make a four-pin connector. From the ashes of the week before. I documented many mistakes.

B Group project

As a group, we all build a milling machine (like the Roland) starting from some motors, parametric design files, and code for networking / running motors. I'm on the electronics team, and nothing works for days and days until finally it does, it all comes together, and it only takes a week.

C Interfaces and applications 💯

I learn how to use Nodejs and web sockets to toggle an LED light on a pcb board by clicking a button on a local html page. In this report, I provide all of my code and some detailed documentation.

D Networking and communications

I successfully establish contact with an infrared camera over TWI (I2C). (Its eight-bit address is 0xB0.) First I use an attiny45 and bitbanging with Neil's predesigned circuit, then I design a board with an atmega328p and use built-in TWI registers.

E Wildcard—Embroidery

I learn to use a computer-controlled embroidery machine. I use a proprietary hand-holding software suite to generate a pattern from a raster image. I experiment with color gradients, which are otherwise difficult to do by hand. I explore, but do not finish, generating embroidery patterns in code.

F Final project 💯

I make a device which tracks your head position to control the camera position in a virtual 3D scene. The effect is that your flat computer monitor behaves like a window into a virtual world. The project uses a wearable pair of LEDs and an infrared camera; the camera communicates over I2C to a board, which communicates over serial to a computer. The computer communicates over web sockets to a webpage rendered in threejs. Software written in Nodejs/javascript. Bonus: my progress notes.