Submission Mellis 0

download Submission Mellis 0

of 11

Transcript of Submission Mellis 0

  • 7/30/2019 Submission Mellis 0

    1/11

    Arduino: An Open ElectronicsPrototyping Platform

    AbstractArduino is a platform for prototyping interactive objectsusing electronics. It consists of both hardware andsoftware: a circuit board that can be purchased at lowcost or assembled from freely-available plans; and anopen-source development environment and library for

    writing code to control the board. Arduino comes froma philosophy of learning by doing and strives to make iteasy to work directly with the medium of interactivity.It extends the principles of open source to the realm of hardware, supporting a community of people workingwith and extending the platform. It has been used inuniversities around the world and in numerous works of interactive art.

    Keywordsopen hardware, prototyping, microcontrollers, open-source, education, interactive art

    ACM Classification KeywordsH.5.2 [Information Interfaces and Presentation]: UserInterfacesprototyping; C.5.3 [Computer SystemImplementation]: Microcomputersmicroprocessors;K.5.1 [Legal Aspects of Computing]:Hardware/Software Protectionopen source; J.5 [Artand Humanities]designCopyright is held by the author/owner(s).

    CHI 2007, April 28 May 3, 2007, San Jose, USA

    ACM 1-xxxxxxxxxxxxxxxxxx.

    David A. MellisCopenhagen Institute of Interaction DesignNjalsgade 882300 Copenhagen S, [email protected]

    Massimo BanziTinker.it!Via Amendola, 220052 Monza (MI) [email protected]

    David CuartiellesSchool of Arts and CommunicationMalm University20506 Malm [email protected]

    Tom IgoeITP, Tisch School of the Arts, NYU721 Broadway, 4th floorNew York, NY 10003 [email protected]

  • 7/30/2019 Submission Mellis 0

    2/11

    2

    Introduction

    There are many tools for prototyping with electronics,used for everything from new musical instruments tointelligent rooms, custom input devices and interactiveart pieces. These tools attempt to reduce the difficultyof working with electronics and expand the number of people who can experiment with the medium. Many of them, however, are either commercial products expensive and closed or research projects unavailablefor use by most people. Others consist only of circuitboards, providing no tools to simplify theirprogramming.

    The open source movement, meanwhile, has shownthat useful and robust software can be created by adistributed team of volunteers freely sharing the resultsof their efforts. Open source projects often gatherstrong communities of people working at many levels:some work on the core code, others contribute smallextensions, still others write documentation or offersupport, with the majority simply making use of aquality product.

    Can we apply the principles of open source to hardwareand electronics? What does it mean to make a circuitboard which is open and extensible, but still usable withlittle effort? How can we make working with electronicseasy, cheap, and quick? These are some of thequestions that led to the creation the Arduinoprototyping platform.

    This paper discusses related work, the educational anddesign context within which Arduino was developed, thephilosophy behind it, the platform itself, both hardwareand software, and the community that has formedaround Arduino.

    Related Work

    There are many different microcontroller developmenttools available for use in teaching and prototyping.Those that are most popular outside the electricalengineering community work to offer some balancebetween cost, expandability, and ease of use. Arduinoalso seeks to balance these factors, while making up forsome of the shortcomings of existing platforms 1. Thissection presents a survey of a few of the more populartools on the market, followed by an analysis of howtheir strengths and weaknesses affect on the designchoices behind Arduino.

    At the highest level of abstraction are microcontrollertools such as Infusion Systems MicroDig, Phidgets,and Stanfords d.tools. Modules at this level aregenerally not programmable by the end user. Instead,they are configured using a desktop tool. These toolsare generally not standalone devices, but must beconnected to a personal computer in order to be useful.

    Infusion Systems MicroDig [5] is a sensor interface boxwith a MIDI interface. Its hardware interface consists of an analog-to-MIDI controller with 8 analog inputs, andvarious sensor modules that mate with the controller.Users attach pre-packaged sensors to the inputs, andconnect the controller to a MIDI output device. Thevalues of the sensors are output as MIDI values. TheMicroDig is handy for teaching students with someknowledge of MIDI but little programming or electronicsknowledge how to design hardware interfaces, becauseit requires little new knowledge. It is an expensiveplatform, however, with the basic kit costing $399, and

    1 For a more in-depth comparison, see [2].

  • 7/30/2019 Submission Mellis 0

    3/11

    3

    requires that the connecting equipment be MIDI

    compatible.

    Phidgets [9] is a modular system of sensor controllers,motor controllers, RFID readers, and other specialfunction devices, all united by a common USB interfaceand a set of desktop software APIs. Each Phidget deviceis a self-contained electronic device, whether its asensor, motor or LED controller, or a more complexdevice like an LCD display. The user needs almost noelectronics knowledge to use Phidgets. Each device isconnected to a desktop computer in order to access itssensor data or to control it. The development team has

    released application programming interfaces for thesystem in several languages, including Visual Basic,VBA (Microsoft Access and Excel), LabView, Java,Delphi, C , C++, and Max/MSP. The modules arerelatively inexpensive, ranging from $10 to $100. Thedevices cannot be used as standalone units, howeverand must be interfaced to a personal computer to use.The learning curve for Phidgets is somewhat steeperthan for the MicroDig, but its useful for those familiarwith software development who want to begin makinghardware interfaces.

    d.tools [11] is a high-level hardware and software tooldeveloped at Stanford Universitys HCI group thataddresses some of the shortcomings of others in thisclass. First, d.tools is a more flexible system. Thed.tools software can be used with other hardwareplatforms, as long as that hardware is running afirmware that can communicate in the d.tools protocol.Wiring, Arduino and Phidgets hardware have been usedwith d.tools. The software is is written in Java as aplugin for the Eclipse universal tool platform, and cantheoretically run on any Java-capable operating

    system. Like Phidgets, the hardware is made up of a

    series of plug-and-play USB modules, each of whichcommunicates with the d.tools software. d.tools alsooffers a suite of analysis tools which allow users to seethe results of their devices graphed on screen, andtime-indexed against a video of the person using thedevice. d.tools is an open source platform, and as of this writing, the hardware is not commercially available.

    Moving down a level of abstraction, there are a numberof mid-level microcontrollers. Controllers in this rangefeature a microcontroller with its necessary supportelectronics (crystal, power regulator, etc.) on a small

    module. These modules assume users can build inputand output circuits to attach to the module. Theyreusually programmed in BASIC, or some variation of C,and attach to the programming environment on apersonal computer using a serial or USB connection.Parallax BASIC stamp [8] is the most well-known of these modules. Also in this family are NetMediasBasicX [7], BASIC Micros Basic ATOM [4] processors.Arduino most resembles these.

    The main advantage offered by the mid-levelcontrollers is programmability in a high-level language,with a simple programming interface. Thedisadvantage is generally that the programminglanguages are very limited, and the lower levels of thecontroller itself are not accessible to the user at all.Students taught to use these controllers generallyreach a problem beyond the modules capability withintheir first semester. The programming environmentsare almost all available for Windows operating systemsonly, though there are some exceptions.

  • 7/30/2019 Submission Mellis 0

    4/11

    4

    The processors themselves are usually priced around

    $50, and experimenters kits, including a processor,power supply and prototyping board usually costbetween $75 and $100. Since theyre aimed atbeginners, this price, while less than the high-levelcontrollers, is still high. Users dont often think aboutusing multiple modules in a project because the price of multiples is prohibitive. Its inevitable when learningthat a person will make mistakes. With mid-levelmicrocontrollers, the mistake of mis-wiring a circuit anddestroying the processor is high.

    At the lowest level of abstraction are the

    microcontrollers themselves. Two of the most popularare Microchips PIC family of processors [6], andAtmels AVR processors [1]. These are programmed inC or Assembly or BASIC, and much of the programminginvolves direct access to the processors registers. Aseparate hardware programmer is usually needed tocommunicate between the programming environmentand the processor. The developer must build thenecessary support circuitry for the processor in additionto any sensor or actuator circuits. The learning curvefor this class of controllers is the steepest of anymentioned here.

    The advantage offered by lower level controllers is cost.At $1 - $15 apiece, they can be used in multipleseasily. There is often some initial setup cost for thedevelopment environment, however. Programmersrange from $30 - $100, and more fully-featuredprogramming environments can be in excess of $300.This cost is amortized by continued use: the moreprocessors you use, the cheaper it gets. There aresome good open source development environments,particularly for the AVR controllers, but they are not

    designed for beginning users. The interfaces are

    usually complex, or command-line interfaces, and thecode libraries require a working knowledge of C orC++.

    Finally there are Arduinos predecessors, Programma2003 and Wiring. One of the authors (Massimo)developed in 2003 a simple micro-controller platformcalled Programma 2003 based on a PIC chip and theopen source language Jal. The design goal for thisplatform was to have something as cheap as possiblewhich would be open source and run on Windows, MacOS X, and Linux. Programma 2003, however, lacked

    good documentation, a wide community, and used arelatively unknown programming language that lackedcertain key features.

    Wiring [3] is a mid-level module, based on one of theAVR microcontrollers. Wiring attempts to address theprogramming interface limitations of the families of processors above.

    The programming environment for Wiring, on which theArduino environment is based, has its origins inProcessing [10], a multimedia programmingenvironment. Wiring, like Processing, was made toteach design students about programming. Theenvironment itself is spare and simple to understand.The language uses clear terms for command names likeanalogRead() and digitalWrite() rather than the moreterse style usually associated with microcontrollerflavors of C. The interface for uploading programs tothe microcontroller is minimal, allowing users to focuson the task of programming. Menu item names areunambiguous, and kept to a minimum. Theenvironment is written in Java, and is available for

  • 7/30/2019 Submission Mellis 0

    5/11

    5

    Windows, OSX, and Linux, unlike most other

    microcontroller development environments. Itsavailability for OSX alone has led to its increased useby designers and artists who prefer that platform.

    The Wiring module is a powerful tool, but it is limited inthat it cannot be constructed by a beginner. Themodule as sold by the developers is priced in the rangeof other mid-level modules, around $60 -$80, tooexpensive to allow for easy experimentation or use of many boards.

    Context

    Arduino was born out of the combination of manyprototyping cultures. It was developed at theInteraction Design Institute Ivrea, a small school innorthern Italy offering a Masters degree in interactiondesign. Interaction-Ivreas curriculum focused onscreen interfaces, physical objects, and services,emphasized hands-on work, encouraging designers tocreate rapid prototypes of their ideas, then repeatedlytest and refine them.

    The institute also supported the creation of tools foruse in the prototyping process. It hosted for a numberof years Casey Reas, who worked on the developmentof Processing. Courses at Interaction-Ivrea usedProcessing for the creation of prototypes of softwareinterfaces. Programma 2003 was created whileMassimo was at Interaction-Ivrea and used in physicalinteraction design courses. Wiring was developed as athesis project at the institute and also used in theeducation program.

    Interaction-Ivrea had a philosophy of learning by doing,believing that skills such as programming or electronics

    are best acquired in the course of more general

    projects. Students are motivated to pick up thepractical knowledge they need to express their designideas. This, in turn, emphasizes tools that allow forquick experimentation and rapid iteration. Althoughthey were created in educational environments, theseplatforms were intended primarily to help people buildsoftware or hardware prototypes, not as experimentalaids in a research investigation.

    PhilosophyFrom the beginning we have been interested in thedissemination of prototyping techniques within design

    educations as a way of communicating the values of new interactive devices. It has always been our aim toencourage the traditional design disciplines to gobeyond the screen, trying to give meaning to human-machine interactivity through actually designing themachine itself.

    It is unrealistic to expect designers to becomeengineers. Instead we believe in prototyping, withwhich designers can themselves build an object whichexpresses the desired design intentions. This givesthem a valuable tool in communicating with engineersin the further development and realization of an idea.We seek to provide designers with the tools they needto prototype interactions not just forms or materials turning interactivity itself into a medium for expression.

    Dealing with education means making compromisesconcerning the language to use when communicating,the depth of the contents, etc. Arduinos philosophyavoids removing all the complexity behind electronicsas some other platforms do. Electronics are made of components, which are physical devices representing

  • 7/30/2019 Submission Mellis 0

    6/11

    6

    logical functions, and we believe that we should keep

    that as part of the education process. Therefore we liketo speak about making things easy enough forstudents to get an understanding of how things work bytrying them. Rather than trying to hide complexityfrom users, we prefer to simplify it to the point wherethey can deal with it directly. Later, they will have thechance to deepen their knowledge by accessing existingresources from disciplines like electric engineering.

    Cost was an important consideration when designingArduino. If a hardware tool is not cheap, people arehesitant to purchase it, slowing distribution and keeping

    it inaccessible to many people. Further, if the board isexpensive, people will not use many of them, meaningthey may have to disassemble one work to build thenext. One unexpected factor is shipping costs, as apiece of hardware that is cheap in the US may doublein price if it must be shipped to, say, China.

    From the beginning, Arduino was born as acollaborative project between different universities andindividuals. It has always been our goal to maximizethe impact within the academic world, trying to raisequestions about how we design interactive artifacts.One of the main issues to address is the one related tointellectual property. Physical interaction design is ayoung discipline. We believe that a good way of makingit grow to accommodate societys needs is to look for away of licensing our results that makes them availablefor other people to use. We chose to make the wholeplatform part of the free culture movement, releasethem under permissive licenses.

    Arduino has been left open in many different ways.First, the system is ready to be hacked in different

    ways both software and hardware-wise. Second the

    licenses allow reusing the design in other contexts.Third, the education process is not closed, peoplegenerate their own materials, workshops, examples andtutorials.

    The Arduino Prototyping PlatformArduino allows users to create working electronicprototypes, either stand-alone objects or devicestethered to a computer. It can read from a wide rangeof sensors, control a broad spectrum of output devices,and communicate with software running on a computeror talking over a network.

    There are many steps required to perform the mostbasic of tasks with a microcontroller: picking aparticular microcontroller, figuring out the circuitneeded to use it, ordering the necessary parts,assembling them, downloading the software needed toprogram the microcontroller, figuring out a way for themicrocontroller to talk the computer, installing anynecessary drivers, buying or building an external deviceto program the microcontroller, learning how to writecode for the microcontroller (which may require readinga datasheet that is hundreds of pages long), writingthe code, working out the command line argumentsneeded to compile and upload the code, etc.

    Arduino attempts to eliminate or ease as many of thesteps as possible with a combination of hardware andsoftware.

    Hardware

    The Arduino board is a printed circuit board containinga microcontroller (basically a low-power computersqueezed into a single chip), and the components

  • 7/30/2019 Submission Mellis 0

    7/11

    7

    needed to provide it with a stable power supply, to

    connect it to other components, and to enable it tocommunicate with the computer.

    Figure 1. A serial Arduino board with removable Atmega8microcontroller, one of the original versions of the Arduinohardware.

    There are many versions of the board, but the mainone (whose most recent version is entitled the ArduinoNG) is about the size of a playing card and costs 23 or$32. It contains a removable ATmega8 microcontroller,which can be easily replaced if broken or removed fromthe board for use in a custom circuit. It includes extracomponents that enable it to communicate with thecomputer via USB, as the alternative interface, a serialport, is no longer available on most machines. Theboard can be powered directly from the USB connectionor using an external power supply.

    This version of the board is manufactured in quantity tokeep costs low and allow people to get started without

    needing to assemble their own board. Each board is

    individually loaded with a special piece of software(called a bootloader) that allows users to program itwithout any extra devices, further lowering the totalcost to the user. By including the manufacturer in theteam we were able to engineer the board to higherstandards, adding functionalities but keeping the priceessentially unchanged. At the moment, assembledboards can be purchased online from the manufacturer,SmartProjects Snc of Chivasso, Italy and through adistributor in the US (SparkFun Electronics). Moredistributors are planned to provide easier access forusers across the world.

    Other, compatible, versions of the board are designedto be assembled by hand. They use components largeand simple enough to be soldered by beginners andkeep the number of parts to a minimum. Interestedusers can purchase a blank PCB or etch their own froma provided image of the layout, which can be printedand used as a stencil. This means that Arduino boardscan be made by anyone with access to basic electroniccomponents, without relying on our manufacturer.Making the hardware out of parts a beginner can useserves another purpose as well: it means that userscan build the module on a prototyping board if theywish. This can speed development and reduce the costsof projects that use multiple processors. Theschematics and circuit diagrams are licensed under aCreative Commons Attribution, Share-Alike license,meaning that anyone can use them provided they sharetheir derivates with the world.

    All versions of the Arduino board are designed to workwith standard electronic components. The boardprovides a base platform but does not limit users to

  • 7/30/2019 Submission Mellis 0

    8/11

    8

    pre-packaged sensors or actuators. This means that

    users can use new or unusual components withoutneeding to wait for special Arduino versions of them.

    Now that the basic design of the board has been in usefor nearly two years, we have begun to createextensions and variations. There are extension

    shields, other circuit boards that can be snapped ontop of the Arduino board to provide extra functionalitylike circuitry for handling high power devices likemotors, an RFID reader, or a small breadboard that canbe used to mount circuits in a compact form. We havealso developed a board with a Bluetooth interface and a

    mini-version that with the same footprint as theBasicStamp. We plan to continue designing andproducing hardware as desired by our users.

    Software

    The Arduino software is an attempt to simplify theprocess of writing code without unduly limiting theuser's flexibility. It builds on many other open-sourceprojects, adapting them to the Arduino hardware andhiding their unneeded complexities. The Arduinosoftware consists of two main parts: the developmentenvironment and a core library, both open-source.

    The Arduino development environment is a minimal butcomplete source code editor. It is a cross-platformapplication written in Java and usable under Windows,Mac OS X, and Linux. In it, users can manage, edit,compile, and upload their programs (called sketches).All functions can be accessed from a set of seventoolbar buttons or a few drop-down menus. The userneed not fiddle with makefiles or command linearguments, which can pose significant obstacles for thebeginner. The environment includes a serial monitor,

    allowing the user to send data to and receive data from

    the board, easing debugging without requiringadditional software. In fact, all programs required forArduino development are included in a single archivedownloaded from the Arduino website (except for Linuxusers, who must install some packages with theirdistribution's package management tool). The GUIitself is based on the Processing developmentenvironment, while sketches are compiled by avr-gcc,and uploaded with uisp. The source code is distributedunder the GNU Public License (GPL).

    The Arduino core library consists of AVR C/C++

    functions that are compiled along with the user'ssketch. The combined binary file can then be uploadedto the Arduino board. Using an API compatible withWiring, the Arduino core encapsulates low-level aspectsof microcontroller programming (e.g. registermanipulation), allowing users to concentrate on theirparticular task. In particular, this saves users fromhaving to read the 300 page data-sheet for themicrocontroller, the only reliable source for informationon its low-level functionality. Users are stillprogramming in standard C/C++, however, so theprogramming knowledge they acquire can betransferred to many other situations. In fact, the fullsource code to the Arduino core (licensed under theLGPL) is included in the distribution, so that curioususers can learn how it works and modify it. Because of the limited capacity of the microcontroller, some code issplit into separate libraries which can be specificallyincluded when required for a particular sketch. Anyonecan write an additional library, which can be installedby simply moving it to the correct directory.

  • 7/30/2019 Submission Mellis 0

    9/11

    9

    Figure 2. The Arduino environment, showing a simpleexample of code designed to blink an LED.

    The environment and core are closely integrated, sothat a single button press compiles a sketch, andanother uploads it to the board. The environmentperforms some basic preprocessing on the user's code,hiding some unimportant syntactical nuisances. Thecore includes a list of keywords to be highlighted in the

    environment. Available libraries are listed in a menu

    within the environment, from which they can beselected for inclusion in a particular sketch. Theenvironment comes with example sketches for basictasks, allowing users to try some things without writingany code, but also providing simple and clearreferences of the Arduino language and functions.

    The hardware and software, too, are designed to worktogether. The software need only support the fewpossible hardware configurations and work only withthe bootloader that is pre-installed on the boards,limiting the number of configurations options required.

    CommunityArduino is about more than hardware and software.From the beginning we have tried to encourage acommunity to form around the project we gaveboards to interested parties and taught workshops toshow people how to use them. Schools like ITP at NewYork University, Goldsmiths in London, Fabrica in Italy,and Universidad Politcnica de Catalunya in Spain sawthe potential of Arduino and committed to buyingboards, providing security and motivation for expandedproduction. Arduino has since been used at schoolsover the world, including the MIT Media Lab, ParsonsSchool of Design, the University of California Irvine,Malm University in Sweden, Keio University in Japan,the Taipei National University of the Arts in Taiwan, andmore. Weve discovered many of these cases only bystumbling across them online, showing us that Arduinois open and easy enough for anyone to start using,without needing instruction from us.

    Arduino has also proven popular among artists seekingto incorporate electronics and interactivity into their

  • 7/30/2019 Submission Mellis 0

    10/11

    10

    works. We started with a one-week workshop for

    artists in October 2005 in Madrid, Spain. Since then wehave taught in Canada, UK, USA, Germany,Switzerland, Netherlands, Norway, Italy, Austria,Sweden, Slovenia, etc. Others have used our modeland given workshops in places such as Taiwan, China,Japan, Finland, Mexico, Chile, Colombia, and Turkey.Art pieces using Arduino have appeared in the CentrePompidou in Paris, France, at the Ars ElectronicaFestival in Linz, Austria, at the Salone del Mobile inMilan, Italy.

    The main dissemination tool for Arduino is a website,

    collaboratively edited by fifteen people from variouscountries. A publicly-editable wiki provides a space forArduino users to write tutorials, provide example code,upload circuit designs, and share what theyve madewith Arduino. In the forum, users can ask for help witha variety of issues: getting the board up-and-running,debugging their code, figuring out which components touse for a particular task, etc. The project is not limitedto English either. Twelve editors have worked oncreating a Spanish version of the Arduino site, and onehas written a long guide for teachers who wish to useArduino in their classes. There are Spanish, French andItalian boards in the forum, and people have alsowritten tutorials in German, Japanese, Chinese, andmany other languages.

    Perhaps most satisfying are the many contributionsthat people have given back to the project. Wevealready mentioned the publicly-written documentationon the Arduino wiki and the many workshops run bypeople unaffiliated with the project. Othercontributions include libraries of code for specifichardware, custom shields for various circuits, patches

    to the Arduino environment, even icons and color

    schemes. While this sort of international collaborationis common in the open-source world, Arduinos dualapproach of cheap manufactured boards and openplans have allowed it to flourish in the realm of hardware.

    ConclusionsWe have presented Arduino, an open platform forelectronics prototyping. We hope that Arduinodemonstrates the potential of the open-source model toapply to hardware as well as software and shows thevalue of manufacturing a tool to be used by a wide

    range of people, not confined to a research lab or thosewho can afford expensive equipment.

    AcknowledgementsGianluca Martino is the remaining member of theArduino team, responsible for engineering andmanufacturing. Nicholas Zambetti has contributed toArduino since the beginning.

    Citations[1] Atmel Inc., "Atmel." Atmel. unknown. Atmel, Inc..25 Jan 2007 < http://www.atmel.com/ >.

    [2] Barragn, Hernando. "Wiring: Prototyping PhysicalInteraction Design." IDI Ivrea People. June 2004. IDIIvrea. 25 Jan 2007 .

    [3] Barragn, Hernando. "Wiring." Wiring. unknown.University de los Andes. 25 Jan 2007< http://wiring.org.co/ >.

    [4] Basic Micro, Inc., "BASIC Micro." BASIC MicroHome. unknown. Basic Micro, Inc.. 25 Jan 2007< http://www.basicmicro.com/ >.

    [5] Infusion Systems, "MicroSystem." InfusionSystems. Infusion Systems. 25 Jan 2007

  • 7/30/2019 Submission Mellis 0

    11/11

    11

    < http://infusionsystems.com/catalog/product_info.php/cPath/21/products_id/91 >.

    [6] Microchip, Inc., "Microchip." Microchip. unknown.Microchip, Inc.. 25 Jan 2007< http://www.microchip.com >.

    [7] NetMedia, Inc., "The BasicX Family of RapidDevelopment Microcontrollers." Basicx by NetMedia.unknown. NetMedia, Inc.. 25 Jan 2007< http://www.basicx.com/ >.

    [8] Parallax, Inc., "BASIC Stamps." Parallax. unknown.Parallax, Inc.. 25 Jan 2007< http://www.parallax.com/html_pages/products/basicstamps/basic_stamps.asp >.

    [9] Phidgets, "Phidgets - Unique and Easy to Use USBINterfaces." Phidgets. unknown. Phidgets. 25 Jan 2007< http://www.phidgets.com/ >.

    [10] Reas, Casey and Fry, Ben, "Processing.org: anetworked context for learning computerprogramming." ACM SIGGRAPH, 2005.

    [11] Stanford HCI group, "d.tools: Enabling rapidprototyping for physical interaction design." HCI atStanford University: d.tools. unknown. StanfordUniversity. 25 Jan 2007< http://hci.stanford.edu/dtools/ >.