Exploring Raspberry Pi – Book Review
Sub-Title: Interfacing the real world with Embedded Linux
Author: Dr Derek Molloy
Publisher: John Wiley and Son’s Inc.
Date: June 2016
Price: Approx. $20
The first thing you need to know is that this is not a “Raspberry Pi for Beginners” book! This book is far better suited to somebody who is already comfortable with the Raspberry Pi and is now looking to expand their knowledge of both programming and electronic circuits.
This book is reasonably well organized and fairly easy to follow but compared too other RPi books this one goes into much more detail, at over 700 pages it covers a wide range of topics and by its very nature most of these are only covered in a superficial way. Given its length, you are bound to find something in it that appeals to you and will help you with your project. At the very least if you take the time it will give you a much better understanding of both the basic and advanced topics so that you can start asking the right questions to complete your own projects.
The book isn’t designed to hold your hand all the way through a pre-defined project but rather to give you the building blocks necessary to create your own. Descriptions and examples are given of how to create various common circuits, setup communications protocols, the Internet of Things (IoT) and an extensive overview of the Raspberry Pi hardware and the Linux operating system. All of this and more is covered while having a high emphasis on not damaging the RPi’s when building your circuits.
The book is fully supported with diagrams, code samples, video tutorials and a companion website with pages for each chapter that extend and further explain each of the topics. The code samples are almost all written in C/C++ so if you are more familiar with Python this may take a bit of getting used to. The other benefit is that all of the code is available on Git making it easy to download directly onto the RPi. The materials required to prototype and follow the examples in the book are all reasonably cheap and readily available.
PART I – Raspberry Pi Basics
The first couple of chapters in the book deal with the very basics of the Raspberry Pi and in my opinion are probably unnecessary as anybody looking to buy this book probably already has a pretty good idea of what a Pi is and how to connect to it.
Chapter 1 starts with a description of the various models that are available and who should be looking to use the Pi.
Chapter 2 deals with loading your SD card, Raspian and communicating with the Pi via a remote terminal or with a screen and keyboard. Again if you have no idea how to do this already then this book probably isn’t for you.
Chapter 3 moves on to discuss the basics of the Linux operating system, history, commands, etc. and also provides an overview of the Git system for managing software versions.
Chapter 4 gives you a rundown on basic electronic circuits including logic gates, voltage, and current dividers, ADC, DAC, etc. but also takes the opportunity to give you a summary of various test tools such as multimeters and oscilloscopes.
Chapter 5 explores the range of programming languages that are available with the Pi including Bash, Lua, Perl, Python, C/C++, Node.js and Java, it then provides advantages and disadvantages of each of the languages. The author seems to settle on C/C++ as the best for performance and provides a more extensive overview. I assume this why the rest of the examples in the book are based on this language.
PART II – Interfacing, Controlling and Communicating
After all this introductory work Chapter 6 starts to look at interfacing with the Pi with the GPIO pins using Sysfs, memory mapping and the WiringPi GPIO library. It looks at connecting 1-wire sensors and also touches on the Pulse Width Modulation(PWM) capabilities of the Pi.
Chapter 7 discusses the cross-compiling of code so that your program can be written in one operating system environment and then complied to work on the Pi. The author then examines using the Eclipse Integrated Development Environment (IDE) to create and debug code. There are many different IDE’s available so I think that this is just the author’s preference. Finally, there is a look at compiling the Linux Kernel itself.
Chapters 8 & 9 looks at the various communications protocols that are available on the Pi. UART, I2C, and SPI are explained and shown how they can be used to communicate with external equipment. This is taken further by showing how each can be used to extend the number of GPIO’s available to the Pi.
Chapter 10 expands on the previous two chapters and explains how to communicate with various sensors, actuators, motors and external displays using the specialized GPIO pins.
Chapter 11 discusses some of the potential shortcomings of the Raspberry Pi when it comes to real-time processing and looks at connecting an Arduino as a slave to the Pi to overcome these problems.
PART III – Advanced Interfacing and Interaction
Chapter 12 explains the idea of the Internet of Things (IoT) with relation to the Pi by configuring the Pi as a webserver and integrating this with Platform as a Service (PaaS) large scale frameworks such as ThinkSpeak and IBM Bluemix
Chapter 13 looks at all the various wireless communication that can be used by the Pi covering Bluetooth, Wi-Fi, ZigBee and Near Field Communication (NFC).
Chapter 14 examines the creation of rich user interfaces through the use of the GTK+ and Qt frameworks for C/C++
Chapter 15 is all about the Pi’s multimedia capabilities and looks at the Pi camera for capturing images, video and examines the audio facilities that are also present on the Pi.
Chapter 16 looks at programming Linux Kernel Modules, this is a very advanced topic when compared to the rest of the book and probably would be far more useful to the embedded systems engineer than to the amateur or hobbyist.
While this is a great book filled with an amazing amount of information, in my opinion, is does suffer from trying to appeal to a very broad audience. The first 5 chapters cover the low-level setup and programming languages of the Pi which given the title of the book you could probably accept as being something of which the reader already has a fairly good grasp. The chapters relating to the Linux Kernel programming I think could also be left out as being too advanced compared to the overall subject matter of the book.
With that said there is a great deal to like about this book and the broad range of topics that it covers, no matter what your level of experience there will be something that you will find helpful for your own projects.
About the Author
Dr. Derek Molloy is a senior lecturer in the School of Electronic Engineering, Faculty of Engineering and Computing, Dublin City University, Ireland.
He lectures at undergraduate and postgraduate levels in object-oriented programming with embedded systems, digital and analog electronics, and 3D computer graphics.
If you have any thought’s about this book, let me know in the comments below and if you found this helpful, why not share it with others.