Rasberry Pi device
Image credit: Alessandro Oliverio

f451 Labs RPI Projects

Overview

This project includes several applications that run various Raspbery Pi devices with different hardware attachments, sensors, and displays. The applications range from collecting sensor data and uploading to the cloud, to processing data and displaying dashboards on various displays, to hosting dev versions of websites, and more.

The basic idea behind grouping all these projects behind the f451 Labs label is straightforward: most applications are created for educational purposes, are relatively simple, and run on my home network. Most applications are designed around a specific hardware attachment or a set of sensors or displays.

My primary goal is to continuously learn as much as possible about programming for all these devices and the services that they connect to. As a secondary goal, I also want to share what I have learned so that others can use the code as a starting point for their projects.

I’ve already created several smaller modules I can use across most applications. These modules allow me to get custom applications off the ground, as core functions such as communicating with cloud services or setting up standard logging are already handled.

It’s also easier to update custom applications for a given device when I swap out particular hardware (e.g., displays, etc.) as I can load a different module (often) with the same methods for displaying content or collecting data from sensors.

And just FYI, I had 10 Raspberry Pi, 2 Raspberry Pi Pico, 2 PyPortal, and 2 Arduino devices running on my network at my last count 🤓

Languages and technologies

  • Python — used on Raspberry Pi 3 and 4 devices. Currently all modules support Python 3.9.x as some of the Raspberry Pi 3 devices still run Raspberry Pi OS (Legacy) (a.k.a Bullseye).
  • CircuitPython — used on PyPortal and Raspberry Pi Pico devices
  • C/C++ — Arduino Uno devices

NOTE: THe focus of this project is on modules and applications for Raspberry Pi devices.

Projects

Misc. hardware support

Misc. applications

  • f451 piBossSTILL IN DEV — Raspberry Pi 4B (rev 1.1) with Element14 7" touch screen used for showing various dashboards.
  • f451 piDEV — Raspberry Pi 4B (rev 1.4) with Argon Fan HAT used for hosting various applications. However, main duty is to host an Nginx web server (DEV) for static sites generated with Hugo CMS. Also using Ngrok to allow (temporary) access from outside as needed.
  • f451 piENVIRO — Raspberry Pi 3B (rev 1.2) with Pimoroni Enviro+ HAT. Runs the enviromon application and collects misc. (indoor) environmental data, uploads it to Adafruit IO, and displays graphs on the onboard 0.96" LCD.
  • f451 piF451 — Raspberry Pi 4B (rev 1.1) with Raspberry Pi Sense HAT. Runs the sysmon application and collects misc. (internet) speedtest data, uploads it to Adafruit IO, and displays graphs on the onboard 8x8 LED display.
  • f451 piRED — Raspberry Pi 3B (rev 1.2) with Raspberry Pi Sense HAT. Runs the sensemon application collects misc. environment data and displays graphs on the onboard 8x8 LED display.
  • f451 piGREENSTILL IN DEV — Raspberry Pi 3B (rev 1.1) with Waveshare 2.7" e-ink display used for showing misc. data on an onboard e-ink display dashboard.
  • f451 piSkyLabSTILL IN DEV — Raspberry Pi 4B (rev 1.4) with Adafruit BrainCraft HAT used for OpenCV and Tensorflow Lite