📓

MODULAIR

Twitter Github QuantAQ Home

PRODUCT MANUAL

MODULAIR

PRODUCT NAME MODULAIR

VERSION 0.1.0

LAST UPDATED Oct 20, 2021

LAST UPDATED BY David Hagan

1. Introduction and Specs

MODULAIR™ provides real-time estimates of particulate matter concentrations (PM1, PM2.5, PM10), particle size distribution, and up to five user-selectable gas-phase measurements. MODULAIR utilizes the same, patent-pending particle measurement technology found in the MODULAIR-PM, which combines nephelometry with single-particle scattering to accurately measure aerosol loadings across a variety of environments. Each MODULAIR can include between one and five gas-phase measurements from CO, CO2, NO, NO2, O3, SO2, and H2S.

1.1 Specifications

1.1.1 Air Quality Measurements

Untitled

PARAMETERRANGEACCURACY
PM1, PM2.5, PM10
0 to 2,000 µg/m3
See below.
Particle size distribution
0.35 to 40.0 µm (24 bins)
Not yet determined.
Ozone (O3)
0 to 500 ppb
5 ppb or 20%
Carbon Monoxide (CO)
0 to 13,000 ppb
40 ppb or 20%
Carbon Dioxide (CO2)
0 to 5,000 ppm
Not yet determined.
Nitrogen Oxide (NO)
0 to 5,000 ppb
5 ppb or 20%
Nitrogen Dioxide (NO2)
0 to 5,000 ppb
6 ppb or 35%
Sulfur Dioxide (SO2)
0 to 10,000 ppb
5 ppb or 20%
Hydrogen Sulfide (H2S)
0 to 5,000 ppb
Not yet determined.
Temperature
-40 to 85 C
+/- 0.2 C
Relative humidity
0 to 100%
+/- 2%

More on the above information can be found in the MODULAIR data sheet.

1.1.2 Power and Comms

🔋 Power

5V, 2A (supply)

300 mA avg. consumption

🗼 Communication

LTE CAT-M1 (North America)

LTE CAT-M1/3G/2G (Europe)

📈 Data

Web interface (quant-aq.com)

Programmatic access (QuantAQ API)

Local Storage (µSD card)

1.1.3 Operating Specs

Untitled

PARAMETERDETAILS
Weatherproof rating
IP68
Operating temperature
-20 to 60 C
Operating humidity
5 to 95%, non-condensing
Dimensions
11.04" x 9.04" x 5.72"
Weight
6 lbs (2.72 kg)

2. Installation and Hardware Setup

2.1 Unpacking

When you unpack your MODULAIR, you should have received the following:

  • MODULAIR Air Quality Sensor
  • Power supply and USB-C charging cable
  • Mounting hardware (flanges with 4, 10-32 screws)
  • 16 GB µSD card (pre-installed)
  • Device registration card
  • Sonic anemometer (if purchased)
  • Solar+Battery kit (if purchased)

If any of these components are missing, please contact QuantAQ support via support.quant-aq.com.

2.2 Device Layout

2.2.1 Device Overview

Upon opening your MODULAIR, it should appear as Figure 2.2A shows below, without the antenna attached. When attached, the antenna should be facing up to get the best service.

Figure 2.2A. A top-down view of the MODULAIR.
Figure 2.2A. A top-down view of the MODULAIR.

2.2.2 Device Front Panel

The front panel of the MODULAIR can be accessed by opening the lid of the enclosure. The panel provides access to the ON/OFF switch, the µSD card for local data logging, the internal battery status indicator (Battery Charge Status), and the device status LED (Device Status Indicator), all of which are shown in Figure 2.2B.

Front Panel Screw

The front panel can be opened by unscrewing the Front Panel Screw, though should not be necessary under normal use. If it is opened, make sure that when re-closing, you do not "pop" out the µSD card. If so, you can simply push it back into place.

Figure 2.2B. The internal front-panel of the MODULAIR.
Figure 2.2B. The internal front-panel of the MODULAIR.

2.2.3 Device Base

Viewing the bottom of the MODULAIR, you can see the air intake covered by an insect-screen, the RJ11 jack for connecting the optional sonic anemometer, and the USB-C power in.

Figure 2.2C. MODULAIR bottom view depicting the air intake, power cable connection (USB-C), and anemometer hook up.
Figure 2.2C. MODULAIR bottom view depicting the air intake, power cable connection (USB-C), and anemometer hook up.

2.3 Connections and Device Registration

The MODULAIR is shipped completely assembled, aside from the mounting hardware. Once the device is mounted and you have verified the power switch is in the OFF position, simply plug in the power supply and connect the USB-C cable in to the bottom of the device. Once the power cable is connected, simply flip the power switch to the ON position. Upon receiving power, the LED indicator (Figure 1) will flash green and eventually begin a sequence of slowly breathing cyan; this indicates the cellular connection is active and a session with the cloud server has begun.

⚠️ If the device is being powered on in a new location or has been powered off for an extended period of time, this may take some time to complete.

The device will log data locally during the period where it is searching for cellular service and push the data to the server once a connection is established. If the LED indicator does not eventually begin breathing cyan, this indicates a cloud connectivity problem. Common errors and next steps can be found in Section 6.2.

To register your device, scan the QR code that is on the device registration card that you received with your device. It is easiest to complete this step using a cellphone or tablet with a working internet connection. A laptop with a functioning camera will also work, though may be more difficult. It is also suggested that you first login to the website (quant-aq.com) on the device you will use to complete this process. To register your device:

  1. Use your camera to scan the QR code. This will open a tab in your default browser and will direct you to the device registration page.
  2. Enter the fields for the information that the form asks for and click "Continue"
  3. Enter the claim code found on the same QR code card → it should be a 6-character alphanumeric code.
  4. Follow the instructions on the form and enter in data for the device location and other meta data. All of these can be changed in the future through the dashboard, so don't worry if you can't answer all questions at this time.

2.4 Installation

The MODULAIR can be mounted in a number of ways depending on your exact use and available mounting options available to you. The device is shipped with mounting flanges which can be used to easily mount the device to a number of surfaces. Each flange is secured to the back of the device with two 1/4-20 x 0.5" stainless steel screws (included). Each flange includes three slots with the following dimensions:

Figure 2.4A. Dimensions of the mounting holes for the provided mounting flanges.
Figure 2.4A. Dimensions of the mounting holes for the provided mounting flanges.

Common installation approaches include:

  • using high-strength zip ties to secure the device to a fence or post (not recommended)
  • using screws to mount the device to a wall using the provided flanges
  • Using u-bolts or similar to attach to a fence post, fence, or rail
  • Purchase a pole mount kit from Polycase (the box supplier). Polycase part number PK-087.

The complete box dimensions are:

11.04" x 9.04" x 5.72" (280.42 x 229.62 x 145.29 mm)

3. Software Setup and Data

3.1 Data Structure and Outputs

Data is collected and saved to an onboard µSD card every five seconds; each minute, these values are averaged and pushed to the cloud where they are available on the QuantAQ Cloud. It is unlikely you will ever need to use the locally saved data; however, you are more than welcome to use it if you would like. This section covers the locally-stored data and how to understand it. When removing the µSD card to pull the data, make sure your device is turned OFF.

On the µSD card, you will find data files (with a prefix of DATA_YYYYMMDD.csv) and log files which are located in the logs directory. Log files contains debugging information about the onboard sensors and the cellular communication module. It is unlikely these logs will be useful to most users, though they are available to you if you would like to use them. It is highly recommended that you use the QuantAQ CLI (discussed below) to analyze them, as it will vastly reduce the amount of time needed.

Figure 3.1A. Sample of data file header. The first three rows include meta data with the following rows containing the header and data.
Figure 3.1A. Sample of data file header. The first three rows include meta data with the following rows containing the header and data.

Data files are written each day and can be read or analyzed using any programming language or spreadsheet program (e.g., Microsoft Excel). Each file begins with three meta-data rows describing the device model (row 1), device ID (row 2), and the device serial number (row 3). See Figure 3.1A below. If you are automating your data analysis, you can skip these three rows. The fourth row contains the header information with the names for all columns. The remaining rows contain the data, where each row corresponds to a new 5-second sampling interval. The table below summarizes the columns.

The data outputs will change depending on the SKU (or model) of your MODULAIR. Most columns are constant with the exception of the gas-phase columns.

Untitled

COLUMNSKUUNITDESCRIPTION
timestamp_iso
all
The sample timestamp in ISO format
sku
all
The device SKU number
fw
all
The current firmware version
flag
all
The status flag corresponding to this data row
sample_temp
all
°C
The sample temperature
sample_rh
all
%
The sample relative humidity
bin0
all
p/cm3
Number of particles per cubic cm in bin0 (0.35 - 0.46 µm)
bin1
all
p/cm3
Number of particles per cubic cm in bin1 (0.46 - 0.66 µm)
bin2
all
p/cm3
Number of particles per cubic cm in bin2 (0.66 - 1.0 µm)
bin3
all
p/cm3
Number of particles per cubic cm in bin3 (1.0 - 1.3 µm)
bin4
all
p/cm3
Number of particles per cubic cm in bin4 (1.3 - 1.7 µm)
bin5
all
p/cm3
Number of particles per cubic cm in bin5 (1.7 - 2.3 µm)
bin6
all
p/cm3
Number of particles per cubic cm in bin6 (2.3 - 3.0 µm)
bin7
all
p/cm3
Number of particles per cubic cm in bin7 (3.0 - 4.0 µm)
bin8
all
p/cm3
Number of particles per cubic cm in bin8 (4.0 - 5.2 µm)
bin9
all
p/cm3
Number of particles per cubic cm in bin9 (5.2 - 6.5 µm)
bin10
all
p/cm3
Number of particles per cubic cm in bin10 (6.5 - 8.0 µm)
bin11
all
p/cm3
Number of particles per cubic cm in bin11 (8.0 - 10.0 µm)
bin12
all
p/cm3
Number of particles per cubic cm in bin12 (10.0 - 12.0 µm)
bin13
all
p/cm3
Number of particles per cubic cm in bin13 (12.0 - 14.0 µm)
bin14
all
p/cm3
Number of particles per cubic cm in bin14 (14.0 - 16.0 µm)
bin15
all
p/cm3
Number of particles per cubic cm in bin15 (16.0 - 18.0 µm)
bin16
all
p/cm3
Number of particles per cubic cm in bin16 (18.0 - 20.0 µm)
bin17
all
p/cm3
Number of particles per cubic cm in bin17 (20.0 - 22.0 µm)
bin18
all
p/cm3
Number of particles per cubic cm in bin18 (22.0 - 25.0 µm)
bin19
all
p/cm3
Number of particles per cubic cm in bin19 (25.0 - 28.0 µm)
bin20
all
p/cm3
Number of particles per cubic cm in bin20 (28.0 - 31.0 µm)
bin21
all
p/cm3
Number of particles per cubic cm in bin21 (31.0 - 34.0 µm)
bin22
all
p/cm3
Number of particles per cubic cm in bin22 (34.0 - 37.0 µm)
bin23
all
p/cm3
Number of particles per cubic cm in bin23 (37.0 - 40.0 µm)
bin1MToF
all
ml/s
Time of flight for particles in bin1
bin3MToF
all
ml/s
Time of flight for particles in bin3
bin5MToF
all
ml/s
Time of flight for particles in bin5
bin7MToF
all
ml/s
Time of flight for particles in bin7
sample_period
all
s
The sample period in seconds.
sample_flow
all
ml/s
The OPC sample flow rate.
opc_temp
all
°C
The internal temperature of the OPC
opc_rh
all
%
The internal relative humidity of the OPC
opc_pm1
all
µg/m3
The factory computed value for PM1 from the OPC
opc_pm25
all
µg/m3
The factory computed value for PM2.5 from the OPC
opc_pm10
all
µg/m3
The factory computed value for PM10 from the OPC
laser_status
all
The status of the OPC laser.
pm1_std
all
µg/m3
The factory computed value for PM1 from the Nephelometer
pm25_std
all
µg/m3
The factory computed value for PM2.5 from the Nephelometer
pm10_std
all
µg/m3
The factory computed value for PM10 from the Nephelometer
pm1_env
all
µg/m3
The factory computed value for PM1 from the Nephelometer
pm25_env
all
µg/m3
The factory computed value for PM2.5 from the Nephelometer
pm10_env
all
µg/m3
The factory computed value for PM10 from the Nephelometer
neph_bin0
all
p
Number of particles in bin0 for the nephelometer
neph_bin1
all
p
Number of particles in bin1 for the nephelometer
neph_bin2
all
p
Number of particles in bin2 for the nephelometer
neph_bin3
all
p
Number of particles in bin3 for the nephelometer
neph_bin4
all
p
Number of particles in bin4 for the nephelometer
neph_bin5
all
p
Number of particles in bin5 for the nephelometer
ws
all
The wind speed from the sonic anemometer.
wd
all
deg
The wind direction from the sonic anemometer.
co_we
001003005007013015017019021023029031033037045049053061
mV
The working electrode signal for the CO sensor.
co_ae
001003005007013015017019021023029031033037045049053061
mV
The auxiliary electrode signal for the CO sensor.
no_we
002003006007014015018019022023030031
mV
The working electrode signal for the NO sensor.
no_ae
002003006007014015018019022023030031
mV
The auxiliary electrode signal for the NO sensor.
so2_we
032033036037044045048049052053060061
mV
The working electrode signal for the SO2 sensor.
so2_ae
032033036037044045048049052053060061
mV
The auxiliary electrode signal for the SO2 sensor.
h2s_we
mV
The working electrode signal for the H2S sensor.
h2s_ae
mV
The auxiliary electrode signal for the H2S sensor.
no2_we
004005006007012013014015020021023028029030031036037044045052053060061
mV
The working electrode signal for the NO2 sensor.
no2_ae
004005006007012013014015020021023028029030031036037044045052053060061
mV
The auxiliary electrode signal for the NO2 sensor.
ox_we
012013014015029030031044045060061
mV
The working electrode signal for the OX sensor.
ox_ae
012013014015029030031044045060061
mV
The auxiliary electrode signal for the OX sensor.
co2_raw
016017018019020021022023028029030031048049052053060061
mV
The raw signal for the CO2 sensor.

3.2 Understanding the status flag

Each row of data contains a single byte data flag that describes the current state of the device. Flags are stored as unsigned integers and contain encoded information about each of the sensors on board. They are generated via a bitmask and can be decoded by reversing the procedure. To determine whether a specific flag is set, you can use the bitwise AND operation. If the flag's value is returned, then it is set. If a zero is returned, it is not set. This can seem complicated, so let's clear it up with a simple example.

Let's assume the value of the flag column is set to 4. We can perform a bitwise AND operation to check the result to see if FLAG_STARTUP was set (it wasn't). Below, we will check to see if the flag for the nephelometer is set (it is!).

# bit AND - is FLAG_STARTUP set?
>>> 4 & 1
0

# bit AND - is FLAG_NEPH set?
>>> 4 & 4
4

The following table describes the flags, their value, and what they mean.

FLAGVALUEWHY IS IT SET?WHAT TO DO?
FLAG_STARTUP
1
This flag is set when the device powers on.
Remove any rows where this flag is set.
FLAG_OPC
2
This flag is set when the OPC has indicated the data failed to transfer correctly. This can be caused by the fan being off, the laser being off, or the checksum not validating properly.
Remove any rows where this flag is set.
FLAG_NEPH
4
This flag is set when the nephelometer has indicated the data failed to transfer correctly.
Remove any rows where this flag is set.
FLAG_RHTP
8
This flag is set when the relative humidity and temperature sensor has failed.
Remove any rows where this flag is set.
FLAG_CO
16
This flag is set when the CO sensor has failed or data does not meet initial on-board QA/QC.
Remove any rows where this flag is set.
FLAG_NO
32
This flag is set when the NO sensor has failed or data does not meet initial on-board QA/QC.
Remove any rows where this flag is set.
FLAG_NO2
64
This flag is set when the NO2 sensor has failed or data does not meet initial on-board QA/QC.
Remove any rows where this flag is set.
FLAG_O3
128
This flag is set when the O3 sensor has failed or data does not meet initial on-board QA/QC.
Remove any rows where this flag is set.
FLAG_CO2
256
This flag is set when the CO2 sensor has failed or data does not meet initial on-board QA/QC.
Remove any rows where this flag is set.
FLAG_SO2
512
This flag is set when the SO2 sensor has failed or data does not meet initial on-board QA/QC.
Remove any rows where this flag is set.
FLAG_H2S
1024
This flag is set when the H2S sensor has failed or data does not meet initial on-board QA/QC.
Remove any rows where this flag is set.
FLAG_BAT
2048
This flag is set when the internal LiPo battery is low or dead.
None.

3.3 Leveraging QuantAQ's Software Tools

To make data analysis easier, QuantAQ maintains a number of software programs designed to reduce the time you spend munging and cleaning your data. The most relevant piece of software is going to be the QuantAQ CLI (command line interface). The CLI can be used to easily concatenate files, merge files together, and de-code the flag and NaN bad data. It is quite simple to go from a large folder full of files to a clean, munged data file in less than a few commands. Full documentation and use cases can be found on the QuantAQ CLI website.

4. Maintenance and Service

There are no consumable or user-replaceable components to the MODULAIR-PM. If you believe a component is broken or not functioning correctly, please contact support@quant-aq.com for next steps.

4.1 Reporting Issues

As a new product, it is likely that issues will arise with the hardware, firmware, software, or all three! We do our best to prevent issues from arising and will be timely in fixing any that do arise. If you experience an issue or have a suggestion related to the MODULAIR-PM hardware, please check the knowledge base. If you do not find the answer you're looking for in the knowledge base, you can open a ticket at support.quant-aq.com.

5. Changelog

5.1 Hardware Changes

Version 0.1.0 [October 2021]

  • First production release of the hardware. No changes at this time.

5.2 Firmware Changes

Version 1 (v1) [October 12th, 2021]

Firmware version 1 is the first production release of the firmware. No changes are listed at this time.

6. Appendix

6.1 Wiring Diagrams

Coming soon!

6.2 LED Indicator Status and Meaning

The LED indicator on the front panel is used to communicate the status of the cellular and cloud communication status. The LED changes color and mode, each of which indicates a different state as outlined below. The rate at which the LED blinks comes in two flavors: blinking and breathing, where breathing implies a slow pulse where the color of the LED fades in and out.

LED ColorBlink PatternModeDescription
Green
Blinking
Looking for internet
If your device is blinking green, it is trying to connect to the cellular network. There is no need to take any action.
Breathing
Cloud not connected
If your device is breathing green, it has a cellular connection but has not been able to connect to the cloud.
Cyan
Blinking
Connecting to the cloud
Blinking cyan indicates the device has a cellular connection and is attempting to connect to the cloud. There is no need to take any action. This will happen each time on device startup.
Breathing
Connected
When your device is breathing cyan, everything is good and you are happily connected to the internet and the QuantAQ Cloud.
Magenta
Blinking
Firmware Update
When your device is blinking magenta, it is undergoing an over-the-air firmware update. DO NOT power off when this is happening.
White
Breathing
Cellular Off
If the LED is breathing white, the cellular connection has been turned off. If you did not explicitly turn off the cellular connection via the on-board switch, please notify QuantAQ.
Red
Blinking
System Failure
A system failure has occurred. This is likely caused by faulty on-board firmware or corrupted memory. Please contact QuantAQ for next steps.