
Discover the Raspberry Pi full stack upgrade project, outlining learning objectives, hardware and software requirements, and course structure; upgrade a Raspberry Pi 02w with ESP32, BME280, HTC 12, and OLED.
Identify the hardware needed for the Raspberry Pi full stack upgrade project, including two beam 280 cents, HHC 12 transceiver modules, and a 0.96 inch display for compatible boards.
Explore the course’s GitHub repository with code, schematics, and prerequisites for the Raspberry Pi full stack upgrade project; copy-ready Python code and sample databases for reference.
Demonstrate the upgraded Raspberry Pi full stack app, featuring hardware upgrades, a C12 serial link, an oled display, and a refreshed browser dashboard with local plots.
Explore hardware options for upgrading the Raspberry Pi full stack application, with a focus on the affordable Raspberry Pi Zero 2 W as host and flexible remote-node hardware.
Install Raspberry Pi OS on an SD card with the Raspberry Pi Imager, using the 32-bit non-desktop image. Configure hostname, ssh, wifi, and UTC time before writing the image.
Boot and set up a fresh Raspberry Pi OS image, then enable SPI, I2C, and UART, expand the file system, and verify the Python version and interpreter.
Explore ESP32 remote node options for the Raspberry Pi full stack project, using the Arduino IDE and UART interfaces with UNO, MEGA, MKR, and Nano.
Learn to program the ESP32 as the remote node for the Raspberry Pi full stack upgrade using the Arduino IDE 2.0, install ESP32 support, and configure board and port.
Replace the DHT22 with the BME280 in the Raspberry Pi full stack upgrade project to gain higher precision, faster readings, barometric pressure data, lower power use, and reliable I2C/SPI interfaces.
Verify i2c is enabled in raspi-config, install i2c tools, wire bme280 to 3.3v, ground, sda (gpio2) and scl (gpio3) on the top header, then verify on bus one with i2cdetect.
Demonstrates wiring a BME280 sensor to a Raspberry Pi via I2C, installing the Python BME280 module from a GitHub source, and running examples to read temperature, pressure, and humidity.
Wire ESP32 to BME280 with 3.3V, ground, SDA on GPIO 21, SCL on GPIO 22; use breadboard, connect to a computer, and run readings with Arduino IDE.
Install the BME280 library in the Arduino IDE, run the ESP32 example sketch, and read temperature, humidity, and pressure via the serial monitor, preparing for Raspberry Pi integration.
Install and use the SSD1306 OLED display on your Raspberry Pi via I2C to show environment and status information, wiring it and exploring Adafruit SSD1306 and Python modules for text.
Shutdown Raspberry Pi before wiring, then connect SSD1306 OLED to Raspberry Pi via I2C, powered by 3.3V, with SDA on pin 3 and SCL on pin 5; confirm address 0x3C.
Install and configure python modules for the Raspberry Pi oled display, including libopen library, the ssd1306 driver, halo graphics, and pillow, via pip3, then run a hello world program.
Create a hello world program on Raspberry Pi using i2c and a monochrome display, clear the screen, render text with the default font, and run the script.
Install and use custom fonts and sizes on a Raspberry Pi OLED display. Load Arial in a Python script and draw text at 15 and 20 point sizes.
this lecture compares nrf24 and hc12 radio modules for raspberry pi full stack, showing hc12's plug-and-play serial interface, simple eight-command configuration, wide channel options, and price tradeoffs.
Wire HTC 12 module to ESP32 by supplying 5-volt power, ground, and a decoupling capacitor, then connect the receive pin to GPIO 14 and the transmit pin to GPIO 15.
Learn to test ESP32 based transmitter and receiver using software serial with HC 12 modules, wiring, and Arduino IDE sketches, ensuring millis values match across transmitter and receiver.
Wire the Raspberry Pi to the AC 12 module: 5V to pin 2, ground to pin 6, and RX/TX via GPIO 14 and 15 UART, to receive SB 32 data.
Set up the Raspberry Pi UART port for serial communication and run the agc12_receiver.py Python script to test communications between the P32 and the Raspberry Pi.
Establishes ESP32 to Raspberry Pi communication via the HC-12, using a Python receiver script and Nano to parse incoming data, convert it to numbers, and print results.
Configure the HC-12 module with AT commands, enter command mode by grounding the set pin, then tune channel, board rate, and transmission power via a Raspberry Pi setup.
Assemble and test the hardware for the course, starting with Raspberry Pi side using the AC12 and LED to display status, while the HP32 side holds environment sensor and display.
Map raspberry pi wiring by connecting the OLED display and BME280 sensor over I2C, UART to GPIO14/15, and 5V and 3.3V rails, with an LED and button for status.
This lecture demonstrates a Raspberry Pi wiring test, verifying the LED, button, OLED display, and HC-12 transceiver with Python scripts and GPIO event detection.
wire the ESP32 with a BME280 sensor via I2C at 3.3 volts and ground, and attach an HC-12 module to GPIO 14 and 13 with a polarized 47 µF capacitor.
Test the ESP32 wiring by validating the BME280 sensor and the AGC 12 transceiver, uploading sketches, and verifying serial data flow with the Raspberry Pi.
Restore the full stack Raspberry Pi application by following documented steps, install system modules, Python 3, the OS, and create a virtual environment for Engine X, Flask, UW.
Prepare the raspberry pi os by installing required system modules, libraries, and lib ssl dev, enabling secure python package installation and paving the way to compile python 3 next.
Download and compile the latest Python 3.9.15 for the Raspberry Pi, install it, and verify the interpreter to replace legacy Python 3.8.13 due to the NRF 24 transceiver constraints.
Set up a Python virtual environment for the Raspberry Pi full stack project, creating a lab app directory in the var directory, activating the environment, and confirming Python 3.9.15.
Install nginx on the Raspberry Pi after setting up the Python virtual environment, fix missing packages, and verify the web server by visiting the local address, then continue with Flask.
set up Flask on the Raspberry Pi full stack upgrade project by creating a virtual environment, installing Flask with pip, and testing a simple hello.py app at hostname-8080.
Install and verify uwsgi via pip, then configure nginx and uwsgi, enable systemd boot, and copy the latest app files to the lab directory to restore full stack functionality.
Configure Engine X on the Raspberry Pi to point to the four-stack application directory, create lab_app_engine_x.config, enable it via a symbolic link, and restart Engine X for WCI configuration.
Create the lab_app_uwsgi.ini file with nano, paste the content, verify no typos, and create the uwsgi logging directory to prevent startup errors.
Test nginx and uwsgi integration with a flask app on the Raspberry Pi by starting uwsgi with the config and verifying the hello world page loads.
Configure systemd to auto start the uwsgi service on boot, create and enable the service file, reboot the Raspberry Pi, and verify the flask app communicates with the Engine X server.
Copy the original Raspberry Pi full stack app to the new Raspberry Pi, using Cyberark or download the base lab files from the course GitHub, then prepare for upgrades.
Restore the full stack Raspberry Pi application by reconfiguring Engine X, uwsgi, and flask on new hardware, and back up the SD card.
Configure uWSGI to point to the Flask Lab App by editing uwsgi.ini and restarting the service. Run the app to reveal missing dependencies, including the Arrow Python module.
Install skylight three and set up the sqlite3 database on the Raspberry Pi, test with existing temperatures and humidities data, and plan to add a barometric pressure table.
Log into the Raspberry Pi, activate the Python virtual environment, and install required modules—Flask, Plotly 3.10, Twilio, and Google Cloud authentication—preparing credentials for the lab app.
Begin restoring the Raspberry Pi four-stack app by replacing the DHT22 code with BME280 Python modules, installing smbus2 and bme280 in the virtual environment, and validating humidity, temperature, and pressure.
Restore lab_app.py and fix the lab_temp route by replacing dht references with the bme280 sensor, update calibration parameters, and test on the dev server.
Fix the lab_env_db route by correcting the template's css import and replacing a script tag with a link tag, restoring widget functionality and data display from the database.
Restores the env_log.py script to support the BME280 sensor, replaces old sensor references, tests the implementation, and sets up a cron job to log temperature and humidity every 10 minutes.
Explore restoring real-time environmental data plotting with Plotly chart studio, using API keys and credentials to securely send database measurements from a Raspberry Pi, and verify charts and tables.
Restore Google Sheet logging to transfer Raspberry Pi environmental data to Google Sheets via the gspread API; update credentials and verify new records on a 10 minute schedule.
Upgrade the remote node by swapping rf24 for hc12 and wiring a GPIO 32 LED. Learn the ESP32 transmitter sketch, sensor readings temperature humidity pressure, and interrupt-driven transmission to the Raspberry Pi.
Set up the Raspberry Pi receiver script for hc12 remote node and install pyserial. Replace rf24 with hc12 and decode temperature, humidity, and pressure, logging to database and Google Sheet.
Troubleshoot and validate the if this then that integration by running the ESP32 receiver script, inserting print statements, and posting a JSON report to trigger temperature and humidity email alerts.
Execute a full test of the Raspberry Pi full stack upgrade, validating production mode, live monitoring with htop, and widgets and sensor checks, then set updates to 10 minutes.
Plan to upgrade the raspberry pi full stack by leveraging beam 280 hardware to display local barometric pressure and log historical data to database and Google Sheets.
Add barometric pressure support by creating a new database table Precious and updating the local logging script to store pressure in pascals, log values, and Google Sheet, with validation.
Update the remote node receiver script to capture barometric pressure, store it in the database, log to Google Sheets, and alert with pressure data.
Add barometric pressure to lab temp page by editing lab app dot Pi and lab temp html template, validating humidity, temperature, and pressure, then restarting the UW SGI service.
Show how to retrofit lab data to display temperature, humidity, and barometric pressure in a combined table and a dedicated pressure chart, with UTC-to-local time conversion.
Upgrade the Raspberry Pi full stack app from Plotly 3.10 to 5.11, enabling locally generated charts and offline dependencies using graph objects, and replacing old online dependencies for reliability.
Implement the Plotly upgrade in the lab app by replacing the plot function with graph objects, updating the html template, and validating through development testing before restarting the production server.
Plan the OLED display to cycle through local values, remote values, and SD card space. Create base LCD handler for two screens and set the service to start on boot.
wire and test the oled on raspberry pi, install ssd1306 driver and pillow in python venv, and implement right-to-oled flow driven by button and timer to display sensor data.
Install the schedule module and fix font and pin-numbering paths, then run the script to display node three and node one data on the OLED, with button and timer-triggered updates.
Show SD available space on the OLED display via a button press, add a third screen, and implement a Python get disk space function that converts bytes to gigabytes.
Configure a systemd service to auto-start the OLED display script on the Raspberry Pi, letting a button cycle three screens showing environment data and disk space.
Design a compact Raspberry Pi hat with a new PCB, using a two-by-nine header to fit HC-12 transceiver, BM 280, and OLED display footprint, with I2C and UART wiring.
Design a two-layer pcb for the ESP32 USB 3.2 setup, placing the environment sensor and HC-12 on the back and testing in a prototyping box, then place an order.
Welcome to Raspberry Pi Full Stack Upgrade Project!
In the original Raspberry Pi Full Stack course, you learned how to build an application that integrates microcomputers, microcontrollers, sensors, radio transceivers, web servers, a database, and Cloud services.
This course will teach you how to upgrade this application with new hardware and software.
The upgraded Full Stack application utilises the Raspberry Pi Zero 2 W single-board computer and the ESP32 microcontroller - although you can use any Raspberry Pi and Arduino-compatible board.
The two nodes communicate via a modern radio transceiver. They can sense their environment, show their status on an organic LED display and a web interface, log data on the Cloud, and trigger notifications when specific conditions arise.
By completing this course, you will gain and improve soft and hard knowledge and skills. You will become better at the analysis, design, and planning required when working on large projects.
And you will learn how to integrate sensors, displays, and local and Cloud communications using Raspberry Pi and ESP32 or Arduino boards.
This course will stretch your skills.
I designed it for intermediate-level Makers that, ideally, have completed the original Raspberry Pi Full Stack course.
Please review the free lectures in the first section to find out more details about the course.
I'm looking forward to seeing you on the course.