Silicon ChipArduino: What’s All The Fuss About? - January 2012 SILICON CHIP
  1. Outer Front Cover
  2. Contents
  3. Publisher's Letter: Australia's energy needs are in the hands of the clowns
  4. Feature: Arduino: What’s All The Fuss About? by Jonathan Oxer
  5. Project: A Stereo Audio Compressor by John Clarke
  6. Project: Build A Simple AM Radio by John Clarke
  7. Project: Dorji 433MHz Wireless Data Modules by Stan Swan
  8. Project: 3-Input Stereo Audio Switcher by John Clarke & Greg Swain
  9. Feature: Playing USB-Stick & SD/MMC Card Music Without A PC by Ross Tester
  10. Vintage Radio: The AWA PA1002 50W Valve PA Amplifier by Rodney Champness
  11. Book Store
  12. Market Centre
  13. Advertising Index
  14. Outer Back Cover

This is only a preview of the January 2012 issue of Silicon Chip.

You can view 26 of the 104 pages in the full issue, including the advertisments.

For full access, purchase the issue for $10.00 or subscribe for access to the latest issues.

Items relevant to "A Stereo Audio Compressor":
  • Stereo Audio Compressor PCB [01201121] (AUD $15.00)
  • Stereo Audio Compressor front & rear panels [0120112P1/2] (PCB, AUD $15.00)
  • Stereo Audio Compressor PCB pattern (PDF download) [01201121] (Free)
  • Stereo Audio Compressor front & rear panel artwork (PNG download) [01201122/3] (Free)
Items relevant to "Build A Simple AM Radio":
  • AM Radio PCB [06101121] (AUD $10.00)
  • AM Radio PCB pattern (PDF download) [06101121] (Free)
  • AM Radio panels artwork (PDF download) (Panel Artwork, Free)
Articles in this series:
  • Amateur Radio (November 1987)
  • Amateur Radio (November 1987)
  • Amateur Radio (December 1987)
  • Amateur Radio (December 1987)
  • Amateur Radio (February 1988)
  • Amateur Radio (February 1988)
  • Amateur Radio (March 1988)
  • Amateur Radio (March 1988)
  • Amateur Radio (April 1988)
  • Amateur Radio (April 1988)
  • Amateur Radio (May 1988)
  • Amateur Radio (May 1988)
  • Amateur Radio (June 1988)
  • Amateur Radio (June 1988)
  • Amateur Radio (July 1988)
  • Amateur Radio (July 1988)
  • Amateur Radio (August 1988)
  • Amateur Radio (August 1988)
  • Amateur Radio (September 1988)
  • Amateur Radio (September 1988)
  • Amateur Radio (October 1988)
  • Amateur Radio (October 1988)
  • Amateur Radio (November 1988)
  • Amateur Radio (November 1988)
  • Amateur Radio (December 1988)
  • Amateur Radio (December 1988)
  • Amateur Radio (January 1989)
  • Amateur Radio (January 1989)
  • Amateur Radio (April 1989)
  • Amateur Radio (April 1989)
  • Amateur Radio (May 1989)
  • Amateur Radio (May 1989)
  • Amateur Radio (June 1989)
  • Amateur Radio (June 1989)
  • Amateur Radio (July 1989)
  • Amateur Radio (July 1989)
  • Amateur Radio (August 1989)
  • Amateur Radio (August 1989)
  • Amateur Radio (September 1989)
  • Amateur Radio (September 1989)
  • Amateur Radio (October 1989)
  • Amateur Radio (October 1989)
  • Amateur Radio (November 1989)
  • Amateur Radio (November 1989)
  • Amateur Radio (December 1989)
  • Amateur Radio (December 1989)
  • Amateur Radio (February 1990)
  • Amateur Radio (February 1990)
  • Amateur Radio (March 1990)
  • Amateur Radio (March 1990)
  • Amateur Radio (April 1990)
  • Amateur Radio (April 1990)
  • Amateur Radio (May 1990)
  • Amateur Radio (May 1990)
  • Amateur Radio (June 1990)
  • Amateur Radio (June 1990)
  • Amateur Radio (July 1990)
  • Amateur Radio (July 1990)
  • The "Tube" vs. The Microchip (August 1990)
  • The "Tube" vs. The Microchip (August 1990)
  • Amateur Radio (September 1990)
  • Amateur Radio (September 1990)
  • Amateur Radio (October 1990)
  • Amateur Radio (October 1990)
  • Amateur Radio (November 1990)
  • Amateur Radio (November 1990)
  • Amateur Radio (December 1990)
  • Amateur Radio (December 1990)
  • Amateur Radio (January 1991)
  • Amateur Radio (January 1991)
  • Amateur Radio (February 1991)
  • Amateur Radio (February 1991)
  • Amateur Radio (March 1991)
  • Amateur Radio (March 1991)
  • Amateur Radio (April 1991)
  • Amateur Radio (April 1991)
  • Amateur Radio (May 1991)
  • Amateur Radio (May 1991)
  • Amateur Radio (June 1991)
  • Amateur Radio (June 1991)
  • Amateur Radio (July 1991)
  • Amateur Radio (July 1991)
  • Amateur Radio (August 1991)
  • Amateur Radio (August 1991)
  • Amateur Radio (September 1991)
  • Amateur Radio (September 1991)
  • Amateur Radio (October 1991)
  • Amateur Radio (October 1991)
  • Amateur Radio (November 1991)
  • Amateur Radio (November 1991)
  • Amateur Radio (January 1992)
  • Amateur Radio (January 1992)
  • Amateur Radio (February 1992)
  • Amateur Radio (February 1992)
  • Amateur Radio (March 1992)
  • Amateur Radio (March 1992)
  • Amateur Radio (July 1992)
  • Amateur Radio (July 1992)
  • Amateur Radio (August 1992)
  • Amateur Radio (August 1992)
  • Amateur Radio (September 1992)
  • Amateur Radio (September 1992)
  • Amateur Radio (October 1992)
  • Amateur Radio (October 1992)
  • Amateur Radio (November 1992)
  • Amateur Radio (November 1992)
  • Amateur Radio (January 1993)
  • Amateur Radio (January 1993)
  • Amateur Radio (March 1993)
  • Amateur Radio (March 1993)
  • Amateur Radio (May 1993)
  • Amateur Radio (May 1993)
  • Amateur Radio (June 1993)
  • Amateur Radio (June 1993)
  • Amateur Radio (July 1993)
  • Amateur Radio (July 1993)
  • Amateur Radio (August 1993)
  • Amateur Radio (August 1993)
  • Amateur Radio (September 1993)
  • Amateur Radio (September 1993)
  • Amateur Radio (October 1993)
  • Amateur Radio (October 1993)
  • Amateur Radio (December 1993)
  • Amateur Radio (December 1993)
  • Amateur Radio (February 1994)
  • Amateur Radio (February 1994)
  • Amateur Radio (March 1994)
  • Amateur Radio (March 1994)
  • Amateur Radio (May 1994)
  • Amateur Radio (May 1994)
  • Amateur Radio (June 1994)
  • Amateur Radio (June 1994)
  • Amateur Radio (September 1994)
  • Amateur Radio (September 1994)
  • Amateur Radio (December 1994)
  • Amateur Radio (December 1994)
  • Amateur Radio (January 1995)
  • Amateur Radio (January 1995)
  • CB Radio Can Now Transmit Data (March 2001)
  • CB Radio Can Now Transmit Data (March 2001)
  • What's On Offer In "Walkie Talkies" (March 2001)
  • What's On Offer In "Walkie Talkies" (March 2001)
  • Stressless Wireless (October 2004)
  • Stressless Wireless (October 2004)
  • WiNRADiO: Marrying A Radio Receiver To A PC (January 2007)
  • WiNRADiO: Marrying A Radio Receiver To A PC (January 2007)
  • “Degen” Synthesised HF Communications Receiver (January 2007)
  • “Degen” Synthesised HF Communications Receiver (January 2007)
  • PICAXE-08M 433MHz Data Transceiver (October 2008)
  • PICAXE-08M 433MHz Data Transceiver (October 2008)
  • Half-Duplex With HopeRF’s HM-TR UHF Transceivers (April 2009)
  • Half-Duplex With HopeRF’s HM-TR UHF Transceivers (April 2009)
  • Dorji 433MHz Wireless Data Modules (January 2012)
  • Dorji 433MHz Wireless Data Modules (January 2012)
Items relevant to "3-Input Stereo Audio Switcher":
  • 3-Input Audio Selector (Set of 2 PCBs) [01101121/2] (AUD $30.00)
  • PIC16F88-I/P programmed for the 3-Input Stereo Audio Switcher [0111211A.HEX] (Programmed Microcontroller, AUD $15.00)
  • Firmware HEX file and ASM source code for the 3-Input Switcher [0111211A] (Software, Free)
  • 3-Input Stereo Audio Selector Main PCB pattern (PDF download) [01101121] (Free)
  • 3-Input Stereo Audio Selector Switch PCB pattern (PDF download) [01101122] (Free)
Items relevant to "Playing USB-Stick & SD/MMC Card Music Without A PC":
  • 3-pin JST plug to bare wires cable, 100mm (Component, AUD $2.00)

Purchase a printed copy of this issue for $10.00.

t n g e n i m d c l p u r o d o l o e w r v t e e n h d I cro ng t ... i taki rm m e h t stem by sto sy TM By JONATHAN OXER* The low-cost, open-source Arduino microcontroller development board has taken the hobby-electronics world by storm and is now gaining popularity with experienced engineers as well. So what’s all the fuss really about? And anyhow, what’s with the name “Arduino” and where did it come from? Read on! O ver the last couple of years SILICON CHIP has published a number of stories related to Arduino, including the “Arduino-compatible I/O Controller” project by Greg Radion featured in the April 2010 issue. If you spend any time looking at microcontroller-based projects online you’re bound to come across Arduino sooner or later. And as noted in last month’s issue, there are now Arduino variants of our very popular Maximite microcomputer project (SILICON CHIP, March & April 2011). In fact if you search for just the single word “microcontroller” in Google you’ll find multiple Arduino references in the very first set of results. Arduino seems to be everywhere you look these days! But what is Arduino? Why is there so much fuss about it? Does it have some secret sauce or magical property that makes it special? And why should a hobbyist or an engineer care anyway? Everything about Arduino has been designed to give the 14  Silicon Chip lowest possible barrier to entry. If you look at the circuit of a fairly minimal “Arduinocompatible” design in Fig.1, you’ll see that part of the secret of the Arduino’s success is that there is no secret. From a hardware standpoint there’s nothing magical that makes it different to any other simple microcontroller circuit you may come across. It’s just a common Atmel AVR microcontroller, a pushbutton and a bias resistor for manual reset, a crystal and some capacitors for the clock, a serial programming header with automatic reset control and a simple power supply. You could build one yourself on a solderless breadboard in about ten minutes if you had the parts lying around. You may well have most of them already. The only other item you would need with the circuit above is a commonly-available USB-to-Serial adaptor cable, so you could plug your home-made Arduino into your computer and load programs onto it. siliconchip.com.au CON4 REG1 7805 OUT 47 F 25V 10k +7–12V IN GND 47 F 25V 0V 0603 20 AVcc Pre-assembled 3,4 RESET Arduino boards, S1 such as the Uno refer1,2 ence design (meaning “One” in Italian, shown in Fig.2) and implementations based on it, typically have more features than the above minimal example. These include on-board USB-to-Serial conversion, status and user-controlled LEDs, expansion headers, more advanced reset management, input current protection and other features but fundamentally they still build on this minimal underlying architecture. This design simplicity has caused 1M many experienced engineers to turn up 0603 X1 their noses at Arduino, dismissing it as a 16MHz trivial toy or something that’s only useful for beginners. However, don’t disregard it prema22pF 22pF 0603 0603 turely; the intentionally simple design is just a tiny part of the story. Once you look into it a bit more deeply and see the various elements that combine to provide the SC overall Arduino ecosystem you’ll begin 2012 to understand why so many people have fallen in love with it and why it’s become such a smash hit. 1 7 Vcc PC0/ADC0 RST/PC6 PC1/ADC1 PC2/ADC2 PC3/ADC3 PC4/ADC4 PC5/ADC5 PD0/RxD PD1/TxD IC1 ATMEGA328P (28 PDIP) 21 PD2 PD3 PD4 PD5 AREF PD6 9 PD7 PB0 XTAL1/PB6 PB1 PB2 PB3/MOSI 10 PB4/MISO XTAL2/PB7 AGND 22 PB5/SCK 23 24 25 26 27 28 A0 A1 A2 One fundamental element of the Arduino platform is the boot-loader that is preloaded into the microcontroller’s non-volatile flash memory. A micro such as the ATmega328P has 32KB of flash 0603 A3 A4 CON1 A5 1 2 D0_Rx 2 3 D1_Tx 3 4 5 6 11 12 13 14 15 16 17 18 19 4 D2 D3 D4 D5 D6 D7 D8 D9 7805 D10 D11_MOSI D12_MISO D13_SCK GND IN GND OUT GND 8 MINI ARDUINO CONTROLLER The Arduino boot-loader 100nF Fig.1: example of a minimal Arduinocompatible system. (hence the “32” in the part number) for storing programs. In a typical microcontroller development environment the program is loaded into flash using a special programmer that connects to an “ISP” (In-System Programming) header and it stores the program in the micro starting at the beginning of the memory space. Arduino, on the other hand, has a special boot-loader Fig.2: Arduino “Uno” reference design alongside the Freetronics “Eleven” Uno-compatible board. siliconchip.com.au January 2012  15 stored in its flash memory. The boot-loader begins executing as soon as the micro starts up and its main job is to check for the existence of a serial connection from a host computer trying to send it a new program. If it finds one, it accepts the new program and writes it elsewhere into flash memory and then executes it. The boot-loader itself remains unchanged even after the new program has been loaded. If the boot-loader starts up and doesn’t find a host with a new program waiting to be loaded, it simply jumps to the start of the previously loaded program and begins executing it. This approach leaves slightly less storage available for user programs because a small amount is always reserved for the Arduino boot-loader but that’s a small trade-off to make for the convenience of being able to quickly load a new program by USB, with no special hardware required. All you need is a serial connection (USB cable or serial port) and the Arduino software on the host computer. This highlights one of the main differences between the Arduino approach and traditional micro development boards and it’s one of the reasons Arduino has become so popular even with experienced engineers. Getting started with a traditional board from any of the major micro vendors has typically involved purchase of a multi-hundred dollar starter kit which can take weeks to arrive from an overseas supplier, then installation of a large and complex development environment on your PC, a laborious set-up process and often a cumbersome method for compiling and uploading the program to the micro. Setting up a new development environment can take hours or days and involve reading dozens of pages of documentation and often it’ll only run on Windows. If you prefer to use Linux or Mac you’re out of luck. The assumption is that only “serious” developers will even attempt to use microcontrollers so it doesn’t matter if the barrier to entry is fairly high. Arduino, on the other hand, couldn’t be any more different. The boards themselves are cheap and easy to get almost anywhere. There are numerous Australian on-line stores who can ship them straight to your door or just walk into Fig.4: Serial console output. any Jaycar store and you’ll see a range behind the counter. Take one home, download the open-source Arduino IDE software (which is available for Windows, Mac and Linux) to your computer, plug in the Arduino using a USB cable and you’re ready to go. It doesn’t even need a power supply because it can run from USB power. Select one of the dozens of example programs included in the IDE, click the “Upload” button and the program will be compiled and sent to the board. Easy! Even non-technical users with little knowledge of electronics or programming can have their first program running on the board within five minutes of opening the box. You’d be hard-pressed to find any other microcontroller development environment anywhere that can match the Arduino’s “out of the box” experience. That same instant-gratification effect doesn’t only benefit beginners: it’s just as attractive to expert developers once they’ve experienced it for themselves. Many engineers who regularly use both Arduino and other development platforms find that when an idea pops into their head and they want to try it out, they naturally reach for an Arduino because it makes getting started on a new project so easy. Later they may redesign and optimise the project using a dedicated PCB, and perhaps even switch to a different micro or platform entirelyif required, but the Arduino gets you through the initial “I wonder if this will work...” stage so effortlessly that it’s natural to start using it for just about everything. Arduino IDE software Fig.3: Arduino IDE. The simplest way to get started writing programs for the Arduino is by using the official Arduino IDE software. IDE means “Integrated Development Environment”, an all-in-one program for editing, building and up-loading applications to the boards. It consists of a simple code editor with syntax highlighting and a number of convenience buttons for compiling and uploading “sketches” (the Arduino term for programs) to your board. You simply prepare the program in the IDE, plug in your Arduino board using a USB cable, click the “Upload” button and your program is compiled and sent across to the board where it is saved in non-volatile memory. The IDE also provides a very handy serial console, which makes it particularly easy for your program to display data and interact with messages between the Arduino and your computer. Fig.4 shows typical output sent to the IDE serial console 16  Silicon Chip siliconchip.com.au from a connected Arduino. Because Arduino doesn’t contain any exotic hardware it can also be used as a generic AVR (a RISC – reduced instruction set computing) development board, allowing you to use more traditional software development tools to write programs for it and ignoring the Arduino IDE altogether. Many advanced developers use their favourite code editor, such as Vim, Emacs or Eclipse and then use the avr-gcc compiler to prepare the software for up-load to the board using a tool such as AVRDUDE and an AVR-ISP Mk2 programmer. While Arduino gives you a simple entry point to working with microcontrollers, it doesn’t stop you from going way beyond the basics and developing very advanced projects using whatever tools you feel comfortable with. Arduino IDE also has a sister project called Processing, which is a development environment designed to make it really easy to create cross-platform graphical applications to run on your computer. Combining the two, you can use Arduino IDE to create firmware to run on your Arduino and Processing to create a matching user interface that runs on your computer and communicates with it via USB. You can use Processing for all kinds of graphs, displays and interactive computer applications. Arduino language In keeping with the overall Arduino philosophy, the development environment includes a number of features designed to simplify the process of creating simple programs while still allowing you to work with more advanced techniques if you feel comfortable with them. The underlying language is compiled as C++ but most Arduino documentation deliberately avoids mentioning that fact to avoid scaring people off. The development environment does such a good job of hiding the nasty details that some people spend years working with Arduino without even realising that they’re writing in C/C++! This simplification is largely the result of the Arduino library bundled with the development environment to provide a number of convenience functions for common operations. These convenience functions make the code much more readable and also increase portability across Arduino models by abstracting away details such as pin identifiers using simple labels. For example, a common operation when writing C for an AVR microcontroller to drive a specific output pin high may look something like this: PORTB |= (1<<PB2); To an experienced developer that’s a perfectly straightforward operation but to a beginner it’s totally cryptic. Even trying to explain that short line in plain English becomes a discussion of registers, ports and bit-wise operators that will leave a beginner bewildered. Even the pin identification isn’t particularly straightforward. The Arduino library hides all that complexity, providing standardised pin identifiers and allowing you to write a far more obvious but functionally identical piece of code like this: digitalWrite( 10, HIGH ); siliconchip.com.au January 2012  17 The end result of both those commands is the same but it’s much easier to explain the second one to a beginner simply by saying “This command writes to digital pin 10 and sets it HIGH”. Fig.6: Arduino Lilypad for “wearable” computing projects. Pin identifiers Pin identifiers are an important feature of the library because they allow Arduino models with different micros to address the expansion headers in a generalised way. For example, pin D10 on the expansion header is connected to micro pin PB2 on Arduino models based on the ATmega328P but on models based on the ATmega2560 it’s connected to pin PB4. You don’t have to remember that distinction though, because you can just address it as “10” or even as “D10”. All the boards available are marked the same and when your program is compiled for a specific board it’ll work just fine without changing a single line of code. Once again it’s all about making development simple and intuitive. The other important aspect of the Arduino development environment is the pre-processor. If you look at an example sketch you’ll see that it’s very “C-like” but is missing some of the important things you may be expecting such as function prototypes. Consider the “Blink” sketch, which is considered to be the “hello world” of Arduino development: void setup() { // initialize the digital pin as an output. // Pin 13 has an LED connected on most Arduino boards: pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); // set the LED on delay(1000); // wait for a second digitalWrite(13, LOW); // set the LED off delay(1000); // wait for a second } That is the entire program and it’s all stored in a single file and displayed in a single window, in the IDE. This example includes the two “must haves” for any Arduino program: the “setup()” function and the “loop()” function. The “setup()” function is executed once when the program starts and the “loop()” function is then repeated indefinitely. Other than the missing function prototypes mentioned previously, you’ll also notice that there’s no “main()” Fig.5: Arduino Mega 2560 reference design. 18  Silicon Chip function. The Arduino pre-processor takes care of all that for you. When you click “compile” in the IDE, the first thing it does is run your code through the preprocessor to automatically generate prototypes and a “main()” function and then passes the result to the GCC compiler for the final conversion into hex for use by the micro. Once again, keep in mind that this doesn’t prevent you writing your programs the traditional way and explicitly defining your own prototypes, if you need to. The pre-processor is just a convenience that lowers the barrier to achieving simple things, while still allowing you to do complex things if you have the knowledge to do so. The Arduino community For many enthusiasts the “killer” feature of the Arduino isn’t the hardware or the software, it’s the community of users that has grown up around it. The community is very different to what you may expect to find associated with a microcontroller platform. Rather than a narrow, focused group of electronic engineers, it’s a free-wheeling assortment of students, artists, hobbyists, mechanical engineers, automation enthusiasts and anyone else you can think of. That’s because many Arduino users do not typically come to the platform through the expected path of electronic engineering but instead arrive at it from some other discipline or interest and see it as simply another building block to achieve whatever larger end result they’re working on. Looking through the Arduino forums you’ll find people working on all manner of projects ranging from kinetic sculptures to DIY home-automation systems and experimental musical instruments. And because many Arduino projects are built as one-off creations with no thought of commercial gain, users are often very happy to publicly document their work for the benefit of anyone else who may be interested. This has the Fig.7: LCD & Keypad Shield mounted on an Arduino-compatible board. siliconchip.com.au Sparkfun Inventor’s Kit for Arduino The SparkFun Inventor's Kit is a box of goodies to get the Arduino beginner started with programmable electronics. http://bit.ly/uS3Pgm Fig.9: A “prototyping” shield with parts fitted for a custom project. snowballing effect of providing resources and inspiration to others, who subsequently go on to document their own projects and so on. Of course the community also includes many very experienced electronic engineers and a vibrant commercial ecosystem has grown up around it to supply a wide assortment of specialist hardware and services. Arduino variants By far the most popular Arduino models are those based on the “Uno” reference design shown in Fig.2. The Uno provides four main functional elements: the AVR microcontroller, a simple 5V regulated power supply, a USB-toSerial converter for loading new programs onto the board and I/O headers for connecting sensors, actuators and expansion boards. Many other versions including the locally-designed Freetronics “Eleven”, shown in Fig.2, fit the same physical form-factor and are functionally compatible, while providing enhancements or additional features not found in the reference design. For example, the Eleven adds a prototyping area so you $94.90 Arduino Uno (rev 3) Arduino Ethernet Shield (rev 3) Freetronics Etherten The basic dev board to get you going. 50 Stack on your Arduino for web connections. 95 An Arduino with native Ethernet. 95 http://bit.ly/tfF1Cf http://bit.ly/vrr4SE http://bit.ly/ttIMwH $32. $54. $69. Shop online for over 600 more Arduino-related products at australianrobotics.com.au Hobbyists – computer enthusiasts – programmers – this is for YOU! Melbourne Hackerspace brings you the first JANUARY 14 2012 Don’t know what a Maker Faire is all about? Visit http://makerfaire.com Fig.10: The Freetronics “EtherTen” Arduino-compatible board with built-in Ethernet. siliconchip.com.au for more information, email makerfairemelboure<at>gmail.com or visit http://makerfairemelbourne.wordpress.com/ January 2012  19 Fig.11: USBDroid Arduino-compatible board connected to an Android mobile phone. can add your own parts, isolates the general-purpose LED connected to pin 13 on most Arduino boards using a FET, uses a mini-USB socket instead of a regular USB socket and moves the status LEDs to the edge of the board so they are still visible when an expansion board is mounted on top. The classic Uno form-factor isn’t the only option though. Many other variants exist, including the “Mega” form factor shown in Fig.5 that provides more I/O headers and memory, using a more powerful ATmega2560 micro. Once again there are multiple derivative development boards using that same form factor to take advantage of compatibility with expansion boards. There are also smaller versions, such as the Arduino Nano that’s a mere 43mm x 19mm and even some very unusual form factors such as the Arduino Lilypad, shown in Fig.6. The Lilypad is designed to be sewn into clothing using special conductive thread for use in wearable computing projects. It’s been put to some very imaginative uses, such as a cycling jacket with turn indicators wired into it! Even though these different Arduino-compatible boards have wildly varying form factors, they’re still compatible with the same development environment and can mostly run the same software. Unless it relies on special hardware features of a particular model, a sketch can be uploaded to a Lilypad or a Mega or an Uno or a Nano and it’ll run just the same on every board. Expansion Options A basic Arduino on its own isn’t very useful. It’s designed to be the foundation of whatever larger project you dream up. The fairly minimal hardware functionality can be expanded in three main ways. The first method is to use expansion boards called “shields” that can be plugged into the top of the expansion headers. Shields can be complete pre-built boards with all parts already installed for a specific purpose, such as the Freetronics LCD & Keypad Shield available from Jaycar and various on-line suppliers, that adds a display and some input buttons to your projects as shown in Fig.7. There is an amazing variety of pre-built and kit shields available, ranging from the obvious to the obscure. The “Arduino Shield List” website has details of about 300 different models from more than 100 manufacturers, covering 20  Silicon Chip Fig.12: Arduino-Compatible I/O Controller from Ocean Controls, featured as a project in the April 2010 issue of SILICON CHIP. everything from LCD modules and WiFi to H-bridge motor drivers and Geiger counters. Alternatively, blank shields called “Prototyping Shields” like the one shown in Fig.9 provide a matrix of free space for you to add your own parts to suit your specific project. Another approach is to use Arduino-compatible boards that incorporate extra functionality right onto the main board itself without the need for a separate shield. For example, the Freetronics EtherTen shown in Fig.10 is an Australian-designed Arduino board with LAN connectivity, Power-over-Ethernet capability and a microSD card slot, all within the “Uno” form factor and shield compatibility. Any project you’d like connected to the internet, a network, even serving web pages and monitoring can be run on this board. Another example of a special-purpose board is the USBDroid shown in Fig.11, which is an Arduino-compatible board with USB host connectivity built-in. It’s designed to connect to Android-powered devices such as tablets and phones as a peripheral, making it possible to build your own custom add-on hardware for smart-phones and tablets. Finally, you might decide to design your own integrated special-purpose board to suit your own requirements, while building on the basic Arduino architecture. Because the Arduino reference designs are published under Open Licenses, you can use them as a starting point to create your own variant. This is the approach Greg took with the Arduino-Compatible I/O Controller project shown in Fig.12, which doesn’t look anything like an Arduino because it’s designed to fit in a case with a bunch of relays mounted on it. From both a hardware and software point of view, though, it’s just another Arduino that can be programmed using the Arduino IDE but this one has the great advantage of sensing and controlling power items directly by its on-board additions. Learn more This introductory article has focused mainly on the technical aspects of Arduino but as we hinted at the beginning, there is a fascinating back-story to the origins of the project and how it grew from humble beginnings as a classroom exercise in the Interactive Design Institute siliconchip.com.au We would like to wish everyone a Happy and Prosperous New Year Arduino Starter Kit Is a great gift for beginners and professionals alike. Included is an Arduino Uno board, a multitude of inputs, outputs, and sensors to get you started in the wonderful world of Arduino. ARD-005 $59.95+GST Arduino Inventers Kit is a box of goodies to get the beginner started with programmable electronics. Includes an Arduino Uno, baseplate, and heaps of sensors. A booklet shows how to build 12 basic circuits, no soldering required ARD-015 $93.50+GST Threaded Shaft Stepper Motor As the motor runs, it moves along the 100mm long shaft at a specific rate of 1cm per 5 full rotations. The shaft is keyed on one end. These are a good choice for linear motion where precision and repeatability are important. SFM-001 $29.50+GST Electronic Thermostat The N322 thermostats have two relay outputs which can be configured for heating or cooling or a number of different alarm modes. Four front panel keys allow easy configuration. Comes with a 2m waterproof NTC thermistor sensor which can be extended to 50m. CET-001 $65+GST LED Bulbs. These BA9S LED bulbs can be powered from 24VAC or DC. Available in white, red, green, blue and yellow. Suitable for most industrial 22mm indicators HEL-050 $1.45+GST siliconchip.com.au Relayduino A USB or RS485 controlled IO module for interfacing PCs to real world applications, such as controlling lights and sprinkler systems. Fully arduino compatible comes with 8 relay outputs, 4 digital inputs and 3 analog inputs. KTA-223 $135+GST Solar Heating Controller The N321S typically switches on-off a water circulation pump based on the temperature difference between the solar collector and the thermal reservoir or pools. Simple to setup the controller comes with two 3m long NTC-type temperature sensors. CET-033 $79+GST Temperature and Relative Humidity Transmitter These sensors measure both temperature and relative humidity with either 0-10V or 4 -20mA outputs. Wall and duct mount available RHT-006 $209+GST Rotary Encoder A 1,000 line quadrature rotary encoder with A, B and Z NPNstyle outputs. 6 mm diameter shaft with flat. 5 to 24 V DC powered. IBE-002 $135+GST Labjack U3 USB data acquisition unit with 16 flexible I/ O Each I/O can be a 12 bit analog input, digital input or output. 2 of the lines can also be configured as counters and timers. All Windows software and drivers, Labview drivers included. LAJ-021 $149.95+GST 4-20mA Loop Powered Panel Meter 4 Digit fully programmable by front panel keys IP65 Box. CMI-005 $149+GST Flexible Couplings We now have a selection of flexible couplings for our stepper and servo motors. From $13.14+GST Voltage Datalogger The Site-Log LPVB-1 is a 7-channel, battery powered, stand alone voltage data logger which records up to 4Mb of data for later retrieval via USB/serial. With a 10 year battery life, a 16-bit ADC and programmable input range, the data logger is well suited to science and laboratory applications. MED-001 $549+GST M12 Inductive Proximity Switches These switches activate when ferrous metals are close. Fitted with NO and NC contacts and LED indicator. Powered from 10-30VDC. IBP-015 $24.95 +GST Triple Axis Accelerometer A great low-g sensor with analog voltage outputs and adjustable sensitivity (±3 g or ±11 g). Has an onboard 3.3V regulator. POL-1252 $17.50+GST Water Level Sensors With this pressure sensor you can measure water levels up to 20 metres deep. Fitted with 25metres of cable and 4-20mA output. IBP-102 $359+GST Waterproof Temperature Sensor The sensor is equipped with a DS18S20 1-Wire temperature sensor embedded into the probe with a 15metre cable and RJ12 connector. GJS-001 $19.50+GST DIN Rail Springcage Terminal Block Speed up wiring. Simply use a screwdriver to lift the spring and insert the wire for a vibration proof connection. TRM-225 $0.99+GST Ocean Controls Factory 3/24 Wise Ave Seaford Vic Ph: 03 9782 5882 www.oceancontrols.com.au January 2012  21 Great Value in Test & Measurement 350 MHz 2/4 Channel Digital Oscilloscope HMO3522/HMO3524 R 4 GSa/s Real Time, 50 GSa/s Random Sampling, Low Noise Flash A/D Converter (Reference Class) Ivrea in Italy in 2005. In late 2010 a short film called “Arduino: The Documentary” was released and it’s well worth watching if you want to get a better feel for the culture and objectives of the Arduino core development team and the broader Arduino community. You can see it online at http://vimeo. com/18539129 The definitive source of Arduino information is the official website at www.arduino.cc. It has a huge amount of information for both beginner and advanced developers, including very active user forums, tutorials, hardware guides and a language reference. Example projects (including both hardware designs and software source code) are available to help beginners get started. Often it’s handy having documentation in hard-copy. For a gentle introduction a good option is “Getting Started With Arduino”, by Arduino co-founder Massimo Banzi. Once you’ve got past the basics, a much more substantial book to walk you through a number of projects and more advanced techniques is “Practical Arduino” by Hugh Blemings and myself. Both are available for purchase on-line and in your local Jaycar store. For Aussie developers there are a wealth of local resources, including an excellent series of online tutorials written by John Boxall. John’s tutorials are now considered a prime reference for Arduino users everywhere and can be found at www.tronixstuff.com Another local resource is the Freetronics discussion forum, which caters to Australian Arduino users and also provides a venue for discussion of more general electronics issues. I’m co-founder of Freetronics, so you’ll often find me in that forum! Join the conversation at http://forum. freetronics.com/ Hackerspaces Sensitivity 3GHz Spectrum Analyzer HMS3000 / HMS3010 R Frequency Range 100 kHz…3 GHz R Tracking Generator HMS3010 -20…0 dBm Accuracy Finally, there is a rapidly growing contingent of Arduino users at hackerspaces around Australia. Hackerspaces are community-operated physical places, where people can meet and work on their projects. Hackerspaces are good, welcoming places for newcomers to learn about many aspects of electronics including Arduino and they’ll be covered in detail in a future article. For now a good starting point for finding a local hackerspace is http://hackerspaces.org/wiki/Australia Over the coming months we hope to feature some projects based on the Arduino, so stay tuned! SC *About the author, Jonathan Oxer Quality Programmable 2 / 3 Channel High-Performance Power Supply HMP2020 / HMP2030 Simplicity HMP2020 1 x 0…32 V/0…10 A 1 x 0…32 V/0…5 A 188 W max. HMP2020 3 x 0…32 V/0…5 A 188 W max. Rohde & Schwarz (Australia) Pty Ltd Unit 2, 75 Epping Road, North Ryde, NSW 2113 sales.australia<at>rohde-schwarz.com 22  Silicon Chip While Arduino has millions of afficianados around the world, Jonathan Oxer is widely regarded as one of the “gurus”. He’s been called “Australia’s Geekiest Man” – he’s one of the few people in the world who has actually implanted an RFID chip in his body so he could experiment with RFID! He is the author (and co-author) of several books, including “Practical Arduino” shown at left. Along with Marc Alexander, he’s the principal of Freetronics Pty Ltd which was established in 2010 to cope with the deluge of requests for kits, parts etc relating to the book. (Freetronics sell online at www.freetronics.com or via a number or resellers in Australia and worldwide). siliconchip.com.au