Environmental sensor display
Posted on Sat 05 November 2022 in electronics
Overview
This is a Raspberry Pi in a SmartiPi case with an official Raspberry Pi touchscreen. It makes a good simple display! People like looking at it change.
Inside the case there are temperature, humidity, CO2, voltatile organic compounds, and particulate sensors. They're fairly safe in there and have a fan to feed them fresh air. The more sensors you add, the more variety the dashboard has.
What it looks like
Measuring soldering fumes
Hardware
- Sensors (the good stuff)
- Computer stuff
- Raspberry Pi 4
- Official Raspberry Pi touchscreen
- Smartipi Pro case, which fits the the screen, Pi and all the sensors
Neat stuff
I have the code on GitHub.
Systemd user services
I followed this guide. These services will run the code when the user logs in, so you can have your data logging scripts going right away.
(Services in Linux are like those hundreds on programs you see running in the background in the Windows Task Manager. They're background processes.)
I think that when I upgrade to actual system services (not user-dependant), I'll have a really powerful solution. Shutdown or reboot the computer and everyhting starts up again. It's also possible to have the services restart themselves automatically if they crash or need to restart for whatever reason.
Efficiently reading files
Python reading a file in binary mode can skip to the end of it. So with a CSV you don't need to read the whole thing. This Stack Overflow post shows how.
with open(filename, "rb") as file:
# Go to the end of the file before the last break-line
file.seek(-2, os.SEEK_END)
# Keep reading backward until you find the next break-line
while file.read(1) != b'\n':
file.seek(-2, os.SEEK_CUR)
data = file.readline().decode()
data = data.replace("\n", "").split(",")