This project is a PocketBeagle-powered air quality monitor that reads real-time temperature, pressure, and PM2.5 data, and displays it on a compact OLED screen. Itβs designed to boot automatically when powered, requiring no buttons, logins, or user intervention. It acts as a plug-and-play environmental dashboard.
π€ Why did I make it?With rising air pollution in cities like Delhi, India, affordable DIY air quality monitors are essential. This project aims to provide an open-source, low-cost solution for measuring air quality in real-time.
I wanted to build a self-contained embedded system that mimics a real-world product that could be used in homes, labs, or classrooms to instantly show environmental data on power-up.
Key goals were:
- Use only IΒ²C-based components
- Write all logic in Python
- Make it autoboot reliably using systemd
- Fit everything on a single breadboard powered by USB
- Deploy it as a consumer-facing device (no command line!)
This project was also part of my university course assignment - it was the perfect challenge to combine hardware, software, and user experience design.
βοΈ How does it work?- A BMP280 sensor captures temperature and barometric pressure
- A PMSA003I sensor measures PM2.5 concentration in the air
- An SSD1306 128x32 OLED shows the results
- The whole system runs on a PocketBeagle, a tiny Linux computer
- When powered, the system auto-runs a Python script using systemd
- The OLED shows "Starting...", then displays real sensor readings
The PocketBeagle is powered via USB, but could easily be powered by a battery pack to make this a portable sensor station.
ποΈ Build InstructionsπΈ Step 1: Breadboard AssemblyAll sensors use IΒ²C1:
- Flash Debian onto the PocketBeagle if needed
- SSH into PocketBeagle
- Clone your GitHub project:
bash
git clone https://github.com/YOUR_USERNAME/project_01.git
cd project_01
- Install requirements
bash
CopyEdit
python3.11 -m pip install -r requirements.txt
βοΈ Step 4: Enable Autobootbash
CopyEdit
sudo cp display_readings.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable display_readings.service
sudo systemctl start display_readings.service
OLED should now display "Starting..."
followed by readings (or remain blank if PM2.5 = 0).
- Power on the PocketBeagle using USB
- OLED will show:
Starting...
- After 5 seconds, if PM2.5 is non-zero
24.9 C
1014.8 hPa
PM2.5: 6 - If PM2.5 = 0, the screen remains blank
https://drive.google.com/file/d/1_cilT0PCqG_cwNbC9SbayeKhWl5p9YLm/view?usp=sharing
π GitHub Linkhttps://github.com/arjunkannan131/EDES301/tree/main/project_01
Comments