The two jumpers
Two pairs of solder pads on the back of the board, one joined from the factory and one not. Between them they decide the sensor's address and whether the bus has anything holding it up — and neither matters until you own a second one of these, at which point both do.
What is on the back
Two pairs of small gold pads, each labelled, and they are not in the same state as each other.
I2C PULL-UP is joined. A strip of copper a quarter of a millimetre wide runs between the two pads, and it is what connects R1 and R2 — the two 10 kΩ pull-ups — to VCC. Cut that strip and both pull-ups come off the supply.
ADDR is open. Nothing joins its two pads. One is VCC and the other is the sensor's ADDR pin, which R3 is holding at ground. Bridge them with solder and ADDR goes to VCC instead.
That is the whole mechanism. Both are one-way in the sense that matters: a cut neck can be bridged again with solder, and a solder bridge can be removed, so neither decision is permanent — but both need a tool.
Why they exist
Neither does anything useful with one board on the bus. Both become necessary with two.
The address, and why there are only two
The sensor decides its own I²C address by looking at one pin. ADDR at ground means 0x44; ADDR at the supply means 0x45. There is no third state and no register you can write to change it — the datasheet notes the address can even be switched during operation by moving that pin.
It also says ADDR must not be left floating. R3, the third 10 kΩ resistor on the board, is what guarantees it never is: with the jumper open, ADDR is at ground through R3, so a board straight out of the bag is always 0x44.
Bridge the jumper and VCC wins — a solder bridge is a fraction of an ohm against R3's 10 kΩ — so ADDR goes high and the board becomes 0x45. R3 is then sitting across the supply, which is where the third of a milliamp goes.
So: two boards, one bus, one of them bridged. Three boards is where this part runs out, and no arrangement of jumpers fixes it.
The pull-ups, and the surprise in them
I²C devices can only ever pull a line down. Something has to pull it back up, and that something is a resistor to the supply. Without one, the lines sit nowhere in particular and no device recognises anything.
Each of these boards carries two — one for SDA, one for SCL. Which means the second board on the bus brings a second pair, in parallel with the first.
Two 10 kΩ resistors in parallel are 5 kΩ. Three are 3.3 kΩ. And here is the part nobody guesses: that is usually an improvement. A pull-up and the capacitance of your wiring form a delay — the line takes time to climb back to the supply after being released — and the lower the resistance, the faster it climbs.
With roughly 100 pF of breadboard and jumper wires on the bus, one board's 10 kΩ takes about 850 ns to let the line rise. The I²C specification allows 1000 ns at 100 kHz and only 300 ns at 400 kHz. So a single board is comfortable at the 100 kHz every Arduino core starts at, and too slow for 400 kHz — and adding a second board's pull-ups halves the resistance and nearly halves the time.
Move the capacitance slider in the figure and watch which combinations fall outside the line. The trade is current: each halving of the resistance doubles what a device has to sink to hold the line down, and the specification's limit is 3 mA. At 3.3 kΩ and 3.3 V that is 1 mA, so there is a lot of room.
So when should you cut it?
Rarely, and the honest answer is: when you have measured a reason to.
- Two of these on a short bus at 100 kHz. Leave both alone. 5 kΩ is fine and the extra current is negligible.
- Several I²C devices, each with its own pull-ups. Six devices at 10 kΩ each is 1.7 kΩ, which is 2 mA of sink current and getting close to the limit. Cut all but one or two.
- A device on the bus with its own strong pull-ups already fitted. Some modules ship with 2.2 kΩ. Adding this board's 10 kΩ to that barely changes anything, so there is nothing to gain by cutting either.
- A battery project that leaves the bus idle. Idle means both lines high, which costs nothing — the resistors only pass current while a line is being held down. Cutting the jumper saves nothing here, and the power light is where the current is actually going.
When it does not work
I2C PULL-UP is joined: the two pads have a narrow strip of gold between them. ADDR is open: its two pads have a visible gap. Hold the board up to a light — the difference is obvious once you know which way round to expect it, and it is the opposite way round on most other boards.
Score across the narrow neck between the two pads with a sharp craft knife, two or three light strokes rather than one hard one, and check with a multimeter that VCC no longer reads continuous to either signal pin. It is 0.25 mm wide, so the cut is small; take the board out of the circuit first.
You have taken away the only pull-ups on the bus. I²C devices can pull a line down and never up, so with no resistor to VCC both lines drift and no exchange is recognised. Bridge the jumper again with a blob of solder, or fit your own resistors — 4.7 kΩ from SDA to VCC and the same from SCL to VCC.
It moved rather than vanished. It is at 0x45 now, and your sketch is still asking for 0x44. Pass the new address to begin — sht31.begin(0x45) in Adafruit's library — and it comes straight back.
A third of a milliamp. R3 is still pulling ADDR down to ground, so bridging the pads puts VCC across that 10 kΩ resistor permanently — about 0.33 mA at 3.3 V. Irrelevant on USB, and worth knowing if the project is on a battery.
Four wires, one library, one sketch, and a number on the serial monitor.
The first reading →Edit this page — content/books/sht31/the-two-jumpers.mdx
Questions about this product
See what other owners have asked, and read their solutions.
SHT31 Temperature and Humidity Sensor
Loading discussions…
Discuss this article
Ask about this page. The answer stays here, on the page it belongs to, for whoever hits the same wall next.