[Solved] Electron + I2C + Arduino Uno

Hi everyone,

i want my Ardunio Uno(Master), to talk to my Electron(Slave) via I2C. Both devices are usb powered.

As far as i managed to understand it i can connect SDA/SCL add 4.7k pullups to the 3.3V arduino Pin and that should limit the HIGH to 3.3V then optionally connect GND arduino to GND electron and that will take good care of the LOW.

  1. Does this work relatively safe and reliable?

  2. I would love this connection to be two wire(SDA/SCL) only.

Now i am not quite sure about the 5V tolerance on the electron side, the datasheet says to “disable the internal pull-up/down resistors” if i want to make sure nothing gets fried by 5V.

a)How in the world would i do that for I2C?
b)Does the electron even provide a pull-up for I2C or does it require an external as stated in the lib(pinmode/output_drain)?

best regards, mojo

P.S.: yes i will buy a couple of logic level shifters asap

Your pull-ups won't limit the HIGH level to 3.3V. If the Arduino has it's own pull-ups to 5V (as I think it has) you will bepermanently driving a current via the two sets of pull-ups from 5V to 3.3V which is not good.
On the other hand the Electron can easily copy with a 5V HIGH on the I2C pins - that bus is even designed for that case.

And common ground is not an option but a requirement.

In I2C mode there are no internal pull-resitors attached, so 5V tolerance is granted in that mode (which is controlled via the Wire object).

https://docs.particle.io/reference/firmware/photon/#wire-i2c-

3 Likes

Thank you very much for your answer and the much needed clarification!