tmp108
PublicLoading…
TMP108 Qwiic
A 1" × 1" Qwiic / STEMMA QT breakout for the Texas Instruments TMP108 digital temperature sensor.
Want one assembled and tested? Buy it from 6mil Labs on Tindie — or build your own from the sources here.
Driver: tmp108 — a no_std Embedded Rust driver with blocking and async
APIs, ALERT threshold support and type-safe address constructors (source ·
docs).
The TMP108 is a 12-bit I²C/SMBus temperature sensor with a dynamically-programmable alert window, packaged in a 6-ball WCSP. This board brings it out to two Qwiic connectors for daisy-chaining and a 0.1" header for breadboard use.
- Resolution: 12 bits (0.0625 °C)
- Accuracy: ±0.75 °C max (−20 °C to +85 °C), ±1 °C max (−40 °C to +125 °C)
- Supply: 1.4 V to 3.6 V (3.3 V from the Qwiic bus)
- Current: 6 µA max, active
- Interface: I²C / SMBus, four solder-selectable addresses
- ALERT: programmable over/under-temperature window, broken out to the header
Board
| Dimensions | 25.4 × 25.4 mm (1.0" × 1.0"), 1 mm corner radius |
| Layers | 4 (F.Cu · In1.Cu GND · In2.Cu 3V3 · B.Cu) |
| Thickness | 1.6 mm |
| Finish | Lead-free HASL |
| Mounting | 4 × 2.54 mm holes on a 20.32 mm (0.8") grid |
| Signal track width | 0.1524 mm (6 mil) |
| Power track width | 0.4572 mm (18 mil) |
Connectors
J1, J2 — Qwiic (JST SH, 1 mm pitch, 4-pin right-angle SMD). Electrically identical and wired in parallel, so the board can sit anywhere in a Qwiic chain. The connector and pinout are the same as Adafruit STEMMA QT, so either cable works.
| Pin | Signal |
|---|---|
| 1 | GND |
| 2 | 3V3 |
| 3 | SDA |
| 4 | SCL |
J3 — 1 × 5 0.1" header. Not populated by the fab; solder your own.
| Pin | Signal |
|---|---|
| 1 | GND |
| 2 | 3V3 |
| 3 | SDA |
| 4 | SCL |
| 5 | ALERT |
ALERT is open-drain and has no pull-up on this board — provide one on the host
side if you use it.
I²C address
The TMP108 address is set by the A0 pin. Two jumpers select between the four
options; the silkscreen prints the resulting address next to each pad.
| Address | A0 tied to | Jumper setting |
|---|---|---|
| 0x48 (default) | GND | JP2 pads 1–2 bridged (factory default) |
| 0x49 | 3V3 | JP2 pads 2–3 bridged |
| 0x4A | SDA | JP1 pads 1–2 bridged |
| 0x4B | SCL | JP1 pads 2–3 bridged |
Cut the existing JP2 bridge before closing any other option — only one may be connected at a time.
R3 (10 kΩ) sits between A0 and 3V3 and keeps the pin from floating while a jumper is
open. Note that in the default configuration it also draws roughly 330 µA through the
JP2 GND bridge, which is far more than the sensor's own 6 µA. If you are chasing
microamps, cut JP4 and remove R3, then hard-strap A0 with JP1/JP2 alone.
Jumpers
| Ref | Default | Function |
|---|---|---|
| JP1 | open | Ties A0 to SDA (0x4A) or SCL (0x4B) |
| JP2 | 1–2 closed | Ties A0 to GND (0x48) or 3V3 (0x49) |
| JP3 | closed | Connects the on-board 10 kΩ SDA/SCL pull-ups (R1, R2) to 3V3 |
| JP4 | closed | Powers the red LED (D1) via R4 |
Cut JP3 when the bus already has pull-ups elsewhere. Every board added to a Qwiic chain puts another 10 kΩ pair in parallel, and past a handful of boards the combined pull-up starts to exceed what the bus drivers can comfortably sink.
Cut JP4 to remove the LED current in battery-powered use — roughly 1.4 mA, assuming a 1.9 V forward drop across D1 and the 1 kΩ R4. The sensor itself only needs 6 µA, so the LED dominates the board's consumption by more than two orders of magnitude.
Test points
Six unrouted test pads were present in earlier revisions of this design and have been
removed. Probe the 0.1" header (J3) instead — it exposes GND, 3V3, SDA, SCL and
ALERT.
Bill of materials
| Ref | Value | Package | LCSC |
|---|---|---|---|
| U1 | TMP108 | DSBGA-6 (YFF), 0.5 mm pitch | C129486 |
| C1 | 0.1 µF | 0603 | C14663 |
| R1, R2 | 10 kΩ | 0603 | C25804 |
| R3 | 10 kΩ | 0603 | C25804 |
| R4 | 1 kΩ | 0603 | C21190 |
| D1 | Red LED | 0603 | C2286 |
| J1, J2 | Qwiic JST SH 1 mm RA | SMD | C51940130 |
| J3 | 1 × 5 header | 2.54 mm THT | — |
Repository layout
tmp108.kicad_pro KiCad project
tmp108.kicad_sch Schematic
tmp108.kicad_pcb Board layout
6milLabs.kicad_sym Local symbol library (TMP108)
SparkFun-Qwiic.kicad_sym Local symbol library (Qwiic logo)
SparkFun-Qwiic.pretty/ Local footprint library (Qwiic logo, various sizes)
sym-lib-table Project symbol library table
fp-lib-table Project footprint library table
Fabrication outputs are generated into production/ and are not tracked.
Opening the project
Designed with KiCad 10 (generator_version "10.0"). Older releases may refuse to
open these files or drop features on load.
6milLabs.kicad_sym (the TMP108 symbol), SparkFun-Qwiic.kicad_sym and
SparkFun-Qwiic.pretty/ are vendored in this repository and resolve through
${KIPRJMOD}, so a fresh clone needs no path fixing.
One dependency is not vendored: the SparkFun KiCad libraries, installed from the
Plugin and Content Manager. Symbols come from PCM_SparkFun-Aesthetic, -Capacitor,
-Connector, -Jumper, -LED, -PowerSymbol and -Resistor. Only
PCM_SparkFun-Aesthetic and PCM_SparkFun-Connector supply footprints — the passives
use the SparkFun 0402 symbols with their footprints overridden to the standard KiCad
Resistor_SMD, Capacitor_SMD and LED_SMD 0603 variants.
Install them from the PCM ("Libraries" tab, search "SparkFun"), then close and reopen
KiCad — on KiCad 10 the libraries are not visible until you restart. Without them the
schematic still opens and renders from its cached symbols, but ERC reports
lib_symbol_issues and you cannot edit or update those symbols from the library.
The board itself only needs the two PCM footprint libraries above, since everything else is either vendored or part of the stock KiCad footprint set.
Manufacturing
Fabrication files are produced with the Fabrication Toolkit plugin; its
settings live in fabrication-toolkit-options.json. Running the plugin writes a gerber
archive, bom.csv, positions.csv, designators.csv and netlist.ipc into
production/, formatted for JLCPCB.
Order as a 4-layer, 1.6 mm board with lead-free HASL.
J3 is marked DNP and is left out of the generated BOM — solder your own header if you
want it.
Software
tmp108 is a platform-agnostic Rust driver for this sensor, built on
embedded-hal / embedded-hal-async and no_std. It offers blocking (Tmp108) and
async (AsyncTmp108) APIs, ALERT threshold access, one-shot conversions, and type-safe
constructors for all four I²C addresses.
[dependencies]
tmp108 = "0.5"
Each constructor corresponds to a jumper setting on this board, so the address you solder is the constructor you call:
| Jumper setting | Address | Constructor |
|---|---|---|
| JP2 pads 1–2 (default) | 0x48 | Tmp108::new_with_a0_gnd(i2c) |
| JP2 pads 2–3 | 0x49 | Tmp108::new_with_a0_vplus(i2c) |
| JP1 pads 1–2 | 0x4A | Tmp108::new_with_a0_sda(i2c) |
| JP1 pads 2–3 | 0x4B | Tmp108::new_with_a0_scl(i2c) |
AsyncTmp108 exposes the same four constructors. The programmable alert window maps to
set_high_limit / set_low_limit, available in both the blocking and async APIs.
API documentation is on docs.rs; the source is on GitHub. The driver is MIT-licensed and developed separately from this board — it works with any TMP108, not just this one.
License
Copyright (C) 2025-2026 6mil Labs.
This source describes Open Hardware and is licensed under the CERN Open Hardware
Licence Version 2 – Strongly Reciprocal (CERN-OHL-S-2.0). The full text is in
LICENSE.
You may redistribute and modify this source and make products using it under the terms of the CERN-OHL-S v2. This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-S v2 for applicable conditions.
Source location: https://github.com/6mil-Labs/tmp108
CERN-OHL-S is strongly reciprocal: if you convey a product made from this source, or a modified version of the source, you must make the complete corresponding source available under the same licence (§3.3, §4).
Designed by Felipe Balbi.
Third-party content
The vendored SparkFun-Qwiic.kicad_sym and SparkFun-Qwiic.pretty/ files, and the
PCM_SparkFun-* symbols cached in tmp108.kicad_sch, are derived from the
SparkFun KiCad Libraries, copyright SparkFun Electronics and released under
the Creative Commons Attribution 4.0 International licence.
Those files remain under CC BY 4.0. Under CERN-OHL-S they are Available Components (§1.7) and keep "their own applicable licences" (§3.3(d)) rather than being relicensed by this project.
No comments yet. Be the first to ask about this board.