Raspberry Pi Full Stack Raspbian
4.6 (999 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
9,276 students enrolled

Raspberry Pi Full Stack Raspbian

A whirlwind tour of full-stack web application development on the Raspberry Pi
Highest Rated
4.6 (999 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
9,276 students enrolled
Last updated 3/2020
English
English [Auto], Indonesian [Auto], 4 more
  • Italian [Auto]
  • Polish [Auto]
  • Romanian [Auto]
  • Thai [Auto]
Current price: $86.99 Original price: $124.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 9.5 hours on-demand video
  • 2 articles
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
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

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 applications
  • and, the flexibility of open source development software which, literally, powers the cloud applications that you use every day

As 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!


Who this course is for:
  • 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
Course content
Expand all 91 lectures 09:39:36
+ Get to know your Raspberry Pi
5 lectures 38:36
0111 - Raspberry Pi 4 specs and features
07:44
0120 - Raspberry Pi models
09:17
0130a - Raspberry Pi vs Arduino high level comparison
12:35
0130b - Raspberry Pi vs Arduino comparing the boards
05:32
+ Getting Started
9 lectures 49:40
0160 - Operating systems for the Raspberry Pi
08:40
0165 - Headless vs GUI
06:54
0170 - Download and Install Raspbian Lite using Etcher
06:05
0180 - How to enable SSH and configure Wifi in headless mode
05:45
0190a - Boot for the first time and basic configuration
02:33
0190b - Connect for the first time using Mac OS
07:15
0190c - Boot for the first time and connection using Windows
02:32
0210a - Working as the "root" user
04:38
0210b - How to enable the "root" user for logging on with SSH
05:18
+ How to recover from a serious glitch by backing up and restoring your SD card
4 lectures 26:21
0220a - Backup an SD card (Mac OS)
07:53
0220b - Restore an SD card (Mac OS)
05:47
0220c - Backup an SD card (Windows)
07:11
0220d - Restore an SD card (Windows)
05:30
+ Pins, GPIOs, and how to control them with Python
11 lectures 01:16:58
0250 - The Rapsberry Pi GPIO header and numbering system
10:22
0260a - A taste of Python on the Command Line Interpreter
10:45
0260b - A taste of Python on the Command Line Interpreter Functions
08:30
0270a - A taste of Python with a simple program
14:37
0280 - Wire a simple circuit
08:38
0290a - Install the Python installer program pip
02:08
0290b - Manipulate an LED using rpi.gpio
05:12
0300 - Read a button
04:50
0305 - Control an LED with a button
01:33
0310a - Install Git and the DHT library
05:10
0310b - Use the DHT22 sensor
05:13
+ Setup the Web application Stack
12 lectures 01:09:50
0340 - The Web Application Stack
09:08
0350 - The Python Virtual Environment
06:21

The setup process is available on Github: https://github.com/futureshocked/RaspberryPiFullStack_Raspbian/edit/master/CommandLineInstructions/360_seting_up_system_Python_notes.txt


For convenience, I copy it here:


ssh pi@192.168.111.63

$ sudo apt-get update

$ sudo apt-get upgrade

$ sudo apt-get install build-essential

$ sudo apt-get install libncurses5-dev libncursesw5-dev libreadline6-dev libffi-dev

$ sudo apt-get install libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libsqlite3-dev libgdbm-dev tk8.5-dev libssl-dev openssl

$ sudo apt-get install python-dev


0360a - Set up system Python - preparation
03:56

Update, February 5, 2020. At this time, Python 3.8.1 is the latest version.

To install Python 3.8.1, follow this process (you can remain as user “pi” until the last few steps that require root):


~ $ cd ~

~ $ mkdir python-source

~ $ cd python-source/

~/python-source $ wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz

~/python-source $ tar zxvf Python-3.8.1.tgz

~/python-source $ cd Python-3.8.1/

~/python-source/Python-3.8.1 $ ./configure --prefix=/usr/local/opt/python-3.8.1

~/python-source/Python-3.8.1 $ make

~/python-source/Python-3.8.1 $ sudo make install


At this point, Python 3.8.1 is now installed in /usr/local/opt/python-3.8.1

Test your new Python:


~/python-source/Python-3.8.1 $ /usr/local/opt/python-3.8.1/bin/python3.8 --version


The response should be: “Python 3.8.1”

0360b - Download, compile and install Python 3
10:21
0365 - Setup the app Python Virtual Environment
08:17
0430a - Setup Nginx
02:22
0430b - Setup Flask
03:04
0435 - A tour of a simple Flask app
12:23
0440a - uWSGI installation
01:52
0440b - Nginx configuration
05:23
0440c - USWGI configuration
04:15
0440d - USWGI and Nginx configuration testing
02:28
+ Styling with Skeleton
9 lectures 46:57
0450 - Configure systemd to auto-start uwsgi
07:59
0460a - Install SQlite3
01:46
0460b - Working with SQlite3
06:05
0470a - Static assets and the Skeleton boilerplate CSS
02:15
0470b - Setup the static assets directory
03:40
0470c - Introducing the Skeleton boilerplate CSS
02:52
0470d - Copying files using SFTP
06:56
0480 - Flask templates
07:26
0497 - Debugging a Flask app
07:58
+ Getting started with our web application
8 lectures 50:27
0500a - Introduction to the section - Getting started with our web application
01:26
0500b - Install the DHT library and the rpi-gpio module
02:35
0500c - Install the DHT library and the rpi-gpio module
10:22
0510 - Create a database to store sensor data
07:56
0520 - Sensor data capture script
06:49
0530 - Schedule sensor readings with cron
09:04
0540a - Display database records in the browser - Python script
05:36
0540b - Display database records in the browser - Template
06:39
+ Implement the date range selection feature
7 lectures 01:01:25
0560a - Introduction - Implement the datetime range selection feature
03:09
0560b - Select range of records in SQLite
06:16
0570 - Set datetime range in URL and show records in browser
14:42
0580 - URL querystring validation
06:48
0590 - Quick tidying up
10:19
0595 - Adding radio buttons for quick timedate range selection
09:33
0597 - Provision the Python script to work with the radio buttons
10:38
+ Improving the user interface with Google Charts and datetime selector
6 lectures 33:03
0610a - Introduction to Google Charts
05:05
0610b - Implementation of Google Charts
10:57
0610c - Testing Google Charts
02:15
0650a - Introduction to the datetime picker widget
05:32
0650b - Implement the datetime picker widget
06:19
0650c - Upload and test the datetime picker widget
02:55