Building the Internet of Things with Raspberry Pi et al, DIY-style
How to create your own IoT gadgets and gizmos
Page File The Internet of Things (IoT) is all the rage at the moment, with dozens of manufacturers throwing out kit like remote-control lightbulbs, weather stations, thermostats and plenty more. Some of those are great products and some of them are also-rans.
Quite a lot, it turns out, are actually simple enough that you could probably build something like that at home.
That's what this new book, The Internet of Things: Do-It-Yourself at Home Projects for Arduino, Raspberry Pi and BeagleBone Black by Donald Norris, is all about. It sets out to show how you can use small computer systems and link them up to sensors, switches and relays to build your own IoT projects. The ubiquitous Raspberry Pi is one of the systems featured, but it also covers Arduino and BeagleBone Black as well.
According to the blurb, it "gets you started working with the most popular processing platforms" and covers "the basics of object-oriented programming", which sounds a pretty appealing prospect.
Besides Raspberry Pi, Arduino and Beaglebone Black are covered
In the beginning
You could be forgiven from that for thinking that the book will cater for complete beginners, but while it does explain some concepts that may well be new – like abstract classes and interfaces – it's certainly not a complete programming tutorial. For instance, one of the early examples has this line of Python code:
data = ((adc&3) << 8) + adc
It's an expression that will certainly look a little bewildering to the novice, and in things like this, the book really could do with a little more explanation. In short, you will need a basic grounding in Python to get started with the Raspberry Pi examples, unless you just want to copy and paste them.
Alongside the programming, the book also looks at different types of sensor and controller that you can use, starting with a simple temperature sensor connected via an ADC and a Pi Cobbler to systems such as I2C, and interfacing LEDs or switches to the Pi's GPIO pins. It's also worth noting that the book came out before the new Pi B+, so that's not specifically covered.
The book just predates the Raspberry Pi Model B+
As with the programming, though, while there is useful information – like how to make sure your I2C setup will operate within the limits of the board you're using – when it comes to some of the code examples, you'll need to follow them quite closely. For instance, the formulas to do things like calibration or the procedure for reading and writing data are only really apparent from following the code.
Technically-minded readers who can follow a datasheet and a spec will probably have no problems here but I think novices may struggle. A clear explanation, rather than – or in addition to – pages of Java code might have been better.
It's not all Raspberry Pi in the book, though. There are also projects using Arduino, with both the Uno IDE and Visual Studio 2012 Express. There's a good explanation of how to use an Ethernet shield to run a web server, and controlling items using a relay board connected to the GPIO pins too. To a degree – perhaps because I've played with Raspberry Pi but not with an Arduino – I felt that this part of the book actually did a better job at demystifying Arduino for beginners than the earlier examples did with the Pi.
You can code for Arduino with Visual Studio Express – the book explains how
It also included, in a project for a remote garage door opener, some useful reminders about security, which is good to see in a title like this. There's also information on setting up communications links using XBee modules and constructing your own moisture sensor to add to an irrigation system, as well as an explanation of XBee mesh networks.
Some of this, of course, has a bit of an American bent and when it comes to lighting controls, the book uses the PowerSwitch Tail II – which is for 120V. Fortunately, there is a kit version for 240 volts also available.
There are two projects included for the BeagleBone Black, including driving an LCD – again using Python from Linux – and pushing data from a sensor to the Xively web service, where you can create graphs of sensor readings rather than the simple tabular output that the rest of the book concentrates on. Finally, it wraps up with a look at using MQTT between a BeagleBone and a Raspberry Pi.