Home

Tom Igoe

image

Contents

1. 30056 I FSR 400 402 406 408 right angle D S1121E 36 ND S PRT 00553 LED HEADERS T1 Green clear D 160 1144 ND J 34761 00115 1 Red clear D 160 1665 ND J 94511 TRANSISTORS D D 2238K ND J 101470PS S PRT 00091 2 2222 4 38236 1 120 3 32993 Handy hand tools for networking objects 1 Soldering iron Middle of the line is best here Cheap soldering irons die fast but a mid range iron like the Weller WLC 100 work great for small electronic work Avoid the Cold Solder irons They solder by creating a spark and that spark can damage static sensitive parts like micro controllers Jameco jameco com 146595 RadioShack 640 2802 and 640 2078 2 Solder 21 23 AWG solder is best Get lead free solder if you can it s healthier for you Jameco 668271 RadioShack 640 0013 3 Desoldering pump This helps when you mess up while soldering Jameco 305226 SparkFun sparkfun com TOL 00082 4 Wire stripper Diagonal cutter Needle nose pliers Avoid the 3 in 1 versions of these tools They ll only make you grumpy These three tools are essential for working with wire and you don t need expensive ones to have good ones Wire stripper Jameco 159291 RadioShack 640 2129 SparkFun TOL 00089 Diagonal cutter Jameco 161411 Radio Shack 640 2043 SparkFun TOL 00070 N
2. OS X Linux s dev tty s dev tty This command will give you a list of available serial ports The names of the serial ports in Mac OS X and Linux are more unique but more cryptic than the COMI COM2 and so on that Windows uses Pick your serial port and type Screen portname datarate THE TOOLS 33 PuTTY Configuration Default Settings Connection Terminal B Connection Figure 1 6 Configuring a serial connection in PuTTY 34 MAKING THINGS TALK For example to open the serial port on an Arduino board discussed shortly at 9600 bits per second you might type screen dev tty usbserial 1B1 9600 on Mac OS X On Linux the command might be screen dev ttyUSBO 9600 The screen will be cleared and any characters you type will be sent out the serial port you opened They won t show up on the screen however Any bytes received in the serial port will be displayed in the window as charac ters To close the serial port type Control A followed by Control In the next section you ll use a serial communications program to communicate with a microcontroller Hardware Arduino and Wiring The main microcontroller used in this book is the Arduino module Arduino is based on a similar module called Wiring You should be able to use Arduino or Wiring interchangeably for the examples in this book Both modules are the children of the Processing programming environment and the At
3. Power Power Jumper Serial via USB Wiring and Arduino Compared Given the similarities between Wiring and Arduino you re probably wondering which to choose The programming language is the same for both and the programming envi ronments are virtually identical so the major factors to consider are price size and number of inputs and outputs Wiring is the larger of the two modules and the more expensive It has more input and output connections and some useful features such as hardware interrupt pins and two hardware serial ports Two serial ports can be handy when you re working on projects in this book because you can use one serial port to talk to your communications device and another to talk to the computer on which you re programming the microcontroller There is a software serial library for both Wiring and Arduino that allows you to use any two I O pins as serial port It s more limited than a hardware serial port in that it can t send and receive data as quickly as a hardware serial port Wiring boards can be ordered online from www sparkfun com or directly from www wiring org co Arduino is the less expensive of the two modules and the smaller It has fewer inputs and outputs than Wiring and only one hardware serial port The Arduino developers have made a few different Arduino boards The original board has an RS 232 serial interface and all the components are large enough that you can
4. THETOOLS 45 Mmmm sau un ees ar BI la inia n ssss aswessuuuwssuuuws eee eee eee eee gt analog input 2 s 2 ip 5 a L g z o a pe 5 5 5 8a e E 00 2 o i 5 a 5 D 5 oe 8 9 i gt oo 8cz e 957 9 555 x 559 ic Figure 1 18 1 17 Voltage divider used as analog input to a microcontroller Figure Potentiometer used as analog input to a microcontroller 46 MAKING THINGS TALK t a e vee 9 9 9 9 w9 9 9 9 5 gt 9 9 9 929 ee v 2 5555599 9w55 9 5 9 97 9 9 9 Sees ee esse eee ase 10 8 18 1 ees ee 995953232 9 55 995 gt e 2 E see ee eee z a Figure 1 19 Breadboard with a regulator and without one A You will run across different variations on many of the modules and components used this book For example the Arduino module has at least five variations shown in Figure 1 8 The FTDI USB to serial module used in later chapters has at least three variations Even the voltage regulators used in this book have different variations Be sure to check the data sheet on whatever
5. PHP section In a command line interface everything is done by typing commands at the cursor The programs you ll be running and the files you ll be writing and reading aren t on your machine When you re using the PHP programming language described shortly for example you ll be using programs and reading files directly on the web host s computer Although this is the most direct way to work with PHP some people prefer to work more indirectly by writing text files on their local computers and uploading them to the remote computer Depending on how restrictive your web hosting service is this may be your only option however there are many inexpensive hosting companies that offer full command line access Even if you prefer to work this way there are times in this book when the command line is your only option so it s worth getting to know a little bit about it now On Windows computers there are a few remote access programs available but the one that you ll use here is called PuTTY You can download it from www puttyssh org Download the Windows style installer and run it On Mac OS Xand Linux you can use OpenSSH which is included with both operating systems and can be run in the Terminal program with the command ssh Before you can run OpenSSH you ll need to launch a terminal emulation program which gives you access to your Linux or Mac OS X command line On Mac OS X the program is called Terminal and you can find it
6. gt blinkInterval 2 digitalWrite LEDPin HIGH turn the LED on pin 13 on after a half a second turn the LED off and reset the timer if millis blinkTimer gt blinkInterval digitalWrite LEDPin LOW blinkTimer millis turn the LED off reset the timer To send bytes from the computer the micro controller module first compile and upload this program Then click the Serial Monitor icon the rightmost icon on the toolbar The screen will change to look like Figure 1 14 Set the serial rate to 9600 baud Type any letter in the text entry box and press Enter or click Send The module will respond with the next letter in sequence For every character you type the module adds one to that character s ASCII value and sends back the result Terminal applications represent all bytes they receive as ASCII Wiring Components to the Module The Arduino and Wiring modules don t have many sockets for connections other than the I O pins so you ll need to keep a solderless breadboard handy to build subcircuits for your sensors and actuators output devices Figure 1 15 shows a standard setup for connections between the two Specialty Devices You ll encounter some specialty devices as well such as the Lantronix Xport WiPort and Cobox Micro The Lantronix modules are serial to Ethernet modules Their main function is to connect devices with a serial communi cations interface
7. physical indication as to the invisible activities of your objects Don t forget the basic elements either Build in a power switch or a reset button Don t forget a power indicator Design the shape of the object so that it s clear which end is up Make your physical controls clearly visible and easy to operate Plan the sequence of actions you expect a person to take and lay out the physical affordances for those actions in a sensible sequence You can t tell people what to think about your object you can only show them how to interact with it through its physical form There may be times when you violate convention in the way you design your controls perhaps in order to create a chal lenging game or to make the object seem more magical but make sure you re doing it intentionally Always think about the participant s expectations first By including the person s behavior in your system planning you solve some problems that are computationally difficult but easy for human intelligence to solve Ultimately the best reason to make things talk to each other is to give people more reasons to talk to each other X
8. such as all microcontrollers to Ethernet networks It s possible to program your own serial to Ethernet module directly on a microcontroller with a few spare parts but it s a lot of work The Lantronix modules cost more but they re much more convenient You ll also encounter serial to Bluetooth modules serial to ZigBee modules RFID modules and other microcontrollers whose main job is to connect other devices The details on connecting these will be explained one by one as you encounter them in the projects that follow Basic Circuits There are two basic circuits that you ll use a lot in this book digital input and analog input If you re familiar with microcontroller development you re already familiar with them Any time you need to read a sensor value you can start with one of these two Even if you re using a custom sensor in your final object you can use these circuits as placeholders just to see any changing sensor values Digital input A digital input to a microcontroller is nothing more than a Switch The switch is connected to voltage and to a digital input pin of the microcontroller A high value resistor 10 kilohms is good connects the input pin to ground This is called a pull down resistor Other electronics tutorials may connect the switch to ground and the resistor to voltage In that case you d call the resistor a pull up resistor Pull up and pull down resistors provide a reference to power pull up and gro
9. have a USB connector a programming header to allow you to reprogram the firmware you ll never do that in this book and a reset button The Arduino Mini does not have these features but they can be added using its companion USB to serial board Figure 1 11 shows a typical breadboard setup for the Mini You ll see these diagrams repeated frequently as they are the basis for all of the microcontroller projects in the book Getting Started Because the installation process for Wiring and Arduino is almost identical I ll detail only the Arduino process here opposite page Figure 1 9 Arduino and Wiring modules Note the jumper to switch power from the USB connection to an external power supply Wiring users will find things similar enough to follow along and do the same steps substituting Wiring for Arduino in the instructions that follow Once you ve downloaded the Arduino software you ll need to do a bit of configuring to get things ready for use Expand the downloaded file and you ll get a directory called arduino 0009 if there is a newer version of the software available the number will be different Move this somewhere convenient on a Mac you might put it in your Applications directory on Windows maybe in C Program Files on Linux you might want to keep it in your home directory or drop it into usr local Now navigate to the directory arduino 009 drivers subdirectory In that directory you ll find an installe
10. is down else background 0 fill 0 26 MAKING THINGS TALK Every Processing program has two main routines setup and draw setup happens once at the beginning of the program It s where you set all your initial conditions like the size of the applet window initial states for variables and so forth draw is the main loop of the program It repeats continuously until you close the applet window In order to use variables in Processing you have to declare the variable s data type In the preceding program the variables redValue greenValue and blueValue are all float types meaning that they re floating decimal point numbers Other common variable types you ll use are ints integers booleans true or false values Strings of text and bytes Like C Java and many other languages Processing uses C style syntax All functions have a data type just like variables and many of them are the void type meaning that they don t return any values All lines end with a semicolon and all blocks of code are wrapped in curly brackets Conditional statements if then statements for next loops and comments all use the C syntax as well The preceding code illustrates all of these except the for next loop n Here s a typical for next loop Try this in a sketch of its own to start a new sketch select New from Processing s File menu Processing is a fun language to play with because you can make intera
11. list of all the files including the invisible ones using the a modifier for Is this way 15 la move around from one directory to another there s change directory command To get into the public html directory for example type cd public html To go back up one level in the directory structure type Cd a To return to your home directory use the symbol which is shorthand for your home directory If you type cd on a line by itself it also takes you to your home directory If you wanted to go into a subdirectory of a directory for example the cgi bin directory inside the public_html directory you d type cd public html cgi bin You can type the absolute path from the main directory of the server called the root by placing a at the beginning of the file s pathname Any other file pathname is called a relative path To make a new directory type mkdir directoryname THETOOLS 29 This command will make a new directory in the current working directory If you then use Is 1 to see a list of files in the working directory you ll see a new line with the new directory If you then type cd directoryname to switch to the new directory and Is la to see all of its contents you ll see only two listings drwxr xr x 2 tqi6023 users 4096 Feb 17 10 19 drwxr xr x 4 tqi6023 users 4096 Feb 17 10 19 The first file is a reference to this directory itself The second a refere
12. of variable resistor photocells thermistors force sensing resistors flex sensing resistors and more The potentiometer shown in Figure 1 18 is a special type of variable resistor It s a fixed resistor with a wiper that slides along the conductive surface of the resistor The resistance changes between the wiper and both ends of the resistor as you move the wiper Basically a poten tiometer pot for short is two variable resistors in one package If you connect the ends to voltage and ground you can read a changing voltage at the wiper Most of the circuits in this book will be shown on a bread board By default the two side rows on each side of the board will be used for power and ground lines typically 5V for power On most of the boards you ll notice wires connecting each of the side rows to two of the top rows For some projects the board will be powered from a Wiring or Arduino module or USB power so there will be no need for a voltage regulator For others you will need one use separate wires rather than connecting from one side to the other directly so that when need a voltage regulator it can be added easily Figure 1 19 shows a board with and without a regulator There are many other circuits you ll learn in the projects that follow but these are the staples of all the projects X Input voltage To microcontroller digital input Figure 1 16 Digital input to a microcontroller
13. outputs a power supply and a communications port to connect to other devices You can power these modules either through a separate power supply or through the USB connection to your computer The jumper shown in Figure 1 9 switches power from the external supply to the USB supply For this introduction you ll power the module from the USB connection For many projects you ll want to disconnect them from the computer once you re finished programming them To do this you ll need to switch the power jumper to power the board from the external power supply Both Wiring and Arduino have four power pins On the Wiring board they re labeled 5V Gnd GND and 9 15V On the Arduino they re labeled 5V Gnd Gnd and 9V In both cases the 5V connection outputs 5V relative to the two ground pins The 9V or 9 15V pin is connected directly to the voltage input on the external power jack so the output voltage of that pin is equal to whatever your input voltage is You can also use this connection to connect these modules directly to 9 15V battery power if you set the power jumper to external power Figure 1 10 shows the inputs and outputs for the Arduino the Arduino Mini and the Wiring module Each module has the same standard features that most microcontrollers have analog inputs digital inputs and outputs and power and ground connections Some of the 1 0 pins can also be used for serial communication The Wiring and Arduino boards also
14. predictable outputs Unfortunately not all software interfaces are as simple as you d like them to be so be prepared to have to experiment a little to get some software objects to do what you think they should do When you re learning a new software interface it helps to approach it mentally in the same way you do with a physical interface Don t try to use all the functions at once Learn what each function does on its own before you try to use them all together You don t learn to play the piano by starting with a Bach fugue you start one note at a time Likewise you don t learn a software interface by writing a full application with it you learn it one function at a time There are many projects in this book if you find any of their software functions confusing write a simple program that demonstrates just that function then return to the project Finally there s the electrical interface the pulses of electrical energy sent from one device to another to be interpreted as information Unless you re designing new objects or the connections between them you never have to deal with this interface When you re designing new objects or the networks that connect them however you have to know and understand a few things about the electrical interface so that you know how to match up objects that might have slight differences in their electrical interfaces X It s About Pulses In order to communicate with each ot
15. software interfaces and most will have a little of both Even though you don t normally think of these devices as computers they are When you think of them as programmable objects with interfaces that you can manipulate it s easier to figure out how they can all communicate with each other regardless of their end function X amp G Good Habits Networking objects is a bit like love The fundamental problem in both is that when you re sending a message you never really know whether the receiver understands what you re saying and there are a thousand ways for your message to get lost or garbled in transmission You may know why you feel the way you do but your partner doesn t All he or she has to go on are the words you say and the actions you take Likewise you may know exactly what message your local computer is sending how it s sending it and what all the bits mean but the remote computer has no idea what they mean unless you program it to understand them it has to go on are the bits it receives If you want reliable clear communications in love or networking there are a few simple things you have to do Listen more than you speak Never assume that what you said is what they heard Agree on how you re going to say things in advance Ask politely for clarification when messages aren t clear Listen More Than You Speak The best way to make a good first impression and to main tain a goo
16. those wires Likewise wired network connections are made up of timed pulses of electrical energy sent down the wires For longer distances and higher bandwidth the electrical wires may be replaced with fiber optic cables carrying timed pulses of light In cases where a physical connection is inconvenient or impossible the transmission can be sent using pulses of radio energy between radio transceivers a transceiver is two way radio capable of transmitting and receiving The meaning of data pulses is independent of the medium that s carrying them You can use the same sequence of pulses whether you re sending them across wires fiber optic cables or radios If you keep in mind that all of the communication you re dealing with starts with a series of pulses and that somewhere there s a guide explaining the sequence of those pulses you can work with any commu nication system you come across X amp Computers of all Shapes and Sizes You ll encounter at least four different types of computers in this book grouped according to their physical interfaces The most familiar of these is the personal computer Whether it s a desktop or a laptop machine it s got a keyboard a screen and a mouse and you probably use it just about every working day These three elements the keyboard the screen and the mouse make up its physical interface The second type of computer you ll encounter in this book the microcontroller
17. will suffice to get you started for now For more information type help at the command prompt to get a list of commonly used commands For any command you can get its user manual by typing man commandname For more on getting around Unix and Linux systems using the command line see Learning the Unix Operating System by Jerry Peek John Strang and Grace Todino Gonguet When you re ready to close the connection to your server type logout PHP The server programs in this book are mostly in PHP PHP is one of the most common scripting languages for appli cations that run on the web server server side scripts Server side scripts are programs that allow you to do more with a web server than just serve fixed pages of text or HTML They allow you to access databases through a browser save data from a web session to a text file send mail from a browser and more You ll need a web hosting account with an Internet service provider for most of the projects in this book and it s likely that your host already provides access to PHP If not talk to your system admin istrator to see whether it can be installed To get started with PHP you ll need to make a remote connection to your web hosting account using ssh as you did in the last section Some of the more basic web hosts don t allow ssh connections so check with yours to see whether they do and if yours doesn t look around for an inexpensive hosting company that does it will be w
18. working Here s your first PHP program Open your favorite text editor type this in and save it on the server with the name hello php in your public html directory Your web pages may be stored in a different directory such as www or web public php echo lt html gt lt head gt lt head gt lt body gt n echo hello world An echo body html An gt Now back at the command line type the following to see the results php hello php You should get the following response html head head body hello world body html Now try opening this file in a browser To see this program in action open a web browser and navigate to the address of this file on your website Because you Saved it in public html the address is http www example com hello php replace www example com with your web site and any additional path info needed to access your home files such as http tigoe net tigoe hello php You should get a web page like the one in Figure 1 5 A If you see the PHP source code instead of what s shown in Figure 1 5 you may have opened up the PHP script as a local file make sure your web browser s location bar says http instead of file If it still doesn t work your web server may not be configured or PHP Another possibility is that your web server uses a different extension for php scripts such as php4 Consult with your web hosting provider for more informatio
19. PROJECTS Practical Methods for Connecting Things Talk Ld Making Things Talk by Tom Igoe Copyright 2007 O Reilly Media Inc All rights reserved Printed in U S A Published by Make Books an imprint of Maker Media a division of O Reilly Media Inc 1005 Gravenstein Highway North Sebastopol CA 95472 O Reilly books may be purchased for educational business or sales promotional use For more information contact our corporate institutional sales department 800 998 9938 or corporate oreilly com Print History Publisher Dale Dougherty September 2007 Associate Publisher and Executive Editor Dan Woods First Edition Editor Brian Jepson Copy Editor Nancy Kotary Creative Director Daniel Carter Designer Katie Wilson Production Manager Terry Bronson Indexer Patti Schiendelman Cover Photograph Tom Igoe The O Reilly logo is a registered trademark of O Reilly Media Inc The MAKE Projects series designations Making Things Talk and related trade dress are trademarks of O Reilly Media Inc Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks Where those designations appear in this book and O Reilly Media Inc was aware of the trademark claim the designations have been printed in caps or initial caps While every precaution has been taken in the preparation of this book the publisher and authors assume no responsibility for errors or omissi
20. a terminal window for Mac OS X and Linux users Windows Serial Communication To get started you ll need to know the serial port name Click Start Run use the Search box on Vista type devmgmt msc and press Enter to launch Device Manager If you ve got a serial device such as a Wiring or Arduino board attached you ll see a listing for Ports COM amp LPT Under that listing you ll see all the available serial ports Each new Wiring or Arduino board you connect will get a new name such as 5 COM6 and so forth Once you know the name of your serial port open PuTTY In the Session category set the Connection Type to Serial and enter the name of your port in the Serial Line box as shown in Figure 1 6 Then click the Serial category at the end of the category list and make sure that the serial line matches your port name Configure the serial line for 9600 baud 8 databits 1 stop bit no parity and no flow control Then click the Open button and a serial window will open Anything you type in this window will be sent out the serial port and any data that comes in the serial port will be displayed here as ASCII text NOTE Unless your Arduino is running a program that communi cates over the serial port and you ll learn all about that shortly you won t get any response yet Mac 05 X and Linux Serial Communication To get started with serial communication in Mac OS X or Linux open a terminal window and type
21. ation can t download new code to the module When an application tries to open a serial port it requests exclusive control of it either by writing to a special file called a lock file or by asking the operating system to lock the file on its behalf When it closes the serial port it releases the lock on the serial port Sometimes when an application crashes while it s got a serial port open it can forget to close the serial port with the result that no other application can open the port When this happens the only thing you can do to fix it is to restart the operating system which clears all the locks alternatively you could wait for the operating system to figure out that the lock should be released To avoid this problem make sure that you close the serial port whenever you switch from one application to another Linux and Mac OS X users should get in the habit of closing down screen with Ctrl A Ctrl every time and Windows users should disconnect the connection in PuTTY Otherwise you may find yourself restarting your machine a lot opposite page top Figure 1 7 Wiring Board Arduino NG board Arduino Mini opposite page bottom Figure 1 8 The Arduino microcontroller modules CLOCKWISE FROM TOP LEFT the original Arduino serial module the ArduinoUSB the Arduino NG the Arduino Bluetooth and finally the Arduino Mini center THETOOLS 35 36 MAKING THINGS TALK
22. avorite vendors A list of vendors can be found in Appendix B 22 MAKING THINGS TALK Figure 1 1 See list at right for number references Table 1 1 Common tools for electronic D Digi Key digikey com J Jameco jameco com and microcontroller work Images Sl imagesco com S SparkFun Electronics sparkfun com RESISTORS DIODES 1 D 100QBK ND J 690620 1NA4004 R s D 1N4004 E3 or 23GI ND J 35992 D 220QBK ND J 690700 3 3V zener D 1N5226B TPCT ND J 743488 D 470QBK ND J 690785 z PUSHBUTTONS D 10KQBK ND J 29911 POB cta D SW400 ND J 119011 COM 00097 D 22KQBK ND J 30453 Panel Mount D GH1344 ND J 164559PS D 100KQBK ND J 29997 D LOMQBK ND J 29698 SOLDERLESS BREADBOARDS various D 438 1045 ND J 20723 20600 S PRT 00137 CAPACITORS O luF ceramic D 399 4151 J 15270 HOOKUP WIRE luF electrolytic D P10312 ND J 94161 J 36856 S PRT 08023 10uF electrolytic pn D P11212 ND J 29891 S COM 00523 100uF electrolytic D P10269 ND J 158394 COM 00096 J 36792 S PRT 08022 J 36767 S PRT 08024 VOLTAGE REGULATORS ZIV D 576 1134 ND J 242115 S COM 00526 POTENTIOMETER LM7805CT ND J 51262 S COM 00107 LOK D 29081 ANALOG SENSORS HEADER PINS Flex sensors J 150551 I FLX 01 straight D A26509 20 ND J 103377 S 00116 FSRS
23. component or module you re using as your version may vary from what is shown here THETOOLS 47 G It Ends with the Stuff You Touch Though most of this book is about the fascinating world of making things talk to each other it s important to remember that you re most likely building your project for the enjoyment of someone who doesn t care about the technical details under the hood Even if you re building it only for yourself you don t want to have to fix it all the time All that matters to the person using your system are the parts that she can see hear and touch All the inner details are irrelevant if the physical interface doesn t work So don t spend all of your time focusing on the communication between devices and leave out the communication with people In fact it s best to think about the specifics of what the person does and sees first There are a number of details that are easy to overlook but are very important to humans For example many network communications can take several seconds or more In a screen based operating system progress bars acknowledge a person s input and keep her informed as to the progress of the task Physical objects don t have progress bars but they should incorporate some indicator as to what they re doing perhaps as simple as an LED that gently pulses while the network transfer s happening or a tune that plays Find your own solution but make sure you give some
24. ctive graphics very quickly It s also a simple introduction to Java for beginning programmers If you re a Java programmer already you can include Java directly in your Process ing programs Processing is expandable through code libraries You ll be using two of the Processing code libraries frequently in this book the serial library and the networking library For more on the syntax of Processing see the language reference guide at www processing org To learn more about programming in Processing check out Processing A Programming Handbook for Visual Designers and Artists by Casey Reas and Ben Fry MIT Press 2007 the creators of Processing BASIC users If you ve never used a C style for next loop it can seem a bit forbidding What this bit of code does is establish a variable called myCounter As long as number is less than or equal to ten it executes the instructions in the curly brackets myCounter tells the program to add one to myCounter each time through the loop The equivalent BASIC code is for myCounter 0 to 10 Print myCounter next Mac OS X Users Once you ve downloaded and installed Processing there s an extra step you ll need to take that will make the projects in this book that use Processing possible for int myCounter myCounter lt 10 myCounter println myCounter Go to the Processing application directory then to the libraries serial subdirectory There s a file there called macosx
25. d relationship is to be a good listener Listening is more difficult than speaking You can speak anytime you want to but you never know when the other person is going to say something so you have to listen all the time In networking terms this means that you should write your programs such that they re listening for new messages most of the time and sending messages only when necessary It s often easier to send out messages all the time rather than figure out when it s appropriate but it can lead to all kinds of problems It usually doesn t take a lot of work to limit your sending and the benefits far outweigh the costs Never Assume What you say is not always what the other person hears Sometimes it s a matter of misinterpretation and other times you may not have been heard clearly If you assume that the message got through and continue on obliviously you re in for a world of hurt Likewise you may be tempted to work out all the logic of your system and all the steps of your messages before you start to connect things together then build it then test it all at once Avoid that temptation It s good to plan the whole system out in advance but build it and test it in baby steps Most of the errors that occur in building these projects occur in the communica tion between objects Always send a quick Hello World message from one object to the others and make sure that the message got there intact before you proceed to the mo
26. e An object s interface is made up of three elements First there s the physical interface This is the stuff you touch The knobs switches keys and other sensors that make up the physical interface react to your actions The connectors that join objects are also part of the physical interface Many of the projects in this book will show you how to build physical interfaces Every network of objects begins and ends with a physical interface Even though some objects in a network software objects have no physical interface people build their mental models of how a system works based on the physical interface A computer is much more than the keyboard mouse and screen but that s what we think of it as because that s what we see and touch You can build all kinds of wonderful functions into your system but if those functions aren t apparent in the things people get to see hear and touch your wonderful functions will never get used Remember the lesson of the VCR clock that constantly blinks 12 00 because no one can be bothered to learn how to set it if the physical interface isn t good the rest of the system suffers Second there s the software interface the commands that you send to the object to make it respond In some projects you ll invent your own software interface and in others you ll rely on existing interfaces to do the work for you The best software interfaces have simple consistent functions that result in
27. e syntax as Processing so you ll see that if then statements repeat loops and comments all look familiar For more on PHP check out www php net the main source for PHP where you ll find some good tutorials on how to use it You can also check out Learning PHP 5 by David Sklar O Reilly Media Inc 2004 for a more in depth treatment Serial Communication Tools The remote access programs in the earlier section were terminal emulation programs that gave you access to remote computers through the Internet but that s not all a terminal emulation program can do Before TCP IP was ubiquitous as a way for computers to connect to networks connectivity was handled through modems attached to the serial ports of computers Back then many users con nected to bulletin boards BBSes and used menu based systems to post messages on discussion boards down load files and send mail to other users of the same BBS Nowadays serial ports are used mainly to connect to some of peripheral devices of your computer In micro controller programming they re used to exchange data between the computer and the microcontroller For the projects in this book you ll find that using a terminal program to connect to your serial ports is indispens able There are several freeware and shareware terminal programs available but to keep it simple stick with the classics PuTTY version O 59 or later for Windows users and the GNU screen program running in
28. eedlenose pliers Jameco 35473 Radio Shack 640 2033 SparkFun TOL 00079 5 Mini screwdriver Get one with both Phillips and slotted heads You ll use it all the time Jameco 127271 RadioShack 640 1963 6 Helping hands These make soldering much easier Jameco 681002 7 9 12V DC power supply You ll use this all the time and you ve probably got a spare from some dead electronic device Make sure you know the polarity of the plug so you don t reverse polarity on a component and blow it up Most of the devices shown in this book have a DC power jack that accepts 2 1mm inner diameter 5 5mm outer diameter plug so look for an adaptor with the same dimensions Jameco 170245 12V 1000 RadioShack 273 1667 3 12V 800 SparkFun TOL 00298 8 Power connector 2 1mm inside diameter 5 5mm outside diameter You ll need this to connect your microcontroller module or breadboard to a DC power supply This size connector is the most common for the power supplies that will work with the circuits you ll be building here Jameco 159610 Digi Key digikey com CP 024A ND 9 Multimeter You don t need an expensive one As long as it measures voltage resistance amperage and con tinuity it ll do the job Jameco 220812 RadioShack 22 810 SparkFun TOL 00078 10 USB cables You ll need both USB A to B the most common USB cables and USB A to mini B the kind that s common with digital cameras for the projects in this b
29. ell worth it for the flexibility of working from the command line Once you re connected type php v You should get a reply like this PHP 4 3 9 cgi built Nov 4 2005 11 49 43 Copyright c 1997 2004 The PHP Group Zend Engine v1 3 0 Copyright c 1998 2004 Zend Technologies This tells what version of PHP is installed on your server The code in this book was written using PHP4 so as long as you re running that version or later you ll be fine PHP makes it easy to write web pages that can display results from databases send messages to other servers send email and more Most of the time you won t be executing your PHP scripts directly from the command line Instead you ll be calling the web server application on your server most likely a program called Apache and asking it for a file this is all accomplished simply by opening a web browser typing in the address of a document on your web server and pressing Enter just like visiting any other web page If the file you ask for is a PHP script the web server applica tion will look for your file and execute it It ll then send a message back to you with the results THETOOLS 31 809 hello world M Mozilla Firefox Figure 1 5 m Th Its of first PHP script T RN SRY lt e results of your firs scrip WWW in a browser For more on this see Chapter 3 For now let s get a simple PHP program or two
30. elong Files that you place in your home directory that is outside www or public html can t be seen by web visitors NOTE You should check with your web host to learn how the files and directories in your home directory are set up To find out what files are in a given directory use the list Is command like so Is l 4 NOTE The dot is shorthand for the current working directory Similarly a double dot is shorthand for the directory the parent directory that contains the current directory The means list long You ll get a response like this total 44 drwxr xr x 13 igoe users 4096 Apr 14 11 42 public html drwxr xr x 3 igoe users 4096 Nov 25 2005 share This is a list of all the files and subdirectories of the current working directories and their attributes The first column lists who s got permissions to do what read modify or execute run a file The second lists how many links there are to that file elsewhere on the system it s not something you ll have much need for most of the time The third column tells you who owns it and the fourth tells you the group a collection of users the file belongs to The fifth lists its size and the sixth lists the date it was last modified The final column lists the filename In a Unix environment all files whose names begin with a dot are invisible Some files like access control files that you ll see later in the book need to be invisible You can get a
31. emote device is unplugged or perhaps it didn t get the initial message When no response is forthcoming send another message Don t resend it too often and give the other party time to reply before resending Acknowledging messages may seem like a luxury but it can save a whole lot of time and energy when you re building a complex system X GG Tools As you ll be working with the physical software and electrical interfaces of objects the tools you ll need are physical tools software and computer hardware Physical Tools If you ve worked with electronics or microcontrollers before chances are you have your own hand tools already Figure 1 1 shows the ones used most frequently in this book They re common tools and can be obtained from many vendors few are listed in Table 1 1 In addition to hand tools there are some common elec tronic components that you ll use all the time They re listed as well with part numbers from the retailers featured most frequently in this book Not all retailers will carry all parts so there are many gaps in the table NOTE You ll find a number of component suppliers in this book buy from different vendors depending on who s got the best and the least expensive version of each part Sometimes it s easier to buy from a vendor that you know carries what you need rather than search through the massive catalog of a vendor who might carry it cheaper Feel free to substitute your f
32. for a filename The most common commands are listed along the bottom of the screen While nano is for creating and editing files less is for reading them less takes any file and displays it to the screen one screenful at a time To see the file you just created in nano for example type less filename txt You ll get a list of the file s contents with a prompt at the bottom of the screen Press the spacebar for the next screenful When you ve read enough type q to quit There s not much to less but it s a handy way to read long files You can even send other commands through less or almost any command line program using the pipe operator For example try this ls la less 30 MAKING THINGS TALK eoo Terminal Window nano 80x24 Figure 1 4 GNU nano 1 2 4 File test_txt E The nano text editor Hello This is file written in nano To close this file and save it type control x The most common commands are at the bottom of the screen The character 1 shorthand for the control key Read 6 lines Get Help E WriteOut ne Read File gi Prev Page gs Cut Text 9 Cur Pos gi Exit Justify Where 15 Next Page UnCut Txt gj To Spell Once you ve created a file you can delete it using the rm commana like this rm filename Like rmdir rm won t ask you if you re sure before it deletes your file so use it carefully There are many other commands available in the Unix command shell but these
33. g protocols If you re working with a previously established protocol make sure you understand what all the parts are before you start trying to interpret it If you have the luxury of making up your own protocol make sure you ve consid ered the needs of both the sender and receiver when you define it For example you might decide to use a protocol that s easy to program on your web server but turns out to be impossible to handle on your microcontroller A little thought to the strengths and weaknesses on both sides of the transmission and a little compromise before you start to build will make things flow much more smoothly Ask Politely for Clarification Messages get garbled in countless ways Sometimes you hear one thing it may not make much sense but you act on it only to find out that your partner said something entirely different from what you thought It s always best to ask nicely for clarification to avoid making a stupid mistake Likewise in network communications it s wise to check that any messages you receive make sense When they don t ask for a repeat transmission It s also wise to check that a message was sent rather than assume Saying nothing can be worse than saying something wrong Minor problems can become major when no one speaks up to acknowledge that there s a problem The same thing can occur in network communications One device may wait forever for a message from the other side not knowing that the r
34. has no physical interface that humans can interact with directly It s just an electronic chip with input and output pins that can send or receive electrical pulses Using a microcontroller is a three stage process 1 You connect sensors to the inputs to convert physical energy like motion heat and sound into electrical energy 2 You attach motors speakers and other devices to the outputs to convert electrical energy into physical action 3 Finally you write a program to determine how the input changes affect the outputs In other words the microcontroller s physical interface is whatever you make of it The third type of computer in this book the network server is basically the same as a desktop computer and may even have a keyboard screen and mouse Even though it can do all the things you expect of a personal computer its primary function is to send and receive data over a network Most people using servers don t think of them as physical things because they only interact with them over a network using their local computers as physical interfaces to the server A server s most important interface for most users purposes is its software interface 20 MAKING THINGS TALK The fourth group of computers is a mixed bag mobile phones music synthesizers and motor controllers to name a few Some of them will have fully developed physical interfaces some of them will have minimal physical interfaces but detailed
35. her objects use communications protocols A protocol is a series of mutually agreed upon standards for communication between two or more objects THETOOLS 19 Serial protocols like RS 232 USB and IEEE 1394 also known as FireWire and i Link connect computers to printers hard drives keyboards mice and other periph eral devices Network protocols like Ethernet and TCP IP connect multiple computers to each other through network hubs routers and switches A communications protocol usually defines the rate at which messages are exchanged the arrangement of data in the messages and the grammar of the exchange If it s a protocol for physical objects it will also specify the electrical characteristics and sometimes even the physical shape of the connectors Protocols don t specify what happens between objects however The commands to make an object do something rely on protocols in the same way that clear instructions rely on good grammar You can t give good instructions if you can t form a good sentence One thing that all communications protocols share from the simplest chip to chip message to the most complex network architecture is this it s all about pulses of energy Digital devices exchange information by sending timed pulses of energy across a shared connection The USB connection from your mouse to your computer uses two wires for transmission and reception sending timed pulses of electrical energy across
36. hile you re debugging X 38 MAKING THINGS TALK Analog Analog PWM Inputs Outputs Digital Input Outputs 24 39 0 7 0 5 24 31 32 39 7 0 6 PORT3 PORTA ANALOG IN PWM External Power Jack 9 15V Power supply selector USB or External USB connector Digital Input Outputs O 23 lt Arduino 28 Ground O CD T http www arduino cc 6 ICSP EC Ext Power POWER Analog in Jack 5V Gnd 9V 012345 COLO FAM Digital Figure 1 10 Wiring Arduino NG and Arduino Mini pin diagrams THETOOLS 39 Figure 1 12 Arduino File Edit Sketch Tools Help The Arduino programming environment 666 Arduino 000 Ak The Wiring environment looks identical to this except for the color LEDPin 13 you can use any digital 1 0 pin you want 1 setup bottom left pinModeCLEDPin OUTPUT Figure 1 11 Typical wiring for an Arduino Mini i 1oopO digitolWrite LEDPin HIGH 4 10 500 digitolWrite LEDPin LOW tel ay S88 bottom right Figure 1 13 LED connected to pin 13 of an Arduino board 766422 Digital Arduino wear Chad neo uec EM Mini Mini RX Ground Reset 5V 40 MAKING THINGS TALK Blink Language Arduino Wiring Here s your first program Blinks an LED attached to pin 13 every half second Connecti
37. hrough FireWire It s a free open source tool available from Figure 1 2 The Processing editor window www processing org Because it s based on Java you can include Java classes and methods in your Processing programs It runs on Mac OS X Windows and Linux so almost anyone can run Processing on their favorite operating system If you don t like working in Processing you should be able to use the code samples here and their comments as pseudocode for whatever multimedia environment you prefer Once you ve downloaded and installed Processing on your computer open the applica tion You ll get a screen that looks like Figure 1 2 n Here s your first Processing program Type this into the editor window and press the Run button on println Hello World n the top left hand side of the toolbar amp G It s not too flashy a program but it s a classic It should print Hello World in the message box at the bottom of the editor window It s that easy Programs in Processing are called sketches and all the data for a sketch is saved in a folder with the sketch s name The editor is very basic without a lot of clutter to get in your way The toolbar has buttons to run and stop a sketch create a new file open an existing sketch save the current sketch or export to a Java applet You can also export your sketch as a standalone application from the File menu Files are normally stored in a subdirectory of your Doc
38. in the Utilities subdirectory of the Applications directory On Linux look for a program called xterm rxvt Terminal or Konsole NOTE ssh is a more modern cousin of a longtime Unix remote access program called telnet ssh is more secure in that it scrambles all data sent from one computer to another before sending it so it can t be snooped on en route telnet sends all data from one computer to another with no encryption You should use ssh to connect from one machine to another whenever you can Where telnet is used in this book it s because it s the only tool that will do what s needed for the examples in question Think of telnet as an old friend maybe not the coolest guy on the block maybe he s a bit of a gossip but he s stood by you forever and you know you can trust him to do the job when everyone else lets you down X gt PuTTY Configuration Specify the destination you want to connect to Host Name jor ackhess 22 O Raw Teinet O loge SSH O Seia Load save delete a stored session Saved Sermons Dein Settings Close vandow on ed Owy Only on clean et oem J cm Making the SSH Connection Mac OS X and Linux Open your terminal program These Terminal applications give you a plain text window with a greeting like this Last login Wed Feb 22 07 20 34 on ttypl ComputerName username Type ssh username myhost com at the command line to co
39. mel AVR family of microcontrollers In fact you ll find that the editors for Processing Wiring and Arduino look almost identical Both programming environments are free and open source available through hardware processing org You can buy the actual modules from the original developers or from SparkFun at www sparkfun com or from Make at store makezine com If you re a hardcore hardware geek and like to make your own printed circuit boards you can download the plans and make your own recommend the former as it s much quicker and more reliable for most people Figures 1 7 and 1 8 show Wiring and several variants of Arduino One of the best things about Wiring and Arduino is that they are cross platform This is a rarity in microcontroller development environments They work well on Mac OS Windows and with some effort Linux Another good thing about these environments is that like Processing they can be extended Just as you can include Java classes and methods in your Processing programs you can include C C code written in AVR C in your Wiring and Arduino programs For more on how to do this see the Wiring and Arduino websites X 1 Who s Got the Port Serial ports aren t easily shared between applications In fact only one application can have control of a serial port at a time If PuTTY or the screen program has the serial port open to an Arduino module for example the Arduino programming applic
40. n You may have noticed that the program is actually printing out HTML text PHP was made to be combined with HTML In fact you can even embed PHP in HTML pages by using the lt and gt tags that start and end every PHP script If you get an error when you try to open your PHP script in a browser ask your system administrator if there are any requirements as to which directories PHP scripts need to be in on your server or on the file permissions for your PHP scripts 32 MAKING THINGS TALK Here s a slightly more complex PHP script Save it to your server in the public html directory as time php php Date printer Language PHP Prints the date and time in an HTML page Get the date and format it date date Y m d h i s t print the beginning of an HTML page echo lt html gt lt head gt lt head gt lt body gt n echo hello world lt br gt n Include the date echo Today s date date lt br gt n finish the HTML echo lt body gt lt htm1 gt n gt To see it in action type http www example com time php into your browser You should get the date and time You can see this program uses a variable date and calls a built in PHP function date to fill the variable You don t have to declare the types of your variables in PHP Any simple or scalar variable begins with a and can contain an integer a floating point number or a string PHP uses the same C styl
41. nce to the directory that contains it Those two references will exist as long as the directory exists You can t change them To remove a directory type rmdir directoryname You can remove only empty directories so make sure that you ve deleted all the files in a directory before you remove it rmdir won t ask you if you re sure before it deletes your directory though so be careful Don t remove any direc tories or files that you didn t make yourself until you know your way around Controlling Access to Files Type 15 1 to get a list of files in your current directory and take a closer look at the permissions on the files For example a file marked drwx means that it s a directory and that it s readable writable and executable by the system user that created the directory also known as the owner of the file Or take the file marked rw rw rw The at the beginning means it s a regular file not a directory and that the owner the group of users that the file belongs to usually this is the group that the owner is a member of and everyone else who accesses the system can read and write to this file The first rw refers to the owner the second refers to the group and the third refers to the rest of the world If you re the owner of a file you can change its permissions using the chmod command chmod go w filename The options following chmod refer to which users you want to affect In the preceding exam
42. ndow saying Done compiling Then press the reset button on the module to reset it and prepare it to accept a new program Then click Upload This will take several seconds Once it s done you ll get a message saying Done uploading and a confir mation message in the serial monitor window that says Atmel AVR ATmegal68 is found Uploading flash NOTE If your Arduino uses an 8 it will report that instead You must make sure that you have configured the Arduino to use the model of ATmega microcontroller on your board Press the reset button on the module again and after about five seconds the LED you wired to the output pin will begin to blink That s the microcontroller equivalent of Hello World If you re using an Arduino Diecimila or later model you won t have to press the reset button when you upload NOTE If it doesn t work you might want to seek out some external help The Arduino www arduino cc cgi bin yabb2 YaBB pl and Wiring wiring org co cgi bin yabb YaBB pl forums are full of helpful people who love to hack these sort of things THETOOLS 41 Serial Communication One of the most frequent tasks you ll use a microcon troller for in this book is to communicate serially with another device either to send sensor readings over a network or to receive commands to control motors lights or other outputs from the microcontroller Regard less of what device you re communicating with the commands yo
43. nnect to your web host Replace username and myhost com with your username and host address Windows On Windows you ll need to start up PUTTY see Figure 1 3 To get started type myhost com your web host s name in the Host Name field choose the SSH protocol and then click Open The computer will try to connect to the remote host and asks for your password when it connects Type it you won t see what you type followed by the Enter key 2 Figure 1 3 The main PuTTY window 28 MAKING THINGS TALK 66 Using the Command Line Once you ve connected to the remote web server you should see something like this Last login Wed Feb 22 08 50 04 2006 from 216 157 45 215 userid myhost Now you re at the command prompt of your web host s computer and any command you give will be executed on that computer Start off by learning what directory you re in To do this type the following pwd which stands for print working directory It asks the computer to list the name and pathname of the directory in which you re currently working You ll see that many Unix commands are very terse so you have to type less The downside of this is that it makes them harder to remember The server will respond with a directory path such as home igoe This is the home directory for your account On many web servers this directory contains a subdirectory called public_html or www which is where your web files b
44. okbook of sorts and this chapter covers the staple ingredients The concepts and tools you ll use in every chapter are introduced here There s enough information on each tool to get you to the point where you can make the tool say Hello World Chances are you ve used some of the tools in this chapter before or other tools just like them Skip past the things you know and jump into learning the tools that are new to you You may want to explore some of the less familiar tools on your own to get a sense of what they can do The projects in the following chapters only scratch the surface of what s possible for most of these tools References for further investigation are provided 4 Happy Feedback Machine by Tuan Anh T Nguyen The main pleasure of interacting with this piece comes from the feel of flipping the switches and turning the knobs The lights and sounds produced as a result are secondary and most people who play with it remember the feel of it rather than its behavior 18 MAKING THINGS TALK It Starts with the Stuff You Touch All of the objects that you ll encounter in this book tangible or intangible will have certain behaviors Software objects will send and receive messages store data or both Physical objects will move light up or make noise The first question to ask about any of them is what does it do The second is how do make it do what it s supposed to do Or more simply what is its interfac
45. ons Rintis ai int LEDPin void setup pinMode LEDPin OUTPUT void loop digitalWrite LEDPin HIGH delay 500 digitalWrite LEDPin LOW delay 500 leg of an LED leg goes to ground set pin 13 to be an output turn the LED on pin 13 on wait half a second turn the LED off wait half a second amp In order to see this run you ll need to connect an LED from pin 13 of the board to ground GND as shown in Figure 1 13 The positive long end of the LED should go to 13 and the short end to ground Then type the code into the editor Click on Tools Serial Port to choose the serial port of the Arduino module On the Mac or Linux the serial port will have a name like dev tty usbserial 1B1 the letters and numbers after the dash will be slightly different each time you connect it On Windows it should be COMx where x is some number for example COM5 Next select the model of AVR microcontroller on your Arduino or Wiring module you ll have to inspect the board to determine this It will be either ATmega8 or ATmegal68 Make the appropriate choice from the Tools gt Microcon troller MCU menu NOTE On Windows 1 are generally reserved for built in serial ports whether or not your computer has them Once you ve selected the port and model click Verify to compile your code When it s compiled you ll get a message at the bottom of the wi
46. ons or for damages resulting from the use of the information contained herein Please note Technology and the laws and limitations imposed by manufacturers and content owners are constantly changing Thus some of the projects described may not work may be inconsistent with current laws or user agreements or may damage or adversely affect some equipment Your safety is your own responsibility including proper use of equipment and safety gear and determining whether you have adequate skill and experience Power tools electricity and other resources used for these projects are dangerous unless used properly and with adequate precautions including safety gear Some illustrative photos do not depict safety precautions or equipment in order to show the project steps more clearly These projects are not intended for use by children Use of the instructions and suggestions in Making Things Talk is at your own risk O Reilly Media Inc disclaims all responsibility for any resulting damage injury or expense It is your responsibility to make sure that your activities comply with applicable laws including copyright ISBN 10 0 596 51051 9 ISBN 13 978 0 596 51051 0 This excerpt is protected by copyright law It is your responsibility to obtain permissions necessary for any proposed use of this material Please direct your inquiries to permissions oreilly com 1 MAKE PROJECTS 2 The Tools This book is a co
47. ook SparkFun CAB 00512 00598 11 Serial to USB converter This converter lets you speak TTL serial from a USB port Breadboard serial to USB modules like the FT232 modules shown here are cheaper than the consumer models and easier to use in the projects in this book SparkFun BOB 00718 or DEV 08165 12 Alligator clip test leads It s often hard to juggle the five or six things you have to hold when metering a circuit Clip leads make this much easier Jameco 10444 RadioShack 278 016 SparkFun CAB 00501 13 Microcontroller module The microcon trollers shown here are the Arduino NG and the Arduino Mini Available from SparkFun and Make store makezine com in the U S PCB Europe in Europe pcb europe net catalog and from multiple distributors internationally See arduino cc en Main Buy for details in your region 14 Header pins You ll use these all the time It s handy to have female ones around as well Jameco 103377 Digi Key A26509 20 ND SparkFun PRT 00116 15 Spare LEDs for tracing signals LEDs are to the hardware developer what print statements are to the software developer They let you see quickly if there s voltage between two points or if a signal s going through Keep spares on hand Jameco 3476 RadioShack 276 0063 Digi Key 160 1144 ND 160 1665 ND 16 Resistors You ll need resistors of various values for your projects Common values are listed in Table 1 1 17 Analog sensors variable resi
48. ple you re removing write permission w for the group g that the file belongs to and for all others o besides the owner of the file To restore write permissions for the group and others and to also give them execute permission you d type chmod go wx filename A combination of u for user g for group and o for others and a combination of and and r for read w for write and x for execute gives you the capability to change permissions on your files for anyone on the system Be careful not to accidentally remove permissions from yourself the user Also get in the habit of not leaving files accessible to the group and others unless you need to on large hosting providers it s not unusual for you to be sharing a server with hundreds of other users Creating Viewing and Deleting Files Two other command line programs you ll find useful are nano and less nano is a text editor It s very bare bones and you may prefer to edit your files using your favorite text editor on your own computer and then upload them to your server But for quick changes right on the server nano is great To make a new file type nano filename txt The nano editor will open up Figure 1 4 shows what it looked like after typed in some text All the commands to work in nano are keyboard commands you type using the Control key For example to exit the program type Control X The editor will then ask you if you want to save and prompt you
49. r for the FTDI USB serial driver not needed under Linux This is the USB device on the module that allows your computer to communicate with the module via USB Install it Macintosh users will also find a file in the arduino 0009 directory called macosx setup command This is the same as the macosx setup command for Processing that was described earlier so if you already ran it to configure Processing you won t need to do it again If you haven t double click the file and follow the instructions that come up Arduino and Wiring are new to the market and updates to their software occur frequently The notes in this book refer to Arduino version 0009 and Wiring version 0012 By the time you read this the specifics may be slightly different so check the Arduino and Wiring websites for the latest details X J Now you re ready to launch Arduino Connect the module to your USB port and double click the Arduino icon to aunch the software The editor looks like Figure 1 12 The environment is based on Processing and has the same New Open Save and Export buttons on the main toolbar In Arduino and Wiring the Run function is called Verify It compiles your program to check for any errors and the Export function is called Upload to Module instead It uploads your code to the microcontroller module There s an additional button the Serial Monitor that you can use to receive serial data from the module w
50. re complex details Keep that Hello World example on hand for testing when communication fails Getting the message wrong isn t the only wrong step you can make Most of the projects in this book involve building the physical software and electrical elements of the interface One of the most common mistakes people make when developing hybrid projects like these is to assume that the problems are all in one place Quite often l ve sweated over a bug in the software transmis sion of a message only to find out later that the receiving device wasn t even connected or wasn t ready to receive messages Don t assume that communication errors are in the element of the system with which you re most familiar THETOOLS 21 They re most often in the element with which you re least familiar and therefore are avoiding When you can t get a message through think about every link in the chain from sender to receiver and check every one Then check the links you overlooked Agree on How You Say Things In good relationships you develop a shared language based on shared experience You learn the best ways to say things so that your partner will be most receptive and you develop shorthand for expressing things that you repeat all the time Good data communications also rely on shared ways of saying things or protocols Sometimes you make up a protocol yourself for all the objects in your system and other times you have to rely on existin
51. setup command Double click this It will run a script that enables Processing to use serial communication to USB Bluetooth and other devices A terminal window will open and run a script that will ask you a few questions It will also ask for your admin istrator password so don t run it unless you have administrator access to your machine Say yes to anything it asks and provide your password when needed When it s done you ll be able to use the serial ports of your computer through Processing You ll be making heavy use of this capability later on in this book Remote Access Applications One of the most effective debugging tools you ll use in making the projects in this book is command line remote access program which allows you access to the command line interface of a remote computer If you ve never used a command line interface before you ll find it a bit awkward at first but you get used to it pretty quickly This tool is especially important when you need to log into a web server as you ll need the command line to create PHP scripts that will be used in this book Most web hosting providers are based on Linux BSD Solaris or some other Unix like operating system So when you need to do some work on your web server you may need to make a command line connection to your web server THETOOLS 27 If you already know how to create PHP and HTML documents and upload them to your web server you can skip ahead to the
52. solder them by hand It was designed for people who want to make their own board from scratch The Arduino USB board is the default board It s not as easy to assemble by hand but most people buy them pre assembled It has a USB interface The Arduino Bluetooth board is a variant on the USB board that has a wireless interface for programming and serial communica tion It s the most expensive of the Arduino models to date but handy if you know you re going to connect to it all the time through Bluetooth The Arduino Mini is a tiny version of the Arduino suitable for use on a breadboard For people familiar with the Parallax BASIC Stamp 2 or the NetMedia BX 24 the Mini is a comfortable alternative You can also build an Arduino module on a solderless breadboard Arduino also features add on modules called shields which allow you to add pre assembled circuits to the main module At this writing there are four shields on the market PCB Europe pcb europe net catalog sells a board for controlling DC motors and a prototyping shield for making your own circuits SparkFun www sparkfun com sells a breadboard prototyping shield along with the various Arduino boards Libelium www libelium com sells a ZigBee radio shield THETOOLS 37 The projects in this book can be built with other micro controllers as well Like all microcontrollers the Arduino and Wiring modules are just small computers Like every computer they have inputs
53. stors There are countless varieties of variable resistors to measure all kinds of physical properties They re the simplest of analog sensors and they re very easy to build into test circuits Flex sensors and force sensing resistors are handy for testing a circuit or a program Flex sensors Jameco 150551 Images SI FLX 01 THETOOLS 23 Force sensing resistors Parallax 30056 Images SI FSR 400 402 406 408 18 Capacitors You ll need capacitors of various values for your projects Common values are listed in Table 1 1 19 Voltage regulators Voltage regulators take a variable input voltage and output a constant lower voltage The two most common you ll need for these projects are 5V and 3 3V Be careful when using a regulator that you ve never used before Check the data sheet to make sure you have the pin connections correct 3 3V Digkey 576 1134 ND Jameco 242115 SparkFun COM 00526 5V Digkey LM7805CT ND Jameco 51262 SparkFun COM 00107 20 Pushbuttons There are two types you ll find handy the PCB mount type like the ones you find on Wiring and Arduino boards used here mostly as reset buttons for breadboard projects and panel mount types used for interface controls for end users But you can use just about any type you want PCB mount type Digi Key SW400 ND Jameco 119011 SparkFun COM 00097 Panel mount type Digi Key GH1344 ND Jameco 164559PS 21 Potentiometers You ll need potentiom eters
54. tion and possibly the whole operating system depending on how well behaved the software driver is 13 0 Language Arduino Wiring Listens for an incoming serial byte adds one to the byte and sends the result back out serially Also blinks an LED on pin 13 every half second you can use any digital I O pin you want Simple Serial This next Arduino Wiring program listens for incoming serial data It adds one to whatever serial value it receives and sends the result back out It also blinks an LED on pin regularly on the E same pin as the last example to let you know that it s still working int LEDPin int inByte long blinkTimer 0 int blinkInterval 1000 void setup pinMode LEDPin OUTPUT Serial begin 9690 void loop variable to hold incoming serial data keeps track of how long since the LED was last turned off a full second from on to off to on again set pin 13 to be an output configure the serial port for 9600 bps data rate if there are any incoming serial bytes available to read if Serial available gt 0 then read the first available byte inByte Serial read and add one to it then send the result out 42 MAKING THINGS TALK Continued from previous page Serial print inByte 1 BYTE Meanwhile keep blinking the LED after a quarter of a second turn the LED on if millis blinkTimer
55. to let people adjust settings in your project Jameco 29081 22 Solderless breadboard Having a few around can be handy like the ones with two long rows on either side so you can run power and ground on both sides Jameco 20723 2 bus rows per side Radio Shack 276 174 1 bus row per side Digi Key 438 1045 ND SparkFun PRT 00137 23 Ethernet cables A couple of these will come in handy Jameco 522781 24 Black red blue yellow wire 22 AWG solid core hook up wire is best for making solderless breadboard connec tions Get at least three colors and always use red for voltage and black for ground A little organization of your wires can go a long way Black Jameco 36792 Blue Jameco 36767 Green Jameco 36821 Red Jameco 36856 RadioShack 278 1215 Yellow Jameco 36919 Mixed RadioShack 276 173 24 MAKING THINGS TALK Processing File Edit Sketch Tools eoo Processing 0124 Beta Help Software Tools Processing The multimedia programming environment used in this book is called Processing It s based on Java and made for designers artists and others who don t need to know all the gory details of programming but want to get something done It s a useful tool for explaining program ming ideas because it takes relatively little Processing code to make big things happen such as opening a network connection connecting to an external device through a serial port or controlling a camera t
56. u ll use in your microcontroller program will be the same First you ll configure the serial con nection for the right data rate Then you ll read bytes in write bytes out or both depending on what device you re talking to and how the conversation is structured NOTE If you ve got experience with the Basic Stamp or PicBasic Pro you will find Arduino serial communications a bit different than what you are used to In PBasic and PicBasic Pro the serial pins and the data rate are defined each time you send a message In Wiring and Arduino the serial pins are unchangeable and the data rate is set at the beginning of the program This way is a bit less flexible than the PBasic way but there are some advantages as you ll see shortly m Where s My Serial Port The USB serial port that s associated with the Arduino or Wiring module is actually a software driver that loads every time you plug in the module When you unplug the serial driver deactivates and the serial port will disappear from the list of available ports You might also notice that the port name changes when you unplug and plug in the module On Windows machines you may get a new COM number On Macs you ll get a different alphanumeric code at the end of the port name Never unplug a USB serial device when you ve got its serial port open you must exit the Wiring or Arduino software environment before you unplug anything Otherwise you re sure to crash the applica
57. uments folder called Processing but you can save them wherever you prefer if you don t like them there THETOOLS 25 Here s second program that s a bit more exciting It illustrates some of the main programming structures in Processing Triangle drawing program Language Processing Draws a triangle whenever the mouse button is not pressed Erases when the mouse button is pressed sh declare your variables float redValue 0 variable to hold the red color float greenValue 0 variable to hold the green color float blueValue 0 variable to hold the blue color the setup method runs once at the beginning of the program void setup size 320 240 sets the size of the applet window background 0 sets the background of the window to black 111 0 sets the color to fill shapes with 0 black smooth draw with antialiased edges the draw method runs repeatedly as long as the applet window is open It refreshes the window and anything else you program Wit tordo void draw Pick random colors for red green and blue redValue random 255 greenValue random 255 blueValue random 255 set the line color stroke redValue greenValue blueValue draw when the mouse is up to hell with conventions if mousePressed false draw a triangle triangle mouseX mouseY width 2 height 2 pmouseX pmouseY erase when the mouse
58. und pull down for digital input pins When a Switch is wired as shown in Figure 1 16 closing the switch sets the input pin high Wired the other way closing the Switch sets the input pin low The circuit in Figure 1 17 is called a voltage divider The variable resistor and the fixed resistor divide the voltage between them The ratio of the resistors values deter THETOOLS 43 Arduino file Edit Sketch Tools Arduino 0007 Alpha inByte Serial react necinByter1 BYTE Ga llis blinkTimer gt blinkIntervol 2 tigi talMr teCLEDPin HIGH t F mil C blinkTimer gt blinkIntervol te LEDPln LOW t blinkTimer n Oi Figure 1 14 The Serial monitor in Arduino nw ot t n n Figure 1 15 Arduino connected to a breadboard 5 and ground run from the module to the long rows of the board This way all sensors and actuators can share the 5V and ground connections of the board Control or signal connections from each sensor or actuator run to the appropriate pins In this example two pushbuttons are attached to digital pins 2 and 3 as digital inputs 44 MAKING THINGS TALK mines the voltage at the connection between them If you connect the analog to digital converter of a microcon troller to this point you ll see a changing voltage as the variable resistor changes You can use any kind

Download Pdf Manuals

image

Related Search

Related Contents

Electro-Voice 100S User's Manual  Mad Catz SharkPort PS2 User's Manual  Meccano 888350  ELECTIONS COMMUNALES 2012CONTACT.DOC  Cables Direct KVM-P2AUD KVM switch  BinBoy User Manual  Water Specialist 1” Control Valve Series Model: WS1TC 1.25  Matlab Guidance Based Smart Gas Leakage Detection and Security  Massive Floor lamp 42089/11/10  Sony Cyber-shot DSC-T5 User's Manual  

Copyright © All rights reserved.
Failed to retrieve file