Preface What this book covers What you need for this book Who this book is for Conventions Reader feedback Customer support Downloading the example code Downloading the color images of this book Errata Piracy Questions Getting Started with Python and the Raspberry Pi Zero Let's get started! Things needed for this book Buying the Raspberry Pi Zero Introduction to the Raspberry Pi Zero The features of the Raspberry Pi Zero The setup of the Raspberry Pi Zero Soldering the GPIO headers Enclosure for the Raspberry Pi Zero OS setup for the Raspberry Pi micro SD card preparation Let's learn Python! The Hello World example Setting up your Raspberry Pi Zero for Python programming IDLE's interactive tool The text editor approach Launching the Python interpreter via the Linux Terminal Executing Python scripts using the Linux Terminal The print() function The help() function Summary Arithmetic Operations, Loops, and Blinky Lights Hardware required for this chapter Arithmetic operations Bitwise operators in Python Logical operators Data types and variables in Python Reading inputs from the user The formatted string output The str.format() method An exercise for the reader Another exercise for the reader Concatenating strings Loops in Python A for loop Indentation Nested loops A while loop Raspberry Pi's GPIO Blinky lights Code The applications of GPIO control Summary Conditional Statements, Functions, and Lists Conditional statements An if-else statement if-elif-else statement Breaking out of loops The applications of conditional statements: executing tasks using GPIO Breaking out a loop by counting button presses Functions in Python Passing arguments to a function: Returning values from a function The scope of variables in a function GPIO callback functions DC motor control in Python Some mini-project challenges for the reader Summary Communication Interfaces UART - serial port Raspberry Pi Zero's UART port Setting up the Raspberry Pi Zero serial port Example 1 - interfacing a carbon dioxide sensor to the Raspberry Pi Python code for serial port communication I2C communication Example 2 - PiGlow Installing libraries Example Example 3 - Sensorian add-on hardware for the Raspberry Pi I2C drivers for the lux sensor Challenge The SPI interface Example 4 - writing to external memory chip Challenge to the reader Summary Data Types and Object-Oriented Programming in Python Lists Operations that could be performed on a list Append element to list: Remove element from list: Retrieving the index of an element Popping an element from the list Counting the instances of an element: Inserting element at a specific position: Challenge to the reader Extending a list Clearing the elements of a list Sorting the elements of a list Reverse the order of elements in list Create copies of a list Accessing list elements Accessing a set of elements within a list List membership Let's build a simple game! Dictionaries Tuples Sets OOP in Python Revisiting the student ID card example Class Adding methods to a class Doc strings in Python self Speaker controller Light control daemon Summary File I/O and Python Utilities File I/O Reading from a file Reading lines Writing to a file Appending to a file seek Read n bytes r+ Challenge to the reader The with keyword configparser Challenge to the reader Reading/writing to CSV files Writing to CSV files Reading from CSV files Python utilities The os module Checking a file's existence Checking for a folder's existence Deleting files Killing a process Monitoring a process The glob module Challenge to the reader The shutil module The subprocess module The sys module Summary Requests and Web Frameworks The try/except keywords try...except...else try...except...else...finally Connecting to the Internet - web requests The application of requests - retrieving weather information The application of requests - publishing events to the Internet Flask web framework Installing Flask Building our first example Controlling appliances using the Flask framework Summary Awesome Things You Could Develop Using Python Image processing using a Raspberry Pi Zero OpenCV The verification of the installation A challenge to the reader Installing the camera to the Raspberry Zero Speech recognition Automating routing tasks Improving daily commute A challenge to the reader Project challenge Improving your vocabulary A challenge to the reader Project challenge Logging Threading in Python PEP8 style guide for Python Verifying PEP8 guidelines Summary Lets Build a Robot! Components of the robot Setting up remote login Changing the password Enabling SSH access Chassis setup Motor driver and motor selection Preparing the motor driver circuit Raspberry Pi Zero and motor driver assembly Raspberry Pi Zero and motor driver assembly Robot Power supply setup Setting up the motor power supply Using the Raspberry Pi Zero's 5V power supply Using an external power supply Testing the motors Motor driver detection Detecting motor driver Motor test Dependencies Camera setup Verification of camera function The web interface Camera setup for the web interface Buttons for robot control Troubleshooting tips Project enhancements Summary Home Automation Using the Raspberry Pi Zero Voice activated personal assistant Installing requisite packages How does it work? Setting up the audio tools Connecting the speaker Connecting the microphone Houndify Building voice commands Adding a button Web framework based appliance control/dashboard Building the web dashboard Personal Health Improvement—Sitting is the new smoking Installing requisite software packages Getting access keys for Fitbit client Fitbit API Test Building the visual aid Smart lawn sprinkler Summary Tips and Tricks Change your Raspberry Pi's password Updating your OS Setting up your development environment SSH access via Windows SSH access via Linux/macOS Transferring files to/from your Pi WinSCP Mac/Linux environment Git Command-line text editors Graphical text editors SSH aliases (on Mac/Linux Terminals) Saving SSH sessions on PuTTY VNC access to Raspberry Pi The RUN switch of the Raspberry Pi Zero board GPIO pin mapping Stackable breadboard Summary