October 23, 2010

Arduino-ISP: Burn Bootloader Tutorial

This is a simple tutorial on how to burn Arduino bootloader on an ATMEGA chip, using Arduino as an ISP (In-System Programmer) as shown here in the option named "targeting an AVR on a breadboard".

If you want a ISP more stable than a breadboard you can build something like this one.

(1) Start by plugging your Arduino board to your computer:


(2) Then load arduino SDK on your PC, and open the ArduinoISP example (File -> Examples -> ArduinoISP):


(3) The ArduinoISP sketch opens:


(4) Then upload the sketch to the board (File --> Upload to I/O Board):


(5) The SDK will be saying "uploading...":


(6) It will compile the sketch (giving sketch size):



(7) And it will end uploading (saying Done uploading) :


(8) Then unplug the Arduino Board from the PC and connect the ISP to the Arduino board:


(9) Put the ATMEGA chip in the ISP and connect again the Arduino board to the PC:


(10) Once connected, you will see the Heartbeat LED blinking:


(11) Then you have to choose the target board type (corresponding to the ATMEGA chip in the ISP). In my case it's an ATMEGA328P, thus choosing Arduino Duemilanove. Tho choose the target board go to Tools -> Board -> Arduino Duemilanove or Nano w/ ATmega328:


(12) Then ask to burn the bootloader using your Arduino Board as an ISP (Tools -> Burn Bootloader -> w/ Arduino as ISP):


(13) You'll be told that burning is in progress:


(14) You will see the Programming LED blinking:


(15) Then you'll be told that burning is completed:


(16) The Heartbeat LED will start blinking again:


(17) And that's all. You can unplug everithing and use your ATMEGA chip to build your project. Here's a bounch of ATMEGA chips with the bootloader burned and ready to host some nice sketch:

October 16, 2010

Arduino-ISP (In-System Programmer) made easy

Just wanted to burn Arduino bootloader on ATMEL ATMEGA chips in an easy way to transfer projects from the Arduino board to permanents boards (e.g. this ones).

Arduino is already capable of writing the bootloader on an ATMEGA chip using a specific sketch provided in the examples folder of Arduino SDK, as explained in the official tutorial. To play with the option named "targeting an AVR on a breadboard" I've used a more stable version based on the following schematics, using a stripboard and a ZIF socket:



It contains some additional resistors and the status LEDs foreseen in ArduinoISP sketch (Heartbit, Error and Programming LEDs).

This is a realization on a stripboard:



This is how it can be connected to Arduino board (I'm using some salvaged connectors):



I'm using an angled piece of pin-strip with a pin a bit folded apart to fit the odd spacing on Arduino board:

October 11, 2010

Effective cleaning of the soldering tip

An effective way to clean the soldering tip while soldering: using a stainless-steel (or brass) sponge that does not cool off the tip (instead of a damp sponge):


These metal sponges are commonly used to clean stainless-steel pots and pans. It can be put in an empty metal candy-box for safe operation and easy storage (all the solder remains will stay in the metal box).

October 10, 2010

YAMA3 - Yet Another Minimal Arduino 3

Here's a picture of another minimal realization on a 12x16 stripboard, following the schematics of this other one, without the on-board regulated power supply.

October 3, 2010

RFID: ID-12 and Arduino

Since I plan to play with RFID, I've got a reader: "ID12 from Innovations" (reader and breakout board, and here's the datasheet). It can recognize standard 125 KHz RFID tags (like this other one), so can be used with tags easily available (e.g. on the bay). There are plenty of info (e.g. on Arduino Playground, on projects based on this reader), just search, ehm google "Arduino RFID ID-12".



The reader comes with a 2mm pin spacing:


so, adding 2mm heder pin to the breakout board:


and adding a more common header pin to the breakout board (with the help of a breadboard):


the module is ready to be used:


Here's a schema of how it can be connected to the Arduino board:


Once a TAG is recognized, the LED will light up for a while.



Planning to use the reader in a more stable way, here's a schematic of the realization of an interface board using a stripboard:


And here's a realization of that interface board:


The connectors for LED and for power and data have been salvaged from an old PC, so writings are odd:

Arduino Pushbuttons The Easy Way

Here's a schematic on a stripboard of a simple pushbutton (with a pull-down resistor) to be used with Arduino:


And here's how more pushbuttons can be chained together:


Here's an implementation of a pushbutton on a stripboard:


and here's a couple of pushbuttons connected together:


Here is an example of a sketch using such a pushbutton to toggle on and off a LED (this example has been derived from the one described in Arduino Playground, using a software debounce approach, extended to play an action once per button press):

example_PushButtonWithDebounce_v1.pde
(compiled with Arduino IDE 0022)

UPDATED: another way to do exactly the same with less components, is to enable the internal pull-up resistor of the digital pins.

This way, the schematic on a stripboard of a simple pushbutton (without any pull-up/down resistor) is the following one:



And here's how more pushbuttons can be chained together:



Here is an example of a sketch using such a pushbutton to toggle on and off a LED (this example has been derived from the one described in Arduino Playground, using a software debounce approach, extended to play an action once per button press):

example_PushButtonWithDebounce_v2.pde
(compiled with Arduino IDE 0022)