​make an internet of things web application with your raspberry pi from the gr​ound up


Raspberry Pi: Full Stack​ is a comprehensive project course that will teach you how to build a modern Internet-of-Things application that includes a local web server application written in Python and JavaScript, sensors, buttons and LEDs, and online Cloud services like If This Then That, Google Sheets, Google Charts, and Plotly.

This course will take you on ​a whirlwind tour of full-stack web application development on the Raspberry Pi

​You will learn how to build this application from the ground up, and gain experience and knowledge with technologies such as...

  • ​The Linux operating system and the command line, 
  • The Python ​programming language,
  • ​The Raspberry Pi General Purpose Input Output pins (GPIOs), 
  • ​T​he Nginx web server,
  • ​​The Flask Python web application microframework​,
  • JQuery and CSS for creating user interfaces,
  • ​How to deal with timezones, 
  • ​How to create charts with Plotly and Google Charts, 
  • ​How to do datalogging with Google Sheet, 
  • ​How to create applets with IFTTT, ​
  • ​How to secure your application with SSL.

There is no other course on the Internet that I know about that offers all this content, in a single project.

​But that's not ​where this course ends...

​In this course, you will also learn how to setup a remote wireless Arduino sensor node, and collect data from it. Your Raspberry Pi web application  can then process the Arduino node data in the same way it processes data from its on-board sensor.

​What hardware will you need?

​You can find a complete listing of the hardware you will need for this course in the course hardware page.

In summary, you will need these components:

  • Any Raspberry Pi. We have tested this project with the Raspberry Pi 4, 3, 2, 1, as well as the Raspberry Pi Zero W.
  • An Arduino Uno or compatible for the remote wireless node.
  • ​2 x DHT22 sensors.
  • 2 x nRF24 transceivers.
  • ​Assorted breadboard-friendly momentary buttons, LEDs, and resistors​.
  • Two mini breadboards.

​Raspberry Pi Full Stack will teach you multiple skills that are essential in building non-trivial web and Internet of Things applications.

But beyond that, the application itself is a platform ​which you can extend in many varied ways. This project is just the start of what you can do with a Raspberry Pi and the software and hardware ​components that you will learn about.

For example, you can extend the Raspberry Pi Full Stack application to do things like:

  • Automate your home based on sensor readings from remote Arduino nodes and IFTTT. Use relays to control fans and lights, or electric locks to open/close doors.
  • Store environment data to Google Sheet that originate from multiple Arduino nodes. Analyze the data ​and optimize your home's heating and cooling plan.
  • Use Arduino nodes to measure soil moisture in ​a plant pot and alert you if it falls below a threshold.
  • Receive email or SMS alerts when ​arbitrary environment thresholds are met.
  • Build a home automation dashboard that gives you current and historical sensor data from multiple locations in your home.
  • Add your idea here: ___________________________________________

What some of our students say about Raspberry Pi Full Stack

​Instructor is very thorough and clear and also covers some peripheral material which is very beneficial in the learner. I am happy to see that he covers both OS and Windows processes with the same level of detail.

​Jeff Mitchell

​I like the speed and the technical level.

I have used a Raspberry Pi a little bit but this course goes in to a bit more depth but still at a beginner level. Perfect for me.

​LeRoy Rice

​What a thorough guide through the process.

This was by far one of the most well laid out courses I've followed on Udemy.

He provides more than enough details along the way to know how to troubleshoot your own mistakes.

Well done!

​Thomas Smith

​I have watched the course from end to end to see if this course meets my needs. This is the first and only course that I have found that covers this topic from beginning to end. I look forward to going through this course again at a much slower pace to bring my project to life. I really feel that I have a good chance to take my ideas and build something amazing after this course. I strongly recommend this course.

​John Copes

​Clear explanations and graphically awesome.

A complete and precise roadmap to the course.

​Bento Silva

​Fantastic course. I had basic Linux skills before entering this course and was able to follow along fine. Instructor goes into detail on what and why we are doing things, while still keeping the lesson moving. This class is a must for anyone wanting to learn about RPi and Linux.

​Shane Mattner

What is this course about and what to expect?

​Please watch this video to learn about the course curriculum and outcomes. Find out exactly what to expect so that you can plan your learning and make the most out of Raspberry Pi Full Stack.


Here's what you'll get for US$​25​ $​50:

  • ​Raspberry Pi Full Stack, at a super-low price
  • ​​1​10 video lectures organi​zed in ​18 sections
  • Downloadable Python scripts, HTML/CSS/Javascript code and Arduino sketches​
  • ​Simple to follow wiring schematics
  • Lifetime access
  • 15-day money back guarantee
  • Help Desk support, help is just a ticket away
  • Dedicated course discussion forum, because learning is social
  • ​Certificate of Completion.
  • ​Best of all: ​fanatical student support  from the Tech Explorations team
  • ​Content updated for the Raspberry Pi 4, Raspbian Buster, and Python 3.8.1

Curriculum - What's in this course? 

1 - Getting Started with the Raspberry Pi Full Stack
0010 - What is this course about
0030 - Parts you will need
0050 - How to get help
0060 - Code repository

2 - Get to know your Raspberry Pi​
​0110 - Raspberry Pi 3 specs and features
0111 - Raspberry Pi 4 specs
0120 - Raspberry Pi models
0130a - Raspberry Pi vs Arduino high level comparison
0130b - Raspberry Pi vs Arduino comparing the boards

3 - Setup the operating system​
0160 - Operating systems for the Raspberry Pi
0165 - Headless vs GUI
0170 - Download and Install Raspbian Lite using Etcher
0180 - How to enable SSH and configure Wifi in headless mode
0190a - Boot for the first time and basic configuration
0190b - Connect for the first time using Mac OS
0190c - Boot for the first time and connection using Windows
0210a - Working as the "root" user
0210b - How to enable the "root" user for logging on with SSH

4 - How to recover from a serious glitch by backing up and restoring your SD card
0220a - Backup an SD card (Mac OS)
0220b - Restore an SD card (Mac OS)
0220c - Backup an SD card (Windows)
0220d - Restore an SD card (Windows)

5 - Pins, GPIOs, and how to control them with Python​
0250 - The Raspberry Pi GPIO header and numbering system
0260a - A taste of Python on the Command Line Interpreter
0260b - A taste of Python on the Command Line Interpreter Functions
0270a - A taste of Python with a simple program
0280 - Wire a simple circuit
0290a - Install the Python installer program pip
0290b - Manipulate an LED using rpi.gpio
0300 - Read a button
0305 - Control an LED with a button
0310a - Install Git and the DHT library
0310b - Use the DHT22 sensor

6 - Setup the Web application Stack​
0340 - The Web Application Stack
0350 - The Python Virtual Environment
0360a - Set up system Python - preparation
0360b - Download, compile and install Python 3
0365 - Setup the app Python Virtual Environment
0430a - Setup Nginx
0430b - Setup Flask
0435 - A tour of a simple Flask app
0440a - UWSGI installation
0440b - Nginx configuration
0440c - UWSGI configuration
0440d - UWSGI and Nginx configuration testing
0450 - Configure ​Systemd to auto-start ​Uwsgi

7 - Styling with Skeleton​
0460a - Install SQlite3
0460b - Working with SQlite3
0470a - Static assets and the Skeleton boilerplate CSS
0470b - Setup the static assets directory
0470c - Introducing the Skeleton boilerplate CSS
0470d - Copying files using SFTP
0480 - Flask templates
0497 - Debugging a Flask app

8 - Getting started with our web application​
0500a - Introduction to the section - Getting started with our web application
0500b - Install the DHT library and the rpi-gpio module
0500c - Install the DHT library and the rpi-gpio module
0510 - Create a database to store sensor data
0520 - Sensor data capture script
0530 - Schedule sensor readings with ​Cron
0540a - Display database records in the browser - Python script
0540b - Display database records in the browser - Template

9 - Implement the date range selection feature​
0560a - Introduction - Implement the date-time range selection feature
0560b - Select range of records in SQLite
0570 - Set date-time range in URL and show records in browser
0580 - URL query string validation
0590 - Quick tidying up
0595 - Adding radio buttons for quick time-date range selection
0597 - Provision the Python script to work with the radio buttons

10 - Improving the user interface with Google Charts and date-time selector​
0610a - Introduction to Google Charts
0610b - Implementation of Google Charts
0610c - Testing Google Charts
0650a - Introduction to the date-time picker widget
0650b - Implement the date-time picker widget
0650c - Upload and test the date-time picker widget

11 - Dealing with time zones​
0665 - Adjust date-times to local time zone on the client side
0670a - Introduction to Arrow
0670b - Implement Arrow
0670c - Upload timezone changes and test
0680 - Link the two pages of the application

12 - Charting with Plotly​
0710a - Install Plotly
0710b - Try out Plotly on the command line
0720a - Implement Plotly support on the client side
0720b - How to debug JavaScript
0730a - Add Plotly support to the app script
0730b - Server side debugging example

13 - Publish on the Internet​
0810 - Setting a static IP address
0850 - Expose your app to the Internet with port forwarding

14 - Data-logging with Google Sheet​
1010 - Introduction to this section and Google Sheet
1020 - Setup Google API credentials
1030 - Setup the Python libraries and Google Sheet
1040 - Implementation of Google Sheet data-logging

15 - Setup a remote Arduino sensor node with the nRF24​
1100 - Introduction to the setup of an Arduino remote node
1110 - The Arduino node wiring (coming up)
1111 - The Arduino node sketch
1112 - Raspberry Pi and nRF24 wiring
1120 - The Raspberry Pi nRF24 receiver script
1123 - How to install the Python nRF24 modules on the Raspberry Pi
1125 - Test the nRF24 communications
1130 - Modify the front end of the application to show remote node data

16 - If This Than That alerts​
1140 - An introduction to If This Than That
1143 - Create an IFTTT web hook and applet
1145 - Add IFTT code in the application and testing
1170 - Install the node listener script as an ​Systemd service

17 - Secure your application with SSL​
1300 - Introduction to this section
1310 - Create a self-signed certificate for application
1320 - Edit Nginx configuration to use SSL
1330 - Test SSL in Firefox, Safari, Chrome

18 - Wrapping up​
1410 - Make lab_env_db page update every 10 minutes
0760 - Recap and what's next

The course instructor

The course instructor is Peter Dalmaris, PhD.

Peter has created over 20 other courses on technology education.

He is the author of Maker Education Revolution, a book on how making is changing the way we learn and teach.

He is the host of the Stemiverse and Tech Explorations podcasts, in which he discusses technology and education ​with engineers, educators, scientists and Makers from around the world.

Copyright 20​20, Tech Explorations - Privacy