Wiring Guidance for Multiple Devices and Sensors

Hi there,

I am trying to figure out how to properly connect multiple arduino's and sensors together properly. Could someone help point me to sources that explain when resistors, capacitors, diodes or amplifiers are needed and the arrangements of each while doing this? I can find wiring details in manuals/schematics of for example how to wire SCL/SDA and VCC/GND, but when do I need to add resistors (like in this arduino article: https://docs.arduino.cc/tutorials/nano-every/i2c)

All of my sensors are breakout board versions and I've found that most places when I am researching talk as if I was a PCB designer (ie, decoupling chips from my source, but most breakout boards I have include a 100uF capacitor already). So it's hard to figure out when something is necessary with breakout boards...

If it matters, right now I have 3 Nano boards (Arduino), 3 ADS1115 boards (HiLetgo) and a BME280 (Adafruit) that I want to connect together over the SCL/SDA lines (assuming I can get each on a separate address).

Please explain your project in more detail, especially the moment why do you need to connect a 3 arduinos together and why not use one instead of three.

I don't see how the specifics of the project matter to the question. I'm trying to understand how to properly connect all kinds of breakout boards correctly and every time I do research I get information about how to design PCBs or how to connect chips directly.

I have struggled to find articles explaining how to for example, know when a regulator / amp is required as a filter in addition to the board someone supplied. Most manuals only document a direct connection from their board to Arduino devices.

I know when you get more than 1 board, sensor or device funny stuff starts happening. As my project has 50+ devices I need to understand these to get correct analog read values. But I also don't want to descend into PCB design. I am trying to understand how to get accurate signals sent across SCL/SDA with lots of devices (each with their own manuals and spec sheets on how they perform individually) and how to ensure all of my analog signals are correct (noise impacts are eliminated, voltages are stabilized, etc).

Using more than one arduino in project is quite unusual, it explain why you didn't find a manual about such connection.
It also explain my question about it.

And i should recomend you to start from basic project including one or two modules.
Start a project with 50 modules without a knowing how to connect them isnot a good idea.
Without a more detail of your project I am afraid I can't suggesr anything helpful.

I have many single module projects that successfully work and my question is relevant using 1 Arduino with 50 sensors or 2. If you need to ignore the 2nd Arduino to help, then please forget I said 2 Arduinos.
The concepts are still the same. I am trying to understand the theory and electronics better so I can make a wide range of applications.

I did find articles on how to connect 2 Arduinos together, I linked it in my initial post. It's an Arduino article so people are doing it.

And further; what I am asking about wouldn't need to be contained in a manual, it isn't about any particular chip or how the Arduino operates, it's about line voltages / currents fluctuating or ringing when multiple connections are in parallel.

Literally the article I linked doesn't explain why you need a resistor between the SCL/SDA lines and 3.3v. How would I learn when I need to do this? I see it periodically in manuals and while I can follow them, it doesn't help me know when/where this is necessary in my projects.

For example, why do I need that resistor in the article on connecting 2 Arduinos, but not in the article connecting 1 or several ADCs?

If I were to join 2 sets of 1 Arduino + 4 ADCs (totaling 48 analog inputs) together so I could send both sets via 1 channel of Wi-Fi or bluetooth for data storage would I need more resistors? How would I calculate the values I would need on them, etc?

It is very common to do this architecture with PLCs and Server database setups for product management and controls.

I2C is open drain output. That means the pins will sink current but not supply it. The current to get the voltage to the high level comes from the pullup resistors. The value depends on several factors.

  1. How much current can the driver sink to get a low value? This will set a minimum value.
  2. What is the capacitance in the traces/wires?
  3. How fast do you want to run the bus?
  4. What is the high voltage level needed?
    The last three set the maximum resistor value. Search on i2c resistor calculation to get an idea how they vary.

Typically the break out board will have some intermediate resistor value so that you can attach a couple of boards without worrying about it. Some boards have traces so you can disconnect the pullup, or may not have pullups. By looking at the SDA and SCL lines you can see what the case is. If you have a large number of devices you will need to manage the pullups.

For example the Adafruit board you noted uses 10K pullups, you could probably use 3 or 4 of them before the parallel resistance gets to low.

Awesome!

I'll definitely do these things. I read one article that said I should use a really small capacitor (between VCC and GND at source) if I am using multiple IC circuits to act as a filter.

Is that true? And how would I figure that out?

...and you can measure it with a DMM between the signal line and VCC, with the power removed of course.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.