-
PPD42NS (Dust Concentration)
-
BME280 (Humidity, Air Pressure, Temperature)
-
CCS811 (TVOC Value, CO2 Equivalent)
-
MAX31855PMB1# (Temperature)
-
SHT35 (Temperature, Humidity)
-
GUVA-S12D (UV)
-
TCS34725 Light Sensor (RGB, Color Temperature, Brightness, Reference Value)
-
MH-Z19C (CO2 Value Infrared Sensor, Temperature)
-
SPH (DB)
-
HP206C ()
Blender Case with PCB Render
|
Blender Base with PCB Render
|
Blender PCB Render
|
Full Top
|
Full Front
|
Sensor Station
|
Open PCB V1
|
Front View
|
Side View
|
.
├── Arduino-Code/ # The main folder for all microcontroller code.
│ ├── Main/ # Code for the primary Arduino prototype (likely ESP8266).
│ │ ├── lib/ # Libraries for this specific project.
│ │ └── Main.ino # The main program file for the Arduino.
│
├── Dokumentation/ # Images.
│
├── Files/ # Specific files relevant to hardware and measurements.
│ ├── Gehaeuse/ # 3D models and design files for the project's enclosure.
│ └── Platinen/ # Design files (Gerber files, etc.) for the printed circuit boards (PCBs).
│
└── Raspberry-Installer/ # Scripts and files for setting up the Raspberry Pi.
└── Docker/ # Docker configurations and source code for installing services on the Pi.
└── src/ # Source code used by the Docker containers.
┌── Raspberry Pi
│ └── Creates a Wi-Fi network
│
└── Arduino
├── Connects to the Wi-Fi network
│
├── Reads data from the sensor
│
└── Sends data over Wi-Fi to the API
│
└── API
├── Collects the sent data
│
├── Inserts the data into a local database (InfluxDB)
│
└── Inserts the data into a global database (InfluxDB)
{
"arduino_board": "<arduino_id>",
"sensors": [
{
"name": "<sensor_name>",
"sensor_model": "<sensor_model>",
"readings": [
{
"type": "<influx measurement>",
"value": VALUE,
"unit": "<unit>"
"label": "<label optional>"
},
{
"type": "<influx measurement>",
"value": VALUE,
"unit": "<unit>"
"label": "<label optional>"
}
]
},
{
"name": "bme280",
"sensor_model": "",
"readings": [
{
"type": "temperature",
"value": VALUE,
"unit": "celsius"
},
{
"type": "pressure",
"value": VALUE,
"unit": "hpa"
},
{
"type": "humidity",
"value": VALUE,
"unit": "%"
}
]
}
]
}
- Download:
git clone <url> luftqualitaet- Edit
WLAN_SSIDinluftqualitaet/Raspberry-Installer/config.sh
export replace=<Hostname>
sed -i -e 's/WLAN_SSID = Hostname/WLAN_SSID = ${replace}/g' luftqualitaet/Raspberry-Installer/config.sh- (Optional) Set Proxy Settings
luftqualitaet/Raspberry-Installer/Docker/.env
echo "http_proxy=http://webproxy:8080
https_proxy=http://webproxy:8080
no_proxy=influx,localhost" > /home/pi/luftqualitaet/Raspberry-Installer/Docker/.env- Login as Root
sudo -i- Change directory to Installer Location
cd /home/pi/luftqualitaet/Raspberry-Installer- Make Script executeable
chmod +x config.sh setup.sh- Set Current Time
HTTP_DATE=$(curl -x http://webproxy:8080 -ksI 'https://ptb.de' | grep -i '^date:' | sed 's/Date: //i' | sed 's/ (GMT)//')
if [ -n "$HTTP_DATE" ]; then date -s "$HTTP_DATE" && echo "Systemzeit erfolgreich gesetzt."; else echo "WARNUNG: Konnte die Zeit nicht über HTTP abrufen."; fi- Run Script
./setup.sh
- Change directory to Docker Location
cd /home/pi/luftqualitaet/Raspberry-Installer/Docker- Start Docker
docker compose up -d-
Setup Influxdb (http://hostname:8086) and Grafan (http://hostname:3000)
-
Set InfluxDB Token in Config ```/home/pi/Raspberry-Installer/Docker/src/config.yml````
-
Restart Docker
docker compose down
docker compose up -d- Restart Raspberry PI
systemctl reboot| Component | Order Link | Datasheet Link(s) | Further Information |
|---|---|---|---|
| Pi 4B | https://www.reichelt.de/das-reichelt-raspberry-pi-4-b-4-gb-all-in-bundle-rpi-4b-4gb-allin-p263086.html | ||
| Micro SD | https://www.reichelt.de/de/de/shop/produkt/microsdxc-speicherkarte_128gb_samsung_pro_plus-313955 | ||
| GPS | https://www.reichelt.de/de/de/shop/produkt/raspberry_pi_shield_-_multi-gnss_l76x-266060 | ||
| Raspberry Pi Shield | https://www.reichelt.de/de/de/shop/produkt/raspberry_pi_shield_-_display_lcd-touch_7_800x480_pixel-282508 |
-
BME280 Temperature, Air Pressure, Humidity Sensor:
- https://www.makershop.de/download/bst-bme280-ds002.pdf
- Do not place near heaters.
-
CCS811 Carbon Dioxide Gas Sensor Metal Oxide:
- https://www.makershop.de/download/CCS811_Datasheet-DS000459.pdf
- No special measures required.
-
TCS3472 Color Sensor:
- https://cdn.shopify.com/s/files/1/1509/1638/files/TCS3472_datasheet_1692bf77-3213-4bd2-9a66-8a9e70545e7e.pdf?v=1705651929
- The sensor should have access to light.
- Not next to an LED on the ESP microcontroller.
-
GRV Loudness Sensor:
- https://cdn-reichelt.de/documents/datenblatt/A300/101020063_01.pdf
- The sensor should have external access.
- Should be able to capture ambient sound.
- Do not place it behind a cover.
-
GRV Dust Sensor:
- https://cdn-reichelt.de/documents/datenblatt/A300/101020012_01.pdf
- The chip on the back gets hot occasionally.
- Has a built-in fan, so do not place it directly next to the GRV Loudness sensor.
- The enclosure must be sufficiently open to allow air to flow in for measurements.
- Ensure thermal, optical, and acoustic decoupling of the microcontroller from the sensors (use a partition).
- Leave space for 2-3 additional sensors (check sensor dimensions with a reference image).
- Leave space for 2 more ESPs (D1 Mini Lite), for a total of 3.








