User Guide¶
This guide covers day-to-day operation of the gas monitoring system for lab members. For build and setup instructions see the assembly guide and firmware README.
Contents¶
- System Overview
- The Grafana Dashboard
- Individual Sensor Web Interface
- Time Synchronisation
- Calibration
- Downloading Data
- Troubleshooting
1. System Overview¶
The monitoring network has three tiers:
ESP32 sensor units Raspberry Pi hub Grafana Cloud
(one per chamber) ──► (GasMonitor WiFi) ──► (remote dashboard)
InfluxDB (local)
Windows/Linux laptop ──► (GasMonitor WiFi)
(Minir-5 + K30 1%)
Each ESP32 sensor unit:
- Measures CO₂ every 1–60 seconds (configurable)
- Optionally measures O₂ (combined units only)
- Displays live readings on a 1.47" touchscreen
- Logs data to an onboard SD card (monthly CSV files, indefinite retention)
- Hosts its own web interface at
192.168.4.1when you connect to its hotspot - Pushes data to the Raspberry Pi for central monitoring
The Raspberry Pi hub:
- Broadcasts the
GasMonitorWiFi network - Receives data from all sensors
- Forwards to Grafana Cloud (14-day retention)
- Provides automatic time sync to sensors on connection
The laptop (mixing bottle monitors only):
- Reads the Minir-5 (orange bottle, 1–5% CO₂) and K30 1% (clear bottle, ambient CO₂) via USB
- Pushes readings to the Pi via GasMonitor WiFi
- Displays the Grafana dashboard full-screen for room-level monitoring
2. The Grafana Dashboard¶
Accessing the dashboard¶
In the growth room: The laptop displays the dashboard full-screen at all times. No login required.
From your own device:
- Open the dashboard URL (ask the lab manager for the link)
- Must be on the university network, university WiFi, or VPN
As a home screen app (recommended):
Chrome (desktop or Android):
- Open the dashboard URL in Chrome
- Click the three-dot menu → Cast, save and share → Install as app
- Click Install — the dashboard appears as an app icon
Safari (iPhone / iPad):
- Open the dashboard URL in Safari
- Tap the Share button (square with arrow)
- Tap Add to Home Screen → Add
- Opens as a full-screen app without browser toolbars
What the dashboard shows¶
- All sensors displayed as separate panels
- Mixing bottle sensors (Minir-5 and K30 1%) at the top, colour-coded by bottle colour (orange and clear)
- Chamber sensors below
- Up to 14 days of history
- Adjustable time window using the time picker in the top-right corner of the Grafana page
Dashboard vs local interface¶
| Feature | Grafana dashboard | Local web interface (192.168.4.1) |
|---|---|---|
| All sensors at once | ✓ | One sensor only |
| Remote access | ✓ | Only when connected to sensor hotspot |
| History | 14 days | Up to 10,000 readings in browser; full history on SD card |
| Download CSV | — | ✓ |
| Calibration | — | ✓ |
| Settings | — | ✓ |
| Works without Pi | — | ✓ |
3. Individual Sensor Web Interface¶
Each sensor has its own web interface, accessible by connecting to its WiFi hotspot.
Connecting¶
- On your phone or laptop, open WiFi settings
- Connect to the sensor's network — the SSID is the device name (e.g.
Bournemouth,Chamber 4) - Open a browser and go to
192.168.4.1
Phone users: disable mobile data if the page doesn't load — your phone may be using mobile data instead of the sensor WiFi.
Reading view¶
The main page shows:
- Live CO₂ reading in ppm with a trend arrow (▴ rising / ▾ falling / · stable)
- Live O₂ reading in % with trend arrow (combined units only)
- Last calibration date and type
- A graph of recent readings for the configured window
Graph¶
The graph shows real timestamps (HH:MM) on the x-axis once the device has been time-synced. The time window is configurable in Settings. Tap the graph area on the device touchscreen to switch between CO₂ and O₂ graph pages (combined units).
Settings¶
Navigate to Settings in the web interface to change:
| Setting | Description |
|---|---|
| Graph window | Time period shown on device and web graph (1 min to 96 hours) |
| Read interval | How often the sensor takes a measurement (1s to 30 min) |
| Device name | Shown on screen and used as the sensor ID in Grafana |
| Location | Location tag in Grafana |
| WiFi SSID | The sensor's own hotspot network name |
| WiFi password | The sensor's own hotspot password |
WiFi changes require a device reboot to take effect. Make a note of any new credentials before saving.
Calibration log¶
The web interface shows the three most recent calibration events — type, date/time, and CO₂ reading at the time. A full log is stored on the SD card as cal_log.csv.
4. Time Synchronisation¶
The sensor hardware has no real-time clock. Time must be provided after each restart.
Automatic (Pi connected — normal operation)¶
When a sensor starts and connects to GasMonitor WiFi, the Pi automatically provides the current time. No user action required. A green dot appears on the device screen to confirm the Pi connection.
Manual (Pi unavailable)¶
If the Pi is offline or the sensor is being used away from the growth room, the sensor displays a splash screen:
To sync time:
- Connect to the sensor's own WiFi hotspot
- Open
192.168.4.1in a browser - Time syncs automatically from your device — the splash screen clears
Data during unsync period: Readings are still recorded to a
fallback.csvfile on the SD card. Once time is synced, this file is automatically backdated and merged into the correct monthly log. No data is lost.
5. Calibration¶
CO₂ sensor (K30) — when to calibrate¶
Calibrate the K30 if:
- Readings appear consistently offset from expected values
- The sensor has been stored for a long period
- As part of routine quality control
Calibration methods¶
0 ppm calibration (recommended)¶
The most reliable method. Expose the sensor to a gas containing 0 ppm CO₂ and calibrate to zero.
Suitable gas sources available in the growth room:
- Pure nitrogen (N₂)
- 21% O₂ / 79% N₂ (0 ppm CO₂) gas mix plumbed into the growth room
Procedure:
- Connect the sensor to N₂ or the zero gas mix
- Wait for the reading to stabilise — at least 2–3 minutes
- Connect to the sensor's web interface and click Calibrate → 0 ppm
- Confirm in the dialog
- Wait for calibration to complete (~10 seconds)
400 ppm calibration (use with caution)¶
⚠️ Warning — departmental compressed air line: The compressed air supply takes outdoor air through desiccation and delivers it at approximately 400 ppm CO₂ on average. However, outdoor CO₂ varies diurnally and with atmospheric conditions, and the compression/desiccation process can shift concentrations. The actual concentration at any given moment may be ±100 ppm from 400 ppm. Do not use this supply for 400 ppm calibration without first verifying the concentration independently.
Preferred method — outdoor calibration:
- Power the sensor from a USB battery pack or laptop
- Take the sensor outdoors, away from building exhausts and busy roads
- Allow 5 minutes for the reading to stabilise
- Connect to the sensor's web interface and click Calibrate → 400 ppm
- Confirm in the dialog
Confirming calibration¶
After any calibration, allow 2–3 minutes for the reading to fully stabilise, then verify against a known reference.
O₂ sensor (SEN0322) — combined units only¶
The O₂ sensor does not require calibration via the web interface. If recalibration is needed:
- Take the sensor outdoors to clean air (20.9% O₂)
- Hold the physical button on the back of the SEN0322 board until the reading stabilises at ~20.9%
Under normal laboratory conditions O₂ recalibration is rarely necessary. The sensor has a lifetime of approximately 2 years — readings drifting consistently low or becoming unstable indicate the cell needs replacement.
Mixing bottle analysers (Minir-5 and K30 1%) — experienced users only¶
These sensors are calibrated using dedicated Python GUI tools on the laptop. See the laptop bridge README for full instructions. The GasLab software is no longer used.
Important: Stop the relevant pusher script before running the calibration tool, and restart it afterwards.
6. Downloading Data¶
From the web interface¶
- Connect to the sensor's WiFi hotspot
- Open
192.168.4.1 - Scroll to Logs
- Click Download next to the month you want
- A CSV file will download to your device
CSV file format¶
datetime— UTC timestamp (ISO 8601)uptime_s— seconds since last device restartco2_ppm— CO₂ concentration in ppmo2_pct— O₂ percentage (combined units only)
Storage¶
Log files are stored indefinitely on the SD card. At a 5-second read interval the card has capacity for over 20 years of continuous data. Files are never automatically deleted.
7. Troubleshooting¶
| Symptom | Likely cause | Action |
|---|---|---|
| Splash screen asking to sync time | Pi unavailable at startup | Connect to sensor hotspot → open 192.168.4.1 |
| Sensor not in Grafana | Not connected to GasMonitor WiFi | Check green dot on device screen; check Pi is powered |
CO₂ disconnected on screen |
K30 not responding | Power-cycle the sensor; check K30 cable |
O₂ shows -- |
SEN0322 not detected at boot | Power-cycle; check VCC is on 5V not 3.3V |
| O₂ readings drifting low | Electrochemical cell near end of life | Replace SEN0322 (~2 year lifetime) |
| Web interface won't load at 192.168.4.1 | Not connected to sensor hotspot | Connect to sensor WiFi and disable mobile data |
| Settings not saved after reboot | SD card missing or not FAT32 | Check SD card is seated; reformat as FAT32 if needed |
| Missing months in CSV log | Device ran without time sync | Check SD card for fallback.csv — data may be there, backdated on next sync |
| Mixing bottle sensors absent from Grafana | Laptop powered off or scripts stopped | Check laptop is on and logged in; restart pusher scripts if closed |
| Readings offset after calibration | Calibration performed with unstable reading | Wait for full stabilisation (2–3 min) and recalibrate |
| 400 ppm calibration gives wrong result | Departmental air line CO₂ variation | Use outdoor calibration or N₂/zero gas instead |