"A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects." (Robert A. Heinlein)

Tuesday, 20 April 2010

New toy on the desk: Arduino 2009

Sunday there's been, here in Genoa, the usual twice-a-year surplus fair where I'm used to go looking for some cheap and unusual hardware. I come back with, among various things, a little “Arduino Duemilanove” board. (“Duemilanove” stands for 2009 in Italian).

18042010169



The Arduino board

Arduino is a family of microcontroller boards, originally designed in Italy, based on an Atmel microcontroller chip surrounded by some interface hardware. The “Duemilanove” model is equipped with a Atmel ATMega 328 processor, plus digital and analogical I/O ports and a USB port for computer interfacing.
The most notable characteristic of Arduino is that it is fully open source. Firmware, software and schematics layout are free to download and to use under terms of GPL, LGPL or Creative Commons license (See Arduino FAQ for details). This make Arduino one of the cheapest embedded computing solutions (I got mine for only 32€).

18042010172-2


Linux installation

Arduino is also probably among the most “Linux friendly” embedded computing solutions (more details about Linux installation here). Since Ubuntu 9.04 Installation repositories are available so installing it on Ubuntu is a quite simple task. First I installed the repository
sudo add-apt-repository ppa:arduino-ubuntu-team
sudo apt-get update
then I installed Arduino development software
sudo apt-get install arduino
At first, after I connected the Arduino board to computer's USB port, The operating system experienced some problem in recognize Arduino's USB serial device, I so tried removing the board, listing USB serial devices (ls /dev/ttyUSB*) then connecting the board again, listing USB serial devices again and, at last, (don't ask me why) the device has been properly recognized (may be I was simply inpatient).

A blinking “hello world”

Arduino software provides a basic development environment with colour highlighted editor, syntax check and upload-to-device functionality.

Arduino-blink


Arduino boards are programmed in a language derived from wiring language. It uses a C/C++ like syntax, so it looks easy enough to learn. As first test I uploaded to the board a simple program (sketch in Arduino jargon) that blinks a LED connected to board's pin 13. Here a picture of the running Arduino board

18042010180


Conclusions

Working with Arduino is a lot of fun, I really liked It, might be because it remind me when I was younger and I programmed on a 1MHz-16KB-machine. I will not re-invent myself as an embedded system programmer just because of this little board but I'll try to post more experiments and, perhaps, think to a bigger project too. Stay tuned!