Solving I2C Address Conflicts - TCA9548A I2C Multiplexer
Vložit
- čas přidán 5. 07. 2024
- Today we will resolve a common problem - what to do when two of your sensors or displays have the same I2C address?
Article with code - dronebotworkshop.com/multiple...
More articles and projects - dronebotworkshop.com
Join everyone on the forum - forum.dronebotworkshop.com
get the newsletter - dronebotworkshop.com/subscribe/
I’ve covered the I2C bus in several previous videos, and today we’ll take another look at it. This time I’ll show you how to resolve a common problem - what to do if you need to use two identical sensors or displays that have the same, unalterable, I2C address?
The answer is pretty simple, you implement an additional I2C bus. And you can do this a couple of different ways.
The first way is through software. By using an alternative to the Arduino Wire Library you can implement more than one I2C bus on your Arduino, and you aren’t restricted to using pins A4 and A5.
But software solutions have their drawbacks, and my preferred way of doing this is using hardware.
The Adafruit TCA9548A MI2C Multiplexer Module is perfect for the job. You can use it to add up to 8 additional I2C buses to your Arduino, and you can use up to eight modules for a whopping 64 extra I2C buses!
I’ll restrict myself to one module today. And I’ll use it to drive two identical I2C OLED displays that have a fixed I2C address. I'll build a temperature and humidity meter and send temperature to one display, humidity to the other.
Here is what I have in store for you today:
I2C Address Conflicts - 1:32
Software Solutions - 3:37
TCA9548A I2C Multiplexer - 8:31
Two OLED Demo - 11:52
Bonus Feature - 20:43
So let’s become mediators and end I2C address conflicts once and for all! - Jak na to + styl
This is something I have never seen addressed (no pun intended) elsewhere when discussing i2c devices.
I'm getting mixed signals, how can you post a pun and state no pun intended.
J.k. it was kinda funny :)
Every time I see a topic made by DroneBot Workshop, I always rest easy knowing I'm going to find out exactly what I need to know!
Great channel! Thank you for your work and your shared knowledge. Your clear and clear speech makes it possible to understand your explanations for non-English speakers. Thx.
This channel is a treasure, I hope you have backups of everything! Thank you so much for your videos!!!
I have backups ;-)
DONT HAVE ENOUGH WORDS TO APPRECIATE THE WAY YOU EXPLAIN. THANK YOU VERY MUCH.
Thanks for this great video, I'm so green to all of this, but you're video just explained enough for me to get my TCA9548A. I was worried I would have to re-write other people's imported libraries, but this is a game changer for me!
Thank-you :-)
thank you for your videos. You give information easy enough to learners and interesting enough to watch for experienced viewers :)
I always enjoy your videos. I learn a lot new stuff. Please keep doing such great videos!
This video is so good that at the 4:25 mark, I turned off my ad block and refreshed the page. Thanks for posting!
Dammmmn, exactly what I was looking for for a while. Thank you so much for this extra ordinary info on how to utilize multiple I2C with address conflict... Thunbs up...🙂
Thanks so much sir. You're even better than my teachers in terms of explaining the materials
Thank you for this content. I mentioned in your other single oled temp/humid sensor video but: If you get a NAN value displaying on one screen, you need to add an additional 2000 ms delay in the code. Pulling both values quickly doesn't work with these temp/humid sensors. They can only be polled once every 2 seconds. Adding that 2 second delay in between both reads fixes the NAN issue.
This was great! It solved an issue I had...Thanks Bill !
Sir,
I really want to thank you for this video. Really good detailed easy to understand description. Highly appreciated. As for a beginner like me, I can not value ur content high enough.
Another great video. I'm really new to all this micro controller fun, but I'm really enjoying it. Thanks for all the info.
Missed my Sunday fix of Bill's soothing explanations, but now it's here! /replay
Another great video! Always informative and inspires new ideas for me.
More very high quality work!!!! Well done.
Who else is watching at 1.25 speed? :D
Btw, I love your channel. Every topic is so well explained. This is the way to go!
Keep up the good work.
Excellent teaching. Thank you for your effort!
Always worth watching. Thanks!!!
Thanks for the explanation, as always very clear!!!
Great video, Bill
A lots of informations , well explained
Thank you so much
a link to the other videos could be great.... great channel, thanks,you´ve won another sub.
Another great video for learning!
Encore une fois, un excelent travail. merci
Great video !! 👏👏👏I didn't know there were adress conflicts on arduino ! Now i know thank you !! I learned many things since I follow your channel big thanks ( Excuse me for my english if i made some mistakes ! 😉 french guy )👍
Great information, very appreciated!
Professionally discribed.🏅🏅🏅🏅🏅
These videos are so good, thanks!!
This is just what I needed
Thank you for another great tutorial Bill. I really enjoy your work. How did you gather all this knowledge? Greetings from the Netherlands
great video as always! if the pins are outputs, is there a way to read multiple sensors through the bus and display on one display? looking for a way to connect 5-6 thermocouples without having an arduino or ideally an ESP32 for each one or two just to get the readings to one display
Thank you very much, sir. finally, you have made the video , I request this video 8 months ago to you.
I requested it in March 2020 - I'm impressed how quickly he responded!
@@RoamingAdhocrat Are you a time traveller?... :)
@@oscarilmio7148 Time is a tool you can put on the wall, or wear it on your rizd.
The past is far behind us; the future doesn't exist.
Good morning sir :-)
I am Praveen Prabhu, persuing my B.E. in EEE in INDIA, Karnataka, Banglore.
I watch and enjoy all of your videos. Your videos are in detail so I learnt a lot and am improvising my projects by using additional displays and sensors.
I get inspired to do some thing watching your video.
I humbly Thank You for making such beautiful and knowledge videos and I always will aspire to become like you.
Excuse me, Sir What values is the resistor?
Great video!
Does it matter where on the I2C wires you attach to 5V via a resistor? Suppose the peripherals are a few metres from the multiplexer and in some cramped corner - does the 5V need to be fed to the I2C wires at the peripheral end or can it be fed in right next to the multiplexer?(If so it'd be simpler to just wire the resistors across the multiplexer itself, but if that was the case, they'd be built into the multiplexer itself probably)
Add a pullup resistor on pin 2 DHT22. Excellent video as always.
Sorry. This comment should have been for your last video.
thank you so much now we can do my project at my job!!!
Great video. Very useful.
Helpful information. İ like your video
This is awesome video. Great. Respect.
Hey! would it be possible to use a cd4051 to hook up the data or clock from the arduino to each slave device, and use that to switch between them? Thanks for the help!
Thanks! You helped me again😊
Glad to be of service!
Excellent, many thanks
Great video :) Was looking a bit around and noticed that smbus 3 allowed ARP for reassigning an address to the slave in case of conflicts but didn't find much documentation. Don't know if anyone already looked into it
Thanks for this tips. Just a question, where do you make your drawings? I liked them
Nice bro
Great video. Would you please mind guiding me through a solution to an I2C issue? If I want to add a distance extender to an I2C bus, where would it be added : between the master and the multiplexer, or between the multiplexer and the sensor? Thank you
thank you this is amazing
I hope to see your solutions to the 1m limitation. I have a personal project where I have to connect a MCU to a sensor located several meters away.
Try this.
www.adafruit.com/product/4756
Thanks for your video. Code has solved my mistake in Code
Очень полезное видео, лайк.
Great video. I do have a question though. Why add the resistors as shown in your wiring diagram? Also, what resistors are those so I can purchase them? I am using an ELEG Mega 2560 board on this project and pulling from the 5V pin for this module with multiple OLED displays.
Hi Dave, ive been looking for a sketch which I can use for 2 x 128 x 32 Oled using a Nano and the TCA9548A module, I got a PCB made and it just arrived, and I think I can use your sketch for the Model railway display I need, its on a Gantry and it just displays a "P or B or T" depending on points triggerl and signal trigger, I already did one for a single Oled so I think yours is perfect, thanks so much I love your videos ... John
Could you make a video about shrinking Arduino projects to AtMega328 SMD (32 pins)? Is it similar to AtMega32 DIP (28 pins) using FDTI? Thank you
i had this issue, thanks
Thanks
Hi DroneBot Workshop. I have a small question on a project I am trying to learn Arduino with. Would it be possible to run 4x Pressure sensors and a touch screen display on an Arduino Mega?
Excelente
Gracias! : )
Hi!
In case that I want my many similar slaves to be input sensors (all equal sensors) on the Arduino, will every of this slaves have a new different address to call it on the code when implementing the multiplexer?
Any chance you could help me. Ive followed this project closely but I am wondering how you would use 2 seperate temperature sensors ( Im using two DS18B20) to display to each screen instead of one sensor to a single OLED screen. I have the project working but it scrolls between temp sensors and I would like each screen to stay static on a given temp sensor. any help you could give a fellow Canuck would be appreciated.
Isn't this temp sensor in the adafruit unified sensor library?
How about reading several encoders attached a single I2C device? Is it possible? Also sending data back to the I2C device to set the encoders to certain values.
Hi could you make it with you about the nrf24l01 Module and how to Connect it with the Arduino Uno?!
Sir, Any explanation for you connected same analogue pin for TCA and Temperature sensor?
awesome
Can you do a video on connecting and coding multiple 4 to 1 multiplexers?
I think you could also do this with one (or more) 74LS125 (a tristate buffer) and GPIO to proverbially 'connect and disconnect' devices from the bus. This will consume GPIO pins for enabling, so it's not as elegant as the TCA9548A, but it should work, no? On the software side, it seems like this would be roughly the same. I haven't tried it, but conceptually it seems like it should work, no?
is it possible with different oled lcd addresses (SSD1306 AND SH1106)?
Love your simple, yet detailed videos. I learn something new every episode. One thing I personally find a bit annoying are the many repetitions of information and words in the clips I've seen so far. For example I think it's not necessary to address the device with its full name every time. This would also shorten the videos quite a bit.
is there a video on: LILYGO® TTGO T-CAN485 ESP32 CAN RS-485 Supports TF Card WIFI Bluetooth Wireless i2c PCB like which pins are SCL SDA thanks.
Sir, I am trying to interface SD card module and nRF24L01.With single SD card it is working as soon as if I connect nRF24L01 MOSI,MISO,SCK pins along with SD card. Showing error . Like initialization of card is failed
Hi, Can I split the I2C using PCA9685
Kindly make a project for mpu6050 oled display
hi is it possible to use NANO?
what i2c devices have quiic connectors?
I have a query, How do i get inputs from multiple MPU6050, i tried with it but it seems to display values that is in the max number of value in TCA like if i add 4 MPUs in ports (0,1,2 and 3) then the data is showing only one MPU (in TCA 3) for all values, even for the other MPU code
Is there no #include file for the TCA9548A?
How many ohm resistors should I use to power NodeMCU over 3.3v?
NodeMCU ile 3.3v üzerinden çalıştırmak için kaç ohm direnç kullanmalıyım?
Hi, if you have a battery or a Powersupply you have to use some kind of Voltage Regulator, because the current draw off a microprocessor is not constand
I've problems with I2C adress on my Pixhawk flight controller with an I2C splitter 4 connections for compass and ext LED and the LED don't work !
Excellent. The only thing I didn't get was how to address slaves on the multiplexed buses.
what is the purpose of the resistors
i solve this problem by making switch relay, simply i designed address giver circuit that allows the arduino to select which device going to be connected to the I2C on demand.
Have you tried to bit-bang your own master i2c code, it's not that hard and gives a great feeling of satisfaction when it works.
Hey were you a professor at Humber college back in 1998-2000?
Do the new Arduinos that were released in 2019 still have only one I2C bus?
Yes. It's how the uC chip is designed - only one I2C bus.
ESP32 chips have 2 I2C, so consider those in place of an arduino
Excellent explanation sir, can you do one video on SPI bus how to connect more than one SPI devices to Arduino.
well, you wire up the second SPI device's CS/SS pin to another GPIO pin on the Arduino. The other pins (MISO, MOSI, SCK) are shared.
Then when you want to communicate with a certain device, then you pull the respective CS line LOW.
Sir, I am trying to interface SD card module and nRF24L01.With single SD card it is working as soon as if I connect nRF24L01 MOSI,MISO,SCK pins along with SD card. Showing error . Like initialization of card is failed.
Thank anna for your reply sir.
Sir, if you have worked code related SD card and nRF24L01 can please send code. My mail id is "bsrikanthiitkgphzb@gmail.com"
Could somebody explain what the purpose of the 4 resistors is? It seems (on the surface anyway) that if you deleted those, this set-up would still work. I'm guessing it has something to do with keeping the signal clean? (Obviously I'm not an EE)
The transistors in the I2C only pull down to ground. It needs something to pull it up to +3.3v when the transistors are not active. Think of the resistors like a spring and the transistors when active pull down but when not active the spring pulls up.
Can you make video adout nrf24l01 module 😢
I burn 8 modules😭
Hi I need your help
i wonder how fast the multiplexer can switch ...
This video would have been improved if all I2C devices in the training would have been connected to the multiplexer. Instead, only the two displays are connected, thereby bypassing the connection of the third I2C device?
Hello Bill! As an liberal arts student who studied art history and web design, I find your videos easy to follow! Thanks for your neat organization of information! I appreciate your attention to details!
DroneBot Workshop lovers...hit here
I don't see how this will ever be an issue. I2C bus can have up to 255 addresses on one communication rail. When will you ever have more?
How to find an address of an i2C device?
Only 2 displays had connected? 🙂
hi, your code is not available