Skip to content

Quick Start Guide - Thumbnail


In this guide we'll cover how to utilize the Qwiic 5V Boost with two 5V I2C devices; such as the BlinkM LED and Sensirion SEN55 sensor. To follow along with this tutorial, users will need the following items:

Warning

Soldering is required for this board.

Board Layout

This is the basic layout of the Qwiic 5V Boost board.

Layout

Layout of the major components on the Qwiic 5V Boost.

Demo - BlinkM LED

In this demo, we'll connect a BlinkM RGB LED to the Qwiic 5V Boost board; and control it with an ESP32 Thing Plus development board, utilizing the Arduino IDE.

Connect the BlinkM LED

Soldering is required to connect the BlinkM LED to the Qwiic 5V Boost board. In the example below, we used headers and jumper wires to make the necessary pin connections shown in the table. Once the BlinkM LED is attached, users will need to connect the Qwiic 5V Boost board to their development board with a Qwiic cable.

Qwiic 5V Boost BlinkM RGB LED
GND -
5V +
SDA d
SCL c

Demo - BlinkM LED

Connecting the BlinkM LED to the Qwiic 5V Boost.

Tip

If you're not familiar with using breakout board or soldering, please refer to the Hardware Overview & Assembly sections for a detailed overview of the board along with instructions on soldering to the breakout.

Example Code

With the hardware assembled, users will need to program their development board to control the BlinkM LED. In the Arduino IDE, upload the BlinkMStart example sketch from the BlinkM Arduino library. This example will fade the hue of the BlinkM LED and output the hue values to the Serial Monitor.

Follow the steps below to upload the example code:

  • Open the Arduino IDE.
  • Manually install the BlinkM Arduino library, by downloading it from the GitHub repository.
  • Restart the Arduino IDE.
  • Open BlinkMStart example sketch from the BlinkM Arduino library.
  • Select your board and serial port; then, upload the sketch.
  • Once the code compiles and uploads to the development board, open the serial monitor with the baud rate set to 9600 bps.
  • The example sketch prints out the hue values as they change on the BlinkM LED.
Tip

If you're not familiar with using the Arduino IDE, refer to the Troubleshooting Tips section for related tutorials.

LED Not Changing

For users who find it hard to distinguish the changes in the LED's hue, the sketch can be modified to change the RGB values. Below, is an example of modifications that would change the red value of the RGB LED.

Modifications

byte red=0;
void loop() 
{
    red += 10; // random(0,255);
    Serial.print("Fading to hue ");
    Serial.println(red);

    blinkm.fadeToRGB( red, 255, 255);

    delay(500);
}

Source Files

  • BlinkM Arduino library
  • BlinkMStart.ino example sketch

    BlinkMStart.ino
    /*
     * BlinkMStart -- simplest BlinkM example.
     *   Change the hue of the BlinkM
     * 
     */
    
    #include "BlinkM.h"
    #include "Wire.h"
    
    
    int ledPin = 13;      // select the pin for the LED
    
    int blinkm_addr = 0;  // 0 = talk to all blinkms on the i2c bus
    
    byte hue=0;
    
    BlinkM blinkm = BlinkM( blinkm_addr );
    
    //
    void setup() 
    {
      delay(1000);
      pinMode(ledPin, OUTPUT);
    
      blinkm.powerUp();  // use analog pins A3,A2 as power pins (works for Uno)
    
      blinkm.begin();
      blinkm.off();     // stop script and go to black
    
      delay(1000);
      Serial.begin(9600);
      Serial.println("BlinkStart ready");
    }
    
    //
    void loop() 
    {
        hue += 10; // random(0,255);
        Serial.print("Fading to hue ");
        Serial.println(hue);
    
        blinkm.fadeToHSB( hue, 255, 255);
    
        delay(500);
    }
    

Demo - SEN55 Particle Sensor

In this demo, we'll connect the Sensirion SEN55 particulate matter, VOC, NOx, humidity, and temperature sensor to the Qwiic 5V Boost board; and read data from it with an ESP32 Thing Plus development board, utilizing the Arduino IDE.

Connect the Sensirion SEN55 Sensor

Soldering is required to connect the SEN55 sensor to the Qwiic 5V Boost board. In the example below, we used headers and a Qwiic jumper cable to make the necessary pin connections shown in the tables.

Qwiic 5V Boost Sensirion SEN55 Sensor
GND 2
5V 1
SDA 3
SCL 4
GND 5

SEN55 sensor pins

Hardware pins for the Sensirion SEN55 sensor.

Once the sensor is attached, users will need to connect the Qwiic 5V Boost board to their development board with a Qwiic cable.

Demo - SEN55 sensor

Connecting the Sensirion SEN55 sensor to the Qwiic 5V Boost.

Tip

If you're not familiar with using breakout board or soldering, please refer to the Hardware Overview & Assembly sections for a detailed overview of the board along with instructions on soldering to the breakout.

Example Code

With the hardware assembled, users will need to program their development board to retrieve data from the SEN5X sensor. In the Arduino IDE, upload the exampleUsage example sketch from the Sensirion I2C SEN5X Arduino library. This example will read the particulate matter, VOC, NOx, humidity, and temperature values from the SEN5X sensor and output them in the Serial Monitor.

Follow the steps below to upload the example code:

  • Open the Arduino IDE.
  • Open the Library Manager tool, search for the Sensirion I2C SEN5X Arduino library and install the latest version.
  • Open exampleUsage example sketch from the Sensirion I2C SEN5X Arduino library.
  • Select your board and serial port; then, upload the sketch.
  • Once the code compiles and uploads to the development board, open the serial monitor with the baud rate set to 115200 bps.
  • The example sketch prints out the particulate matter, VOC, NOx, humidity, and temperature values from the SEN55 sensor.
Tip

If you're not familiar with using the Arduino IDE, refer to the Troubleshooting Tips section for related tutorials.

Source Files

  • Sensirion SEN5X Arduino library
  • exampleUsage.ino example sketch

    exampleUsage.ino
    /*
     * I2C-Generator: 0.3.0
     * Yaml Version: 2.1.3
     * Template Version: 0.7.0-112-g190ecaa
     */
    /*
     * Copyright (c) 2021, Sensirion AG
     * All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions are met:
     *
     * * Redistributions of source code must retain the above copyright notice, this
     *   list of conditions and the following disclaimer.
     *
     * * Redistributions in binary form must reproduce the above copyright notice,
     *   this list of conditions and the following disclaimer in the documentation
     *   and/or other materials provided with the distribution.
     *
     * * Neither the name of Sensirion AG nor the names of its
     *   contributors may be used to endorse or promote products derived from
     *   this software without specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
     * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     * POSSIBILITY OF SUCH DAMAGE.
     */
    
    #include <Arduino.h>
    #include <SensirionI2CSen5x.h>
    #include <Wire.h>
    
    // The used commands use up to 48 bytes. On some Arduino's the default buffer
    // space is not large enough
    #define MAXBUF_REQUIREMENT 48
    
    #if (defined(I2C_BUFFER_LENGTH) &&                 \
         (I2C_BUFFER_LENGTH >= MAXBUF_REQUIREMENT)) || \
        (defined(BUFFER_LENGTH) && BUFFER_LENGTH >= MAXBUF_REQUIREMENT)
    #define USE_PRODUCT_INFO
    #endif
    
    SensirionI2CSen5x sen5x;
    
    void printModuleVersions() {
        uint16_t error;
        char errorMessage[256];
    
        unsigned char productName[32];
        uint8_t productNameSize = 32;
    
        error = sen5x.getProductName(productName, productNameSize);
    
        if (error) {
            Serial.print("Error trying to execute getProductName(): ");
            errorToString(error, errorMessage, 256);
            Serial.println(errorMessage);
        } else {
            Serial.print("ProductName:");
            Serial.println((char*)productName);
        }
    
        uint8_t firmwareMajor;
        uint8_t firmwareMinor;
        bool firmwareDebug;
        uint8_t hardwareMajor;
        uint8_t hardwareMinor;
        uint8_t protocolMajor;
        uint8_t protocolMinor;
    
        error = sen5x.getVersion(firmwareMajor, firmwareMinor, firmwareDebug,
                                 hardwareMajor, hardwareMinor, protocolMajor,
                                 protocolMinor);
        if (error) {
            Serial.print("Error trying to execute getVersion(): ");
            errorToString(error, errorMessage, 256);
            Serial.println(errorMessage);
        } else {
            Serial.print("Firmware: ");
            Serial.print(firmwareMajor);
            Serial.print(".");
            Serial.print(firmwareMinor);
            Serial.print(", ");
    
            Serial.print("Hardware: ");
            Serial.print(hardwareMajor);
            Serial.print(".");
            Serial.println(hardwareMinor);
        }
    }
    
    void printSerialNumber() {
        uint16_t error;
        char errorMessage[256];
        unsigned char serialNumber[32];
        uint8_t serialNumberSize = 32;
    
        error = sen5x.getSerialNumber(serialNumber, serialNumberSize);
        if (error) {
            Serial.print("Error trying to execute getSerialNumber(): ");
            errorToString(error, errorMessage, 256);
            Serial.println(errorMessage);
        } else {
            Serial.print("SerialNumber:");
            Serial.println((char*)serialNumber);
        }
    }
    
    void setup() {
    
        Serial.begin(115200);
        while (!Serial) {
            delay(100);
        }
    
        Wire.begin();
    
        sen5x.begin(Wire);
    
        uint16_t error;
        char errorMessage[256];
        error = sen5x.deviceReset();
        if (error) {
            Serial.print("Error trying to execute deviceReset(): ");
            errorToString(error, errorMessage, 256);
            Serial.println(errorMessage);
        }
    
    // Print SEN55 module information if i2c buffers are large enough
    #ifdef USE_PRODUCT_INFO
        printSerialNumber();
        printModuleVersions();
    #endif
    
        // set a temperature offset in degrees celsius
        // Note: supported by SEN54 and SEN55 sensors
        // By default, the temperature and humidity outputs from the sensor
        // are compensated for the modules self-heating. If the module is
        // designed into a device, the temperature compensation might need
        // to be adapted to incorporate the change in thermal coupling and
        // self-heating of other device components.
        //
        // A guide to achieve optimal performance, including references
        // to mechanical design-in examples can be found in the app note
        // “SEN5x – Temperature Compensation Instruction” at www.sensirion.com.
        // Please refer to those application notes for further information
        // on the advanced compensation settings used
        // in `setTemperatureOffsetParameters`, `setWarmStartParameter` and
        // `setRhtAccelerationMode`.
        //
        // Adjust tempOffset to account for additional temperature offsets
        // exceeding the SEN module's self heating.
        float tempOffset = 0.0;
        error = sen5x.setTemperatureOffsetSimple(tempOffset);
        if (error) {
            Serial.print("Error trying to execute setTemperatureOffsetSimple(): ");
            errorToString(error, errorMessage, 256);
            Serial.println(errorMessage);
        } else {
            Serial.print("Temperature Offset set to ");
            Serial.print(tempOffset);
            Serial.println(" deg. Celsius (SEN54/SEN55 only");
        }
    
        // Start Measurement
        error = sen5x.startMeasurement();
        if (error) {
            Serial.print("Error trying to execute startMeasurement(): ");
            errorToString(error, errorMessage, 256);
            Serial.println(errorMessage);
        }
    }
    
    void loop() {
        uint16_t error;
        char errorMessage[256];
    
        delay(1000);
    
        // Read Measurement
        float massConcentrationPm1p0;
        float massConcentrationPm2p5;
        float massConcentrationPm4p0;
        float massConcentrationPm10p0;
        float ambientHumidity;
        float ambientTemperature;
        float vocIndex;
        float noxIndex;
    
        error = sen5x.readMeasuredValues(
            massConcentrationPm1p0, massConcentrationPm2p5, massConcentrationPm4p0,
            massConcentrationPm10p0, ambientHumidity, ambientTemperature, vocIndex,
            noxIndex);
    
        if (error) {
            Serial.print("Error trying to execute readMeasuredValues(): ");
            errorToString(error, errorMessage, 256);
            Serial.println(errorMessage);
        } else {
            Serial.print("MassConcentrationPm1p0:");
            Serial.print(massConcentrationPm1p0);
            Serial.print("\t");
            Serial.print("MassConcentrationPm2p5:");
            Serial.print(massConcentrationPm2p5);
            Serial.print("\t");
            Serial.print("MassConcentrationPm4p0:");
            Serial.print(massConcentrationPm4p0);
            Serial.print("\t");
            Serial.print("MassConcentrationPm10p0:");
            Serial.print(massConcentrationPm10p0);
            Serial.print("\t");
            Serial.print("AmbientHumidity:");
            if (isnan(ambientHumidity)) {
                Serial.print("n/a");
            } else {
                Serial.print(ambientHumidity);
            }
            Serial.print("\t");
            Serial.print("AmbientTemperature:");
            if (isnan(ambientTemperature)) {
                Serial.print("n/a");
            } else {
                Serial.print(ambientTemperature);
            }
            Serial.print("\t");
            Serial.print("VocIndex:");
            if (isnan(vocIndex)) {
                Serial.print("n/a");
            } else {
                Serial.print(vocIndex);
            }
            Serial.print("\t");
            Serial.print("NoxIndex:");
            if (isnan(noxIndex)) {
                Serial.println("n/a");
            } else {
                Serial.println(noxIndex);
            }
        }
    }
    

Hookup Guide - Thumbnail


Introduction

The SparkFun Qwiic 5V Boost - AP3012K converts the logic-level and boost the power of the Qwiic connect system from 3.3V, to 5V on its PTH pins. This is handy for connecting any I2C device that requires a higher supply voltage, such as super bright LEDs or mechanisms like a DC fan on our air quality sensors. On the board, we also provide 3V3/5V jumpers, which can be used to configure the logic-levels of the I2C PTH pins. Therefore, this board can be utilized to connect an I2C device that requires any combination of 3.3V/5V for its power and/or signals.

Note

The boost circuit on this board is rated to source up to a 100mA at 5V output, with 90% efficiency. However, users should note that this limitation is not only dependent on the load being connected, but also the amount of current that is being sourced to the Qwiic connector system.

Hardware Overview

Design Files

  • Design Files


  • Download the *.step File

    Manipulate 3D Model

    Controls Mouse Touchscreen
    Zoom Scroll Wheel 2-Finger Pinch
    Rotate Left-Click & Drag 1-Finger Drag
    Move/Translate Right-Click & Drag 2-Finger Drag

    Board Dimensions
    Dimensions of the Qwiic 5V Boost.

    Need more measurements?

    For more information about the board's dimensions, users can download the KiCad files for this board. These files can be opened in KiCad and additional measurements can be made with the measuring tool.

    KiCad - Free Download!

    KiCad is free, open-source CAD program for electronics. Click on the button below to download their software. (*Users can find out more information about KiCad from their website.)

    Download

    📏 Measuring Tool

    This video demonstrates how to utilize the dimensions tool in KiCad, to include additional measurements:

    QR code to play video

Board Layout

Layout

Layout of the major components on the Qwiic 5V Boost.

The Qwiic 5V Boost has the following features:

  1. PTH Breakout Pins
    A set of six 0.1" pitch PTH pins that breakout the boosted power and converted TTL signals of the I2C bus; and a control pin for the boost converter.
  2. Qwiic Connectors
    The primary interfaces for the Qwiic 5V Boost, these are pass-through connectors for the I2C bus.
  3. PWR LED
    A red indication LED for when the board is supplied with 3.3V.

Breakout Pins

The PTH pins of the Qwiic 5V Boost breakout: the 3.3V power supply from the Qwiic connectors that supplies power to the AP3012, the boosted 5V power output from the AP3012, a control pin to disable the AP3012, and the converted 5V, logic-level I2C signals from the Qwiic connectors.

Flipped pins

Pin connections between the top and bottom of the Qwiic 5V Boost.

GND
The common ground or the 0V reference for the voltage supplies.
3V3
The same 3.3V operating power for the Qwiic connectors.
SDA/SCL
The converted TTL signals of the I2C pins from the Qwiic connectors; their converted logic-level is controlled by the 3V3/5V jumpers.
5V
The boost 5V power output from the AP3012 boost converter, which is rated up to ~100mA load.
SHDN
The control signal for AP3012 boost converter; pull LOW to disable the IC.

I/O Configurations

With the 3V3/5V jumpers to configure the logic-levels of the I2C PTH pins, users can convert the power and logic-levels of the Qwiic connector to any combination of 3.3V and/or 5V on the PTH pins:

Output Power 5V 5V 3.3V
I2C Logic-Level 3.3V 5V 5V

By default, the pins are configured to a 5V logic-level.

Maximum Load Current

We recommend a maximum load current of ~100mA from the 5V output supply voltage from the AP3012 boost converter.

The boosted supply voltage of the boost converter will begin to drop as the current draw from the load increases. We found that for a boosted 5V output from a 3.3V input voltage, there is an inflection point around 100mA where the boosted voltage begins to drop off significantly.

Load Current Boosted Voltage
10mA 4.92V
20mA 4.91V
75mA 4.90V
100mA 4.89V
150mA 4.87V
200mA 4.65V

Info

This limitation is driven by the current load and supply current for the Qwiic connect system. It is not dictated by the junction temperature of the AP3012.

Qwiic Connectors

Qwiic connectors are provided for users to seamlessly integrate with SparkFun's Qwiic Ecosystem. These are pass-through connectors that operate at the standard 3.3V operating voltage and logic-levels.

Qwiic connectors

Qwiic connectors on the Qwiic 5V Boost.

What is Qwiic?

Qwiic Logo - light theme Qwiic Logo - dark theme


The Qwiic connect system is a solderless, polarized connection system that allows users to seamlessly daisy chain I2C boards together. Play the video, to learn more about the Qwiic connect system or click on the banner above to learn more about Qwiic products.

QR code to instructional video

Features of the Qwiic System

no soldering - light theme no soldering - dark theme

Qwiic cables (4-pin JST) plug easily from development boards to sensors, shields, accessory boards and more, making easy work of setting up a new prototype.

polarized connector - light theme polarized connector - dark theme

There's no need to worry about accidentally swapping the SDA and SCL wires on your breadboard. The Qwiic connector is polarized so you know you’ll have it wired correctly every time.

The part numbers for the PCB connector is SM04B-SRSS (Datasheet) and the mating connector on the cables is SHR04V-S-B; or an equivalent 1mm pitch, 4-pin JST connection.

daisy chainable - light theme daisy chainable - dark theme

It’s time to leverage the power of the I2C bus! Most Qwiic boards will have two or more connectors on them, allowing multiple devices to be connected.

LED

There is a red PWR LED to indicate when the Qwiic 5V Boost is powered with 3.3V. The LED can be disabled by cutting the LED jumper.

LED

The red PWR LED the Qwiic 5V Boost.

Jumpers

There are four jumpers on the back of the board that can be used to easily modify the hardware connections on the board.

Jumpers

The jumpers on the top of the Qwiic 5V Boost.

I2C
This jumper can be cut to disconnect the pull-up resistors from the I2C pins of Qwiic connectors.
I2C HV
This jumper can be cut to disconnect the pull-up resistors from the I2C pins of PTH breakout pins.
LED
This jumper can be cut to remove power from the red PWR LED.
3V3/5V
Configures the TTL signal level for the I2C pins of PTH breakout pins to either 5V or 3.3V.
Never modified a jumper before?

Check out our Jumper Pads and PCB Traces tutorial for a quick introduction!

Hardware Assembly

Breakout Pins

The PTH pins on the Qwiic 5V Boost are broken out into six 0.1"-pitched pins on the edge of the board. These pins are used to connect a 5V I2C device to the Qwiic connect system.

Headers are versatile option testing and development.

Soldering headers

Soldering headers to the Qwiic 5V Boost.

Users can also connect a device directly to the board.

Soldering wires

Soldering wires to the Qwiic 5V Boost.

New to soldering?

If you have never soldered before or need a quick refresher, check out our How to Solder: Through-Hole Soldering guide.

Configuration Options

Users will have the following options for connecting a device to the Qwiic 5V Boost:

Output Power 5V 5V 3.3V
I2C Logic-Level 3.3V 5V 5V

Power Supply


Use either the 5V or the 3V3 PTH pins to supply 5V or 3.3V power to the device.

Logic-Level


Users can modify the 3V3/5V jumpers to configure the logic-level for the SDA and SCL PTH pins.

By default, the pins are configured to a 5V logic-level.

Qwiic Connector

The simplest method to connect the Qwiic 5V Boost board to a microcontroller and/or other Qwiic devices, is through the Qwiic connector.

Qwiic devices

The Qwiic 5V Boost with a 5V I2C RGB LED connected to its PTH pins and daisy-chained with Qwiic cables, though its Qwiic connectors.

Tip

The intended design of the Qwiic 5V Boost board was to be utilized with the Qwiic connector system. However, the Qwiic 5V Boost can also be utilized with other interfaces, similar to how the SparkFun Logic Level Converter - Single Supply operates. The only difference is its TTL conversion, which is push-pull and not open-drain.

Troubleshooting Tips

Need Help?

If you need technical assistance or more information on a product that is not working as you expected, we recommend heading over to the SparkFun Technical Assistance page for some initial troubleshooting.

SparkFun Technical Assistance Page

If you can't find what you need there, the SparkFun Forums is a great place to search product forums and ask questions.

Account Registration Required

If this is your first visit to our forum, you'll need to create a Forum Account to post questions.

Getting Started with the Arduino IDE

This guide assumes users are utilizing the latest version of the Arduino IDE on your desktop. If this is your first time using Arduino IDE, library, or board add-on, please review the following tutorials:

5V Power Limitation

We recommend users limit the load current on the 5V output supply voltage to a maximum of ~100mA.

This should not be considered as a limitation dictated by the junction temperature of the AP3012. The limitation is driven by the power supply for the Qwiic connect system and the load being placed on the boost circuit. In order to compensate for the increased current, the supply voltage from the AP3012 boost converter will begin to drop as the current draw increases.

Resources

Product Resources

SparkFun logo Additional Resources

🏭 Manufacturer's Resources

Diodes Incorporated also provides great resources for the AP3012 Buck Regulator:

QR code to the hookup guide