Very well explained with a lot of detail that many others simply omit. The diagrams showing how a pull up resister works, and how to calculate its value, are so simple to understand. Great job!
If you need to connect more devices but the resistance becomes too low, just desolder the resistor from the breakout boards which lower the resistance too much.. With I2C you want about ~2K Ohms so that you can transmit data much faster :D I see a bunch of comments where people think this video is "useless" but he explains this at the end, Resistance in parrallel is divided! Hope this helps
He said you can measure the resistance of the whole bus by measuring between VCC and SCL or SDA, but I tried that on a little screen and it read overload, and I tried that on a single gyroscope and it reads 3 megaohms (even though the pull-ups are 22 kiloohms). Am I measuring something wrong or do I have to use his equation near the end?
Great insights - but depending on what you are doing, the limit is even lower ;) Break-Out Boards usually give you the option to configure the used I2C-Adress by connecting a pin to GND, VCC, SLA or SLC. And that's another hard limit: You can only use 4 addresses for these kind of boards. If you want a fifth, you'll need to find another vendor who has preloaded his device with a different address or even offers some way to freely configure it beside the classic way of using 4 different voltage levels through an extra pin.
I tried to like this video while watching it on my 'smart' tv. wasn't fast enough, so here I am to both like this video and subscribe because THIS was an awesome video and I learned something I hadn't even known I needed to know. Thank you.
Awesome I have 4 i2c devices and when I connect the fourth the sketch freezed randomly now after seeing this video I will definetly check the total I2C bus resistance since all are breakout boards
Fabulous awesome.... this kind of explanations can even make a child understand about arduino no matter how much he is able to understand anything else... he he
bluedot, you are awesome man! very nice presentation. the solution must be "TO SOMEHOW ATTAIN A EFFECTIVE RESISTANCE OF 1.5K OHM" you could try removing the pull up resistors in the slave(s) and adding a 1.5k resistor seperately
This was a really good presentation, but you left out the most important part - what do we do about it? It seems to me, we need to remove the pull up resistors from all but one of the devices. There probably comes a point where that isn't enough, so we would need to remove ALL of the pull up resistors, and fit the appropriate size for that number of devices - those would be bigger value resistors, to get a good logic low level, surely? There is also this video, which may be helpul: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-sGZe0aJsqBQ.html
I found a comment lower that said "If you need to connect more devices but the resistance becomes too low, just desolder the resistor from the breakout boards which lower the resistance too much.. With I2C you want about ~2K Ohms so that you can transmit data much faster" If you want a more thought-out approach, near the end of the vid it explains using the parallel resistor equation, which you can use if you can see the values on your pull-up resistors. It didn't work for me to measure the resistance between VCC and SCL because I tried it on a little screen and it reads overload, I tried it on a single gyroscope and it reads 3 Megaohms which seems high.
Published in 2016 and it's still providing great information. Nice video. I do have a question. How would you power 11 or more sensors all at once if I wanted to use battery as a backup and not as a main source of power?
excellent presentation , I have only one question because I was thinking about this very question of how many devices can I put on the I2C bus or more specifically I want to know how many arduino nanos I can put on the I2C bus ? I am thinking to use a raspberry pi as the master I2C bus and have nanos looking after individual sensors with their own isolated I2C busses or sensors directly connected to nanos with out using the isolated I2C bus. Nanos don't as far as I know have any resistors on the SDA or SCL . If what I'm thinking is correct then you could have an unlimited number of sensors connected to a main I2C bus of a master Pi or Arduino and just isolate the sensors with arduino nanos which are so cheap to buy.
This really helped in my understanding, but I was wondering (hopefully this is not a stupid question) but would this be considered analog multiplexing? And would this allow the arduino to communicate with 2 devices with the same MAC address at the same time?
great video thanks!!! why do these breakout boards even have he pull up resistors already build inside? Wouldn't be a big deal to plug them in yourself and spare all the trouble...
Adding any resistor in parallel will always reduce the overall resistance. To solve this I2C pull-up resistor problem, desolder all the built-in pull-up resistors on every device and place your own.
Hello! Do you know if it is possible to connect two displays, but SH1106 and with another library (I use Adafruit's)? The solution I have at the moment is to use 2 arduinos, but the expense would be higher.