Book description
With millions of new users and several new models, the Raspberry Pi ecosystem continues to expand—along with a lot of new questions about the Pi’s capabilities. The second edition of this popular cookbook provides more than 240 hands-on recipes for running this tiny low-cost computer with Linux, programming it with Python, and hooking up sensors, motors, and other hardware—including Arduino and the Internet of Things.
Prolific hacker and author Simon Monk also teaches basic principles to help you use new technologies with Raspberry Pi as its ecosystem continues to develop. This cookbook is ideal for programmers and hobbyists familiar with the Pi through resources, including Getting Started with Raspberry Pi (O’Reilly). Python and other code examples from the book are available on GitHub.
- Set up your Raspberry Pi and connect to a network
- Work with its Linux-based operating system
- Program Raspberry Pi with Python
- Give your Pi "eyes" with computer vision
- Control hardware through the GPIO connector
- Use Raspberry Pi to run different types of motors
- Work with switches, keypads, and other digital inputs
- Use sensors to measure temperature, light, and distance
- Connect to IoT devices in various ways
- Create dynamic projects with Arduino
Publisher resources
Table of contents
- Preface to the Second Edition
-
Setup and Management
- 1.0. Introduction
- 1.1. Selecting a Model of Raspberry Pi
- 1.2. Enclosing a Raspberry Pi
- 1.3. Selecting a Power Supply
- 1.4. Selecting an Operating System Distribution
- 1.5. Writing a MicroSD Card with NOOBS
- 1.6. Connecting the System
- 1.7. Connecting a DVI or VGA Monitor
- 1.8. Using a Composite Video Monitor/TV
- 1.9. Adjusting the Picture Size on Your Monitor
- 1.10. Maximizing Performance
- 1.11. Changing Your Password
- 1.12. Setting the Pi to Boot Straight into a Windowing System
- 1.13. Shutting Down Your Raspberry Pi
- 1.14. Installing the Raspberry Pi Camera Module
- 1.15. Using Bluetooth
-
Networking
- 2.0. Introduction
- 2.1. Connecting to a Wired Network
- 2.2. Finding Your IP Address
- 2.3. Setting a Static IP Address
- 2.4. Setting the Network Name of a Raspberry Pi
- 2.5. Setting Up a Wireless Connection
- 2.6. Connecting with a Console Lead
- 2.7. Controlling the Pi Remotely with SSH
- 2.8. Controlling the Pi Remotely with VNC
- 2.9. Controlling the Pi Remotely with RDP
- 2.10. File Sharing on a Mac Network
- 2.11. Sharing the Pi Screen on a Mac
- 2.12. Using a Raspberry Pi for Network Attached Storage
- 2.13. Network Printing
-
Operating System
- 3.0. Introduction
- 3.1. Moving Files Around Graphically
- 3.2. Starting a Terminal Session
- 3.3. Navigating the Filesystem Using a Terminal
- 3.4. Copying a File or Folder
- 3.5. Renaming a File or Folder
- 3.6. Editing a File
- 3.7. Viewing the Contents of a File
- 3.8. Creating a File Without Using an Editor
- 3.9. Creating a Directory
- 3.10. Deleting a File or Directory
- 3.11. Performing Tasks with Superuser Privileges
- 3.12. Understanding File Permissions
- 3.13. Changing File Permissions
- 3.14. Changing File Ownership
- 3.15. Making a Screen Capture
- 3.16. Installing Software with apt-get
- 3.17. Removing Software Installed with apt-get
- 3.18. Installing Python Packages with Pip
- 3.19. Fetching Files from the Command Line
- 3.20. Fetching Source Code with Git
- 3.21. Running a Program or Script Automatically on Startup
- 3.22. Running a Program or Script Automatically as a Service
- 3.23. Running a Program or Script Automatically at Regular Intervals
- 3.24. Finding Things
- 3.25. Using the Command-Line History
- 3.26. Monitoring Processor Activity
- 3.27. Working with File Archives
- 3.28. Listing Connected USB Devices
- 3.29. Redirecting Output from the Command Line to a File
- 3.30. Concatenating Files
- 3.31. Using Pipes
- 3.32. Hiding Output to the Terminal
- 3.33. Running Programs in the Background
- 3.34. Creating Command Aliases
- 3.35. Setting the Date and Time
- 3.36. Finding Out How Much Room You Have on the SD Card
-
Software
- 4.0. Introduction
- 4.1. Making a Media Center
- 4.2. Installing Office Software
- 4.3. Installing other Browsers
- 4.4. Using the Pi Store
- 4.5. Making a Webcam Server
- 4.6. Running a Vintage Game Console Emulator
- 4.7. Running Minecraft Pi Edition
- 4.8. Running a Minecraft Server
- 4.9. Running Open Arena
- 4.10. Raspberry Pi Radio Transmitter
- 4.11. Running GIMP
- 4.12. Internet Radio
-
Python Basics
- 5.0. Introduction
- 5.1. Deciding Between Python 2 and Python 3
- 5.2. Editing Python Programs with IDLE
- 5.3. Using the Python Console
- 5.4. Running Python Programs from the Terminal
- 5.5. Variables
- 5.6. Displaying Output
- 5.7. Reading User Input
- 5.8. Arithmetic
- 5.9. Creating Strings
- 5.10. Concatenating (Joining) Strings
- 5.11. Converting Numbers to Strings
- 5.12. Converting Strings to Numbers
- 5.13. Finding the Length of a String
- 5.14. Finding the Position of One String Inside Another
- 5.15. Extracting Part of a String
- 5.16. Replacing One String of Characters with Another Inside a String
- 5.17. Converting a String to Upper- or Lowercase
- 5.18. Running Commands Conditionally
- 5.19. Comparing Values
- 5.20. Logical Operators
- 5.21. Repeating Instructions an Exact Number of Times
- 5.22. Repeating Instructions Until Some Condition Changes
- 5.23. Breaking Out of a Loop
- 5.24. Defining a Function in Python
-
Python Lists and Dictionaries
- 6.0. Introduction
- 6.1. Creating a List
- 6.2. Accessing Elements of a List
- 6.3. Finding the Length of a List
- 6.4. Adding Elements to a List
- 6.5. Removing Elements from a List
- 6.6. Creating a List by Parsing a String
- 6.7. Iterating Over a List
- 6.8. Enumerating a List
- 6.9. Sorting a List
- 6.10. Cutting Up a List
- 6.11. Applying a Function to a List
- 6.12. Creating a Dictionary
- 6.13. Accessing a Dictionary
- 6.14. Removing Things from a Dictionary
- 6.15. Iterating Over Dictionaries
-
Advanced Python
- 7.0. Introduction
- 7.1. Formatting Numbers
- 7.2. Formatting Dates and Times
- 7.3. Returning More Than One Value
- 7.4. Defining a Class
- 7.5. Defining a Method
- 7.6. Inheritance
- 7.7. Writing to a File
- 7.8. Reading from a File
- 7.9. Pickling
- 7.10. Handling Exceptions
- 7.11. Using Modules
- 7.12. Random Numbers
- 7.13. Making Web Requests from Python
- 7.14. Command-Line Arguments in Python
- 7.15. Running Linux Commands from Python
- 7.16. Sending Email from Python
- 7.17. Writing a Simple Web Server in Python
- 7.18. Doing More Than One Thing at a Time
- 7.19. Doing Nothing in Python
- 7.20. Using Python with Minecraft Pi Edition
- Computer Vision
-
Hardware Basics
- 9.0. Introduction
- 9.1. Finding Your Way Around the GPIO Connector
- 9.2. Keeping Your Raspberry Pi Safe When Using the GPIO Connector
- 9.3. Setting Up I2C
- 9.4. Using I2C Tools
- 9.5. Setting Up SPI
- 9.6. Installing PySerial for Access to the Serial Port from Python
- 9.7. Installing Minicom to Test the Serial Port
- 9.8. Using a Breadboard with Jumper Leads
- 9.9. Using a Breadboard with a Pi Cobbler
- 9.10. Using a Raspberry Squid
- 9.11. Using a Raspberry Squid Button
- 9.12. Converting 5V Signals to 3.3V with Two Resistors
- 9.13. Converting 5V Signals to 3.3V with a Level Converter Module
- 9.14. Powering a Raspberry Pi with Batteries
- 9.15. Powering a Raspberry Pi with a LiPo Battery
- 9.16. Getting Started with the Sense HAT
- 9.17. Getting Started with the Explorer HAT Pro
- 9.18. Getting Started with a RaspiRobot Board
- 9.19. Using a Pi Plate Prototyping Board
- 9.20. Making a Hardware At Top (HAT)
- 9.21. The Pi Compute Module
- 9.22. The Pi Zero
-
Controlling Hardware
- 10.0. Introduction
- 10.1. Connecting an LED
- 10.2. Leaving the GPIO Pins in a Safe State
- 10.3. Controlling the Brightness of an LED
- 10.4. Make a Buzzing Sound
- 10.5. Switching a High-Power DC Device Using a Transistor
- 10.6. Switching a High-Power Device Using a Relay
- 10.7. Controlling High-Voltage AC Devices
- 10.8. Making a User Interface to Turn Things On and Off
- 10.9. Making a User Interface to Control PWM Power for LEDs and Motors
- 10.10. Changing the Color of an RGB LED
- 10.11. Using Lots of LEDs (Charlieplexing)
- 10.12. Using an Analog Meter as a Display
- 10.13. Programming with Interrupts
-
Motors
- 11.0. Introduction
- 11.1. Controlling Servo Motors
- 11.2. Controlling Servo Motors Precisely
- 11.3. Controlling Many Servo Motors
- 11.4. Controlling the Speed of a DC Motor
- 11.5. Controlling the Direction of a DC Motor
- 11.6. Using a Unipolar Stepper Motor
- 11.7. Using a Bipolar Stepper Motor
- 11.8. Using a Stepper Motor HAT to Drive a Bipolar Stepper Motor
- 11.9. Using a RaspiRobot Board to Drive a Bipolar Stepper Motor
- 11.10. Building a Simple Robot Rover
-
Digital Inputs
- 12.0. Introduction
- 12.1. Connecting a Push Switch
- 12.2. Toggling with a Push Switch
- 12.3. Using a Two-Position Toggle or Slide Switch
- 12.4. Using a Center-Off Toggle or Slide Switch
- 12.5. Debouncing a Button Press
- 12.6. Using an External Pull-up Resistor
- 12.7. Using a Rotary (Quadrature) Encoder
- 12.8. Using a Keypad
- 12.9. Detecting Movement
- 12.10. Adding GPS to the Raspberry Pi
- 12.11. Intercepting Keypresses
- 12.12. Intercepting Mouse Movements
- 12.13. Using a Real-Time Clock Module
-
Sensors
- 13.0. Introduction
- 13.1. Using Resistive Sensors
- 13.2. Measuring Light
- 13.3. Measuring Temperature with a Thermistor
- 13.4. Detecting Methane
- 13.5. Measuring a Voltage
- 13.6. Reducing Voltages for Measurement
- 13.7. Using Resistive Sensors with an ADC
- 13.8. Measuring Temperature with an ADC
- 13.9. Measuring the Raspberry Pi CPU Temperature
- 13.10. Measuring Temperature, Humidity, and Pressure with a Sense HAT
- 13.11. Measuring Temperature Using a Digital Sensor
- 13.12. Measuring Acceleration with an MCP3008 Module
- 13.13. Using the Inertial Management Unit (IMU) of the Sense HAT
- 13.14. Finding Magnetic North with the Sense HAT
- 13.15. Sensing a Magnet with a Reed Switch
- 13.16. Sensing a Magnet with the Sense HAT
- 13.17. Measuring Distance
- 13.18. Capacitative Touch Sensing
- 13.19. Displaying Sensor Values
- 13.20. Logging to a USB Flash Drive
-
Displays
- 14.0. Introduction
- 14.1. Using a Four-Digit LED Display
- 14.2. Displaying Messages on an I2C LED Matrix
- 14.3. Using the Sense HAT LED Matrix Display
- 14.4. Displaying Messages on an Alphanumeric LCD HAT
- 14.5. Displaying Messages on an Alphanumeric LCD Module
- 14.6. Using an OLED Graphical Display
- 14.7. Using Addressable RGB LED Strips
-
The Internet of Things
- 15.0. Introduction
- 15.1. Controlling GPIO Outputs Using a Web Interface
- 15.2. Displaying Sensor Readings on a Web Page
- 15.3. Sending Email and Other Notifications with IFTTT
- 15.4. Sending Tweets Using ThingSpeak
- 15.5. CheerLights
- 15.6. Sending Sensor Data to ThingSpeak
- 15.7. Responding to Tweets Using Dweet and IFTTT
-
Arduino and Raspberry Pi
- 16.0. Introduction
- 16.1. Programming an Arduino from Raspberry Pi
- 16.2. Communicating with the Arduino by Using the Serial Monitor
- 16.3. Setting Up PyFirmata to Control an Arduino from a Raspberry Pi
- 16.4. Writing Digital Outputs on an Arduino from a Raspberry Pi
- 16.5. Using PyFirmata with TTL Serial
- 16.6. Reading Arduino Digital Inputs Using PyFirmata
- 16.7. Reading Arduino Analog Inputs Using PyFirmata
- 16.8. Analog Outputs (PWM) with PyFirmata
- 16.9. Controlling a Servo Using PyFirmata
- 16.10. Custom Communication with an Arduino over TTL Serial
- 16.11. Custom Communication with an Arduino over I2C
- 16.12. Using Small Arduinos with a Raspberry Pi
- 16.13. Getting Started with an aLaMode Board and a Raspberry Pi
- 16.14. Using an Arduino Shield with an aLaMode Board and a Raspberry Pi
- Parts and Suppliers
- Raspberry Pi Pinouts
- Index
Product information
- Title: Raspberry Pi Cookbook, 2nd Edition
- Author(s):
- Release date: June 2016
- Publisher(s): O'Reilly Media, Inc.
- ISBN: 9781491939109
You might also like
book
Raspberry Pi Cookbook, 3rd Edition
With millions of new users and several new models, the Raspberry Pi ecosystem continues to expand—along …
book
Raspberry Pi Cookbook
The world of Raspberry Pi is evolving quickly, with many new interface boards and software libraries …
book
Raspberry Pi Cookbook, 4th Edition
If you've started to work with Raspberry Pi, you know that Raspberry Pi's capabilities are continually …
book
Arduino Cookbook, 3rd Edition
Want to create devices that interact with the physical world? This cookbook is perfect for anyone …