Introduction: Collaborative PCB Intro
This Instructable page is the result of a workshop that took place during the 2016 edition of PIF camp in Slovenia.
The main objective was to introduce how to design, make and program an electronic circuit.
Other projects can be found on Ljudmila's wiki.
Step 1: Design
To allow a collaborative design, we used an online PCB* tool such as circuits.io or upverter.com.
The circuit is rather simple, it uses a small Arduino compatible microcontroller called AtTiny, an LED, a resistor to protect it, and a coin cell battery holder hidden on the back.
If you want to modify or download it, the design can be found online, enjoy!
Once you're happy with the design, you can convert the gerber to a png file using gerbv for example.
*PCB: Printed Circuit Board
Step 2: Etching
Once the Design is done, the best is to print it on a transparent film.
If the pads and traces are fairly thick (more than 1mm), normal paper can be used but it's not the ideal. If you try this hack, remember to invert the image before printing, and put the printed side directly on the PCB to get the best precision (the paper thickness would diffuse UV light otherwise).
In our case we exposed the PCB to the UV for 1min 30sec, and move it (hidden from light) to a developing bath for 1min 30sec too (it's good to shake it a bit).
The last step is a bit longer, the "boiling" acid* bath took about 20 min but it depends on a lot of factors so just check it every 5 minutes, the pictures should give a good idea of what to expect.
More detail can be found here for example:
quinndunki.com/blondihacks/?p=835
*Edit: by "boiling" acid I indeed meant a bubble bath with an aerator, thanks to PhilS43 for the precision ;)
Step 3: Assembly
If your PCB has through hole parts, a bench drill can help but most of the time you can just bend the pins and solder the components on the surface.
To cut the PCB outline, the most reliable was a metal saw, but it was long and fastidious (don't forget to drill before cutting though).
As we have a single side PCB, a little gap under the components was needed to allow soldering on the same side.
Step 4: Programming
To avoid using a socket for all the AtTiny chips, we directly soldered them on the PCB but used a socket to program them by connecting from the top. You can notice on the 1st picture, a bit of white tack was added to keep the connection reliable.
On the software side, you 1st need an Atmel programmer, or you can make one with an Arduino, here is how:
Programming an ATtiny w/ Arduino
Arduino board as ATtiny programmer
The firmware we made was very simple, just a heart beat (see attached file to download it):
// to progran the ATtiny: http://highlowtech.org/?p=1695
int led = 2; int blinkTime = 30 * 8; // 30ms (*8 because 1MHz instead of 8MHz)
void setup() { pinMode(led, OUTPUT); }
void loop() { digitalWrite(led, HIGH); delay(blinkTime); digitalWrite(led, LOW);
delay(blinkTime);
digitalWrite(led, HIGH); delay(blinkTime); digitalWrite(led, LOW);
delay(3*blinkTime); }
Attachments
Step 5: Extra
This workshop was just an introduction so every step was kept as simple as possible.
A lot can be improved, modified, hacked.
A simple Light Dependent Resistor can replace the normal resistor to adapt to ambiant luminosity and allow more brightness in the day to see the blinking, but decrease it in the night to save power (see 1st pic).
Another participant wanted to go further and used an RGB LED with a potentiometer to control it (see 2nd pic). This is documented here: