J Williams
Page
Sensor backdrop

Sensors & Technology

Each HalesAir unit is built around a Raspberry Pi Pico W paired with a Waveshare BME680 environmental sensor — from hardware to data pipeline.

System Architecture

Circuit backdrop
// HalesAir unit data flow
BME680
──I2C──▶
Pico W
──Wi-Fi──▶
HTTP POST
──▶
Server / DB
──▶
Dashboard
Each Pico W reads the BME680 over I2C and POSTs readings to a central server via Wi-Fi. Sampling interval configurable (typically every 5–15 minutes).
Lab backdrop

Hardware Components

Each monitoring unit is built from these components.

Hardware backdrop

Raspberry Pi Pico W

Microcontroller

The Pico W is a compact, low-power microcontroller built around the RP2040 chip. Its built-in 2.4GHz Wi-Fi allows each unit to transmit sensor readings directly to a central server without any additional networking hardware. Programmed in MicroPython, it reads the BME680 via I2C and pushes data over Wi-Fi at regular intervals.

  • Dual-core ARM Cortex-M0+ @ up to 133MHz
  • 264KB SRAM · 2MB flash
  • 2.4GHz 802.11n Wi-Fi (CYW43439)
  • MicroPython support
  • 26 multi-function GPIO pins
  • I2C, SPI, UART interfaces
Hardware backdrop

Waveshare BME680

Environmental sensor

A compact 4-in-1 environmental sensor capturing temperature, humidity, barometric pressure, and VOC gas in a single 27×20mm board. The onboard voltage translator makes it compatible with the Pico W's 3.3V GPIO. Connected via I2C, it provides accurate, calibrated readings suitable for long-term outdoor air quality monitoring.

  • Temperature: −40 to 85°C · ±1.0°C (0–65°C)
  • Humidity: 0–100%RH · ±3%RH
  • Pressure: 300–1100 hPa · ±0.6 hPa
  • VOC gas: IAQ index via Bosch BSEC library
  • I2C interface (address configurable)
  • 27 × 20mm · 3.3V/5V compatible
Hardware backdrop

GeeekPi Pico W IoT Starter Kit

Development & learning kit

Used during the build and programming phase, this kit provides breadboards, a UPS module, OLED display, DHT11 sensor, servo, relay, and various electronic components. Students use it to develop and test their MicroPython code before deploying to the final sensor units.

  • Raspberry Pi Pico WH (pre-soldered headers)
  • 400-pin breadboard with metal plate
  • Pico UPS module (18650 battery support)
  • OLED display + I2C 1602 LCD
  • DHT11 temperature & humidity sensor
  • 18 tutorial demo projects included
Hardware backdrop

Weatherproof Enclosures

Housing & protection

Enclosures protect the hardware from the elements during outdoor deployment. Ventilation design is critical — the housing must allow airflow to reach the BME680 sensor while preventing water ingress and direct sunlight heating that would skew temperature readings.

  • Outdoor-rated (weatherproof)
  • Sensor ventilation inlet
  • Cable entry for power supply
  • Wall or post mounting
Hardware backdrop

Power Supplies

Power delivery

Each Pico W unit requires a stable 5V supply via its micro-USB port. Deployment sites are selected partly on the availability of mains power. The Pico W's low power consumption makes it well-suited to continuous, always-on operation.

  • Micro-USB, 5V input
  • Low power draw (~100–150mA typical)
  • Mains-powered deployment sites
  • Surge protection recommended

Software Stack

MicroPython on the Pico W handles all on-device data collection and transmission.

MicroPython
Firmware & data collection scripts
Bosch BSEC library
BME680 IAQ / gas processing
Wi-Fi / HTTP
Data transmission from Pico W
CSV / JSON
Data format for upload & storage
Python (server-side)
Data ingestion and processing
Dashboard (TBD)
Data visualisation for stakeholders

What We Measure

The BME680 provides four environmental parameters in one compact sensor.

Temperature

Range
−40 to 85°C
Accuracy
±1.0°C (0–65°C)

Sensor placement inside enclosure requires radiation shielding to avoid self-heating bias.

Relative Humidity

Range
0–100%RH
Accuracy
±3%RH

Affected by temperature; both readings are captured simultaneously for accurate correlation.

Barometric Pressure

Range
300–1100 hPa
Accuracy
±0.6 hPa (0–65°C)

Useful for cross-referencing readings and identifying weather-related air quality events.

VOC Gas / IAQ

Range
IAQ index 0–500
Accuracy
Qualitative (relative)

Gas resistance used to estimate indoor air quality (VOC presence). Best interpreted as a relative index, not an absolute VOC concentration.

Understanding the IAQ Index

The Bosch IAQ index goes from 0 (pristine) to 500 (hazardous). Drag the slider to explore what different values mean.

150 Lightly Polluted
0–50 Excellent 51–100 Good 101–150 Light 151–200 Moderate 201+ Poor
0 — Excellent 500 — Hazardous

Note: the BME680 IAQ is a relative index — useful for detecting trends and comparing sites, not absolute pollutant concentrations.

Exterior backdrop

Deployment Note

Site selection is a key student task. Locations are chosen to represent a range of environments — residential streets, near main roads, parks, and town centre — to capture meaningful spatial variation. All deployments require landowner permission and consideration of power access, Wi-Fi availability, physical security, and sensor ventilation within the enclosure.

Royal Society Partnership Grant

Funding & Partnership

HalesAir is supported by a Royal Society Partnership Grant awarded to Halesowen College.

The project is delivered by students on the Digital T Level (Data Analytics) programme at Halesowen College, with support from Dr James Williams (Research Fellow, University of Nottingham) acting as the project's STEM Partner.

Dr Williams contributes to the project in a personal voluntary capacity as part of the Royal Society STEM Partner scheme.

Students will gain experience in embedded systems, environmental sensing, data engineering, and data visualisation.