An open-sourced remote air quality sensing device made by OPEnS Lab OSU. The device logs air quality index parameters to the MongoDB database.
Project leads: Soren Emmons - emmonsso@oregonstate.edu, Douglas Crocker - crockerd@oregonstate.edu
Figure 1: Deployed Wisp unit in Napa Valley
Wisp is an open-source air quality monitoring system, a low-cost hardware and software suite that enables near real-time access to in-situ environmental sensor data (including particulate matter 1.0|2.5|4.0|10.0, volatile organic compounds, nitrogen oxides, temperature, and relative humidity) anywhere with a WiFi internet or cellular connection. Scientists, educators, and artists alike can use this tool to obtain and interact with environmental data in new and innovative ways, as well as collaborate remotely. Transforming data collection processes of environmental sensors into Internet of Things (IoT) compatible formats opens new doors into accessing, understanding, and interacting with natural phenomena. Wisp not only enables users to observe data online, but can also transform data into auditory signals and soundscapes through sonification processes or creative animations using newly-created computer applications.
| Specification | Sensor | Resolution | Accuracy | Full Range | |||
|---|---|---|---|---|---|---|---|
| Value | Metric | Value | Metric | Value | Metric | ||
| Senses Ambient Temperature | SHT31 | 0.01 | ℃ | ±0.3 | ℃ | -40 - 125 | ℃ |
| Senses Humidity | SHT31 | 0.015 | %RH | ±3 | %RH | 0 - 100 | %RH |
| Particulate Matter 1.0 | SEN55 | ±5 | ug/m^3 | ±5 | ug/m^3 | 0 - 1000 | ug/m^3 |
| Particulate Matter 2.5 | SEN55 | ±5 | ug/m^3 | ±5 | ug/m^3 | 0 - 1000 | ug/m^3 |
| Particulate Matter 4 | SEN55 | ±25 | ug/m^3 | ±25 | ug/m^3 | 0 - 1000 | ug/m^3 |
| Particulate Matter 10 | SEN55 | ±25 | ug/m^3 | ±25 | ug/m^3 | 0 - 1000 | ug/m^3 |
| Volatile Organic Compounds | SEN55 | ±5 | VOC index points | ±5 | VOC index points | 1 - 500 | VOC index points |
| Nitrogen Oxides Index | SEN55 | ±10 | NOx index points | ±10 | NOx index points | 1 - 500 | NOx index points |
| 5 Watt Solar Panel | |||||||
| Data Collection Frequency | 5 | Minutes | |||||
| Battery life (Up to 3 10050 mAh batteries) | 25 | Days | |||||
| Project Cost | <800 | $ | |||||
| Logs Data to SD | Time | date/hour/min | |||||
| SD and USB are easily accessible |
Each Wisp can measure Particulate Matter 10.0|4.0|2.5|1.0, Volatile Organic Compounds(VOC), and nitrogen Oxides(NOx) (SEN55); and air temperature and humidity (SHT31/SHT30), and log data at user-defined intervals to the cloud database: MongoDB. Beyond the sensors used in this paper, the Wisp is capable of using a variety of analog, digital, I2C, SDI-12, and other serial sensors via footprints on the Printed Circuit Board (PCB) detailed in the sections below. While many other sensors, like rainfall, air quality, and wind direction, could have been chosen, we selected the current combination of sensors to fulfill a demand that existed within a local agricultural research lab. The Wisp can operate for up to a month on a battery capacity of 3 10050 mAh batteries with a logging period of every five minutes. The logging period is arbitrary and can be adjusted to accommodate any power requirements. The total operation duration of the system can be lengthened significantly with the addition of a solar panel and better power management, which is recommended in areas with lack of access to a dedicated power source.
The integration of particulate matter data into a centralized cloud database by the Wisp unit enables the aggregation and analysis of air quality data on a broader scale. By centralizing this data, researchers can more effectively identify trends and patterns in air quality over time. This approach not only facilitates the detection of emerging environmental trends but also enhances the understanding of the impact of various factors on air quality.
The Wisp device produced at the OPEnS Lab aims to collect environmental data. Data is streamed in real time via a local server to MongoDB, an online database. Computer applications can subscribe to these data stream feeds, and data analysis can be conducted based on the data sent by Wisp units.
Version 1
The Pelican case has three holes drilled on the side to accommodate the PG7 cable glands and waterproof cable set. This allows for the SHT31 and SEN55 sensor to be swapped out easily. Inside the case, a custom 3D printed base plate holds the Featherwing doubler, LTE cellular board, and batteries securely in place. A Feather M0 WiFi and Hypnos v3.3 board is used to store data collected by a particulate matter sensor (SEN55) and temperature & humidity sensor (SHT31). The v3.3 Hypnos board turns peripherals on and off to preserve power, wakes up at intervals using the embedded DS3231 RTC, transmits data via cellular LTE, and stores data onboard a microSD card. In order to enable 4G capabilities, the use of components such as the SARA-R4 4G board for 4G cellular connectivity, a solar charger, and a 5 Watt solar panel is implemented.
Figure 2: Wisp v1 PCB with footprints for analog, digital, I2C, and other serial sensors
Other I2C sensors may also be connected as long as there is relevant code to handle requesting data on the Feather M0.
Figure 3: Fully built Wisp device
Figure 4: Block diagram of Wisp electronics
The most relevant features of the electronics system are the following:
- Measures Particulate Matter 1.0/2.5/5.0/10.0, volatile organic compounds, and nitrogen oxides
- Measures air temperature and humidity
- Saves data to SD
- Onboard RTC and power switching relays for power savings
- Cellular LTE access to upload data to the MongoDB server
- WiFi access to upload data to MongoDB server
The Wisp device draws approximately 20mA when initializing and 117mA during sensor polling. During transmission, the Wisp draws 305mA peak current. It sleeps for 5 minutes between data cycles, draws a nominal 5 mA, and peaks at 30 mA using just the battery. A Wisp can operate for approximately one month, transmitting every 6 hours using 5-minute sleep intervals.
Each sample cycle is triggered by RTC alarm to wake from a low-power sleep mode, the Feather M0 requests data from each of the sensors with the Loom Measure code and formats the data according to each logging platform: comma separated for local storage on microSD and JSON for telemetry. After all sensor information has been collected and formatted, the Feather will initiate a message over 4G to a remote MQTT (Message Queueing Telemetry Transport) broker which is being run on an OSU server.
Figure 5: Data-flow handling chart
MQTT brokers work by utilizing a publish/subscribe paradigm, this paradigm works on the basis that there are “topics” that are public to everyone viewing the broker. Users can subscribe to topics which allows them to receive a callback when new data is published to the topic. For Wisp, all data messages are sent over a topic, the topic is formatted with the “Site Name”/”Device Name” + “Device Number” to distinguish between the devices and their locations and determine the destination, i.e. collection, in the MongoDB database. Assigning a two part topic to each message allows multiple devices, even with the same name, to publish to different collections of data.
Increasing wildfire frequency and intensity across California, Oregon, and Washington pose a significant threat to the wine industry through the phenomenon of smoke taint, where volatile phenols from smoke are absorbed by grapes, negatively impacting wine quality. So for the past two years, Wisp has been deployed across the West Coast in order to collect data on smoke particulates in vineyards. Over this past year, OPEnS has handled 43 Wisp deployments at vineyards where their data is currently being used by UC Davis, OSU, and WSU.
Figure 6: PM 2.5 graph from 6/25/25 - 9/3/25 in Washington
Figure 7: VOC index graph from 6/25/25 - 9/3/25 in Washington
Figure 8: CSV File output from Wisp unit
The Wisp V2 is an expansion on the Wisp, significantly expanding the device's compatibility to include the full line of DFRobot gas sensors SEN0465 to SEN0476 and the T6793-5k CO2 sensor. To support this wider array of peripherals, the V2 PCB integrates a new I2C multiplexer, which enhances signal stability and allows users to mix and match sensors for specific research needs. These electronics are housed in a redesigned, fully 3D-printed waterproof enclosure that features improved accessibility for the SD card and expanded capacity for up to five 10050mAh LiPo batteries. Currently in the prototype testing phase, the Wisp V2 provides a robust, customizable platform for long-term field studies and is slated for deployment in May 2026.
Figure 9: 3D Renders of the Wisp V2
Figure 10: Wisp V2 PCB
The Wisp V2 is designed as a highly modular sensing platform capable of measuring a customizable array of environmental parameters. Beyond standard Particulate Matter (1.0–10.0), VOC, and NOx readings, the V2 architecture integrates an I2C multiplexer to support the full line of DFRobot gas sensors (including CO, O3, SO2, and H2S) and the T6793-5k CO2 sensor as well as any other I2C sensors with Loom integration. This allows researchers to swap sensor modules dynamically to suit specific deployment environments without redesigning the hardware. To support these expanded capabilities in remote locations, the device is housed in a custom waterproof enclosure designed to accommodate up to five 10050 mAh batteries, significantly extending operational runtime compared to the V1. By retaining the ability to stream data to MongoDB while increasing sensor flexibility.
| Specification | Sensor | Resolution | Accuracy | Full Range |
|---|---|---|---|---|
| Ambient Temperature | SHT31 | 0.01 ℃ | ±0.3 ℃ | -40 to 125 ℃ |
| Humidity | SHT31 | 0.015 %RH | ±3 %RH | 0 to 100 %RH |
| Particulate Matter 1.0 | SEN55 | ±5 µg/m³ | ±5 µg/m³ | 0 to 1000 µg/m³ |
| Particulate Matter 2.5 | SEN55 | ±5 µg/m³ | ±5 µg/m³ | 0 to 1000 µg/m³ |
| Particulate Matter 4.0 | SEN55 | ±25 µg/m³ | ±25 µg/m³ | 0 to 1000 µg/m³ |
| Particulate Matter 10 | SEN55 | ±25 µg/m³ | ±25 µg/m³ | 0 to 1000 µg/m³ |
| Volatile Organic Compounds | SEN55 | ±5 Index | ±5 Index | 1 to 500 Index |
| Nitrogen Oxides Index | SEN55 | ±10 Index | ±10 Index | 1 to 500 Index |
| Sulfur Dioxide (SO2) | SEN0470 | 0.1 ppm | ±10% | 0 to 20 ppm |
| Carbon Monoxide (CO) | SEN0466 | 1 ppm | ±10% | 0 to 1000 ppm |
| Ozone (O3) | SEN0472 | 0.1 ppm | ±10% | 0 to 10 ppm |
| Hydrogen Sulfide (H2S) | SEN0467 | 1 ppm | ±10% | 0 to 100 ppm |
| Carbon Dioxide (CO2) | T6793-5K | 1 ppm | ±45 ppm | 400 to 5000 ppm |










