Details
Title | Practical Python Programming for IoT: Build Advanced IoT Projects Using a Raspberry Pi 4, MQTT, RESTful APIs, WebSockets, and Python 3. |
---|---|
Creators | Smart Gary. |
Imprint | Birmingham: Packt Publishing, Limited, 2020 |
Collection | Электронные книги зарубежных издательств ; Общая коллекция |
Subjects | Internet of things. ; Python (Computer program language) ; EBSCO eBooks |
Document type | Other |
File type | |
Language | English |
Rights | Доступ по паролю из сети Интернет (чтение, печать, копирование) |
Record key | on1202474767 |
Record create date | 10/31/2020 |
Allowed Actions
pdf/2655448.pdf | – |
Action 'Read' will be available if you login or access site from another network
Action 'Download' will be available if you login or access site from another network
|
---|---|---|
epub/2655448.epub | – |
Action 'Download' will be available if you login or access site from another network
|
Group | Anonymous |
---|---|
Network | Internet |
Network | User group | Action |
---|---|---|
ILC SPbPU Local Network | All |
|
Internet | Authorized users SPbPU |
|
Internet | Anonymous |
|
- Cover
- Title Page
- Copyright and Credits
- About Packt
- Contributors
- Table of Contents
- Preface
- Section 1: Programming with Python and the Raspberry Pi
- Chapter 1: Setting Up your Development Environment
- Technical requirements
- Understanding your Python installation
- Setting up a Python virtual environment
- Installing Python GPIO packages with pip
- Anatomy of a virtual environment
- Alternative methods of executing a Python script
- Using sudo within virtual environments
- Executing Python scripts outside of their virtual environments
- Running a Python script at boot
- Configuring the GPIO interface on our Raspberry Pi
- Configuring the PiGPIO daemon
- Summary
- Further reading
- Chapter 2: Getting Started with Python and IoT
- Technical requirements
- Creating a breadboard prototype circuit
- Understanding the breadboard
- Positioning and connecting the push button
- Positioning and connecting the LED
- Positioning and connecting the resistor
- Reading an electronic schematic diagram
- Reading the push button schematic connection
- Reading the LED and resistor schematic connection
- Introducing ground connections and symbols
- Exploring two ways to flash an LED in Python
- Blinking with GPIOZero
- Imports
- Pin Factory configuration
- Blinking the LED
- Blinking with PiGPIO
- Imports
- PiGPIO and pin configuration
- Blinking the LED
- Comparing the GPIOZero and PiGPIO examples
- Blinking with GPIOZero
- Exploring two ways to integrate a push button in Python
- Responding to a button press with GPIOZero
- Imports
- Button pressed handler
- Button configuration
- Preventing the main thread from terminating
- Responding to a button press with PiGPIO
- Button pin configuration
- Button pressed handler
- Responding to a button press with GPIOZero
- Creating your first IoT program
- Running and testing the Python server
- Understanding the server code
- Imports
- Variable definitions
- The resolve_thing_name() method
- The get_lastest_dweet() method
- The poll_dweets_forever() method
- The process_dweet() method
- The main program entry point
- Extending your IoT program
- Implementing a dweeting button
- PiGPIO LED as a class
- Summary
- Questions
- Further reading
- Chapter 3: Networking with RESTful APIs and Web Sockets Using Flask
- Technical requirements
- Introducing the Flask microservices framework
- Creating a RESTful API service with Flask-RESTful
- Running and testing the Python server
- Understanding the server code
- Imports
- Flask and Flask-RESTful API instance variables
- Global variables
- The init_led() method
- Serving a web page
- The LEDControl class
- The get() class method
- The post() class method
- LEDController registration and starting the server
- Introduction to PWM
- Adding a RESTful API client web page
- Understanding the client-side code
- JavaScript imports
- The getState() function
- The postUpdate() function
- The updateControls() function
- Registering event handlers with jQuery
- The web page HTML
- Understanding the client-side code
- Creating a Web Socket service with Flask-SocketIO
- Running and testing the Python server
- Server code walkthrough
- Imports
- Flask and Flask-RESTful API instance variables
- Serving a web page
- Connecting and disconnecting handlers
- LED handler
- Starting the server
- Adding a Web Socket client web page
- Understanding the client-side code
- Imports
- Socket.IO connect and disconnect handlers
- The on LED handler
- The document ready function
- The web page HTML
- Understanding the client-side code
- Comparing the RESTful API and Web Socket servers
- Summary
- Questions
- Further reading
- Chapter 4: Networking with MQTT, Python, and the Mosquitto MQTT Broker
- Technical requirements
- Installing the Mosquitto MQTT broker
- Learning MQTT by example
- Publishing and subscribing MQTT messages
- Exploring MQTT topics and wildcards
- Applying Quality of Service to messages
- Retaining messages for later delivery
- Publishing a retained message
- Creating durable connections
- Saying goodbye with a Will
- Using MQTT broker services
- Introducing the Python Paho-MQTT client library
- Controlling an LED with Python and MQTT
- Running the LED MQTT example
- Understanding the code
- Imports
- Global variables
- The set_led_level(data) method
- The on_connect() and on_disconnect() MQTT callback methods
- The on_message() MQTT callback method
- The init_mqtt() method
- Main entry point
- Building a web-based MQTT client
- Understanding the code
- Imports
- Global variables
- The Paho JavaScript MQTT client
- Connecting to the broker
- The onConnectionLost and onMessageArrived handler methods
- JQuery document ready function
- Understanding the code
- Summary
- Questions
- Further reading
- Section 2: Practical Electronics for Interacting with the Physical World
- Chapter 5: Connecting Your Raspberry Pi to the Physical World
- Technical requirements
- Understanding Raspberry Pi pin numbering
- Exploring popular Python GPIO libraries
- Reviewing GPIOZero – simple interfacing for beginners
- Reviewing RPi.GPIO – a low-level GPIO for beginners
- Reviewing Circuit Python and Blinka – interfacing for complex devices
- Reviewing PiGPIO – a low-level GPIO library
- Exploring remote GPIO with PiGPIO (and GPIOZero)
- Reviewing SPIDev and SMBus – dedicated SPI and I2C libraries
- Why PiGPIO?
- Exploring Raspberry Pi electronic interfacing options
- Understanding digital IO
- Understanding analog IO
- Understanding Pulse-Width Modulation
- Creating PWM signals
- Understanding SPI, I2C, and 1-wire interfaces
- Understanding the serial / UART protocol
- Interfacing with an analog-to-digital converter
- Building the ADS1115 ADC circuit
- Making sure the ADS1115 is connected to your Raspberry Pi
- Reading analog input with the ADS1115
- Understanding the code
- Imports
- ADS1115 setup and configuration
- Global variables
- Program entry point
- Understanding the code
- Using PWM to control an LED
- Understanding the code
- Global variables
- Range mapping function
- Generating the PWM signal
- Understanding the code
- Visually exploring PWM with PiScope
- Visualizing software and hardware-timed PWM
- Summary
- Questions
- Further reading
- Chapter 6: Electronics 101 for the Software Engineer
- Technical requirements
- Fitting out your workshop
- Buying electronic modules and components
- Purchasing lose components
- Purchasing open source hardware modules
- Buying electronic modules and components
- Keeping your Raspberry Pi safe
- Three ways electronic components fail
- Electronics interfacing principles for GPIO control
- Ohm's Law and power
- Kirchhoff's circuit laws
- Why are we using a 200 Ohm resistor for the LED circuit?
- Calculating the resistor value
- Factoring in the Raspberry Pi's current limits
- Calculating the resistor's power dissipation
- Exploring digital electronics
- Digital output
- Digital input
- Using pull-up and pull-down resistors
- The resistor solution
- The code solution
- Exploring analog electronics
- Analog output
- Analog input
- Voltage dividers
- Understanding logic-level conversion
- Voltage dividers as logic-level converters
- Logic-level converter ICs and modules
- Comparing voltage dividers and logic-level converters
- Summary
- Questions
- Further reading
- Section 3: IoT Playground - Practical Examples to Interact with the Physical World
- Chapter 7: Turning Things On and Off
- Technical requirements
- Exploring a relay driver circuit
- Determining a load's voltage and current
- Measuring the current requirement of a DC motor
- Measuring the current requirement of a relay and LED
- Using an optocoupler as a switch
- Building the optocoupler circuit
- Controlling the optocoupler with Python
- Using a transistor as a switch
- Building the MOSFET circuit
- Controlling the MOSFET with Python
- Using a relay as a switch
- Building the relay driver circuit
- Controlling the Relay Driver Circuit with Python
- Summary
- Questions
- Further reading
- Chapter 8: Lights, Indicators, and Displaying Information
- Technical requirements
- Making color with an RGB LED and PWM
- Creating the RGB LED circuit
- Running and exploring the RGB LED code
- Controlling a multi-color APA102 LED strip with SPI
- Creating the APA102 circuit
- Powering the APA102 circuit
- Configuring and running the APA102 LED strip code
- APA102 LED strip code walkthrough
- Discussion of APA102 and the SPI interface
- APA102 LED strip troubleshooting tips
- Creating the APA102 circuit
- Using an OLED display
- Connecting the OLED display
- Verifying whether the OLED display is connected
- Configuring and running the OLED example
- OLED code walkthrough
- Making sound with buzzers and PWM
- Building the RTTTL circuit
- Running the RTTTL music example
- Summary
- Questions
- Further reading
- Chapter 9: Measuring Temperature, Humidity, and Light Levels
- Technical requirements
- Measuring temperature and humidity
- Creating the DHT11/DHT22 circuit
- Running and exploring the DHT11/DHT22 code
- Detecting light
- Creating an LDR light-detecting circuit
- Running the LDR example code
- LDR code walkthrough
- LDR configuration summary
- Detecting moisture
- Comparing detection options
- Summary
- Questions
- Chapter 10: Movement with Servos, Motors, and Steppers
- Technical requirements
- Using PWM to rotate a servo
- Connecting a servo to your Raspberry Pi
- How a servo is controlled using PWM
- Running and exploring the servo code
- Different types of servos
- Using an H-Bridge IC to control a motor
- Building the motor driver circuit
- Running the example H-Bridge code to control a motor
- motor.py
- motor_class.py
- Introduction to stepper motor control
- Connecting the stepper motor to the L293D circuit
- Running and exploring the stepper motor code
- Summary
- Questions
- Chapter 11: Measuring Distance and Detecting Movement
- Technical requirements
- Detecting movement with a PIR sensor
- Creating the PIR sensor circuit
- Running and exploring the PIR sensor code
- Measuring distance with an ultrasonic sensor
- How an ultrasonic distance sensor works
- HC-SR04 distance measurement process
- Building the HC-SR04 circuit
- Running and exploring the HC-SR04 example code
- Detecting movement and distance with Hall-effect sensors
- Creating a Hall-effect sensor circuit
- Running and exploring the Hall-effect sensor code
- Summary
- Questions
- Chapter 12: Advanced IoT Programming Concepts - Threads, AsyncIO, and Event Loops
- Technical requirements
- Building and testing our circuit
- Building the reference circuit
- Running the examples
- Exploring the event-loop approach
- Exploring a threaded approach
- Exploring the publisher-subscriber alternative
- Exploring an AsyncIO approach
- An asynchronous experiment
- Summary
- Questions
- Further reading
- Chapter 13: IoT Visualization and Automation Platforms
- Technical requirements
- Triggering an IFTTT Applet from your Raspberry Pi
- Creating the temperature monitoring circuit
- Creating and configuring an IFTTT Applet
- Triggering an IFTTT Webhook
- Triggering an IFTTT Applet in Python
- Actioning your Raspberry Pi from an IFTTT Applet
- Method 1 – using the dweet.io service as an intermediary
- Method 2 – creating a Flask-RESTful service
- Creating the LED circuit
- Running the IFTTT and LED Python program
- Creating the IFTTT Applet
- Controlling the LED from an email
- IFTTT troubleshooting
- Visualizing data with the ThingSpeak platform
- Configuring the ThinkSpeak platform
- Configuring and running the ThinkSpeak Python program
- Other IoT and automation platforms for further exploration
- Zapier
- IFTTT platform
- ThingsBoard IoT platform
- Home Assistant
- Amazon Web Services (AWS)
- Microsoft Azure, IBM Watson, and Google Cloud
- Summary
- Questions
- Chapter 14: Tying It All Together - An IoT Christmas Tree
- Technical requirements
- Overview of the IoT Christmas tree
- Building the IoTree circuit
- Three IoTree service programs
- Configuring, running, and using the Tree API service
- Configuring the Tree API service
- Running the Tree API service
- Configuring, running, and using the Tree MQTT service
- Configuring the Tree MQTT service
- Running the Tree MQTT service program
- Integrating the IoTree with dweet.io
- Configuring the Tree MQTT service
- Running the dweet integration service program
- Integrating with email and Google Assistant via IFTTT
- Integration with email
- Integration with Google Assistant
- Ideas and suggestions to extend your IoTree
- Summary
- Questions
- Assessments
- Other Books You May Enjoy
- Index