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?
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
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.
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
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.
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
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.
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...
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?
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.
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.
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?
Well, yes, the resistors usually have the same value. 10k, 4.7k or 2.2k are very common values. But of course, you need one resistor for the SDA and for the SCL line.
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: ua-cam.com/video/sGZe0aJsqBQ/v-deo.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.
The best explanation of I2C in the least amount of time with great clarity - thanks Sir and kudos for such a presentation.
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!
The best material about I2C I've found in 3 days of search! Looking in blogs, videos and articles.
This was a fantastic video and I say that as a former educator and amateur cinematographer! Great job buddy.
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?
Just measured an Adafruit BNO055 sensor and got 10K ohms on clock and data lines. THANKS for excellent short video. Really interesting.
bloody amazing - now that's what I call an explanation
Best i2c vid ive ever seen.
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
You should make more videos man! You're good on it
Excellent explained pull up resistors in I2C applications.
Most excellent! Love your graphics and animation, they add so much to the learning experience.
Man, you should be making more Videos. Very nice explanation.
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.
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
So.. How do I increase the resistance above the minimum value if I've got (too) many I2C devices connected?
Great article, making a home made weather station and it helps clarify things a lot
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.
Great explanation, thanks a lot. I was facing problem with loadout resistors
omg what an amazing channel!! thanks for the video, helped tons!
Very precisely and accurately explained!!
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
if could maintain effective resistance @1.5k, then theoretically you can connect upto 128 devices
fantastic, thanks.
I never thought about the parallel resistors
one of the best explanations I have seen
You deserve more views
Excellent video. I was hoping for something to do with the addresses as well though...
Excellent info
I enjoy your presentation and flow. Make more if possible. Hope all is well with you.
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.
very informative ,never realised all these,untill now
thanks
Great information - How about more of the same type ? Keep up the good work - I like the way you make it short and to the subject. Thank you.
Hi, I need to make an I2C communication between an Esp 32 and Esp8266, where can I find info about?
Very interesting, hope to see more videos!
Excellent explanations!
Extremely clear presentation, thank you for sharing!
Great tutorial. Lots of good knowledge!
great job you just helped me understand a problem I had been having. subscribed.
GREAT explanation!
Thanks, have been trying to understand this for a while, perfect explaination ;-)
Can you disconnect the pullup resistors to make the logic low voltage drop?
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...
Great job. Perfect pace right amount of detail. Thanks!
But what is the solution?
Nice tutorial! we want more like that pleasee
Perfecet explanation..with lot of details..thx
Very nicely explained. Subscribed
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?
Great job! Can you make more videos?
Really Well explained 😎👍🏾
Brilliant content...
More video please. Very well explained (Y)
Can you effectively connect 7 i2c devices to a nano? Will it work?
it is possible to connect with two TSL 2561 sensor ?
could this be the reason why my SPI LCD shows artifacts right at the moment when the SPI communicates to another SPI device such as SD card?
how many mpu6050 sensors we can connect with ardiuno uno??
i have the same question
Really cleared a lot of my doubts!
best video on this topic.........make another please on spi and other topics......
Very well done! Thank you.
so all i have to do to connect multiple I2C devices on arduino is to connect resistors between Vcc-SDA and Vcc-SCL the pull-ups right?
couldn't the 'low-voltage' be reduced further by adding an extra resistor to the clock-line?
its been 2 years i dont think hes coming back.
How do you handle the addressing if 2 devices have the same I2C address?
Have you ever used the TCA9548 i2c multiplexor?
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.
Plz make videos on this topic
Then add a really big resistor in parallel, will solve the issue right?
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.
Great video, thanks.
GREAT VIDEO SIR
I am in a situation where I need 68 temperature sensors that use I2C comms and only 1 SDA and SCL line, how would I know if it will work?
Just try it from 2x sensor prototype, then 3, then 68...
This was an excellent video!!!! Thx
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?
I don’t think two devices with the same MAC address would work. I think the thumbnail for this video is misleading.
hate to tell you this, but this is his only video! in fact their is nobody home. i suspect he returned home to his other planet.
This video is awesome, THANK YOU!
very well done...😀 i learned a little bit more... 😀 great info... 👍👍👍
So the resistor for both ( SDA and SCL) Is the same? Thanks
Well, yes, the resistors usually have the same value. 10k, 4.7k or 2.2k are very common values.
But of course, you need one resistor for the SDA and for the SCL line.
Great explanation, thanks
How long distance maximum sir?
How do i connect 10 Arduino togather. Is that any possibility to do this ?
How many device can control
Informative, just subbed, thankyou!
Thank you. Great job.
You are a Craack! I dont speak english, but I inderstood this
Thank you, Sir! Great Video
Great video kindly do more videos
good video for me, thank you!
Video explains much easiers.Thanks for nice thing
GREAT material by the way, subscribed (Y)
great video
While this was definitely an informative video, it didn't explain me how do I connect Arduino with multiple I2C devices....
This is amazing information, thanks
Talking should to be a bit slowly , on the end no one running from behind!
Yes a little slower
Awesome!! Very clear presentation of great information.
Very good video!
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:
ua-cam.com/video/sGZe0aJsqBQ/v-deo.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.
Great video!
Thank you for video.
Fantastic information.
Plenty explanation as to what is wrong but no explanation as to how to correct it!!!
which software did you use to make this video man??
Wow. Pls post more video.