Notes on SDI-12, Specification v1.4
Overview
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.
Connection Details
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 |
While a series of bits is being transmitted on the dataline, the voltage level on that line might look something like this:
For more information, and for a list of commands and responses, please see SDI-12.org, official site of the SDI-12 Support Group.