Connecting I2C to the RPi

Hi Im trying to connect an ADC to the RPi using I2C however, when I checked i2cdetect 1, this is what I get,

WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1.
I will probe address range 0x03-0x77.
Continue? [Y/n] y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- UU 
70: -- -- -- -- -- -- -- -- 

The ADC that I connected does not seem to appear here. I know 20, 3c and 6f is not the device I’m looking for as they are still there when I have disconnected the ADC and also the ADC’s address should be in the 40 range according to it’s documentations. I have checked the connections and they seem right. VCC to 5v(pin1), Gnd to Gnd(pin3), SDA to pin2 and SCL to pin3.

Am I doing something wrong? Also what do addresses 20,3c and 60 lead to? I’m curious to know.

Which ADC are you trying to connect specifically? I’ve used the ADS1115 in the past which showed up on 0x48 without issues.

Also shouldn’t you be doing sudo i2cdetect -y 0? I doubt the number 1 bus is the correct one.

Ah yes it is also the ADS1115. I have tried bus 0 but I got this error Error: Could not open file /dev/i2c-0’ or /dev/i2c/0': No such file or directory Only bus 1 works for me.

Hmm right, seems like the regular one is indeed the #1 bus, so that should be correct. I2C at Raspberry Pi GPIO Pinout

Just to be clear, you are connecting to gpio 2 and 3, not pin 2 and 3? There’s a large difference. Also, is the ADS connected to 3.3V or 5V? VDD should be linked with 3.3V for it to work with 3.3V logic.

1 Like

See the end of this page: Diagnostics | Learn Ubiquity Robots and ROS

Do not use a 5V I2C device on this bus. We ONLY support 3.3V devices.

I suggest you remove the little OLED display from the MCB then connect to the 4-pin jack on the MCB your lines. From left to right they are labeled on top of the OLED display but from left to right they are: Ground, 3.3V, SCL and SDA.

Do not try to connect to 40-pin connector, use the 4-pin jack for OLED display. It is just far too easy to mess up using 40 pin jack. Once it all works if you really must use the 40 pin jack then do it then but verify you really are on SCL, GND, SDA by using meter to check the pins you think are correct on 40 pin jack with the 4-pin OLED connections.

The 40-pin MCB jack is ‘upside down’ because the Pi plugs into it so be aware of that bit of confusion.

1 Like

I tried attaching to the 4 pin jack and it works. Thanks! Is there a way for me to be able to utilise both the ADC and and display at the same time?

Do you have the ability to solder? If I were wanting both I would solder 4 wires onto the place the 4 connections come off of your OLED display on top. Then run those 4 wires to your ADC.
There is one important point that you should be aware of for doing this. Keep these wires shorter than about 10cm so mount your ADC board very close. Long lines on I2C are to be avoided so your signals will remain in good shape. If you make these wires too long then not only your circuit may have problems but also the I2C devices that Magni needs to use on the MCB may lead to failures of Magni operation.

1 Like

I have made this picture to show where I was discussing soldering on wires on top of the OLED connector.

1 Like

ooooh alright thanks for all the help! Will try it out if decide I need the display again.

Please see this post. I thank you for your inputs, we listen to users needs and sometimes are able to act on those requests to form new abilities.