34,79 €
Start building amazing projects with the Raspberry Pi right out of the box
What's the best way to learn how to use your Raspberry Pi? By example! If you want something exciting to do whilst getting to grips with what your Pi can offer, this is the book for you. With both simple and complex projects, you'll create a wide variety of cool toys and functions with your Raspberry Pi - all with minimal coding experience necessary.
Want to put your Raspberry Pi through its paces right out of the box? This tutorial guide is designed to get you learning all the tricks of the Raspberry Pi through building complete, hands-on hardware projects. Speed through the basics and then dive right in to development!
Discover that you can do almost anything with your Raspberry Pi with a taste of almost everything. Get started with Pi Gaming as you learn how to set up Minecraft, and then program your own game with the help of Pygame. Turn the Pi into your own home security system with complete guidance on setting up a webcam spy camera and OpenCV computer vision for image recognition capabilities. Get to grips with GPIO programming to make a Pi-based glowing LED system, build a complete functioning motion tracker, and more. Finally, get ready to tackle projects that push your Pi to its limits. Construct a complete Internet of Things home automation system with the Raspberry Pi to control your house via Twitter; turn your Pi into a super-computer through linking multiple boards into a cluster and then add in advanced network capabilities for super speedy processing!
This step-by-step guide to building Raspberry-Pi-based projects is explained in a conversational and easy-to-follow style. Each topic is explained sequentially in the process of creating real-life projects, and detailed explanations of the basic and advanced features of various Python libraries are also included.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 269
Veröffentlichungsjahr: 2016
Copyright © 2016 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: April 2016
Production reference: 1190416
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-78528-506-6
www.packtpub.com
Authors
Ashwin Pajankar
Arush Kakkar
Reviewers
Nathan Johnson
Elliot Kermit-Canfield
Anna Torlen
Commissioning Editor
Dipika Gaonkar
Acquisition Editor
Ashwin Nair
Content Development Editor
Merwyn D'souza
Technical Editors
Nirant Carvalho
Mohit Hassija
Copy Editors
Stuti Srivastava
Madhusudan Uchil
Project Coordinator
Nikhil Nair
Proofreader
Safis Editing
Indexer
Priya Sane
Graphics
Kirk D'Penha
Production Coordinator
Shantanu N. Zagade
Cover Work
Shantanu N. Zagade
Ashwin Pajankar is a software professional and IoT enthusiast with more than 5 years' experience in software design, development, testing, and automation.
He graduated from IIIT Hyderabad, earning an M.Tech in computer science and engineering. He holds multiple professional certifications from Oracle, IBM, Teradata, and ISTQB in development, databases, and testing. He has won several awards in college through outreach initiatives, at work for technical achievements, and community service through corporate social responsibility programs.
He was introduced to Raspberry Pi while organizing a hackathon at his workplace, and he's been hooked on Pi ever since. He writes plenty of code in C, Bash, Python, and Java on his cluster of Pis. He's already authored one book on Raspberry Pi and reviewed three other titles related to Python for Packt Publishing.
His LinkedIn Profile is at https://in.linkedin.com/in/ashwinpajankar.
I would like to thank my wife, Kavitha, for motivating me to write this book and share my knowledge with others. I would like to thank my coauthor, Arush Kakkar, for taking over the project after the first few chapters. I also thank Merwyn D'Souza from Packt Publishing for providing me with the opportunity, guidance, and required support in writing this book. Last but not least, I would like to thank all the reviewers who helped me make the book better by providing their precious feedback.
Arush Kakkar is a computer vision and deep learning researcher and an undergraduate at Delhi Technological University. His primary focus is on autonomous robotics, which includes drones and self-driving cars, and he has been involved in building such systems in different capacities, such as navigation, localization, path planning. He has also leveraged state-of-the art computer vision and deep learning technologies for them. He is the electrical systems head of the Solar Car team of his university, Solaris DTU.
He is currently working on his own driverless car company, CruiseX, which uses deep learning to drive more smoothly and with fewer errors.
You can connect with him through his website at http://www.arushkakkar.com and read up on some of his projects at http://blog.arushkakkar.com.
I would like to thank my parents for supporting me in writing this book. I would like to thank Ashwin for collaborating while writing this book, and I would also like to thank Merwyn from Packt Publishing for coordinating the collaboration. I am thankful to all the reviewers for helping me improve the book and expanding my knowledge.
Nathan Johnson is an NC State University graduate and the author and maintainer of the node-arm project. Apart from node-arm, he has also contributed to several other Raspberry Pi projects. He currently works for the Charlotte-based company Red Ventures as a software engineer writing applications in Node.js.
I would like to thank my mom, dad, and brother for reminding me to use all the talents I've been given.
Elliot Kermit-Canfield is a graduate student studying computer music at the Center for Computer Research in Music and Acoustics at Stanford University. In addition to a degree in music, science, and technology from Stanford, he holds degrees in integrative arts and music theory from Penn State. Elliot is an avid computer musician and has worked with Raspberry Pi and other embeddable systems with audio applications.
Anna Torlen is an artist, educator, and techie. She received a bachelor of arts degree in studio art at The College of Santa Fe and a master of fine arts degree in media, technology, and entertainment at Florida Atlantic University. She has worked on Raspberry Pi projects at her college and at Hacklab in Boynton Beach, FL. She has contributed to the Adafruit Community Corner blog. She is currently working at Palm Beach State College as a multimedia adjunct professor. She is interested in building outdoor solar-powered Internet of Things Raspberry Pi projects.
Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at <[email protected]> for more details.
At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.
https://www2.packtpub.com/books/subscription/packtlib
Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can search, access, and read Packt's entire library of books.
Raspberry Pi is probably one of the most versatile computers ever built. It has been adapted for tasks ranging from home automation, cluster computing, computer vision, and even space missions! What's more is that it enjoys a level of support from the community that is hard to find for any other platform.
Due to this, it is a hacker-friendly device and is a must for anyone who wants to build projects with even a little amount of programming involved. The fact that the basic version of the board costs only $25 means there's a lot of room for experimentation, and users aren't afraid to experiment with and damage it.
In this book, you will find a wide variety of projects, using which anyone can get started with and also build interesting hacks by modifying some of the projects.
Chapter 1, Introduction to Raspberry Pi and Python, provides an introduction to the Raspberry Pi and booting it up.
Chapter 2, Minecraft Pi, introduces you to Minecraft Pi, which is a preinstalled version of the popular game Minecraft. The first few pages of the chapter deal with the game concept and interface, and further pages deal with programming in-game actions with Python. In the last part of this chapter, you are introduced to the PyGame library and small usage examples of it.
Chapter 3, Building Games with PyGame, is an introduction to the PyGame programming library and game programming. In this chapter, you code your way to your first full-fledged program on the Raspberry Pi, a game.
Chapter 4, Working with a Webcam and Pi Camera, introduces you to the Pi Camera and regular webcams and how to use them to create real-life applications with the Raspberry Pi. You also create a time-lapse box project in this chapter.
Chapter 5, Introduction to GPIO Programming, introduces you to the Raspberry Pi B+ and Pi 2 GPIO structure and its real-life usage with LED programming and a third-party add-on, PiGlow.
Chapter 6, Creating Animated Movie with Raspberry Pi, demonstrates the GPIO and camera together by creating a project that requires application of both the concepts in order.
Chapter 7, Introduction to Computer Vision, introduces you to computer vision and image processing with Raspberry Pi. You will create a simple project.
Chapter 8, Creating Your Own Motion Detection and Tracking System, introduces you to advanced concepts in OpenCV, which will be used to implement the next project, which has a higher difficulty level.
Chapter 9, Grove Sensors and the Raspberry Pi, introduces you to the Grove shield and Grove sensors and their interfacing with Raspberry Pi. Grove Sensors are third-party sensors for Raspberry Pi and Arduino that can be used for environment sensing.
Chapter 10, Internet of Things with the Raspberry Pi, looks at creating home automation and Internet of Things applications with the Raspberry Pi.
Chapter 11, Build Your Own Supercomputer with the Raspberry Pi, deals with making clusters of Raspberry Pi 2s, using MPICH2 and MPI for Python to write parallel programs for the clusters, and running N-body simulation.
Chapter 12, Advanced Networking with the Raspberry Pi, shows you how to improve your cluster of Pis by adding advanced networking capabilities such as DNS and DHCP. We use of existing cluster for this and make it better.
Chapter 13, Setting Up a Web Server on the Raspberry Pi, delves into installing PHP, MySQL, and WordPress on our Raspberry Pi to use it as a web server.
Chapter 14, Network Programming in Python with the Pi, teaches you how to use Python to learn the basics of network programming and also create network utilities such as Telnet and chat applications on the Raspberry Pi.
Appendix, Newer Raspberry Pi Models, briefly introduces you to some of the newest members of the Raspberry Pi family, namely the Raspberry Pi Zero and the Raspberry Pi 3.
The following hardware is recommended for successfully completing the projects outlined in this book:
What's the best way to learn how to use your Raspberry Pi? By example! If you want something exciting to do whilst getting to grips with what your Pi can offer, this is the book for you. With both simple and complex projects, you'll create a wide variety of cool toys and functions with your Raspberry Pi - all with minimal coding experience necessary. You can be a beginner before starting with this book, but by the time you finish it, you will be a Jedi with the Raspberry Pi.
Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or disliked. Reader feedback is important for us as it helps us develop titles that you will really get the most out of.
To send us general feedback, simply e-mail <[email protected]>, and mention the book's title in the subject of your message.
If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide at www.packtpub.com/authors.
Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.
You can download the example code files for this book from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.
You can download the code files by following these steps:
You can also download the code files by clicking on the Code Files button on the book's webpage at the Packt Publishing website. This page can be accessed by entering the book's name in the Search box. Please note that you need to be logged in to your Packt account.
Once the file is downloaded, please make sure that you unzip or extract the folder using the latest version of:
We also provide you with a PDF file that has color images of the screenshots/diagrams used in this book. The color images will help you better understand the changes in the output. You can download this file from https://www.packtpub.com/sites/default/files/downloads/RaspberryPiByExample_ColorImages.pdf.
Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you could report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the Errata Submission Form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded to our website or added to any list of existing errata under the Errata section of that title.
To view the previously submitted errata, go to https://www.packtpub.com/books/content/support and enter the name of the book in the search field. The required information will appear under the Errata section.
Piracy of copyrighted material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works in any form on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.
Please contact us at <[email protected]> with a link to the suspected pirated material.
We appreciate your help in protecting our authors and our ability to bring you valuable content.
If you have a problem with any aspect of this book, you can contact us at <[email protected]>, and we will do our best to address the problem.
One can learn about topics in computer science in an easy way with the Raspberry Pi and Python. The Raspberry Pi family of single-board computers uses Python as the preferred development language. Using Raspberry Pi and Python to learn programming and computer science-related concepts is one of the best ways to start your journey in this amazing world of computers that is full of creative possibilities. We will explore these possibilities in this book.
We will commence our journey in this chapter by getting ourselves familiar with the following topics:
A single-board computer system is a complete computer on a single circuit board. The board includes a processor(s), RAM, input/output (I/O), and networking ports for interfacing devices. Unlike traditional computer systems, a single-board computer is not modular and its hardware cannot be upgraded as it is integrated on the board itself. Single-board computers are used as low-cost computers in academia, research, and embedded systems. The use of single-board computers in embedded systems is quite prevalent and many individuals and organizations have developed and released fully functional products based on single-board computers.
The Microcomputer Trainer MMD-1 designed by John Titus in 1976 is the first true single-board microcomputer that was based on the Intel C8080A. It was called dyna -micro in the prototyping phase, and the production units were called MMD-1 (short for Mini Micro Designer 1).
Popular single-board computers available in the market include but are not limited to Raspberry Pi, Banana Pro, BeagleBone Black, and Cubieboard. The following images are of the front view of BeagleBone Black, Banana Pro, and Cubieboard 4, respectively:
The Raspberry Pi is a series of low-cost, palm-sized single-board computers developed by Raspberry Pi Foundation in the UK. The intention behind the creation of the Raspberry Pi is to promote the teaching of basic computer skills in schools, which it serves very well. Raspberry Pi has expanded its footprint well beyond its intended purpose by penetrating the embedded systems market and computer science research.
This is the home page of Raspberry Pi Foundation: http://www.raspberrypi.org.
The Raspberry Pi is manufactured with licensed agreements with Newark element14, RS Components, Allied Electronics, and Egoman. These companies manufacture and sell the Raspberry Pi. The hardware is the same across all manufacturers.
The following table displays the URLs of the manufacturers' websites, where you can shop for Pi and related items online:
Manufacturer
Website
Newark element14
http://www.newark.com
RS Components
http://uk.rs-online.com
Egoman
http://www.egoman.com.cn
Allied Electronics
http://www.alliedelec.com
You can also shop for Pi and the other third-party add-ons at the following links:
The following are, at the time of writing this, the major models of Raspberry Pi:
Check out the Product page of Raspberry Pi at http://www.raspberrypi.org/products/.
Additionally, Raspberry Pi is also available in a more flexible form factor intended for industrial and embedded applications. It is known as Compute Module. A Compute Module prototyping kit is also made available by the foundation.
Check out the following URLs for the Compute Module and Compute Module development kit, respectively:
http://www.raspberrypi.org/products/compute-module/
http://www.raspberrypi.org/products/compute-module-development-kit/
The following table compares the currently available models of Pi:
The following image shows the top view of the Raspberry Pi Model B front:
The following image shows the top view of the flip side of Raspberry Pi Model B:
The following image shows the top view of the Raspberry Pi Model B+ front:
The following image shows the top view of the flip side of Raspberry Pi Model B+:
The following image shows the top view of the Raspberry Pi 2 Model B front. The location of the connectors and important ICs (integrated circuits) on the board is not different from Pi B+:
We will be using Raspberry Pi 2 Model B throughout this book. However, all the applications and programs in this book will work on all the models of Pi.
The Raspberry Pi primarily uses Unix-like Linux-kernel-based operating systems, such as variants of Debian and Fedora.
Raspberry Pi Models A, A+, B, and B+ are based on the ARM11 family chip, which runs on the ARMv6 instruction set. The ARMv6 instruction set does not support Ubuntu and Windows.
However, the recently launched Raspberry Pi 2 is based on ARM Cortex A7, which is capable of running Windows 10 and Ubuntu (Snappy Core). The following operating systems are officially supported by all the models of Raspberry Pi and are available for download at the download page:
Windows 10 and Ubuntu are only supported by the recently launched Pi 2.
Raspbian is an unofficial variant of Debian armhf (ARM Hard Float) compiled for hard float code that will run on Raspberry Pi computers. It is a free operating system based on Debian optimized for the Raspberry Pi hardware.
To know more about Raspbian, visit http://www.raspbian.org/.
We need the following hardware to set up a Pi.
Considering that we are going for slightly power-intensive usage of our Pi (such as connecting Pi Camera, webcam, and third-party sensors for Pi), a 5V 2A power supply is recommended. The micro USB pin is shown in the following image:
You can find a similar one online at http://www.adafruit.com/product/1995.
We need a minimum 4 GB Micro SD card.
A USB mouseA monitorYou can use either an HDMI monitor or a standard VGA monitor.
A monitor connection cable and converterIf you are using HDMI monitor, then an HDMI cable will be sufficient. If you are using a VGA monitor, then you need to use an HDMI to VGA converter with a VGA cable. Some special changes need to be made to the /boot/config.txt file if you're using a VGA monitor, which will be explained in the next section.
You can find a similar one online at https://www.adafruit.com/products/1151.
This is the original way to install an OS into a MicroSD card, and many users, including me, still prefer it. It allows the SD card to be prepared manually before it is used and it allows easier access to configuration files such as /boot/config.txt, which we might have to modify in a few cases before booting up. The default Raspbian image consists of only two partitions, BOOT and SYSTEM, which will fit into a 2 GB card. However, I recommend that you use a minimum 4 GB card to be on safe side. Choosing an 8 GB card will be adequate for most of the applications we are going to develop in this book.
The following are the instructions for Windows users:
You might receive the following message if the card reader's write protection is on:
Toggle the write protection notch and try again. You will see the following message:Click on Yes and it will start writing the image file to the microSD card:Once the image is successfully written, it will display the following message:If you are using Linux, then you can find the instructions at https://www.raspberrypi.org/documentation/installation/installing-images/linux.md.
If you are using Mac OS, then you can find the instructions at https://www.raspberrypi.org/documentation/installation/installing-images/mac.md.
If you have an HDMI monitor, then skip this step. This additional step is required only if you are planning to use a VGA monitor in place of an HDMI monitor.
Browse the microSD card on the computer. Locate and open config.txt. We have to edit the file in order to enable proper display on the VGA monitor.
By default, the commented options (which have # at the beginning) are disabled. We are enabling this option by uncommenting this line, that is, by removing # from the beginning of the commented line. This is what you need to do:
Let's boot up our Pi for the first time with the microSD card:
At this stage, our Pi will start booting up. You will see a green light on the Pi board blinking. This means that it's working! Now, there are few more things we need to do before we can really start using our Pi. Once it boots up, it will show the desktop as follows:
Once the desktop is visible, go to Menu | Accessories | lxterminal. Then, type sudo raspi-config. A text-based menu, such as the following, will appear:
Perform the following steps. We need to use arrow keys and the Enter key to select options in the text-based menu. Press Enter to select a menu item. Also, we can use the Tab key to directly go to the Select and Finish buttons:
The default username is pi and the password is raspberry. We need it when we don't choose any of the preceding autologin options. We can change this password from the second option in the raspi-config menu.
We can also choose to boot to the console by selecting any of the first two options in the preceding menu. The default shell of Raspbian is Bash. We can confirm it by typing the following command:
We can always go to the graphical desktop from the Command Prompt by typing the startx command in the console.