Gravity: LTC4316 I2C Address Shifter Module

SKU: DFR1193

The DFRobot Gravity I2C Address Shifter changes I2C sensor addresses. Connect it between your dev board and sensor for plug-and-play, compact integration. Get 4 addresses via on-board dip switches, plus 20+ more by soldering resistors. It solves same-address sensor issues without code port switching or timing bugs. Note: no clock extension (not for BNO055); know how to adjust sensor addresses in code first.

Overview of Gravity: I2C Address Shifter - Hardware I2C Conflict Resolver for Arduino, Raspberry Pi & IoT
  • Docs
  • Tech Specs
  • Specification

    Parameter Value
    Working voltage 2.25V-5.5V
    Working temperature 0~70℃
    Working current 2mA @3.3V
    Dimension 42 * 32mm
    R2 pad package 0805

    Pinout

    Controller Side Description
    VCC DC2.25V-5.5V input
    GND Ground
    SCL I2C Clock(To I2C controller)
    SDA I2C Data(To I2C controller)
    RDY Output high level when I2C sensor address translation is complete
    Output low level when I2C sensor address translation not completed
    Sensor Side Description
    VCC DC2.25-5.5V Output
    GND Ground
    SCL I2C Clock(To I2C sensor)
    SDA I2C Data(To I2C sensor)
    Dip Switch Description
    A5 Controls whether the fifth bit of the I2C address is inverted (1 is invert, 0 is not invert)
    A4 Controls whether the fourth bit of the I2C address is inverted (1 is invert, 0 is not invert)

    FAQ

    • Why do I need to solder resistor to adjust the lower four bits of the I2C address, instead of also designing more dip switch to adjustment other bit?
      Dip Switch schange the address by connecting a large number of resistors in parallel or not. If the lower four bits are also use the dip switch, this will greatly increase the number of resistors on board.This makes the size of this module very large.
    • Why did the sensor address not change after adjusting the on-board dip switch.
      Gravity: I2C Address Shifter needs to be power off and on after adjusting the dip switch for the new address.
    • How to quickly confirm the new I2C address after changing toggles or soldering resistors

      You can connect the sensor to an Arduino or ESP32 via an address converter and upload the I2C Scanner code below. The serial monitor will output the new I2C address.

      /**

      @file i2cScanner.ino

      @brief The i2c_scanner see if a device did acknowledge to the address.

      @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)

      @license The MIT License (MIT)

      @author [thdyyl]([email protected])

      @version V0.1

      @date 2024-08-05

      */

      #include <Wire.h>

      void setup(){

      Wire.begin();

      Serial.begin(115200);

      Serial.println();

      Serial.println("I2C Scanner");

      }

      void loop(){

      uint8_t error, address;

      int numDevices;

      Serial.println("Scanning...");

      numDevices = 0;

      for (address = 1; address < 127; address++ ){

      // The i2c_scanner uses the return value of the

      // Write.endTransmisstion to see if a device

      // did acknowledge to the address.

      Wire.beginTransmission(address);

      error = Wire.endTransmission();

      if (error == 0){

      Serial.print("I2C device found at address 0x");

      if (address < 16)

      Serial.print("0");

      Serial.print(address, HEX);

      Serial.println(" !");

      numDevices++;

      }else if (error == 4){

      Serial.print("Unknow error at address 0x");

      if (address < 16)

      Serial.print("0");

      Serial.println(address, HEX);

      }

      }

      if (numDevices == 0)

      Serial.println("No I2C devices found\n");

      else

      Serial.println("done\n");

      delay(2000); // wait 2 seconds for next scan

      }

    Explore More Related Questions >

    Was this article helpful?

    TOP