You are previewing Raspberry Pi Cookbook, 2nd Edition.
O'Reilly logo
Raspberry Pi Cookbook, 2nd Edition

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.

Table of Contents

  1. Preface to the Second Edition
    1. Conventions Used in This Book
    2. Using Code Examples
    3. Safari® Books Online
    4. How to Contact Us
    5. Acknowledgments
  2. Setup and Management
    1. 1.0. Introduction
    2. 1.1. Selecting a Model of Raspberry Pi
    3. 1.2. Enclosing a Raspberry Pi
    4. 1.3. Selecting a Power Supply
    5. 1.4. Selecting an Operating System Distribution
    6. 1.5. Writing a MicroSD Card with NOOBS
    7. 1.6. Connecting the System
    8. 1.7. Connecting a DVI or VGA Monitor
    9. 1.8. Using a Composite Video Monitor/TV
    10. 1.9. Adjusting the Picture Size on Your Monitor
    11. 1.10. Maximizing Performance
    12. 1.11. Changing Your Password
    13. 1.12. Setting the Pi to Boot Straight into a Windowing System
    14. 1.13. Shutting Down Your Raspberry Pi
    15. 1.14. Installing the Raspberry Pi Camera Module
    16. 1.15. Using Bluetooth
  3. Networking
    1. 2.0. Introduction
    2. 2.1. Connecting to a Wired Network
    3. 2.2. Finding Your IP Address
    4. 2.3. Setting a Static IP Address
    5. 2.4. Setting the Network Name of a Raspberry Pi
    6. 2.5. Setting Up a Wireless Connection
    7. 2.6. Connecting with a Console Lead
    8. 2.7. Controlling the Pi Remotely with SSH
    9. 2.8. Controlling the Pi Remotely with VNC
    10. 2.9. Controlling the Pi Remotely with RDP
    11. 2.10. File Sharing on a Mac Network
    12. 2.11. Sharing the Pi Screen on a Mac
    13. 2.12. Using a Raspberry Pi for Network Attached Storage
    14. 2.13. Network Printing
  4. Operating System
    1. 3.0. Introduction
    2. 3.1. Moving Files Around Graphically
    3. 3.2. Starting a Terminal Session
    4. 3.3. Navigating the Filesystem Using a Terminal
    5. 3.4. Copying a File or Folder
    6. 3.5. Renaming a File or Folder
    7. 3.6. Editing a File
    8. 3.7. Viewing the Contents of a File
    9. 3.8. Creating a File Without Using an Editor
    10. 3.9. Creating a Directory
    11. 3.10. Deleting a File or Directory
    12. 3.11. Performing Tasks with Superuser Privileges
    13. 3.12. Understanding File Permissions
    14. 3.13. Changing File Permissions
    15. 3.14. Changing File Ownership
    16. 3.15. Making a Screen Capture
    17. 3.16. Installing Software with apt-get
    18. 3.17. Removing Software Installed with apt-get
    19. 3.18. Installing Python Packages with Pip
    20. 3.19. Fetching Files from the Command Line
    21. 3.20. Fetching Source Code with Git
    22. 3.21. Running a Program or Script Automatically on Startup
    23. 3.22. Running a Program or Script Automatically as a Service
    24. 3.23. Running a Program or Script Automatically at Regular Intervals
    25. 3.24. Finding Things
    26. 3.25. Using the Command-Line History
    27. 3.26. Monitoring Processor Activity
    28. 3.27. Working with File Archives
    29. 3.28. Listing Connected USB Devices
    30. 3.29. Redirecting Output from the Command Line to a File
    31. 3.30. Concatenating Files
    32. 3.31. Using Pipes
    33. 3.32. Hiding Output to the Terminal
    34. 3.33. Running Programs in the Background
    35. 3.34. Creating Command Aliases
    36. 3.35. Setting the Date and Time
    37. 3.36. Finding Out How Much Room You Have on the <span xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" class="keep-together">SD Card</span>
  5. Software
    1. 4.0. Introduction
    2. 4.1. Making a Media Center
    3. 4.2. Installing Office Software
    4. 4.3. Installing other Browsers
    5. 4.4. Using the Pi Store
    6. 4.5. Making a Webcam Server
    7. 4.6. Running a Vintage Game Console Emulator
    8. 4.7. Running Minecraft Pi Edition
    9. 4.8. Running a Minecraft Server
    10. 4.9. Running Open Arena
    11. 4.10. Raspberry Pi Radio Transmitter
    12. 4.11. Running GIMP
    13. 4.12. Internet Radio
  6. Python Basics
    1. 5.0. Introduction
    2. 5.1. Deciding Between Python 2 and Python 3
    3. 5.2. Editing Python Programs with IDLE
    4. 5.3. Using the Python Console
    5. 5.4. Running Python Programs from the Terminal
    6. 5.5. Variables
    7. 5.6. Displaying Output
    8. 5.7. Reading User Input
    9. 5.8. Arithmetic
    10. 5.9. Creating Strings
    11. 5.10. Concatenating (Joining) Strings
    12. 5.11. Converting Numbers to Strings
    13. 5.12. Converting Strings to Numbers
    14. 5.13. Finding the Length of a String
    15. 5.14. Finding the Position of One String Inside Another
    16. 5.15. Extracting Part of a String
    17. 5.16. Replacing One String of Characters with Another Inside a String
    18. 5.17. Converting a String to Upper- or Lowercase
    19. 5.18. Running Commands Conditionally
    20. 5.19. Comparing Values
    21. 5.20. Logical Operators
    22. 5.21. Repeating Instructions an Exact Number of Times
    23. 5.22. Repeating Instructions Until Some Condition Changes
    24. 5.23. Breaking Out of a Loop
    25. 5.24. Defining a Function in Python
  7. Python Lists and Dictionaries
    1. 6.0. Introduction
    2. 6.1. Creating a List
    3. 6.2. Accessing Elements of a List
    4. 6.3. Finding the Length of a List
    5. 6.4. Adding Elements to a List
    6. 6.5. Removing Elements from a List
    7. 6.6. Creating a List by Parsing a String
    8. 6.7. Iterating Over a List
    9. 6.8. Enumerating a List
    10. 6.9. Sorting a List
    11. 6.10. Cutting Up a List
    12. 6.11. Applying a Function to a List
    13. 6.12. Creating a Dictionary
    14. 6.13. Accessing a Dictionary
    15. 6.14. Removing Things from a Dictionary
    16. 6.15. Iterating Over Dictionaries
  8. Advanced Python
    1. 7.0. Introduction
    2. 7.1. Formatting Numbers
    3. 7.2. Formatting Dates and Times
    4. 7.3. Returning More Than One Value
    5. 7.4. Defining a Class
    6. 7.5. Defining a Method
    7. 7.6. Inheritance
    8. 7.7. Writing to a File
    9. 7.8. Reading from a File
    10. 7.9. Pickling
    11. 7.10. Handling Exceptions
    12. 7.11. Using Modules
    13. 7.12. Random Numbers
    14. 7.13. Making Web Requests from Python
    15. 7.14. Command-Line Arguments in Python
    16. 7.15. Running Linux Commands from Python
    17. 7.16. Sending Email from Python
    18. 7.17. Writing a Simple Web Server in Python
    19. 7.18. Doing More Than One Thing at a Time
    20. 7.19. Doing Nothing in Python
    21. 7.20. Using Python with Minecraft Pi Edition
  9. Computer Vision
    1. 8.0. Introduction
    2. 8.1. Installing SimpleCV
    3. 8.2. Setting Up a USB Camera for Computer Vision
    4. 8.3. Using a Raspberry Pi Camera Module for Computer Vision
    5. 8.4. Counting Coins
    6. 8.5. Face Detection
    7. 8.6. Motion Detection
    8. 8.7. Optical Character Recognition
  10. Hardware Basics
    1. 9.0. Introduction
    2. 9.1. Finding Your Way Around the GPIO Connector
    3. 9.2. Keeping Your Raspberry Pi Safe When Using the <span xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" class="keep-together">GPIO Connector</span>
    4. 9.3. Setting Up I2C
    5. 9.4. Using I2C Tools
    6. 9.5. Setting Up SPI
    7. 9.6. Installing PySerial for Access to the Serial Port from Python
    8. 9.7. Installing Minicom to Test the Serial Port
    9. 9.8. Using a Breadboard with Jumper Leads
    10. 9.9. Using a Breadboard with a Pi Cobbler
    11. 9.10. Using a Raspberry Squid
    12. 9.11. Using a Raspberry Squid Button
    13. 9.12. Converting 5V Signals to 3.3V with Two Resistors
    14. 9.13. Converting 5V Signals to 3.3V with a Level Converter Module
    15. 9.14. Powering a Raspberry Pi with Batteries
    16. 9.15. Powering a Raspberry Pi with a LiPo Battery
    17. 9.16. Getting Started with the Sense HAT 
    18. 9.17. Getting Started with the Explorer HAT Pro
    19. 9.18. Getting Started with a RaspiRobot Board
    20. 9.19. Using a Pi Plate Prototyping Board
    21. 9.20. Making a Hardware At Top (HAT)
    22. 9.21. The Pi Compute Module
    23. 9.22. The Pi Zero
  11. Controlling Hardware
    1. 10.0. Introduction
    2. 10.1. Connecting an LED
    3. 10.2. Leaving the GPIO Pins in a Safe State
    4. 10.3. Controlling the Brightness of an LED
    5. 10.4. Make a Buzzing Sound
    6. 10.5. Switching a High-Power DC Device Using a Transistor
    7. 10.6. Switching a High-Power Device Using a Relay
    8. 10.7. Controlling High-Voltage AC Devices
    9. 10.8. Making a User Interface to Turn Things On and Off
    10. 10.9. Making a User Interface to Control PWM Power for LEDs and Motors
    11. 10.10. Changing the Color of an RGB LED
    12. 10.11. Using Lots of LEDs (Charlieplexing)
    13. 10.12. Using an Analog Meter as a Display
    14. 10.13. Programming with Interrupts
  12. Motors
    1. 11.0. Introduction
    2. 11.1. Controlling Servo Motors
    3. 11.2. Controlling Servo Motors Precisely
    4. 11.3. Controlling Many Servo Motors
    5. 11.4. Controlling the Speed of a DC Motor
    6. 11.5. Controlling the Direction of a DC Motor
    7. 11.6. Using a Unipolar Stepper Motor
    8. 11.7. Using a Bipolar Stepper Motor
    9. 11.8. Using a Stepper Motor HAT to Drive a Bipolar Stepper Motor
    10. 11.9. Using a RaspiRobot Board to Drive a Bipolar Stepper Motor
    11. 11.10. Building a Simple Robot Rover
  13. Digital Inputs
    1. 12.0. Introduction
    2. 12.1. Connecting a Push Switch
    3. 12.2. Toggling with a Push Switch
    4. 12.3. Using a Two-Position Toggle or Slide Switch
    5. 12.4. Using a Center-Off Toggle or Slide Switch
    6. 12.5. Debouncing a Button Press
    7. 12.6. Using an External Pull-up Resistor
    8. 12.7. Using a Rotary (Quadrature) Encoder
    9. 12.8. Using a Keypad
    10. 12.9. Detecting Movement
    11. 12.10. Adding GPS to the Raspberry Pi
    12. 12.11. Intercepting Keypresses
    13. 12.12. Intercepting Mouse Movements
    14. 12.13. Using a Real-Time Clock Module
  14. Sensors
    1. 13.0. Introduction
    2. 13.1. Using Resistive Sensors
    3. 13.2. Measuring Light 
    4. 13.3. Measuring Temperature with a Thermistor
    5. 13.4. Detecting Methane
    6. 13.5. Measuring a Voltage
    7. 13.6. Reducing Voltages for Measurement
    8. 13.7. Using Resistive Sensors with an ADC
    9. 13.8. Measuring Temperature with an ADC
    10. 13.9. Measuring the Raspberry Pi CPU Temperature
    11. 13.10. Measuring Temperature, Humidity, and Pressure with a Sense HAT
    12. 13.11. Measuring Temperature Using a Digital Sensor
    13. 13.12. Measuring Acceleration with an MCP3008 Module
    14. 13.13. Using the Inertial Management Unit (IMU) of the Sense HAT
    15. 13.14. Finding Magnetic North with the Sense HAT
    16. 13.15. Sensing a Magnet with a Reed Switch
    17. 13.16. Sensing a Magnet with the Sense HAT
    18. 13.17. Measuring Distance
    19. 13.18. Capacitative Touch Sensing
    20. 13.19. Displaying Sensor Values
    21. 13.20. Logging to a USB Flash Drive
  15. Displays
    1. 14.0. Introduction
    2. 14.1. Using a Four-Digit LED Display
    3. 14.2. Displaying Messages on an I2C LED Matrix
    4. 14.3. Using the Sense HAT LED Matrix Display
    5. 14.4. Displaying Messages on an Alphanumeric LCD HAT
    6. 14.5. Displaying Messages on an Alphanumeric LCD Module
    7. 14.6. Using an OLED Graphical Display
    8. 14.7. Using Addressable RGB LED Strips
  16. The Internet of Things
    1. 15.0. Introduction
    2. 15.1. Controlling GPIO Outputs Using a Web Interface
    3. 15.2. Displaying Sensor Readings on a Web Page
    4. 15.3. Sending Email and Other Notifications with IFTTT
    5. 15.4. Sending Tweets Using ThingSpeak
    6. 15.5. CheerLights
    7. 15.6. Sending Sensor Data to ThingSpeak
    8. 15.7. Responding to Tweets Using Dweet and IFTTT
  17. Arduino and Raspberry Pi
    1. 16.0. Introduction
    2. 16.1. Programming an Arduino from Raspberry Pi
    3. 16.2. Communicating with the Arduino by Using the Serial Monitor
    4. 16.3. Setting Up PyFirmata to Control an Arduino from a Raspberry Pi
    5. 16.4. Writing Digital Outputs on an Arduino from a Raspberry Pi
    6. 16.5. Using PyFirmata with TTL Serial
    7. 16.6. Reading Arduino Digital Inputs Using PyFirmata
    8. 16.7. Reading Arduino Analog Inputs Using PyFirmata
    9. 16.8. Analog Outputs (PWM) with PyFirmata
    10. 16.9. Controlling a Servo Using PyFirmata
    11. 16.10. Custom Communication with an Arduino over TTL Serial
    12. 16.11. Custom Communication with an Arduino over I2C
    13. 16.12. Using Small Arduinos with a Raspberry Pi
    14. 16.13. Getting Started with an aLaMode Board and a Raspberry Pi
    15. 16.14. Using an Arduino Shield with an aLaMode Board and a Raspberry Pi
  18. Parts and Suppliers
    1. Parts
    2. Prototyping Equipment
    3. Resistors and Capacitors
    4. Transistors and Diodes
    5. Integrated Circuits
    6. Opto-Electronics
    7. Modules
    8. Miscellaneous
  19. Raspberry Pi Pinouts
    1. Raspberry Pi 3/2 model B, B+, A+, Zero
    2. Raspberry Pi model B rev. 2, A
    3. Raspberry Pi model B rev. 1
  20. Index