📓

MODULAIR-PM

PRODUCT MANUAL

MODULAIR-PM

PRODUCT NAME MODULAIR-PM

VERSION 0.3.2

LAST UPDATED @Wednesday

LAST UPDATED BY @David Hagan

1. Introduction and Specs

MODULAIR™-PM provides real-time estimates of particulate matter concentrations (PM1, PM2.5, and PM10) and particle size distribution using a novel combination of multiple light-scattering-based particle sensors (patent pending).

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.
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-PM data sheet.

1.1.2 Power and Comms

🔋 Power

5V, 2A (supply); 250 mA avg. consumption

🗼 Communication

LTE (North America)

3G/2G (Global)

📈 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 50 C
Operating humidity
5 to 95%, non-condensing
Dimensions
6.59" x 6.59" x 5.11"
Weight
4 lbs (1.8 kg)

1.2 Certifications

1.2.1 FCC 15(b)

The MODULAIR™-PM air quality sensor complies with part 15 of the FCC rules for class A devices. Operation is subject to the following two conditions: (1) this device may not cause harmful interference; (2) this device must accept any interference received, including interference that may cause undesired operation.

image

MODEL: MODULAIR-PM

Contains FCC ID: 2AEMI-BRN402

CE

The MODULAIR-PM complies with European Union EMC Directive 2014/30/EU and conforms to the following technical standards (EN 55011, EN 61326).

image

2. Installation and Hardware Setup

2.1 Unpacking

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

  • MODULAIR-PM Particulate Matter Sensor
  • Power supply and USB-C power cable
  • Mounting hardware (flanges with 4 10-32 screws)
  • 16 GB µSD card

If any of these components are missing, please contact QuantAQ via support.quant-aq.com. If the shipping box contains multiple devices, you will receive the correct multiple of each component from the list above.

2.2 Instrument Layout

2.2.1 Front Panel

The front panel of the device can be accessed by opening the lid of the enclosure. The panel provides access to the ON/OFF switch, Menu button, and LED indicator. Each component is labeled in Figure 1.

Figure 1. MODULAIR-PM Front Panel consists of an LCD screen, power ON/OFF switch, LED indicator, menu button, and access to the onboard µSD card.
Figure 1. MODULAIR-PM Front Panel consists of an LCD screen, power ON/OFF switch, LED indicator, menu button, and access to the onboard µSD card.

2.2.2 Core Circuit Board

Underneath the front panel (which can be opened by removing the four No. 6 screws in the four corners), you will find the Core Circuit Board and µSD circuit board. While it is unlikely you will ever need to touch this, it is worth pointing out a few key components.

Figure 2. Core Circuit Board includes connectors for two particle sensors, a relative humidity, temperature, and pressure sensor, and the µSD circuit board. This image is here for reference only.
Figure 2. Core Circuit Board includes connectors for two particle sensors, a relative humidity, temperature, and pressure sensor, and the µSD circuit board. This image is here for reference only.

2.3 Connections and Device Reg.

The MODULAIR-PM 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 this period 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 registration card 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 maybe more difficult. It is also suggested that you first log in to the website 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 metadata. 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 device can be mounted in a number of ways depending on the 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 dimensions found below.

Figure 3. Dimensions for the mounting holes for the provided mounting flanges.
Figure 3. Dimensions for 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
  • using screws to mount the device using the provided flanges

The complete box dimensions are:

  • 7.04" x 7.04" x 5.72" (178.82 mm x 178.82 mm x 145.29 mm)

If a more secure approach is needed, a pole mount kit can be purchased directly from the supplier of the enclosures (Polycase part number PL-087).

3. Software Setup and Data

3.1 Data Structure and Outputs

There are three primary ways in which data can be accessed for the MODULAIR-PM:

  1. Raw data is stored locally on the µSD card
  2. Data can be downloaded from the QuantAQ Cloud Console
  3. Data can be downloaded from the QuantAQ API

The data format’s are slightly different depending on which method you’ve used to access the data, each of which is documented below.

3.1.1 Data stored locally on the µSD Card

Data is collected and saved to the onboard µSD card every five seconds; every 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, it is there in case you need it. 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 contain debugging information about the onboard sensors and the cellular communications module. It is unlikely these logs will be useful to most users, though they are available to you if you would like to view 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.

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). 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.

Untitled

COLUMNUNITDESCRIPTION
timestamp_iso
The sample timestamp in ISO format
sample_rh
%
Sample relative humidity
sample_temp
ºC
Sample temperature
bin0
p/cm3
Number of particles per cubic cm in bin0 (0.35 - 0.46 µm)
bin1
p/cm3
Number of particles per cubic cm in bin1 (0.46 - 0.66 µm)
bin2
p/cm3
Number of particles per cubic cm in bin2 (0.66 - 1.0 µm)
bin3
p/cm3
Number of particles per cubic cm in bin3 (1.0 - 1.3 µm)
bin4
p/cm3
Number of particles per cubic cm in bin4 (1.3 - 1.7 µm)
bin5
p/cm3
Number of particles per cubic cm in bin5 (1.7 - 2.3 µm)
bin6
p/cm3
Number of particles per cubic cm in bin6 (2.3 - 3.0 µm)
bin7
p/cm3
Number of particles per cubic cm in bin7 (3.0 - 4.0 µm)
bin8
p/cm3
Number of particles per cubic cm in bin8 (4.0 - 5.2 µm)
bin9
p/cm3
Number of particles per cubic cm in bin9 (5.2 - 6.5 µm)
bin10
p/cm3
Number of particles per cubic cm in bin10 (6.5 - 8.0 µm)
bin11
p/cm3
Number of particles per cubic cm in bin11 (8.0 - 10.0 µm)
bin12
p/cm3
Number of particles per cubic cm in bin12 (10.0 - 12.0 µm)
bin13
p/cm3
Number of particles per cubic cm in bin13 (12.0 - 14.0 µm)
bin14
p/cm3
Number of particles per cubic cm in bin14 (14.0 - 16.0 µm)
bin15
p/cm3
Number of particles per cubic cm in bin15 (16.0 - 18.0 µm)
bin16
p/cm3
Number of particles per cubic cm in bin16 (18.0 - 20.0 µm)
bin17
p/cm3
Number of particles per cubic cm in bin17 (20.0 - 22.0 µm)
bin18
p/cm3
Number of particles per cubic cm in bin18 (22.0 - 25.0 µm)
bin19
p/cm3
Number of particles per cubic cm in bin19 (25.0 - 28.0 µm)
bin20
p/cm3
Number of particles per cubic cm in bin20 (28.0 - 31.0 µm)
bin21
p/cm3
Number of particles per cubic cm in bin21 (31.0 - 34.0 µm)
bin22
p/cm3
Number of particles per cubic cm in bin22 (34.0 - 37.0 µm)
bin23
p/cm3
Number of particles per cubic cm in bin23 (37.0 - 40.0 µm)
bin1MToF
ml/s
Time of flight for particles in bin1
bin3MToF
ml/s
Time of flight for particles in bin3
bin5MToF
ml/s
Time of flight for particles in bin5
bin7MToF
ml/s
Time of flight for particles in bin7
sample_period
s
The sample period
sample_flow
ml/s
The sample flow rate
opc_temp
ºC
The internal temperature of the OPC
opc_rh
%
The internal relative humidity of the OPC
opc_pm1
µg/m3
The factory computed value for PM1 from the OPC
opc_pm25
µg/m3
The factory computed value for PM2.5 from the OPC
opc_pm10
µg/m3
The factory computed value for PM10 from the OPC
laser_status
The status of the laser
pm1_std
µg/m3
The factory computed value for PM1 from the nephelometer
pm25_std
µg/m3
The factory computed value for PM2.5 from the nephelometer
pm10_std
µg/m3
The factory computed value for PM10 from the nephelometer
pm1_env
µg/m3
The factory computed value for PM1 from the nephelometer
pm25_env
µg/m3
The factory computed value for PM2.5 from the nephelometer
pm10_env
µg/m3
The factory computed value for PM10 from the nephelometer
neph_bin0
p
Number of particles in bin0 for the nephelometer
neph_bin1
p
Number of particles in bin1 for the nephelometer
neph_bin2
p
Number of particles in bin2 for the nephelometer
neph_bin3
p
Number of particles in bin3 for the nephelometer
neph_bin4
p
Number of particles in bin4 for the nephelometer
neph_bin5
p
Number of particles in bin5 for the nephelometer
flag
The status flag corresponding to this sample
fw
The current firmware version
connection_status
A boolean describing the state of the cellular connection

3.1.2 Data downloaded from the QuantAQ Cloud Console

Data are pushed to the QuantAQ Cloud with 1-minute time resolution and can be downloaded via the QuantAQ Cloud Console. When downloading data, you are able to select whether you would like to download the raw data, the final data, or both the raw+final data. Generally, the final data is what is desired, as it contains the final, cleaned data that is ready for analysis. The raw data is well-suited for researchers trying to investigate specific questions. When downloaded, the data is exported as a csv and contains the following columns:

COLUMNFILE LOCATIONUNITSDESCRIPTION
timestamp
rawfinal
The sample timestamp in ISO format
timestamp_local
rawfinal
The sample timestamp in ISO format, corrected for the timezone as defined in the device settings
id
rawfinal
A unique id the corresponds to the record shown
sn
rawfinal
The device serial number
sample_rh
rawfinal
%
The sample relative humidity
sample_temp
rawfinal
°C
The sample temperature
sample_pres
rawfinal
mmHg
The sample pressure (available only on select devices)
bin0
raw
p/cm3
Number of particles per cubic cm in bin0 (0.35 - 0.46 µm)
bin1
raw
p/cm3
Number of particles per cubic cm in bin1 (0.46 - 0.66 µm)
bin2
raw
p/cm3
Number of particles per cubic cm in bin2 (0.66 - 1.0 µm)
bin3
raw
p/cm3
Number of particles per cubic cm in bin3 (1.0 - 1.3 µm)
bin4
raw
p/cm3
Number of particles per cubic cm in bin4 (1.3 - 1.7 µm)
bin5
raw
p/cm3
Number of particles per cubic cm in bin5 (1.7 - 2.3 µm)
bin6
raw
p/cm3
Number of particles per cubic cm in bin6 (2.3 - 3.0 µm)
bin7
raw
p/cm3
Number of particles per cubic cm in bin7 (3.0 - 4.0 µm)
bin8
raw
p/cm3
Number of particles per cubic cm in bin8 (4.0 - 5.2 µm)
bin9
raw
p/cm3
Number of particles per cubic cm in bin9 (5.2 - 6.5 µm)
bin10
raw
p/cm3
Number of particles per cubic cm in bin10 (6.5 - 8.0 µm)
bin11
raw
p/cm3
Number of particles per cubic cm in bin11 (8.0 - 10.0 µm)
bin12
raw
p/cm3
Number of particles per cubic cm in bin12 (10.0 - 12.0 µm)
bin13
raw
p/cm3
Number of particles per cubic cm in bin13 (12.0 - 14.0 µm)
bin14
raw
p/cm3
Number of particles per cubic cm in bin14 (14.0 - 16.0 µm)
bin15
raw
p/cm3
Number of particles per cubic cm in bin15 (16.0 - 18.0 µm)
bin16
raw
p/cm3
Number of particles per cubic cm in bin16 (18.0 - 20.0 µm)
bin17
raw
p/cm3
Number of particles per cubic cm in bin17 (20.0 - 22.0 µm)
bin18
raw
p/cm3
Number of particles per cubic cm in bin18 (22.0 - 25.0 µm)
bin19
raw
p/cm3
Number of particles per cubic cm in bin19 (25.0 - 28.0 µm)
bin20
raw
p/cm3
Number of particles per cubic cm in bin20 (28.0 - 31.0 µm)
bin21
raw
p/cm3
Number of particles per cubic cm in bin21 (31.0 - 34.0 µm)
bin22
raw
p/cm3
Number of particles per cubic cm in bin22 (34.0 - 37.0 µm)
bin23
raw
p/cm3
Number of particles per cubic cm in bin23 (37.0 - 40.0 µm)
opcn3_temp
raw
C
The temperature of the onboard circuit board
opcn3_rh
raw
%
The RH of the onboard circuit board
opcn3_pm1
raw
µg/m3
Factory computed value of PM1 from the OPC
opcn3_pm25
raw
µg/m3
Factory computed value of PM2.5 from the OPC
opcn3_pm10
raw
µg/m3
Factory computed value of PM10 from the OPC
pm1_env
raw
µg/m3
Factory computed value of PM1 from the nephelometer
pm25_env
raw
µg/m3
Factory computed value of PM2.5 from the nephelometer
pm10_env
raw
µg/m3
Factory computed value of PM10 from the nephelometer
neph_bin0
raw
counts
The number of particles in bin0 from the nephelometer
neph_bin1
raw
counts
The number of particles in bin1 from the nephelometer
neph_bin2
raw
counts
The number of particles in bin2 from the nephelometer
neph_bin3
raw
counts
The number of particles in bin3 from the nephelometer
neph_bin4
raw
counts
The number of particles in bin4 from the nephelometer
neph_bin5
raw
counts
The number of particles in bin5 from the nephelometer
flag
raw
The status flag corresponding to this record
lat
rawfinal
deg
The latitude of the device
lon
rawfinal
deg
The longitude of the device
device_state
rawfinal
The current state of the device
pm1
final
µg/m3
The PM1 value
pm25
final
µg/m3
The PM2.5 value
pm10
final
µg/m3
The PM10 value
pm1_model_id
final
The id corresponding to the model used to compute PM1
pm25_model_id
final
The id corresponding to the model used to compute PM2.5
pm10_model_id
final
The id corresponding to the model used to compute PM10

3.1.3 Data downloaded via the QuantAQ API

Data are available via the QuantAQ API at a 1-minute recording interval → the data available are the exact same as those available via the QuantAQ Cloud Console discussed above. The API is designed to allow engineers to build applications and map layers powered by the QuantAQ platform; however, it can also be a good way to automate data downloads, especially for large teams or lengthy download intervals. The data format is slightly different, as outlined below.

Each API call will return a paginated list of json objects with two keys: data and metaand will look something like the following:

"meta": {
    "first_url": "https://api.quant-aq.com/device-api/v1/devices/MOD-PM-00001/data/?page=1&per_page=50&limit=3",
    "last_url": "https://api.quant-aq.com/device-api/v1/devices/MOD-PM-00001/data/?page=1&per_page=50&limit=3",
    "next_url": null,
    "page": 1,
    "pages": 1,
    "per_page": 50,
    "prev_url": null,
    "total": 3
  }

The key definitions can be described as:

first_url: The unique url for the first page of data in the query

last_url: The unique url for the last page of data in the query

next_url: The unique url for the next page of data in the query

prev_url: The unique url for the previous page of data in the query

page: The current page number

pages: The total number of pages available for the query

per_page: The number of data objects per page

total: The total number of data objects in the query

The data object contains a list of all individual data objects for that page of data. You can query either the raw or the final data, both of which have different data values available. The final endpoint will return the following:

"data": [
    {
      "geo": {
        "lat": 33.7769,
        "lon": -84.4018
      },
      "met": {
        "pressure": 990.2,
        "rh": 10.54,
        "temp": 22.1
      },
      "model": {
        "pm": {
          "pm1": 8802,
          "pm10": 8804,
          "pm25": 8803
        }
      },
      "pm1": 1.293,
      "pm10": 1.297,
      "pm25": 1.297,
      "sn": "MOD-PM-00001",
      "timestamp": "2022-12-26T15:43:58",
      "timestamp_local": "2022-12-26T10:43:58",
      "url": "https://api.quant-aq.com/device-api/v1/devices/MOD-PM-00001/data/235414585"
    },
    {...},
    {...},
  ]

It contains several objects including the geo, met, and model objects. The descriptions of the individual data points are mapped to their respective columns in Section 3.1.2 above.

Note: If nothing appears in the right-hand column, the variable definition/name is the same

Key from API
Column in Section 3.1.2
geo.lat
lat
geo.lon
lon
met.pressure
pressure
met.rh
sample_rh
met.temp
sample_temp
model.pm.pm1
pm1_model_id
model.pm.pm25
pm25_model_id
model.pm.pm10
pm10_model_id
pm1
pm25
pm10
sn
timestamp
timestamp_local
url
The unique url for this data point.

For raw data, the template is similar, but columns slightly different as described below.

"data": [
    {
      "flag": 0,
      "geo": {
        "lat": 33.7769,
        "lon": -84.4018
      },
      "met": {
        "pressure": 989.9,
        "rh": 10.32,
        "temp": 22.16
      },
      "neph": {
        "bin0": 210.25,
        "bin1": 63.083,
        "bin2": 3.75,
        "bin3": 0.417,
        "bin4": 0,
        "bin5": 0,
        "pm1": 0.333,
        "pm10": 0.5,
        "pm25": 0.5
      },
      "opc": {
        "bin0": 1.1973,
        "bin1": 0.0933,
        "bin10": 0,
        "bin11": 0,
        "bin12": 0,
        "bin13": 0,
        "bin14": 0,
        "bin15": 0,
        "bin16": 0,
        "bin17": 0,
        "bin18": 0,
        "bin19": 0,
        "bin2": 0.0242,
        "bin20": 0,
        "bin21": 0,
        "bin22": 0,
        "bin23": 0,
        "bin3": 0.007,
        "bin4": 0,
        "bin5": 0,
        "bin6": 0,
        "bin7": 0,
        "bin8": 0,
        "bin9": 0,
        "pm1": 0.18,
        "pm10": 0.21,
        "pm25": 0.21,
        "rh": 5.6,
        "temp": 28.9
      },
      "sn": "MOD-PM-00001",
      "timestamp": "2022-12-26T17:15:58",
      "timestamp_local": "2022-12-26T12:15:58",
      "url": "https://api.quant-aq.com/device-api/v1/devices/MOD-PM-00001/data/raw/235448331"
    },
		{...},
    {...},
  ],
Key from API
Column in Section 3.1.2
flag
geo.lat
lat
geo.lon
lon
met.pressure
pressure
met.rh
sample_rh
met.temp
sample_temp
neph.bin0 through neph.bin5
neph_bin0 through neph_bin5
neph.pm1
pm1_env
neph.pm25
pm25_env
neph.pm10
pm10_env
opc.bin0 through opc.bin23
bin0 through bin23
opc.pm1
opcn3_pm1
opc.pm25
opcn3_pm25
opc.pm10
opcn3_pm10
opc.temp
opcn3_temp
opc.rh
opcn3_rh
sn
timestamp
timestamp_local
url
The unique url for this data point.

3.2 Understanding and decoding 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 onboard. 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.

Untitled

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.

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 the 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.3.0 [July 2021]

  • Updated the Core Board to remove the external watchdog
  • de-populated components for heater control

Version 0.2.0 [January 2021]

  • The LED screen was removed to mitigate issues and confusion around it being used for real-time information.
  • The enclosure was updated to a new version to reduce production burdens
  • A new chassis was developed as we scaled production → we went from 3D printing to a bent metal chassis

5.2 Firmware Changes

Version 16 (v16) [April 4th, 2023]

  • Improved serial logging capabilities
  • Improved capabilities for remote debugging
  • Added support for remotely identifying key modem parameters

Version 15 (v15) [December 8th, 2022]

  • No public-facing changes were made in this release.

Version 14 (v14) [November 9th, 2021]

  • Implemented a new comparison flag between the nephelometer and OPC to reduce error when the two devices disagree
  • Improved message compression to lower data usage

Version 13 (v13) [June 17th, 2021]

  • Identical to v12, but compiled for a new RTOS release.

Version 12 (v12) [June 15th, 2021]

  • applies a patch for an issue with the RTC where the RTC would not properly sync after making a connection to the cell towers

Version 11 (v11) [May 27th, 2021]

Firmware version 11 removed the additional logging introduced in v9.

  • Fixed issue associated with enhancement in RF interference on the PMS5003
  • Added a new variable that tracks the sample number and is logged in the data files

Version 10 (v10) [April 12th, 2021]

Firmware version 10 was a dummy release → no users were ever effected (development only).

Version 9 (v9) [April 12th, 2021]

Firmware version 9 contains the following changed:

  • added support for a new RHT sensor with backwards compatibility for the previous hardware
  • Increased the logging output level for certain libraries to improve our understanding of connectivity to hard-to-reach areas

Version 8 (v8) [January 11th, 2021]

Firmware version 8 is the first to support batch 2 of the MODULAIR-PM sensors (w.o. LED screen).

  • Removed support for the LED screen
  • Updated firmware to support a newer release of the RTOS

Version 7 (v7) [December 10th, 2020]

  • Improved error logging to the µSD card
  • Added a cell timeout to help restart connections when stalled
  • Improved cellular stability via improved monitors and restart capabilities

Version 6 (v6) [October 27th, 2020]

  • Fixed a bug with the auto-restart of the RHTP sensor when it fails or times out.

Version 5 (v5) [October 12th, 2020]

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

6. Appendix

6.1 Wiring Diagrams

All cables used in the MODULAIR-PM are manufactured by Molex and available via most major distributors including DigiKey, Mouser, and Newark. The following table lists the part numbers and cable lengths for the cable connector; exact pinout diagrams can be found in the following subsections. Where applicable, "NC" means not connected.

Untitled

LABELN PINSMANMAN PNLENGTH (MM)
CBL-1
8
Molex
530470810
304.8
CBL-2
4
Molex
530480410
304.8
CBL-3
8
Molex
530470810
304.8
CBL-4
6
Molex
5015680607
304.8

6.1.1 CBL-1 | µSD Breakout Board

CBL-1 connects the Core Board to the µSD Breakout Board.

Untitled

PIN NUMBERLABELTYPEDECRIPTION
1
VCC
PWR
Power in; 4.2VDC (5.5V Max)
2
EN
IN
LVO enable pin (active high)
3
CLK
BD
Serial Clock (SPI)
4
MOSI
BD
Master out slave in (MOSI)
5
CS
IN
Chip Select (SPI)
6
MISO
BD
Master in slave out (SPI)
7
NC
8
GND
GND
Ground

6.1.2 CBL-2 | RHT Breakout Board

CBL-2 connects the Core Board to the Relative Humidity and Temperature board on the sampling manifold.

PIN NUMBERLABELTYPEDECRIPTION
1
VCC
PWR
Power in; 3.3V
2
SDA
DATA
Serial data line (I2C)
3
SCL
DATA
Serial clock line (I2C)
8
GND
GND
Ground

6.1.3 CBL-3 | Particle Sensor 1

CBL-3 connects the Core Board to Particle Sensor 1.

PIN NUMBERLABELTYPEDECRIPTION
1
VCC
PWR
Power in; 5V
2
GND
GND
Ground
3
NC
4
NC
5
TXD
DATA
Serial data (UART)
6
NC
7
NC
8
NC

6.1.4 CBL-4 | Particle Sensor 2

CBL-4 connects the Core Board to Particle Sensor 2.

PIN NUMBERLABELTYPEDECRIPTION
1
VCC
PWR
Power in; 5V
2
SS
IN
Chip select pin (SPI)
3
MOSI
DATA
Master out slave in (SPI)
4
MISO
DATA
Master in slave out (SPI)
5
CLK
DATA
Serial clock (SPI)
6
GND
GND
Ground

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.