I have to use i2c with raspberry pi and arduino but there's difference of voltage levels so I bought a level shifter module for i2c from http://www.devicemart.co.kr/1149321. the picture on the link, pin have to be linked directly. so I checked if there's pullup resister already on the module and I found some resisters. that resisters are not linked high voltage but some IC. I'm worry if my board can die. so I want to change I2C pin-GPIO2, GPIO3- to the the other pins. I mean I want to use GPIO 22, 27 for I2c. Is it possible? How should I do?

  • why do you need to use different pins?
    – Ghanima
    Commented Nov 1, 2015 at 19:25
  • Your question is vague. Are you planning to connect the Pi to Arduino, or connect both to some other device. As Joan states you don't need a converter, but the level shifter should be safe. It appears to have 2 MOSFET and a regulator. Only connect the power to the Pi.
    – Milliways
    Commented Nov 1, 2015 at 22:47

1 Answer 1


I'm not sure that you need a level converter. As long as the Arduino does not have pull-up resistors to 5V on the I2C lines it should be safe. The Pi has hard-wired 1k8 pull-up resistors to 3V3 on GPIOs 2 and 3.

If you do want to use other GPIOs you will have to bit bang the I2C protocol.

There are probably dozens of solutions for the Raspberry Pi.

My pigpio library has bit bang methods for C and Python.

  • A while ago I learned that 1V8 and 3V3 (spotted here as well) were equivalents to 1.8V and 3.3V, reading further in Electronics SE suggested this notation has roots around WWII or earlier. I just noticed the 1k8 pull-up resistor mentioned here as well. I'm just curious about the 8 is that equivalent to Ω?
    – uhoh
    Commented Dec 25, 2018 at 5:50
  • this answer mentions 4R7 which I'm guessing is 47MΩ, but don't think 1k8 is 100MkΩ. Thanks!
    – uhoh
    Commented Dec 25, 2018 at 6:02
  • 1
    The pull-ups should be around 2000 to 10000 ohms. Megaohms are vastly too high.
    – joan
    Commented Dec 25, 2018 at 10:43
  • Thanks! I'm curious about the notation as well, what does 1k8 mean?
    – uhoh
    Commented Dec 25, 2018 at 10:48
  • 1
    "To simplify the writing of large resistor values, the abbreviations K and M are used for one thousand and one million. To keep the convention standard, R is used to represent 0. Because of problems in seeing the decimal point in some printed texts, the 3 letters: K M or R are used in place of the decimal point. Thus, a 2,700 Ohm resistor is written 2K7 and a 6.8 Ohm resistor is written 6R8." from diyaudioandvideo.com/Electronics/ResistorColorCodes
    – joan
    Commented Dec 25, 2018 at 10:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.