This week's goal: fabricate an electronics board, specifically the FabISP. This is a programming board that will let us program other microcontroller boards, in the same fashion as other programming devices like the AVRISP of Atmel. It is an easy board to make, and very useful, since we will be using it later on to load the bootloader in other microcontroller boards we create. It is a cheap replacement for the AVRISP, which costs around 37 USD. The FabISP's cost is around 5 USD + some time spent on the fabrication.
The fabrication technique used in the FabAcademy is CNC milling, and in FabLab BCN we use the Roland Modela MDX-20 for such purpose. There is a computer connected to it, with fabmodules already installed in Ubuntu, so fabricating the board was just a matter of following the tutorials, with the guidance of Tomas and Anastasia, who already have experience using this machines. We had make sure that we used 1/64" drill bit for milling the traces, and 1/32" drill bit for cutting the board. We also had to pay attention to the origin coordinates we chose, and remember them for future use in case we wanted to mill the traces again. Below is the image of my FabISP after being milled.
After fabricating the board, came the soldering. I already had experience soldering through-hole components, but not surface mount components. Luciano at the lab gave us a quick tutorial for soldering these devices. After watching him, I was good to go and soldered my board with no problem. I had to be careful of choosing the right components and following the schematics available at the tutorial website. Below is the image of my FabISP after being soldered.
Now came the programming phase. Being that I was the first one to finish my board, I had to use the AVRISP2 programming device available at the lab, to program my FabISP. I did so on Ubuntu 12.04 64-bit version. The programming was fine, except that after being programmed and with jumpers removed, my computer did not recognize my FabISP. I got the following error message when executing sudo make fuse:
jpfize@ubuntu:~/Desktop/firmware$ sudo make fuse
avrdude -c usbtiny -p attiny44 -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m
avrdude: Error: Could not find USBtiny device (0x1781/0xc9f)
avrdude done. Thank you.
make: *** [fuse] Error 1
I checked the soldering several times and everything was fine physically. Luciano decided to check my FabISP on his Mac laptop, and it was successfully recognized. You can see a picture of his Mac recognizing my FabISP below.
I know now that there is a problem with Ubuntu 12.04 64-bit version recognizing the FabISP. I tried several solutions found at different forums online, but none worked. It remains a work to be done. But that did not stop me from wanting to be a "father" of other FabISPs, so in collaboration with classmates Jean-Pierre and Francisco we set up the programs in their Mac laptops. We came to a problem that was fixed by editing some firmware files. Francisco found the solution and Jean-Pierre successfully implemented it. You cana find more information in their websites. After doing this debugging, I was able to program Jean-Pierre's FabISP with my FabISP. Below you can see a picture of father (mine, left) and son (Jean-Pierre's, right).
Afterwards my FabISP board was used by several other people to successfully program their boards. My FabISP was recognized on another machine running Ubuntu 12.04 32-bit version, so I am guessing there is a problem with the 64-bit version.