Skip to content
6mil-LabsPublic

Repository files navigation

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.

Releases

Packages

Contributors