Skip to main content
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.