Author: Rick Anderson & Dan Cervo
Audience: Intermediate Arduino Users
Reviewer: Harry Fairhead
If you have flashed an LED too many times then it might be time for something a little more complicated. Pro Arduino sounds just what you need.
The problem with a book on "advanced" Arduino is to figure out what could be considered advanced about one of the easiest to use microcontroller boards. Essentially the Arduino is always fairly easy - it is the other stuff, the things you connect it to, that bring the difficulties into the equation. As a result this book is often more about topics other than the Arduino proper. If you don't realize this before you buy the book then you could be disappointed.
Clearly to get anything much from a second-level Arduino book you have to be fairly up on how to use the device in both the hardware and the software sense. There is no Arduino primer in this book.
Chapter 1 starts off with a look at the current state of the Arduino family at 1.0.4. It outlines what has changed and provides the basic parameters. Of course, this is going to be out of date as soon as there is another update.
Chapter 2 is called Social Coding, and if you are expecting a long description of how to connect an Arduino to Facebook or something similar you would be disappointed. It is actually about using Git and GhiHub to work in a team on an Arduino project. This is mostly the same as working in a team on any platform using the same tools. I'm also not convinced that many Arduino projects are large enough to need a team to work on them - the possible exception is any large and technical library.
The next chapter is mostly software-oriented in that it explains how to make use of the openFramework C++ library with the Arduino. There is nothing very difficult on the Arduino side in this arrangement. All you have to do is program some serial communications. On the C++ side things could be a bit more difficult - especially if you don't know C++. The book does nothing to teach you C++ and to be honest at the end of the chapter you will have learnt very little about openFramework other than it exists. In practice you are more likely to use a library that you already know in a language you already know in conjunction with the Arduino.
Chapter 4 describes how to use the Android ADK with the Arduino and it is another serial type communications project but this time using the USB ports. The complication is that writing code for Android is very difficult to get into. Android is a complex environment and you not only need to know Java to get anything from this chapter you also need to have some knowledge of how to work with Eclipse and the Android SDK. Oddly the chapter does throw in tiny bits of explanation of thing, like the use of Override - as if this is going to help you fathom out the details of an Android app.
Chapter 5 moves on to consider using XBee, a ZigBee radio, with the Arduino. This is a very complex topic and it would be very easy to write an entire book on it, and some have. A single chapter basically just gets you off the starting blocks with a look at the two main modes of operation, AT and API. By the end of the chapter you can send and receive packets and the rest is up to you.
Chapter 6 is a little strange. It is on simulating sensors using one Arduino to provide accurate and calibrated data to another. This is something that not many people bother to do - most use a real sensor in some form. It isn't a bad idea, but my guess is that given the work involved in simulating a sensor it is something that few will bother to do. However, the first sensor described is a D-to-A converter, which is more generally useful. After this we have a PWM, grey code, serial and i2C simulator.
The next chapter covers the implementation of a PID controller. This is the simplest feedback control algorithm and if you are trying to control any continuous system - a hot water bath, process control, positioning mechanism - you need to know how to implement it. Of course, this isn't Arduino-specific and the chapter first explains the theory. Next we have a simple set up with a D-to-A and a pot to provide a disturbance. The chapter finishes with a comparison of PID to other simpler control method, a consideration of what you can use it for, and tuning a PID.
Chapter 8 brings us back to ZigBee networks and how to use them to construct a sensor network. Essentially the chapter describes an example using openFramework, Android and Arduino. It is detailed and probably would give you some idea of how to implement your own sensor network, but it is light on principles.
Chapter 9 introduces the idea of using Arduino with Pic32 and Atmel chips. It covers the use of the chipKit Pic32 board, which is essentially a more powerful Arduino using a different processor and development system. From a more powerful system we next look at using the standard Arduino as a programmer for the ATtiny familiy.
Chapter 10 describes ideas for linking Arduinos together using the SPI library; Chapter 11 is a short look at game development; Chapter 12 is about writing your own libraries; and the final chapter is on using the test suite. The game chapter is essentially a tutorial on how to use the gameduino shield.
This is not a particularly coherent book and you can see that it would be difficult to create an advanced Arduino book that had a logical progress. Even so there are lots of obvious potential topics not covered and this has to be regarded as a fairly personal choice of topics - more a set of magazine articles than a book.
Overall this isn't an easy read. It contains large chunks of code that go largely unexplained. You are basically presented with a listing broken down to fit the pages of a book. This is not a good way to learn. There isn't much electronics and it is all very simple. Even so presenting it as drawings of a prototype board layout makes it harder to see wthat is happening. A few circuit diagrams would make what is being attempted much easier to see. Overall, it was often difficult to see what some of the chapters were attempting to do and you have to work hard to figure out what a project or example is trying to do or how it is trying to do it.
I can't say I enjoyed reading this book - it was hard work and only very occasionally did I feel that I had picked up an idea worth exploring. Of course, if any of the chapters happen to fit in with something you are trying to do then you will disagree with me and find the book essential reading.
Final verdict: not so good for the general reader.