Raspberry Pi Full Stack Raspbian (updated 8/2022)

Posted By: ELK1nG

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

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