
Follow a disciplined, minimal-effort update path for the Raspberry Pi full stack, upgrading Raspberry Pi OS and Python 3.8.13 compatible components via apt, testing cloud APIs, backups, and trackers.
Compare Raspberry Pi and Arduino, highlighting Raspberry Pi as a full computer with Linux, Wi-Fi, and 1 GHz CPU, versus Arduino's low-power microcontroller with limited RAM.
Compare the Raspberry Pi and Arduino hardware, highlighting size, connectors, GPIO usage, display and camera options, shield compatibility, breadboard connections, and safety considerations for handling static and damage.
Explore how the Raspberry Pi operating system enables hardware access, and compare desktop, newbies, and lite versions to build a minimal web application stack.
Download the raspbian lite image from Raspberry Pi dot org downloads, flash it to 16 gb sd card using a cross-platform app, and enable SSH and wifi for headless access.
Use windows tools to detect your raspberry pi's IP address with a scanner. Connect via SSH using putty, log in as pi with the default password raspberry.
Restore an SD card on Windows by flashing the backup image back onto the card with etcher, then verify the restore with boot and connection tests on the Raspberry Pi.
Demonstrates Python on the command line with Python 3, teaching basics like variables, strings, arithmetic, printing, and string operations on the Raspberry Pi full stack project.
Learn to write and run a Python program in Raspberry Pi's vim editor, including installing vim, switching modes, editing, saving, and executing scripts with command line arguments.
Learn to install Git on Raspberry Pi, clone the DHT Python library repository, configure global user details, and run the library setup with Python 3, addressing permission errors.
Learn to use the DHT22 sensor on a Raspberry Pi with Python 3, wiring to GPIO 17, reading temperature and humidity, and printing formatted results.
Set up the Raspberry Pi web app infrastructure by creating a /var/web directory, building a Python 3.6.4 virtual environment in the lab app folder, and activating it.
Install uWSGI within a Python virtual environment, verify the executable, and configure nginx (engine X) to forward Flask requests to uWSGI for serving the application.
Create a dedicated nginx configuration file for the flask app, replace the default, set port 80 and static file paths, configure the socket, link to sites-enabled, and restart nginx.
Test and configure a uWSGI and nginx setup for a Flask app on the Raspberry Pi, verify port 80 access, back up the setup, and enable automatic restart with systemd.
Install sqlite3 as part of the web application stack to store humidity and temperature data for a census, enabling retrieval, charts, and data uploads via a system-wide database.
Create a static assets directory for the lab's engine X web server, with subdirectories synapsis and images, and add a static file copied from the courses get help directory.
Explore the skeleton css boilerplate to quickly style a responsive website with columns, headings, buttons, and form patterns, and copy its two css files to a Raspberry Pi.
Learn to securely copy files to a Raspberry Pi using sftp GUI clients, connect via IP and root, and drag-and-drop to update directories with css and google fonts.
Install the DHT library and rpi-gpio module by cloning the GitHub repository, installing in a Python virtual environment, and running the example to verify the DHT sensor on GPIO 17.
Build a Raspberry Pi full stack app that reads humidity and temperature from a DHT sensor, serves data via a lab temp route, and uses template files for display.
Develop a Python script using sqlite3 to read humidity and temperature from a dht sensor on Raspberry Pi, log readings, record -999 when invalid, and schedule runs every 10 minutes.
Add a new route and template to display database records in the browser, showing temperatures and humidity readings in clean tables pulled from the database.
Learn to render database records in the browser using a template by looping over Python data, and enable client-side date range filtering with JavaScript.
tidy up the application by refactoring into a get_records function that returns temperatures, humidities, and from and to date strings for the template. prepare the app for maintainable growth.
Install and integrate a date time picker widget to select start and end date times for temperature and humidity data, using jquery ui with a two-field form.
Course last updated in August 2022
We 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.
What is this course about?
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!