# Adafruit PMSA003I Air Quality Breakout

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/092/993/medium800/sensors_PMSA300I_top_angle.jpg?1594245735)

Breathe easy, knowing that you can track and sense the quality of the air around you with this **&nbsp;Adafruit PMSA003I Air Quality Breakout**. This sensor is great for monitoring air quality, in a compact plug-in format.

Best of all, unlike almost all other sensors we've seen that are UART interface, **this one has an I2C interface** , which makes it a great match for single board Linux computers like Raspberry Pi, or even plain Arduino UNO's that normally would use software serial.

![](https://cdn-learn.adafruit.com/assets/assets/000/092/994/medium800/sensors_PMSA300I_top.jpg?1594245753)

If you're an I2C fan (who isn't?), we've included two of our handy dandy&nbsp;[SparkFun Qwiic](https://www.sparkfun.com/qwiic)&nbsp;compatible&nbsp;**[STEMMA QT](https://learn.adafruit.com/introducing-adafruit-stemma-qt)**&nbsp;connectors for the I2C bus&nbsp; **so you don't even need to solder!** Plug and play with other 'QT boards and sensors to add quick air quality sensing.

This sensor uses laser scattering to radiate suspending particles in the air, then collects scattering light to obtain the curve of scattering light change with time. The microprocessor calculates equivalent particle diameter and the number of particles with different diameters per unit volume.

The I2C data stream updates once per second, you'll get:

- PM1.0, PM2.5 and PM10.0 concentration in both standard & environmental units
- Particulate matter per 0.1L air, categorized into 0.3um, 0.5um, 1.0um, 2.5um, 5.0um and 10um size bins

As well as checksum, in binary format.

![](https://cdn-learn.adafruit.com/assets/assets/000/092/995/medium800/sensors_PMSA300I_bottom.jpg?1594245767)

Each order comes with one fully assembled sensor module breakout, including some header if you'd like to solder it to a breadboard. The breakout board has a 5V mini boost circuit so you can power it from 3.3V and 5V and the motor fan inside the sensor will run just fine

Lastly, it wouldn't be an Adafruit breakout if it didn't come with&nbsp;**[libraries for Arduino](http://github.com/adafruit/Adafruit_PM25AQI) and [CircuitPython & Python](http://github.com/adafruit/Adafruit_CircuitPython_PM25)&nbsp;**that will read and checksum data, and print it out in human-readable format.

![](https://cdn-learn.adafruit.com/assets/assets/000/092/996/medium800/sensors_PMSA300I_top_header.jpg?1594245777)

# Adafruit PMSA003I Air Quality Breakout

## Pinouts

![](https://cdn-learn.adafruit.com/assets/assets/000/092/992/medium800/sensors_PMSA300I_pinouts.jpg?1594245232)

## Power Pins

- **Vin** - this is the power pin. Since the sensor chip uses 3 VDC, we have included a voltage regulator on board that will take 3-5VDC and safely convert it down. To power the board, give it the same power as the logic level of your microcontroller - e.g. for a 5V microcontroller like Arduino, use 5V
- **3Vo** - this is the 3.3V output from the voltage regulator, you can grab up to 100mA from this if you like
- **GND** - common ground for power and logic

## I2C Logic Pins

- **SCL** - I2C clock pin, connect to your microcontroller I2C clock line. On the breakouts, this pin is level shifted so you can use 3-5V logic. There's a **10K pullup** on this pin.
- **SDA** - I2C data pin, connect to your microcontroller I2C data line.
- On the breakouts, this pin is level shifted so you can use 3-5V logic. There's a **10K pullup** on this pin.
- **[STEMMA QT](https://learn.adafruit.com/introducing-adafruit-stemma-qt)&nbsp;-** These connectors allow you to make I2C connections to dev boards with **STEMMA QT** connectors or to other things with&nbsp;[various associated accessories](https://www.adafruit.com/?q=JST%20SH%204).

## Other Pins

- **RST** - Module signal reset. Reset low.
- **SET** - Set pin. High when working status, low level is sleeping mode.

# Adafruit PMSA003I Air Quality Breakout

## Arduino

Using the PMSA300I with Arduino is a simple matter of wiring up it to your Arduino-compatible microcontroller, installing the [Adafruit PM25AQI](https://github.com/adafruit/Adafruit_PM25AQI) library we've written, and running the provided example code.

## **I2C Wiring**

Wiring the PMSA300I&nbsp; is made simple by using the I2C interface either via the STEMMA QT connector or a solderless breadboard.

- Connect&nbsp;**PMSA300I VCC (red wire)** to&nbsp; **Arduino 5V** &nbsp;if you are running a **5V** board Arduino (Uno, etc.).&nbsp;If your board is **3V,** connect to that instead.
- Connect **PMSA300I GND (black wire)** to&nbsp; **Arduino**  **GND**
- Connect **PMSA300I SCL (yellow wire)** to&nbsp; **Arduino**  **SCL**
- Connect **PMSA300I SDA (blue wire)** to&nbsp; **Arduino**  **SDA**

![sensors_PMSA300I_Arduino_STEMMA_bb.jpg](https://cdn-learn.adafruit.com/assets/assets/000/093/225/medium640/sensors_PMSA300I_Arduino_STEMMA_bb.jpg?1594931848)

![sensors_PMSA300I_Arduino_breadboard_bb.jpg](https://cdn-learn.adafruit.com/assets/assets/000/093/227/medium640/sensors_PMSA300I_Arduino_breadboard_bb.jpg?1594931940)

## **Library Installation**

You can install the **[Adafruit PM25AQI](https://github.com/adafruit/Adafruit_PM25AQI) l**ibrary for Arduino using the Library Manager in the Arduino IDE.

![](https://cdn-learn.adafruit.com/assets/assets/000/093/214/medium800/sensors_Arduino_Manage_Libraries.png?1594848391)

Click the&nbsp; **Manage Libraries ...** menu item, search for **Adafruit PM25 AQI** ,&nbsp;and select the&nbsp; **Adafruit PM25 AQI** library:

![](https://cdn-learn.adafruit.com/assets/assets/000/093/216/medium800/sensors_PMSA300I_PM25_Arduino_Lib_install.png?1594848701)

Follow the same process for the **Adafruit BusIO** &nbsp;library.

![](https://cdn-learn.adafruit.com/assets/assets/000/093/217/medium800/sensors_Arduino_BusIO_Lib_Install.png?1594848727)

## **Load Example**

Open up&nbsp; **File -\> Examples -\> Adafruit PM25 AQI Sensor -\> PM25\_test**

After opening the demo file, upload to your Arduino wired up to the sensor. Once you upload the code, you will see the **air quality data** being printed when you open the Serial Monitor ( **Tools-\>Serial Monitor** ) at **115200 baud** , similar to this:

Primary: The United States standards for particulates by color changed in 2024. See [this update](https://www.epa.gov/system/files/documents/2024-02/pm-naaqs-air-quality-index-fact-sheet.pdf) from the US EPA for the new standards.

![](https://cdn-learn.adafruit.com/assets/assets/000/093/219/medium800/sensors_PMSA300I_Arduino_serial_output.png?1594930132)

## Example Code
https://github.com/adafruit/Adafruit_PM25AQI/blob/master/examples/PM25_test/PM25_test.ino

# Adafruit PMSA003I Air Quality Breakout

## Arduino Docs

# Adafruit PMSA003I Air Quality Breakout

## Python & CircuitPython

It's easy to use the **PMSA300I** and the [Adafruit CircuitPython PM25](https://github.com/adafruit/Adafruit_CircuitPython_PM25) module. This library allows you to easily write Python code that reads particle concentrations, and particle diameter and the number of particles with different diameters per unit volume.

You can use this sensor with any CircuitPython microcontroller board or with a computer that has GPIO and Python [thanks to Adafruit\_Blinka, our CircuitPython-for-Python compatibility library](https://learn.adafruit.com/circuitpython-on-raspberrypi-linux).

## **CircuitPython Microcontroller Wiring**

Wire up a PMSA300I to your board exactly as shown below. Here's an example of wiring a Feather M4 to the sensor with I2C using STEMMA QT and a solderless breadboard.

- **Board 3V** to **PMSA300I** **VIN (red wire)**
- **Board GND** to&nbsp;**PMSA300I GND (black wire)**
- **Board SCL** to&nbsp;**PMSA300I SCL (yellow wire)**
- **Board SDA** to&nbsp;**PMSA300I SDA (blue wire)**

![sensors_PMSA300I_FeatherM4_STEMMA_bb.jpg](https://cdn-learn.adafruit.com/assets/assets/000/093/220/medium640/sensors_PMSA300I_FeatherM4_STEMMA_bb.jpg?1594931638)

![sensors_PMSA300I_FeatherM4_breadboard_bb.jpg](https://cdn-learn.adafruit.com/assets/assets/000/093/221/medium640/sensors_PMSA300I_FeatherM4_breadboard_bb.jpg?1594931663)

## **Python Computer Wiring**

Since there's _dozens_ of Linux computers/boards you can use, we will show wiring for Raspberry Pi. For other platforms, [please visit the guide for CircuitPython on Linux to see whether your platform is supported](https://learn.adafruit.com/circuitpython-on-raspberrypi-linux).&nbsp;

Here's the Raspberry Pi wired to the sensor with I2C using STEMMA QT and a solderless breadboard.

- **Pi 3V** to&nbsp;**PMSA300I VIN (red wire)**
- **Pi GND** to&nbsp;**PMSA300I GND (black wire)**
- **Pi SCL** to&nbsp;**PMSA300I SCL (yellow wire)**
- **Pi SDA** to&nbsp;**PMSA300I SDA (blue wire)**

![sensors_PMSA300I_RasPi_STEMMA_bb.jpg](https://cdn-learn.adafruit.com/assets/assets/000/093/222/medium640/sensors_PMSA300I_RasPi_STEMMA_bb.jpg?1594931691)

![sensors_PMSA300I_RasPi_Breadboard_bb.jpg](https://cdn-learn.adafruit.com/assets/assets/000/093/224/medium640/sensors_PMSA300I_RasPi_Breadboard_bb.jpg?1594931780)

## **CircuitPython Installation of PM25 Library**

You'll need to install the [Adafruit CircuitPython PM25](https://github.com/adafruit/Adafruit_CircuitPython_PM25) library on your CircuitPython board.

First make sure you are running the&nbsp;[latest version of Adafruit CircuitPython](https://learn.adafruit.com/welcome-to-circuitpython/installing-circuitpython)&nbsp;for your board.

Next you'll need to install the necessary libraries&nbsp;to use the hardware--carefully follow the steps to find and install these libraries from&nbsp;[Adafruit's CircuitPython library bundle](https://circuitpython.org/libraries).&nbsp;

Our CircuitPython starter guide has [a great page on how to install libraries from the bundle](https://learn.adafruit.com/welcome-to-circuitpython/circuitpython-libraries).

Load the the following libraries into the **lib** folder on your **CIRCUITPY** drive:

- **adafruit\_pm25**
- **adafruit\_bus\_device**

Before continuing make sure your board's **lib** folder or root filesystem has the **adafruit\_pm25** file and **adafruit\_bus\_device** folder **&nbsp;** copied over.

Next&nbsp;[connect to the board's serial console&nbsp;](https://learn.adafruit.com/welcome-to-circuitpython/kattni-connecting-to-the-serial-console)so you are ready to see the example output.

## **Python Installation of PM25 Library**

You'll need to install the [**Adafruit\_Blinka**](https://github.com/adafruit/Adafruit_Blinka) library that provides the CircuitPython support in Python. This may also require enabling I2C on your platform and verifying you are running Python 3.

[Since each platform is a little different, and Linux changes often, please visit the CircuitPython on Linux guide to get your computer ready](https://learn.adafruit.com/circuitpython-on-raspberrypi-linux)!

Once that's done, from your command line run the following command:

`pip3 install adafruit-circuitpython-pm25`

If your default Python is version 3 you may need to run 'pip' instead. Just make sure you aren't trying to use CircuitPython on Python 2.x, it isn't supported!

Primary: The United States standards for particulates by color changed in 2024. See [this update](https://www.epa.gov/system/files/documents/2024-02/pm-naaqs-air-quality-index-fact-sheet.pdf) from the US EPA for the new standards.

## **CircuitPython & Python Usage**

To demonstrate the usage of the PMSA300I, we'll use a complete code example to read the particle data.

Save the following code to your **CIRCUITPY** drive as **code.py** :

https://github.com/adafruit/Adafruit_CircuitPython_PM25/blob/main/examples/pm25_simpletest.py

If you haven't already, connect to the serial console to see the example output.

![](https://cdn-learn.adafruit.com/assets/assets/000/093/228/medium800/sensors_PMSA300I_serial_output.png?1594935054)

That's all there is to reading air quality data from the PSMA300I!

# Adafruit PMSA003I Air Quality Breakout

## Python Docs

# Adafruit PMSA003I Air Quality Breakout

## WipperSnapper Setup

![](https://cdn-learn.adafruit.com/assets/assets/000/128/297/medium800/sensors_adafruit_products_01_DeviceList.png?1709220384)

## What is WipperSnapper

WipperSnapper is a firmware designed to turn any WiFi-capable board into an Internet-of-Things device without programming a single line of code. WipperSnapper connects to [Adafruit IO](https://io.adafruit.com/), a web&nbsp;platform designed ([by Adafruit!](https://www.adafruit.com/about)) to&nbsp;_display_,&nbsp;_respond_, and&nbsp;_interact_&nbsp;with your project's data.

Simply load the WipperSnapper firmware onto your board, add credentials, and plug it into power. Your board will automatically register itself with your Adafruit IO account.

From there, you can add&nbsp;_components_&nbsp;to your board such as buttons, switches, potentiometers, sensors, and more! Components are&nbsp;_dynamically&nbsp;_added to hardware, so you can&nbsp;immediately start interacting, logging, and streaming the data your projects produce without writing code.

If you've never used WipperSnapper, click below to read through the quick start guide before continuing.

[Quickstart: Adafruit IO WipperSnapper](https://learn.adafruit.com/quickstart-adafruit-io-wippersnapper)
## Wiring
First, wire up a PMSA003I to your board exactly as follows. Here is an example of the PMSA003I wired to an&nbsp;[Adafruit ESP32 Feather V2](https://www.adafruit.com/product/5400)&nbsp;using I2C&nbsp;[with a STEMMA QT cable (no soldering required)](https://www.adafruit.com/product/4210)

- **Board 3V** &nbsp;to&nbsp;**sensor VIN (red wire on STEMMA QT)**  
- **Board GND** &nbsp;to&nbsp;**sensor GND (black wire on STEMMA QT)**  
- **Board SCL** &nbsp;to&nbsp;**sensor SCL (yellow wire on STEMMA QT)**  
- **Board SDA** &nbsp;to&nbsp;**sensor SDA (blue wire on STEMMA QT)**

![sensors_pmsa003i-1.png](https://cdn-learn.adafruit.com/assets/assets/000/114/688/medium640/sensors_pmsa003i-1.png?1662151488)

![sensors_pmsa003i-2.png](https://cdn-learn.adafruit.com/assets/assets/000/114/689/medium640/sensors_pmsa003i-2.png?1662151600)

## Usage

Connect your board to Adafruit IO Wippersnapper and **[navigate to the WipperSnapper board list](https://io.adafruit.com/wippersnapper).**

On this page, **select the WipperSnapper board you're using** to be brought to the board's interface page.

![](https://cdn-learn.adafruit.com/assets/assets/000/117/356/medium800/sensors_ksnip_20230106-135811.png?1673031755)

If you do not see your board listed here - you need [to connect your board to Adafruit IO](https://learn.adafruit.com/quickstart-adafruit-io-wippersnapper) first.

On the device page, quickly&nbsp; **check that you're running the latest version of the WipperSnapper firmware**.

The device tile on the left indicates the version number of the firmware running on the connected board.

- **If the firmware version is green with a checkmark -** &nbsp;continue with this guide.
- **If the firmware version is red with an "X" -** &nbsp;[update to the latest WipperSnapper firmware](https://learn.adafruit.com/quickstart-adafruit-io-wippersnapper)&nbsp;on your board before continuing.

![sensors_adafruit_products_04_LatestVersion.png](https://cdn-learn.adafruit.com/assets/assets/000/128/298/medium640/sensors_adafruit_products_04_LatestVersion.png?1709220334)

![sensors_adafruit_products_04_UpdateRequired.png](https://cdn-learn.adafruit.com/assets/assets/000/128/299/medium640/sensors_adafruit_products_04_UpdateRequired.png?1709220474)

Next, make sure the sensor is plugged into your board and click the **&nbsp;I2C Scan&nbsp;** button.

![](https://cdn-learn.adafruit.com/assets/assets/000/113/177/medium800/sensor_page_crop_scan.png?1657724520)

You should see the PMSA003I's default I2C address of&nbsp;`0x12` pop-up in the I2C scan list.

![](https://cdn-learn.adafruit.com/assets/assets/000/114/680/medium800/sensors_ksnip_20220902-163042.png?1662150694)

###  I don't see the sensor's I2C address listed! 


First, double-check the connection and/or wiring between the sensor and the board.

Then, reset the board and let it re-connect to Adafruit IO WipperSnapper.

With the sensor detected in an I2C scan, you're ready to add the sensor to your board.

**Click the New Component button or the + button** to bring up the component picker.

![](https://cdn-learn.adafruit.com/assets/assets/000/127/931/medium800/sensor_page_temperature___humidity_06_AddComponent.png?1708631009)

Adafruit IO supports a large amount of components. To quickly find your sensor, type&nbsp;`PMSA003I`&nbsp;into the search bar, then select the&nbsp; **PMSA003I** &nbsp;component.

![](https://cdn-learn.adafruit.com/assets/assets/000/128/300/medium800/sensors_iCYkjtlyWk.png?1709220735)

On the component configuration page, the PMSA003I's sensor address should be listed along with the sensor's settings.

The&nbsp; **Send Every** &nbsp;option is specific to each sensor's measurements. This option will tell the Feather how often it should read from each of the PMSA003I's three sensors and send the data to Adafruit IO. Measurements can range from every 30 seconds to every 24 hours.

On WipperSnapper, the PMSA003I reports particulate matter PM1.0, PM2.5, and PM10.0 concentrations in standard units&nbsp; **only**. If you need particulate matter reported in environmental units or particulate matter categorized into 0.3um, 0.5um, 1.0um, 2.5um, 5.0um, and 10um size bins, use the CircuitPython or Arduino libraries.

For this example, set the&nbsp; **Send Every&nbsp;** interval for each sensor to every 30 seconds.

![](https://cdn-learn.adafruit.com/assets/assets/000/114/683/medium800/sensors_ksnip_20220902-153749.png?1662150797)

Your device interface should now show the sensor components you created. After the interval you configured elapses, WipperSnapper will automatically read values from the sensor(s) and send them to Adafruit IO.

![](https://cdn-learn.adafruit.com/assets/assets/000/114/684/medium800thumb/sensors_ezgif.com-gif-maker_%283%29.jpg?1662150812)

To view the data that has been logged from the sensor, click on the graph next to the sensor name.

![](https://cdn-learn.adafruit.com/assets/assets/000/114/685/medium800/sensors_ksnip_20220902-163351.png?1662150851)

Here you can see the feed history and edit things about the feed such as the name, privacy, webhooks associated with the feed and more. If you want to learn more about how feeds work, [check out this page](https://learn.adafruit.com/all-the-internet-of-things-episode-four-adafruit-io/advanced-feeds).

The PMSA003I sensor reads data and optionally categorizes it into PM1.0, PM2.5, and PM10.0 bins. Each bin has its own feed on Adafruit IO. In this picture, we're looking at the PM100 readings, but if you click on the graph icon for the different sensors you'll see their feed history.

![](https://cdn-learn.adafruit.com/assets/assets/000/114/687/medium800/sensors_ksnip_20220902-163532.png?1662150938)

For IO Free accounts, feed data is stored for a maximum of 30 days and there's a maximum of 10 feeds. In this guide, you created three feeds (one for each of the PMSA003I's sensors). If you’d like to store data for more than 30 days, increase the number of feeds (components) you can use with WipperSnapper, or increase your data rate to send more sensor measurements to Adafruit IO - [upgrade your account to Adafruit IO Plus](https://io.adafruit.com/plus).

# Adafruit PMSA003I Air Quality Breakout

## Downloads

## Files

- [PMSA003I datasheet](https://cdn-shop.adafruit.com/product-files/4632/4505_PMSA003I_series_data_manual_English_V2.6.pdf)
- [EagleCAD files on GitHub](https://github.com/adafruit/Adafruit-PMSA003I-PCB)
- [3D Models on GitHub](https://github.com/adafruit/Adafruit_CAD_Parts/tree/master/4632%20PMSA003I)
- [Fritzing object in Adafruit Fritzing Library](https://github.com/adafruit/Fritzing-Library/blob/master/parts/Adafruit%20PMSA003I%20Air%20Quality%20Breakout.fzpz)

# Schematic
![](https://cdn-learn.adafruit.com/assets/assets/000/092/990/medium800/sensors_PMSA300I_sch.png?1594245076)

# Fab Print
![](https://cdn-learn.adafruit.com/assets/assets/000/092/991/medium800/sensors_PMSA300I_fab_print.png?1594245085)


## Primary Products

### Adafruit PMSA003I Air Quality Breakout

[Adafruit PMSA003I Air Quality Breakout](https://www.adafruit.com/product/4632)
Breathe easy, knowing that you can track and sense the quality of the air around you with this **&nbsp;Adafruit PMSA003I Air Quality Breakout**. This sensor is great for monitoring air quality, in a compact plug-in format.

Best of all, unlike almost all other sensors...

In Stock
[Buy Now](https://www.adafruit.com/product/4632)
[Related Guides to the Product](https://learn.adafruit.com/products/4632/guides)

## Featured Products

### PM2.5 Air Quality Sensor with I2C Interface - PMSA003I

[PM2.5 Air Quality Sensor with I2C Interface - PMSA003I](https://www.adafruit.com/product/4505)
Breathe easy, knowing that you can track and sense the quality of the air around you with this **PM2.5&nbsp;Air Quality Sensor with I2C Interface** &nbsp;particulate sensor.&nbsp;[Mad Max & Furiosa definitely should have hooked up...](https://en.wikipedia.org/wiki/Mad_Max)

In Stock
[Buy Now](https://www.adafruit.com/product/4505)
[Related Guides to the Product](https://learn.adafruit.com/products/4505/guides)
### STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long

[STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long](https://www.adafruit.com/product/4210)
This 4-wire cable is a little over 100mm / 4" long and fitted with JST-SH female 4-pin connectors on both ends. Compared with the chunkier JST-PH these are 1mm pitch instead of 2mm, but still have a nice latching feel, while being easy to insert and remove.

<a...></a...>

In Stock
[Buy Now](https://www.adafruit.com/product/4210)
[Related Guides to the Product](https://learn.adafruit.com/products/4210/guides)

## Related Guides

- [Creating MatrixPortal Projects with CircuitPython](https://learn.adafruit.com/creating-projects-with-the-circuitpython-matrixportal-library.md)
- [PyLeap App](https://learn.adafruit.com/pyleap-app.md)
- [Adafruit QT 5V to 3V Shifter Breakout](https://learn.adafruit.com/adafruit-qt-5v-to-3v-shifter-breakout.md)
- [Adafruit PDM Microphone Breakout](https://learn.adafruit.com/adafruit-pdm-microphone-breakout.md)
- [CircuitPython Libraries on any Computer with Raspberry Pi Pico](https://learn.adafruit.com/circuitpython-libraries-on-any-computer-with-raspberry-pi-pico.md)
- [I Vote(d) Pin](https://learn.adafruit.com/i-vote-d-pin.md)
- [IoT Twitter Listener Party Parrot](https://learn.adafruit.com/iot-twitter-listener-party-parrot.md)
- [Comparing Gyroscope Datasheets](https://learn.adafruit.com/comparing-gyroscope-datasheets.md)
- [Adafruit TB6612 1.2A DC/Stepper Motor Driver Breakout Board](https://learn.adafruit.com/adafruit-tb6612-h-bridge-dc-stepper-motor-driver-breakout.md)
- [Adafruit Qualia ESP32-S3 for RGB-666 Displays](https://learn.adafruit.com/adafruit-qualia-esp32-s3-for-rgb666-displays.md)
- [Circuit Playground Bluetooth Cauldron](https://learn.adafruit.com/cpx-cauldron.md)
- [Mu Keyboard Shortcut Cheat Sheets](https://learn.adafruit.com/mu-keyboard-shortcut-cheat-sheets.md)
- [CircuitPython Libraries on Linux and Google Coral](https://learn.adafruit.com/circuitpython-on-google-coral-linux-blinka.md)
- [IS31FL3731 16x9 Charlieplexed PWM LED Driver](https://learn.adafruit.com/i31fl3731-16x9-charliplexed-pwm-led-driver.md)
- [Itertools for CircuitPython](https://learn.adafruit.com/itertools-and-functools-for-circuitpython.md)
