We may earn an affiliate commission when you visit our partners.
Take this course
Dr. Peter Dalmaris

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?

Read more

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.

Enroll now

What's inside

Learning objectives

  • 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
  • Show more
  • Show less

Syllabus

Introduction
0010 - What is this course about
0030 - Parts you will need
0060 - Code repository
Read more

Important information relating to Plotly.

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Combines open hardware, a Linux OS, and open-source software, providing a versatile platform for IoT projects and a comprehensive learning experience
Integrates LEDs, buttons, and sensors with Javascript, HTML, web servers, and database servers, offering practical experience in full-stack web development for IoT applications
Requires some familiarity with computers, electronics, and a text editor, but prior knowledge of Python or Javascript is only beneficial and not strictly necessary
Uses the Raspberry Pi as a versatile tinkering platform, exposing learners to its capabilities in combining hardware, operating systems, and open-source development software
Employs jQuery to add interactivity to web pages, which may be useful for maintaining legacy projects, but is less relevant for modern web development
Updated to be fully compatible with Raspberry Pi OS version 11 ("Bullseye") and Python 3.8.13, ensuring relevance and compatibility with current software versions

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Hands-on raspberry pi full stack project

According to learners, this course provides a practical, project-based introduction to building a full-stack web application on a Raspberry Pi. Many highlight the value of the hands-on approach and the comprehensive coverage of technologies, including Linux, Python (Flask), web servers (Nginx, uWSGI), databases (SQLite), and frontend basics (HTML, JS, Plotly). While the project itself is seen as rewarding and a great way to combine hardware and software skills, some students encountered significant challenges during setup due to software version compatibility issues, even after the course update. Debugging can be difficult, and some feel certain topics lack sufficient depth, requiring outside research. Overall, it's considered a valuable course for gaining practical experience, particularly for those comfortable with troubleshooting.
Some topics are well-explained, others feel rushed or lack detail.
"While the breadth is good, some critical topics like database interactions or specific web server configurations felt a bit shallow."
"The instructor does a good job explaining the concepts for beginners in many areas, but more advanced or tricky parts could use deeper dives."
"I got the project working, but I feel I need more detailed explanations on topics like security and optimizing the application."
Covers a wide array of full-stack technologies on an embedded system.
"It's impressive how many technologies are covered: Flask, Nginx, uWSGI, SQLite, JavaScript libraries... It's a true full-stack intro on the Pi."
"Gives a broad overview of the entire stack needed for an IoT web application, from GPIO control to database and charting."
"The course integrates hardware (GPIO, sensors) with software and web development, which is exactly what I was looking for."
Building a real application provides valuable hands-on experience.
"The hands-on project approach is definitely the strongest point of the course. Building a real application helped solidify my understanding."
"I really enjoyed the practical nature of this course; actually setting up the hardware and software stack on the RPi was very rewarding."
"Learned a ton by actually building something from scratch. It's a great way to get practical experience combining hardware and web development."
Success often depends on the learner's ability to debug independently.
"This course requires a significant amount of patience and the willingness to debug problems on your own, especially when things don't work as shown."
"If you're not comfortable spending time troubleshooting Linux and Python environments, you might struggle significantly with this course."
"Be prepared to hit walls and spend time figuring out why something isn't working; it's part of the learning process but can be frustrating."
Many students face frustrating issues with initial setup and software versions.
"Spent hours troubleshooting setup problems. Despite the update, getting all the software versions to play nicely on the RPi OS was a major hurdle."
"The most frustrating part was the initial environment setup. Errors popped up constantly, and the provided guides didn't cover all the edge cases I encountered."
"Compatibility issues with libraries and the specific RPi OS version recommended made starting very difficult. Needed a lot of external research to fix."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Raspberry Pi Full Stack with these activities:
Review Basic Electronics Concepts
Reviewing basic electronics concepts will help you better understand the hardware components and circuits used in the Raspberry Pi projects.
Browse courses on Electronics Fundamentals
Show steps
  • Review Ohm's Law and Kirchhoff's Laws.
  • Identify common electronic components like resistors, capacitors, and LEDs.
  • Understand basic circuit diagrams and breadboarding techniques.
Brush Up on Python Fundamentals
Refreshing your Python skills will make it easier to follow the code examples and implement your own features in the web application.
Browse courses on Python Basics
Show steps
  • Review Python syntax, data types, and control flow.
  • Practice writing simple Python scripts to manipulate data.
  • Familiarize yourself with Python libraries like Flask and SQLite.
Read 'Raspberry Pi Cookbook'
Reading the Raspberry Pi Cookbook will provide practical examples and solutions for common tasks encountered in the course.
Show steps
  • Browse the table of contents to identify relevant recipes.
  • Read through the recipes related to web application development and sensor integration.
  • Experiment with the code examples provided in the book.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Build a Simple LED Control Web App
Building a simple web application to control an LED will solidify your understanding of the web application stack and GPIO control.
Show steps
  • Set up a basic Flask web server on the Raspberry Pi.
  • Write Python code to control an LED connected to a GPIO pin.
  • Create a web interface with buttons to turn the LED on and off.
  • Deploy the web application and test it from a web browser.
Document Your Project
Creating documentation for your Raspberry Pi project will help you solidify your understanding and share your knowledge with others.
Show steps
  • Describe the project's purpose and functionality.
  • Document the hardware setup, including wiring diagrams and component lists.
  • Explain the software implementation, including code snippets and configuration details.
  • Provide instructions on how to set up and run the project.
Contribute to a Raspberry Pi Project
Contributing to an open-source Raspberry Pi project will provide valuable experience in collaborative development and expose you to different coding styles and techniques.
Show steps
  • Find an open-source Raspberry Pi project on GitHub or GitLab.
  • Read the project's documentation and contribution guidelines.
  • Identify a bug or feature request that you can address.
  • Submit a pull request with your changes.
Read 'Programming the Raspberry Pi: Getting Started with Python'
Reading this book will help you deepen your understanding of Python programming on the Raspberry Pi.
Show steps
  • Read the chapters on GPIO programming and web development.
  • Experiment with the code examples provided in the book.
  • Try to apply the concepts learned to your own Raspberry Pi projects.

Career center

Learners who complete Raspberry Pi Full Stack will develop knowledge and skills that may be useful to these careers:
IoT Developer
An Internet of Things Developer designs, develops, and implements IoT solutions. This course provides relevant practical skills ideal for a career as an IoT Developer. It covers the entire process of building an IoT application using a Raspberry Pi, integrating various hardware components with software. The course work with wireless and wired networking, sensors and the Linux operating system using Python. It also explores web-based technologies, such as Javascript and HTML, which are critical for user interfaces and data visualization. Students will work with databases and explore the use of the Google Charts API for data analysis, all of which are relevant to IoT development. This course shows how to make these technologies work in harmony using the Raspberry Pi.
Embedded Systems Engineer
An Embedded Systems Engineer develops and maintains software and hardware for systems that are not traditional computers, such as those found in the Internet of Things. This course helps build a strong foundation for this career path by teaching the full process of developing a web application using a Raspberry Pi, which is a popular platform for embedded systems. The hands-on experience with integrating hardware like LEDs, buttons, and sensors with web technologies like Javascript, HTML, web servers, database servers, and schedulers, makes it highly relevant. The course also explores working with the Linux operating system, which is common in embedded systems, and using Python for programming embedded devices. This course provides direct experience setting up and configuring systemd to automatically start the application, this is crucial for embedded systems that must operate autonomously.
Full-Stack Developer
A Full Stack Developer works on both the front-end and back-end of web applications. This course provides experience in the full stack, using a Raspberry Pi to explore the technologies of web application development. This includes setting up web servers, configuring databases, and handling user interfaces. Working with Javascript, HTML and Python in this course helps build a foundation in core web technologies. Using the Flask framework and deploying applications using uWSGI and Nginx, helps build the needed skills. Also, learning to use the Google Charts API and Plotly for data visualization are useful skills for a Full Stack Developer. The course directly addresses the full stack of a web application, providing practical experience.
Web Application Developer
A Web Application Developer builds and maintains web-based software applications. This course helps prepare one for a career as a Web Application Developer through its practical approach to web application development using a Raspberry Pi. The course covers the full application development lifecycle, including setting up web servers with Nginx, creating application servers using uWSGI, and using Python and Flask to connect the back-end to the front-end. It also emphasizes front-end technologies, such as HTML and Javascript, and database interaction using SQLite. Learning to deploy web applications and use systemd for automatic start-up are useful skills for any web application developer.
Software Developer
A Software Developer designs, develops and tests software applications. This course offers a practical and hands-on approach to software development, using a Raspberry Pi to create web applications. This course covers several aspects of software development, such as operating system setup, programming with Python, database management and web server configuration. Students will gain experience with integrating hardware and software, which is a valuable skill. This includes connecting sensors and actuators, which may not be common knowledge for many software developers. This course helps an aspiring software developer learn how to create a full stack web application, from the hardware up to an end user interface.
Linux System Administrator
A Linux System Administrator maintains and manages computer systems that use the Linux operating system. This course provides you direct experience working with the Linux operating system on a Raspberry Pi, specifically Raspbian Lite. It teaches you how to set up a system in a headless mode, use SSH for remote access, configure networking and manage system services using systemd. It also covers the use of Python virtual environments, which are critical for managing software dependencies in a Linux environment. The course teaches how to troubleshoot issues, and back up and restore the system, which are all essential skills for a Linux system administrator. The course gives experience using a command line interface, which is key to linux administration.
Automation Engineer
An Automation Engineer designs and implements automated systems and processes, often utilizing embedded systems. This course may be useful to someone interested in a career as an Automation Engineer because it showcases how to automate data collection and processing using a Raspberry Pi. The hands-on experience with setting up the system, integrating sensors, and using scheduling tools like cron, helps build automated data collection and manipulation skills. The course work includes setting up a web application stack, which would be useful for monitoring and controlling automation processes. The course directly integrates hardware and software in an automated fashion, which is a core component of Automation Engineering.
Hardware Engineer
A Hardware Engineer designs, develops and tests computer hardware, including circuit boards. This course may be useful for those interested in a career as a Hardware Engineer, particularly those interested in embedded systems. The course integrates hardware components like LEDs, buttons and sensors with software on a Raspberry Pi. It explores the usage of GPIOs and how these are used to interact with hardware components. The course also exposes the student to the Linux operating system, as well as the use of a Python, a high-level programming language. This course is only a first step towards the career of Hardware Engineer, but it shows the basics of linking software and hardware.
Data Visualization Specialist
A Data Visualization Specialist transforms data into understandable graphical representations. This course may be useful to anyone interested in the role of a Data Visualization Specialist as it covers the generation of data through sensors and then visualizes it using web based technologies. The course has hands-on experience using the Google Charts API and Plotly to create visual representations of sensor data. The course specifically shows how to collect data, store it in a database, and then display that to the web via charts or other data visualizations. This course may help you gain experience with web-based visualization software, which is an important skill for this role.
Robotics Technician
A Robotics Technician builds, tests, and maintains robots and robotic systems. This course may be useful to those who want to become a Robotics Technician, as it has direct experience controlling hardware from software. The course has a hands on approach to integrating sensors and actuators, as well as controlling these with software via GPIO pins. It also covers the Linux operating system and how it can be used to control hardware, which is often the case in robotics. This course may be useful in gaining the experience needed to integrate both hardware and software for a robotic system.
Database Administrator
A Database Administrator manages and maintains databases, ensuring data integrity and accessibility. This course may be helpful for a Database Administrator since the course includes working with SQLite, a popular database system. The course covers basic database operations, such as setting up a database, recording data and extracting data, all of which are essential components of a database administrator's job. However, the course doesn't go in depth into the more advanced topics of database administration, but it can help someone learn the basics of setting up and managing a database.
Technical Support Specialist
A Technical Support Specialist provides assistance to users of computer systems or software. This course may be useful for those interested in the role of Technical Support Specialist by providing a hands-on experience with setting up and troubleshooting a computer system like the Raspberry Pi. This course covers system configuration, installing software, networking and solving common software and hardware issues. The course also helps one gain a strong understanding of the Linux operating system, which is often used in technical settings. The troubleshooting skills learned during this course can be helpful in becoming a technical support specialist.
Quality Assurance Analyst
A Quality Assurance Analyst tests software and systems to ensure they meet quality standards. This course may be useful for someone interested in a role as a Quality Assurance Analyst role by providing exposure to the full stack of software development and deployment. The course goes over the process of setting up a web application stack, configuring servers, and developing a user interface. The course focuses on the process of deploying and building web applications, as well as troubleshooting common errors, which can be helpful in the field of Quality Assurance.
Network Administrator
A Network Administrator manages and maintains computer networks, ensuring they are functioning well and are secure. This course may be useful for a Network Administrator by providing experience in setting up a Raspberry Pi on a network and giving it a static IP address. The course contains experience with networking as it emphasizes setting up wireless and wired networking on a Linux-based system. The course also goes over connecting to a linux machine remotely using SSH, this is a very helpful networking tool. However, the course doesn't go very deep into network configurations and protocols, limiting its usefulness to a Network Administrator.
Computer Science Teacher
A Computer Science Teacher educates students on computer science topics. This course may be useful for someone who wants to become a Computer Science Teacher, by giving a broad, hands-on overview of computer systems. The course directly integrates hardware and software, and it has aspects of operating systems, computer networking, and web technologies. It may be useful as a demonstration or project in a classroom. The material covered in the course has a broad scope, and it may be a good introduction to concepts in computer science. However, a Computer Science Teacher typically needs to have much more experience with a wider variety of topics.

Reading list

We've selected one books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Raspberry Pi Full Stack.
Provides a collection of practical recipes for using the Raspberry Pi in various projects. It covers a wide range of topics, including hardware interfacing, software development, and web application development. It serves as a useful reference for solving common problems and exploring new possibilities with the Raspberry Pi. This book is commonly used by hobbyists and makers.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser