viernes, 19 de marzo de 2010

aToy GBA GPS, my new DIY project

The picture above shows the ingredients of my next DIY project:
  • Game Boy Micro (small version of the Game Boy Advance, AKA GBA)
  • MiniSD M3 perfect flash card, for using homebrew games in the GBA/GBM
  • Link cable (shown cut in half in the picture)
  • Custom Nintendo screwdriver (not really necessary, but just in case)
  • SKYLAB SKM53 GPS module (which I got from ctombaugh on eBay, excelent deal, BTW)
The purpose of all these ingridients is for making a DIY GPS tracker/Bike computer. Since this kinds of differ from all the other projects in the web page (more hardware and music related) I decided to make a new blog just for this project: 
I will probably end up double-posting some of the stuff, the important things, but will keep most of the post related to that project in its own blog.
I also created a SourceForge project for the software that I develop for this project:

domingo, 10 de mayo de 2009

How I make my PCBs: Step 1 getting the design to the

Hello everyone (the 2 of you), I am back!!!

This is a small tutorial on how I make my PCBs. I use a rather cheap and simple way of making PCB which creates good enough results for most of the usual needs that I have. This method is probably not suitable for SMD, but feel free to try...

On this first part of the tutorial what I show is the way to get the PCB design into the single sided copper clad board, ready to be etched in next step.

First thing I do is design my PCB (or download it from the internet). To design my PCBs I use KiCad. It is free and availble for both Windows and Linux (I think the support for MacOSX is limited... solution... install linux!!!!). The biggest problem of KiCad is not being able to find a particular component in the library, but you can always roll your own.

Once you have your design, you need to print a mirror version of the design into transparency paper. You should either use a laser printer or a photocopy machine, an inkjet printer does not work for this procedure to make PCBs. What I normally do is to use my inkjet printer to print it to a normal paper and then photocopy it to a transparency paper.

From the copper clad board, cut the section you will be requiring for your PCB. I normally use scissors or a small saw for this task. Once you have your section of the PCB, using a steel wool, you need to polish the PCB.

The next step is to put the PCB design from the transparency on top of the copper clad board with the tonner side in contact with the copper. I use a little bit of tape to hold the transparency paper in place:

At this point you should get yourself an iron and an ironing board. In case you do not have these tools, do yourself a favour and buy them... they are extremely useful for making PCBs and other DIY activities and you will make your mum proud when you tell her you are buying one (remember not to let her know what do you want it for). I normally put a sheet of paper, then the PCB with the transparency on top and then another sheet of paper.

Heat up the iron to maximum temperature with no steam and then put it over the PCB. You need to apply a little bit of preasure, but not much, and leave it over the PCB for around 1 minute. Start lifting the transparency paper from the PCB slowly, very slowly...

Due to the heat, the PCB traces should be transferred from the transparecy paper to the PCB. If you notice that the traces are not uniform enough or that some traces were not transferred to the board correctly, draw the missing traces with a permanent marker. I normally redraw all the traces with the permanent market whether the transferred traces are good or not. If there are too many lost traces, you might remove the existing traces using steel wool and reuse the same board to try again.

In next step I will show how to etch the board to remove the copper not covered by the PCB design.

lunes, 4 de mayo de 2009

Arduinome phase 4: Making the enclosure (II): front panel update

As I mentioned in my previous post, lately I have not been able to post or work on DIY stuff. However, since we had a long weekend last week and the weather was amazing in Madrid, I spent most of my sunday working on some of my unfinished projects, including my monome enclosure. The picture above shows the current status of my wooden faceplate. My plan is to put 4 potentiometers in the area on the right. The PCBs will also go underneeth that area, hopefully reducing the height of the whole thing (compared with the usual placement underneath the buttonpad).

Still missing the lateral panels, more sawing, more sanding and more varnishing. Now that days are long and the weather is nice, I should be able to finish soon, but who knows... "Salir de Cañas" in Madrid in the summer is too tempting...

miércoles, 1 de abril de 2009

No news... sorry

Hey readers out there, sorry for the lack of posts recently. I am traveling like crazy for work with little spare time to blog or work on my diy stuff. I am hopping to have some time next week, but who knows.

Some interesting things that I wanted to blog about are:

domingo, 1 de marzo de 2009

Arduinome phase 4: Making the enclosure (I)

My first choice for my Arduinome enclosure was to go for the MachineCollective faceplates with a custom made box. While waiting for a reply from the MachineCollective people, I decided to start building the case, so I went to my local DIY department store. I bought there a Mitre Box, a saw, some screws, white glue... For the sides of the box, I was going to buy wood lath. Looking at choices of wood lath, I found a 9mm x 9mm square section wood lath, 2.4m long which I thought that could be used for the faceplate, since 9mm is exactly the distance between two buttons. After many hours of sawing, sanding and glueing, the result is the following:

Regarding the faceplate it still requires filling in some gaps with wood putty, some more sanding and varnishing.

For the rest of the box I also plan to use the same wood lath, so that means more sawing, more sanding and more varnishing... It is still going to take some time to have it finished, but I will get there.

lunes, 23 de febrero de 2009


A dorkbot is a meeting of people who enjoy doing strange things with electricity. It happens in cities all over the world with different frequencies, sometimes once a month, sometimes less often (depends on the geekiness of the people in the city, I assume).

So I went to my local Dorkbot last Friday. It had been almost 2 years since my last time (I sound like an AA guy). My last time was THIS time, when I actually became an spontaneous presenter of the work I had done in the "circuit bending" course I had attended to. Since then it became very hard for me to attend, if I was in the city I was not available at the time of the dorkbot and viceversa, but last Friday I had no excuse to miss it.

The agenda was the following:
  • "MIDI for dummies"
  • "MIDI for pros: DIY contoller scracth, Contrologic AP"
  • "Rompetechos: una plataforma aérea abierta"
The Midi for dummies showed how to use arduino to send midi signals to ableton live. There is a lot of info on this topic here (in Spanish, sorry) (I got this link from the dorkbot mailing list, thanks again). UPDATE: similar thing but in english here. It was very interesting to find out there is a driver to convert any serial signal to midi, making it very easy to implement midi over USB with arduino... this actually triggered some ideas in my mind (which is the whole purpose of the dorkbots, IMHO).

The Midi for pros was kind of disappointing. A guy had made a platform which was very, very, very similar to what can be done with MidiBox, but he had done it from scratch, only using MidiBox as a reference. He showed two great midi controllers, I have to admit that, but I did not see anything new in them... it seemed to be what you can do with Midibox. Maybe the scratch wheel he showed can not be done with midibox, but that is something that I am not really intrigued with...

I left after the "Midi for pros" presentation, so I can not tell about the remaining presentation, sorry... since all the music stuff was done and I was starting to get hungry, I decided to leave, although it did seem to be an interesting presentation (check it out here).

If you want to to find if there is a dorkbot in a city near you or you want to start a dorkbot in your city click here.

If you live in Madrid, check out the local dorkbot here. Since that webpage is not updated very often, make sure you subscribe to the announce mailing list and the "discussions" mailing list.

lunes, 16 de febrero de 2009

Benge, Twenty Systems

I got this CD/Book called "Twenty Systems" today. I heard about this CD in "Fluido Rosa", a radio program from the spanish public radio called Radio3. Bian Eno said about this CD:


The CD has 20 songs, each of them made with a different synthesizer built on each year from 1968 to 1987. The booklet includes pictures and description for each of them and a small description of how the track was made. It starts with old analog synths (Moog modulars, ARPs) and ends with digital synths from the late 80's (Xpander, Synclavier...). Some of the big misses are: MiniMoog, Korg MS-20, Prophet V, Roland Juno, TB-303... Hopefully a second part will come out soon with other synths.

I got the CD from ROTOR discos.
You can find more info, samples and pictures of the booklet in this myspace webpage.

Musicwise it is interesting, but not the kind of CD you listen to over and over again, worth listening to though. 100% recommended if you drool when watching old synths (like I do).

domingo, 15 de febrero de 2009

Arduinome/Monome + Polygome + Ableton Live, instructions and video

I am going to explain in this post how to run Arduinome/Monome with Polygome triggering sounds from Ableton Live in a PC with Windows Vista (it should be quite easy to translate these instructions to any other midi sequencer or similar OS). Polygome is IMO one of the coolest apps for monome.

I am assuming you have already installed your monome and now all the basics about it (monomeserial, setting the right prefix, etc...).

First thing you need to do is to install Midi Yoke. At the time of writing this post, there was no Vista version for Midi Yoke, but the XP/NT version happens to work if you disable Windows Vista User account control (Control Panel=>User Accounts=>Disable User account control). You need to disable the user account control both when installing Midi Yoke and when using it. If anyone knows an alternative for Midi Yoke that works with Vista, please let me know.

Once Midi Yoke is installed, open Ableton Live "Midi Sync" configurations (in options=>preferences) and Enable the "track" and "Sync" from "In From Midi Yoke: 1" and from "Out To Midi Yoke: 2". Add your synth of choice to a Midi channel and arm it. Press the Play button (this is necessary to generate the sync clock).

In Polygome:
  1. Select "Out To Midi Yoke 1" as midi output destination
  2. Select in the clock options "beat clock" as clock source.
  3. Disable the internal clock
  4. Set the "Send beat clock to" to "Out To Midi Yoke 1"
  5. Set the "Receive beat clock from" to "In From Midi Yoke 2"

Pressing any Monome button should trigger the predefined patterns and start making sounds.

Here is a video I made using Polygome:

The drum sounds are the same I used for my AVR synth demo here. The synth sound is one of the synths available in Ableton Live. Eveything was configured as explained above. Sorry about the poor video and audio quality (and my lack of skills with Monome, I need to practice more).

More arduinome stuff here

jueves, 12 de febrero de 2009

Arduinome phase 3: programming Arduino

Once the Hardware is completely done, the next step is to program the FTDI chip with the correct device name and the Arduino with the Arduinome firmware.

Programming the FTDI chip

The FTDI chip in arduino is the chip responsible for doing the USB connection between the PC and the microcontroller in the Arduino board. The idea of programming the FTDI chip with a different device name than the default is for the "Arduinome serial" application to recognize the device as an Arduinome. Follow these steps to program the FTDI chip:

  1. Download an install the D2XX drivers and the MProg application (in that order)
  2. Connect your arduino to the PC and run MProg.
  3. Select Device => Scan from the Menu. You should get a message like the following in the box bellow:

    Number Of Blank Devices = 0
    Number Of Programmed Devices = 1

  4. Select from the menu "Tools" => "Read and Parse".
  5. At this point I saved the configuration I did "File" => "save as". This is not really needed, but I did it just in case I happen to screw up later on, to be able to recover the original configuration.
  6. Check the “use fixed serial number” box and change the serial number value. Your board should have a serial with this shape: a40h-xxx (I'm using : a40h-des)
  7. Save the configuration ("File" => "save as")
  8. Once saved, program the FTDI by clicking on the flash icon (or doing "device" => "program").
  9. Unplug / plug back your board from the usb port.
  10. Download and install Arduinome serial.
  11. Run Arduinomeserial, you should see a device with the name you gave your arduinoe in step 6.

Programming the Arduinome Firmware
This step is quite simple if you have a relatively new Arduino board (the NGs with Atmega168, Diecimila, Duemilanove and any other newer boards). The steps to follow to program the arduinome firmware are the following:
  1. Download the latest arduino software (if you have not already).
  2. Follow the instructions from the Arduino website to figure out how to install and use the Arduino.
  3. Download the Arduinome firmware.
  4. Open the pde file in the arduinome firmware with the arduino application, verify and then "upload to the I/O board".
That's it!!! You can now connect your Arduino to the arduinome shield and the button pad, connect arduino to the PC, start Arduinome serial... and enjoy.

My particular case was not so easy... I was using an old arduino board, an NG with Atmega8 instead of Atmega168, which was not compatible with the available firmware. I could have just bought a preprogrammed Atmega168 for a few dollars, but that was too easy and would have taken a few more days to get my monome working, so I had to analyze the problem deeply and try to find a solution. The incompatibilities with the firmware were because the firmware was using TIMSK0, TIMSK1 and TIMSK2 registers to configure the timers and those registers are not available in Atmega8, the Atmega8 uses only the register TIMSK instead. After reading through the datasheets of both the Atmega8 and the Atmega168, I found the solution. Here you can find my modified version of the firmware, supporting both the newer board (with Atmega168) and the older NGs (with the Atmega8).

So I had the arduino ready to be used. I plugged it in and unfortunately my 74164 was connected backwards in the socket (ouch) and nothing was working. The 74164 got damaged and when plugged it correctly, each button press was being detected as if the whole line of buttons were pressed. Replacing the 74164 fixed this issue. LEDs were working correctly at first try, except for some (7) of the LEDs that apparently got burned when soldering them. I had to remove the damaged LEDs and solder new ones.

And that's it, that is how I got my arduinome working!!!
The next step is to do the enclosure for the arduinome, which I still need to figure how, although I already have some ideas.

I will have a video soon (whenever I manage to improve my "monoming" skills).

Check out the whole Arduinome build log here.

martes, 10 de febrero de 2009

Arduinome phase 2: soldering components (and II)

After soldering all the diodes and LEDs, I worked on my personal approach to the Arduinome Shield. Instead of buying the shield in the monome blog I decided to make my own using a stripboard. There are frequent group buys of the arduinome shield in the monome forum and it is not particularly expensive, so if you are not experienced in electronics, I recommend you go for that option.

I use sockets for all the chips, it is safer since the heat of the soldering iron does sometimes burn them. This is how my stripboard looked like:
Once the stripboard had all the components soldered, I soldered wires to connect the stripboard to arduino. This is how the stripboard looks when connected to the Arduino:

The last step was to connect the button pad to the shield. This is probably the step where it is easier to make a mistake and where you can probably benefit more from using the "official" Arduinome shield. This is how it looks like at this step:



So I am done with the soldering iron (unless I made a mistake in this whole phase).

I got the schematic for this phase from Julien Bayle's webpage here, but there are other sources.

This phase is over now. The next phase consists on programming the Arduino.

Check out the whole Arduinome build log here.