Raspberry Pi Full Stack Raspbian
Last updated 8/2022
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 3.59 GB | Duration: 11h 27m
Last updated 8/2022
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 3.59 GB | Duration: 11h 27m
A whirlwind tour of full-stack web application development on the Raspberry Pi
What you'll learn
Setup the minimal Raspbian Lite operating system to the RPi.
Learn how to work in headless mode
Learn to install and use the a Python virtual environment.
Install and use Flask, a Python-based web micro-framework
Install and use uWSGI as the application server for Flask
Install and use Nginx light-weight web server
Setup systemd to automatically start your application
Use the RPi GPIOs as digital input and outputs
Use a DHT22 humidity and temperature sensor
Install and use the SQLite database
Use the Google Chart API to create visual representations of the sensor data
Use JQuery to add interactivity to web pages
Use Plotly for graphical analysis of sensor data
Assign a static IP address to your Raspberry Pi
Expose your application to the Internet, and access it from anywhere
Requirements
A Raspberry Pi 4, 3, 2, model B
A Windows, Mac or Linux computer
A DHT22 sensor
An 5mm LED
A pushbutton
A breadboard and jumper wires
Access to the Internet
(Check hardware requirements in a free lecture in the first section of the course)
Description
Course last updated in August 2022We updated this course to be fully compatible with Raspberry Pi OS version 11 ("Bullseye"), Python 3.8.13, and updated software modules across the entire stack. In designing this update, we chose to use the latest available software modules without breaking any part of the application or requiring modifications. Please watch the application briefing video (one of the free lectures in this page) for more details.––––––––––––––-Welcome to Raspberry Pi: Full Stack, a hands-on project designed to teach you how to build an Internet-of-Things application based on the world’s most popular embedded computer.This is an updated and improved remake of the original Raspberry Pi Full Stack. In this new course, I have updated all of the technologies involved in the current state of the Art, and have also added new content.This course will expose you to the full process of developing a web application.You will integrate LEDs, buttons and sensors with Javascript, HTML, web servers, database servers, routers and schedulers.You will understand why the Raspberry Pi is such a versatile tinkering platform by experiencing first hand how well it combines:open hardware, that includes wireless and wired networking and the ability to connect sensors and actuators,the powerful Linux/Debian operating system, which gives you access to high-level programming languages and desktop-level software applicationsand, the flexibility of open source development software which, literally, powers the cloud applications that you use every dayAs you progress through the sections, you will learn how to complete a single step of the application development process.You’ll start with the operating system, add Python and play with some common hardware. Then you'll set up the web application stack, and the application itself.You will learn and add new features and refinements as you move through the lectures.This course is perfect for people that have at least basic understanding of computers and electronics.Ideally, you have experience in experimenting with the Arduino and are comfortable with the breadboard and simple components.This course contains a substantial amount of programming. For this, you will need to be comfortable working with a text editor. Any prior knowledge of Python, Javascript or other high-level programming language will be beneficial, although it is not strictly necessary.There are no requirements necessary to enrol; I only ask you to be ready to learn and willing to put the required time and effort.Please don't forget to watch the free lectures in the first section of the course. These lectures will give you detailed information on the course content and the hardware you will need.Looking forward to learning with you!
Overview
Section 1: Introduction
Lecture 1 0010 - What is this course about
Lecture 2 0030 - Parts you will need
Lecture 3 0060 - Code repository
Lecture 4 0070 – Course update briefing
Section 2: Get to know your Raspberry Pi
Lecture 5 0110 - Raspberry Pi 3 specs and features
Lecture 6 0111 - Raspberry Pi 4 specs and features
Lecture 7 0120 - Raspberry Pi models
Lecture 8 0130a - Raspberry Pi vs Arduino high level comparison
Lecture 9 0130b - Raspberry Pi vs Arduino comparing the boards
Section 3: Getting Started
Lecture 10 0160 - Operating systems for the Raspberry Pi
Lecture 11 0165 - Headless vs GUI
Lecture 12 0170 - Download and Install Raspbian Lite using Etcher
Lecture 13 0180 - How to enable SSH and configure Wifi in headless mode
Lecture 14 0190a - Boot for the first time and basic configuration
Lecture 15 0190b - Connect for the first time using Mac OS
Lecture 16 0190c - Boot for the first time and connection using Windows
Lecture 17 0210a - Working as the "root" user
Lecture 18 0210b - How to enable the "root" user for logging on with SSH
Section 4: How to recover from a serious glitch by backing up and restoring your SD card
Lecture 19 0220a - Backup an SD card (Mac OS)
Lecture 20 0220b - Restore an SD card (Mac OS)
Lecture 21 0220c - Backup an SD card (Windows)
Lecture 22 0220d - Restore an SD card (Windows)
Section 5: Pins, GPIOs, and how to control them with Python
Lecture 23 0250 - The Rapsberry Pi GPIO header and numbering system
Lecture 24 0260a - A taste of Python on the Command Line Interpreter
Lecture 25 0260b - A taste of Python on the Command Line Interpreter Functions
Lecture 26 0270a - A taste of Python with a simple program
Lecture 27 0280 - Wire a simple circuit
Lecture 28 0290a - Install the Python installer program pip
Lecture 29 0290b - Manipulate an LED using rpi.gpio
Lecture 30 0300 - Read a button
Lecture 31 0305 - Control an LED with a button
Lecture 32 Please read before you continue: DHT22 library update
Lecture 33 0310a - Install Git and the DHT library
Lecture 34 0310b - Use the DHT22 sensor
Section 6: Setup the Web application Stack
Lecture 35 0340 - The Web Application Stack
Lecture 36 0350 - The Python Virtual Environment
Lecture 37 0360a - Set up system Python - preparation
Lecture 38 0360b - Download, compile and install Python 3
Lecture 39 0365 - Setup the app Python Virtual Environment
Lecture 40 0430a - Setup Nginx
Lecture 41 0430b - Setup Flask
Lecture 42 0435 - A tour of a simple Flask app
Lecture 43 0440a - uWSGI installation
Lecture 44 0440b - Nginx configuration
Lecture 45 0440c - USWGI configuration
Lecture 46 0440d - USWGI and Nginx configuration testing
Section 7: Styling with Skeleton
Lecture 47 0450 - Configure systemd to auto-start uwsgi
Lecture 48 0460a - Install SQlite3
Lecture 49 0460b - Working with SQlite3
Lecture 50 0470a - Static assets and the Skeleton boilerplate CSS
Lecture 51 0470b - Setup the static assets directory
Lecture 52 0470c - Introducing the Skeleton boilerplate CSS
Lecture 53 0470d - Copying files using SFTP
Lecture 54 0480 - Flask templates
Lecture 55 0497 - Debugging a Flask app
Section 8: Getting started with our web application
Lecture 56 0500a - Introduction to the section - Getting started with our web application
Lecture 57 0500b - Install the DHT library and the rpi-gpio module
Lecture 58 0500c - Install the DHT library and the rpi-gpio module
Lecture 59 0510 - Create a database to store sensor data
Lecture 60 0520 - Sensor data capture script
Lecture 61 0530 - Schedule sensor readings with cron
Lecture 62 0540a - Display database records in the browser - Python script
Lecture 63 0540b - Display database records in the browser - Template
Section 9: Implement the date range selection feature
Lecture 64 0560a - Introduction - Implement the datetime range selection feature
Lecture 65 0560b - Select range of records in SQLite
Lecture 66 0570 - Set datetime range in URL and show records in browser
Lecture 67 0580 - URL querystring validation
Lecture 68 0590 - Quick tidying up
Lecture 69 0595 - Adding radio buttons for quick timedate range selection
Lecture 70 0597 - Provision the Python script to work with the radio buttons
Section 10: Improving the user interface with Google Charts and datetime selector
Lecture 71 0610a - Introduction to Google Charts
Lecture 72 0610b - Implementation of Google Charts
Lecture 73 0610c - Testing Google Charts
Lecture 74 0650a - Introduction to the datetime picker widget
Lecture 75 0650b - Implement the datetime picker widget
Lecture 76 0650c - Upload and test the datetime picker widget
Section 11: Dealing with time zones
Lecture 77 0665 - Adjust datetimes to local time zone on the client side
Lecture 78 0670a - Introduction to Arrow
Lecture 79 0670b - Implement Arrow
Lecture 80 0670c - Upload timezone changes and test
Lecture 81 0680 - Link the two pages of the application
Section 12: Charting with Plotly
Lecture 82 Please read before you begin this section
Lecture 83 0710a - Install Plotly
Lecture 84 0710b - Try out Plotly on the command line
Lecture 85 0720a - Implement Plotly support on the client side
Lecture 86 0720b - How to debug Javascript
Lecture 87 0730a - Add Plotly support to the app script
Lecture 88 0730b - Server side debugging example
Section 13: Publish on the Internet
Lecture 89 0810 - Setting a static IP address
Lecture 90 0850 - Expose your app to the Internet with port forwarding
Section 14: Conclusion and Bonus Lecture
Lecture 91 0760 - Recap and what's next
Lecture 92 Bonus Lecture
Section 15: Update 2022
Lecture 93 19.10 Introduction to the application update
Lecture 94 19.20 Backup and update apt packages
Lecture 95 19.30 Update system Python to 3.8.13
Lecture 96 19.40 Update Python Virtual Environment to 3.8.13
Lecture 97 19.50 Update application Python modules
Lecture 98 19.55 Update the RF24 driver
Lecture 99 19.60 Update Javascript, JS libraries and other assets
Lecture 100 19.70 Testing the full stack app (successful)
Lecture 101 19.75 Tweak the application to work with the updated components
Makers who want to experience the full process of web application development,Any experience in programming with a high-level language is useful but not necessary,Experience with small breadboard circuit is useful but not necessary,Anyone who want experience working with modern web application development technologies