Fork me on GitHub

Project Notes

#694 Raspberry Pi Cookbook

Book notes: Raspberry Pi Cookbook, by Simon Monk. First published January 1, 2013.

Build

Notes

See also:

Contents

1. 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 an SD Card with NOOBS
  • 1.6. Writing an SD Card Manually (Mac)
  • 1.7. Writing an SD Card Manually (Windows)
  • 1.8. Writing an SD Card Manually (Linux)
  • 1.9. Connecting the System
  • 1.10. Connecting a DVI or VGA Monitor
  • 1.11. Using a Composite Video Monitor/TV
  • 1.12. Using All the Storage on the SD Card
  • 1.13. Adjusting the Picture Size on your Monitor
  • 1.14. Maximizing Performance
  • 1.15. Changing Your Password
  • 1.16. Setting the Pi to Boot Straight into a Windowing System
  • 1.17. Shutting Down Your Raspberry Pi
  • 1.18. Installing the Raspberry Pi Camera Module

2. Networking

  • 2.0. Introduction
  • 2.1. Connecting to a Wired Network
  • 2.2. Finding Out 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. File Sharing on a Mac Network
  • 2.10. Sharing the Pi Screen on a Mac
  • 2.11. Using a Raspberry Pi for Network Attached Storage
  • 2.12. Network Printing

3. 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. Fetching Files from the Command Line
  • 3.19. Fetching Source Code with git
  • 3.20. Running a Program or Script Automatically on Startup
  • 3.21. Running a Program or Script Automatically at Regular Intervals
  • 3.22. Finding Things
  • 3.23. Using the Command-Line History
  • 3.24. Monitoring Processor Activity
  • 3.25. Working with File Archives
  • 3.26. Listing Connected USB Devices
  • 3.27. Redirecting Output from the Command Line to a File
  • 3.28. Concatenating Files
  • 3.29. Using Pipes
  • 3.30. Hiding Output to the Terminal
  • 3.31. Running Programs in the Background
  • 3.32. Creating Command Aliases
  • 3.33. Setting the Date and Time
  • 3.34. Finding Out How Much Room You Have on the SD Card

4. 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
  • 4.8. Running Open Arena
  • 4.9. Raspberry Pi Radio Transmitter
  • 4.10. Running GIMP
  • 4.11. Internet Radio

5. 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. Find the Length of a String
  • 5.14. Find 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

6. Python Lists and Dictionaries

  • 6.0. Introduction
  • 6.1. Creating a List
  • 6.2. Accessing Elements of a List
  • 6.3. Find 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

7. Advanced Python

  • 7.0. Introduction
  • 7.1. Formatting Numbers
  • 7.2. Formatting Dates
  • 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. Sending Email from Python
  • 7.16. Writing a Simple Web Server in Python

8. GPIO Basics

  • 8.0. Introduction
  • 8.1. Finding Your Way Around the GPIO Connector
  • 8.2. Keeping Your Raspberry Pi Safe when Using the GPIO Connector
  • 8.3. Installing RPi.GPIO
  • 8.4. Setting Up I2C
  • 8.5. Using I2C Tools
  • 8.6. Setting Up SPI
  • 8.7. Freeing the Serial Port
  • 8.8. Installing PySerial for Access to the Serial Port from Python
  • 8.9. Installing Minicom to Test the Serial Port
  • 8.10. Using a Breadboard with Jumper Leads
  • 8.11. Using a Breadboard with a Pi Cobbler
  • 8.12. Converting 5V Signals to 3.3V with Two Resistors
  • 8.13. Converting 5V Signals to 3.3V with a Level Converter Module
  • 8.14. Powering a Raspberry Pi with Batteries
  • 8.15. Powering a Raspberry Pi with a LiPo Battery
  • 8.16. Getting Started with a PiFace Digital Interface Board
  • 8.17. Getting Started with a Gertboard
  • 8.18. Getting Started with a RaspiRobot Board
  • 8.19. Using a Humble Pi Prototyping Board
  • 8.20. Using a Pi Plate Prototyping Board
  • 8.21. Using a Paddle Terminal Breakout Board

9. Controlling Hardware

  • 9.0. Introduction
  • 9.1. Connecting an LED
  • 9.2. Controlling the Brightness of an LED
  • 9.3. Make a Buzzing Sound
  • 9.4. Switching a High-Power DC Device Using a Transistor
  • 9.5. Switching a High-Power Device Using a Relay
  • 9.6. Controlling High-Voltage AC Devices
  • 9.7. Making a User Interface to Turn Things On and Off
  • 9.8. Making a User Interface to Control PWM Power for LEDs and Motors
  • 9.9. Changing the Color of an RGB LED
  • 9.10. Using Lots of LEDs (Charlieplexing)
  • 9.11. Using an Analog Meter as a Display
  • 9.12. Programming with Interrupts
  • 9.13. Controlling GPIO Outputs Using a Web Interface

10. Motors

  • 10.0. Introduction
  • 10.1. Controlling Servo Motors
  • 10.2. Controlling a Large Number of Servo Motors
  • 10.3. Controlling the Speed of a DC Motor
  • 10.4. Controlling the Direction of a DC Motor
  • 10.5. Using a Unipolar Stepper Motor
  • 10.6. Using a Bipolar Stepper Motor
  • 10.7. Using a RaspiRobot Board to Drive a Bipolar Stepper Motor
  • 10.8. Building a Simple Robot Rover

11. Digital Inputs

  • 11.0. Introduction
  • 11.1. Connecting a Push Switch
  • 11.2. Toggling with a Push Switch
  • 11.3. Using a Two-Position Toggle or Slide Switch
  • 11.4. Using a Center-Off Toggle or Slide Switch
  • 11.5. Debouncing a Button Press
  • 11.6. Using an External Pull-up Resistor
  • 11.7. Using a Rotary (Quadrature) Encoder
  • 11.8. Using a Keypad
  • 11.9. Detecting Movement
  • 11.10. Adding GPS to the Raspberry Pi
  • 11.11. Intercepting Keypresses
  • 11.12. Intercepting Mouse Movements
  • 11.13. Using a Real-Time Clock Module

12. Sensors

  • 12.0. Introduction
  • 12.1. Using Resistive Sensors
  • 12.2. Measuring Light
  • 12.3. Detecting Methane
  • 12.4. Measuring a Voltage
  • 12.5. Reducing Voltages for Measurement
  • 12.6. Using Resistive Sensors with an ADC
  • 12.7. Measuring Temperature with an ADC
  • 12.8. Measuring Acceleration
  • 12.9. Measuring Temperature Using a Digital Sensor
  • 12.10. Measuring Distance
  • 12.11. Displaying Sensor Values
  • 12.12. Logging to a USB Flash Drive

13. Displays

  • 13.0. Introduction
  • 13.1. Using a Four-Digit LED Display
  • 13.2. Displaying Messages on an I2C LED matrix
  • 13.3. Using Pi-Lite
  • 13.4. Displaying Messages on an Alphanumeric LCD

14. Arduino and Raspberry Pi

  • 14.0. Introduction
  • 14.1. Programming an Arduino from Raspberry Pi
  • 14.2. Communicating with the Arduino by Using the Serial Monitor
  • 14.3. Setting Up PyFirmata to Control an Arduino from a Raspberry Pi
  • 14.4. Writing Digital Outputs on an Arduino from a Raspberry Pi
  • 14.5. Using PyFirmata with TTL Serial
  • 14.6. Reading Arduino Digital Inputs Using PyFirmata
  • 14.7. Reading Arduino Analog Inputs Using PyFirmata
  • 14.8. Analog Outputs (PWM) with PyFirmata
  • 14.9. Controlling a Servo Using PyFirmata
  • 14.10. Custom Communication with an Arduino over TTL Serial
  • 14.11. Custom Communication with an Arduino over I2C
  • 14.12. Using Small Arduinos with a Raspberry Pi
  • 14.13. Getting Started with an aLaMode Board and a Raspberry Pi
  • 14.14. Using an Arduino Shield with an aLaMode Board and a Raspberry Pi
  • 14.15. Using Gertboard as an Arduino Interface

A. Parts and Suppliers

  • Parts
  • Prototyping Equipment
  • Resistors and Capacitors
  • Transistors and Diodes
  • Integrated Circuits
  • Opto-Electronics
  • Modules
  • Miscellaneous
About LEAP#694 Books

This page is a web-friendly rendering of my project notes shared in the LEAP GitHub repository.

Project Source on GitHub Return to the LEAP Catalog
About LEAP

LEAP is my personal collection of electronics projects - usually involving an Arduino or other microprocessor in one way or another. Some are full-blown projects, while many are trivial breadboard experiments, intended to learn and explore something interesting.

Projects are often inspired by things found wild on the net, or ideas from the many great electronics podcasts and YouTube channels. Feel free to borrow liberally, and if you spot any issues do let me know or send a pull-request.

NOTE: For a while I included various scale modelling projects here too, but I've now split them off into a new repository: check out LittleModelArt if you are looking for these projects.

Project Gallery view the projects as an image gallery Notebook reference materials and other notes Follow the Blog follow projects and notes as they are published in your favourite feed reader