A few days ago, as part of my summer book list post, I posted the resources to get started with Node.js. Another of my area of interest since one year is also Arduino and the so called “Internet of Things”.
What Arduino is
For those of you who don’t know what Arduino is, the short answer, taken from the Arduino website, is:
Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It's intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments.
Thanks to the great ecosystem of modules and libraries you could build anything, from a simple blinking led demo (this is the hello world sample of microcontroller programming) to a full-fledged, UAV platform capable of autonomous take-off and landing. Probably you are going to build something in between, but you get the idea of its potentialities. Without further ado, here is the list of suggested books. Why am I interested in that? Well… I’m going to build the aforementioned UAV, Arducopter. And I have a nice art project going on, that is based on Arduino.
This book is written directly by Massimo Banzi, the inventor of Arduino. If you want to start playing with Arduino, and you are short on time or just want to have a quick look at Arduino to see if it something that could interest you, this is book you have to buy: 128 pages that will guide you through all the major features of Arduino. Also available as Kindle ebook. I also recommend you buy the Getting Started with Arduino parts kit which contains all the parts needed to complete the exercises of the book.
Next step up in the list of books about Arduino is "Beginning Arduino". Still covering the basics of Arduino, it also covers how to interface it with LEDs, motors, servos, sensors and how to talk over the internet. Not a "build together with me a cool project" kind of book, but a bit more in depth compared to Banzi's book. If you read Banzi's book, or are already convinced of the goodness of Arduino, go without hesitation and buy this book. Also available as Kindle ebook.
If you want to stay on the .NET side of thing, this book explains how to get started with Netduino (similar in concept to Arduino, but programmable with .NET CF and not compatible with it). But instead of covering how to drive motors, LEDs, servos, it builds a web client that reads temperature and publish it online via a webservice.
If you are a .NET developer probably you already know how to write most of the code in the book (it is basically sending a web request to a web service using the low-level networking API), but overall it's a nice book, easy and quick to read, and costs less than 10€. One nice use of this book is to use it as porting exercise once you are familiar with Arduino. Also available as Kindle ebook.
The latest of the Arduino books, is a series of recipes on Arduino. Nicely written, with lots of illustrations, it’s a very practical reference of how to connect any kind of hardware and solve problems you are likely to encounter while designing and building your own practical application with Arduino. Also available as Kindle ebook.
This is not an advanced book (actually is a pretty beginners level introduction to radio connectivity), but I put it at the end of the list, among the advanced books, because it's very specific to radio connectivity with ZigBee and XBee, which you might not need unless you want to build interconnected devices.
Probably you are wondering why one should need to use radio when there are GSM and WiFi connectivity kits and you could use general internet development. The answer is mainly cost (a XBee shield costs less than a WiFi and GSM one) and power consumption (Wifi and GSM will drain your battery much faster than a radio).
If you need to use radio, this book is a must read: covers all the steps needed to setup both a point-to-point and a mesh network. Also available as Kindle ebook.
Once you think you are ready for more challenging project, you want to build any of the projects presented in the book, like a USB keyboard or touch control system, or you simply want to take inspiration from what the author built, "Practical Arduino" is a good book. But since it's only about building projects, I recommend you first look at the table of contents to see if the projects might be useful for what you are building. Also available as Kindle ebook.
Finally, at the top of the complexity scale, there this book about building robots based on Arduino. Building a robot is probably the project that puts together most of the skills learned in the previous books, together with control algorithm and autonomous guidance. This book covers all of them, shown with projects of increasing complexity.
A better toc is available in the blog of one of the authors, the one that build the lake surveying robot (and of course wrote the chapter about it in the book).
Arduino is a Hardware device, and books alone will not help you go anywhere, since you need the device, and all the components needed for the experiments. Here there are 3 kits I recommend.
Contains the Arduino, and a few components (Photocell, thermistor, flex sensor, leds, RGB led). A convenient package to buy the arduino and some components to start experimenting.
That’s the best kit available: in addition to the Arduino, you get some interesting components like motor, temperature and servos. And you also get a printed manual that explain step by step all the 12 experiments you can do with the components in the kit. And of course, since everything is assembled without soldering needed, once you finish you can re-use all the components for your own projects.
Is this list useful?
This list of books was a bit unusual for my blogging topics. I think in the future we’ll be surrounded by all kind of smart devices, and development will not only be relegated to the web, or the desktop, but we’ll need to start planning on porting our development skills also to these kind of devices.
Have you ever developed on a HW platform? Which are you advices? Did you find any other good book on the topic? Please comment.