This week, I learned how to mill a printed circuit board (PCB), populate it with itty-bitty components, and program it to become a programmer.
To get started with creating this USB-lookalike PCB, we used the CNC milling machine to etch in a circuit onto a copper plate, and then cut it out. Both processes used different vector files and drill heads. Unfortunately, the first time I milled the board, the copper plate was slightly uneven on the platform, and so some of the copper wasn't etched all the way. This could have created a short circuit, so I did some surgery by hand to engrave out the unfinished copper paths. I also had to carve out a little copper rectangle at the tip of the PCB to ensure that the voltage and ground never touch. Overall, the millilng process is simple, but the results are impressive, even with some parts done by hand (in my opinion, it adds character).
After the PCB was printed, I got ready to populate it with the following components:
I taped down my circuit board and used the smallest soldering tip I could find. This worked decently, but using a microscope to look at what I was doing made my soldering cleaner and more efficient. These are the schematics I followed as reference for where each of the parts should be placed.
I found it really interesting that we needed to make a jumper to connect Vvv to the Vprog pin on the ISP header so that we could program the tiny45, and then would later remove that solder bridge. Anyway, before programming it, I double checked all my connections and dowloaded the firmware on the Linux partition of my laptop. I hooked up my device to my laptop, and the little red light that meant it was working was the best sight I'd seen that day! I initially tried to program it using the given programming unit, but the make flash command didnt work on the first few tries, so instead I decided to program it with a labmate's finished programmer. We hooked up my to-be-programmer to his programmer and to my laptop, ran make flash, make fuses, lsusb, and make rstdisbl. Then, I disconnected the Vcc to Vprog pin jumper, and voila! I was done!