Hi,
I'm planning to make a server room and cabinet temperature monitor using an ESP32, 2 x BME280 modules, 2 x 4 digit 7 segment display I2C backpacks, some buttons and status LEDs. I've been getting some advice on the Arduino forums as I'm a beginner but one of the concerns which has been raised is the fact that all of the Adafruit modules have 10k pull-up resistors on the SDA and SCL lines. The concern is that the resistance on these lines when chaining multiple modules will be too strong for them to be pulled low. However, using the display backpacks as an example, their description says you can use up to 8 displays due to the ability to change their address from 0x70 to 0x77. But if the concern about the pull-up resistors on these modules is correct, 8 displays would have a combined resistance of 80k on those lines. So surely we must be missing something? Is somebody able to advise on this please?
The hardware I want to use is:
2 x Adafruit BME280 (Part number: 2652)
2 x Adafruit 0.56" 4 digit 7 segment display with I2C backpack (Product number: 878)
1 x DFRobot FireBeetle 2 ESP32 (ESP32-WROOM-32E) - I already have this and I'm trying to keep the price down
2 x momentary push buttons
1 x momentary push button tied to RST
3 x LED
The displays would be mounted on the front cover of a 3D printed case so the cable length could be kept fairly short (just enough length to remove the front cover and disconnect them). I would obviously have to solder my own connector to a perf board as my ESP32 doesn't have a StemmaQT connector.
The other potential problem is the fact that I want one sensor inside the server cabinet and one outside. I plan to hang the case from the top of a removeable side panel on the server cabinet. I thought I could use a flat ribbon cable to go over the top of the removeable panel with a breakout module at each end to connect the second BME280. But this will obviously result in a longer cable length.(Maybe 10cm or 20cm EYESPI FPC Flex, plus connection from the FPC breakouts to the module and ESP32).
I believe the ESP32 has two I2C busses, so not sure if I could utilise both to shorten the bus length? (Either 2 displays on one and 2 sensors on the other, or even 3 on one bus with the farthest display on its own bus?)
Any help would be greatly appreciated. If you need any more info, please let me know.
Thanks
Are pull-up resistors combined when chaining segment display backpacks and BME280 modules?
Moderators: adafruit_support_bill, adafruit
Please be positive and constructive with your questions and comments.
- Daniel_368
- Posts: 3
- Joined: Wed Mar 08, 2023 4:36 pm
- adafruit_support_bill
- Posts: 88099
- Joined: Sat Feb 07, 2009 10:11 am
Re: Are pull-up resistors combined when chaining segment display backpacks and BME280 modules?
10K pullups are on the 'weak' side. So combining several in parallel is usually possible. The practical limit depends on the strength of the GPIO pins of the processor in use, as well as the electrical characteristics of the actual bus wiring.
Most processors can handle at least 3 or 4 sets of 10K pullups. Much more than that can start to cause problems. This can be addressed by removing the pullups from some of the boards.
Most processors can handle at least 3 or 4 sets of 10K pullups. Much more than that can start to cause problems. This can be addressed by removing the pullups from some of the boards.
- Daniel_368
- Posts: 3
- Joined: Wed Mar 08, 2023 4:36 pm
Re: Are pull-up resistors combined when chaining segment display backpacks and BME280 modules?
Thank you for your reply. Would use of the TCA9548A I2C Multiplexer (product number: 2717) with onboard pullups disabled solve that problem? and would it help with the extra length of the one cable I mentioned by separating the busses?
- adafruit_support_bill
- Posts: 88099
- Joined: Sat Feb 07, 2009 10:11 am
Re: Are pull-up resistors combined when chaining segment display backpacks and BME280 modules?
The multiplexer effectively creates up to 8 independent buses. In addition to providing a separate address space, these buses are electrically independent as well, so it could be used to isolate smaller groups of devices to minimize the effects of the combined pullups, as well as the total length of each bus.
The downside is that there is some additional software overhead in that you need to explicitly select a channel on the multiplexer before you can communicate with the device(s) connected to that channel.
20cm of bus length in itself is not a problem. But you need to consider the combined length of all bus segments. At normal bus speeds, a total bus length up to about 1 meter is usually workable.
The downside is that there is some additional software overhead in that you need to explicitly select a channel on the multiplexer before you can communicate with the device(s) connected to that channel.
20cm of bus length in itself is not a problem. But you need to consider the combined length of all bus segments. At normal bus speeds, a total bus length up to about 1 meter is usually workable.
- Daniel_368
- Posts: 3
- Joined: Wed Mar 08, 2023 4:36 pm
Re: Are pull-up resistors combined when chaining segment display backpacks and BME280 modules?
That's great. Thank you for your help.
Please be positive and constructive with your questions and comments.