Skip to content

Notes on SDI 12, Specification v1.3

Sara Damiano edited this page Aug 13, 2024 · 10 revisions

SDI-12 Specifications

SDI-12 is a communications protocol that uses a single data wire to communicate with up to 62 uniquely addressed sensors. So long as each sensor supports SDI-12, mixed sensor types can appear on the same data bus. Each address is a single character. The valid ranges are 0-9, a-z, and A-Z. Only the datalogger can initiate communications on the data bus.

It does so by pulling the data line into a 5v state for at least 12 milliseconds to wake up all the sensors, before returning the line into a 0v state for 8 milliseconds announce an outgoing command. The command contains both the action to be taken, and the address of the device who should respond. If there is a sensor on the bus with that address, it is responsible for responding to the command. Sensors should ignore commands that were not issued to them, and should return to a sleep state until the datalogger again issues the wakeup sequence.

Physical Connections:

  • 1 data line (0v - 5.5v)
  • 1 12v power line (9.6v - 16v)
  • 1 ground line

Baud Rate:

1200 bits per second

Data Frame Format:

10 bits per data frame

  • 1 start bit
  • 7 data bits (least significant bit first)
  • 1 even parity bit
  • 1 stop bit

Data Line: SDI-12 communication uses a single bi-directional data line with three-state, inverse logic.

LINE CONDITION |  BINARY STATE | VOLTAGE RANGE
-----------------------------------------------
marking    1  -0.5 to 1.0 volts
spacing    0  3.5 to 5.5 volts
transition   undefined  1.0 to 3.5 volts
      _____       _____       _____       _____       _____     spacing
5v   |     |     |     |     |     |     |     |     |     |
     |  0  |  1  |  0  |  1  |  0  |  1  |  0  |  1  |  0  | transition
Ov___|     |_____|     |_____|     |_____|     |_____|     |___ marking

For more information, and for a list of commands and responses, please see SDI-12.org, official site of the SDI-12 Support Group.