South Dakota State University
South Dakota Climate and Weather

HOW TO: Make Stevens Hydraprobe soil temperature and moisture sensor (SDI-12)
work with CR10X datalogger

Created: Chirag Shukla
Status: Original author
Date: 06/30/2009
Audience: General/Novice

Revision History: 0.0 (Initial Draft)
Purpose: Stevens Water Monitoring System manufactures soil monitoring sensor called the Hydraprobe II that support SDI-12. These sensors measure soil temperature, soil moisture, soil salinity and conductivity and are used with variety of dataloggers by several organizations that study climate and weather. CR10X and CR1000 dataloggers made by Campbell Scientific are used on weather stations managed by South Dakota State Climate Office for weather and climate monitoring. Hydraprobe II is also used with the dataloggers in production setting. The biggest advantage of using SDI-12 hydraprobes is that a multiplexer is no longer needed. Hydraprobe analog has 7 wires and required a multiplexer. Hydraprobe II has 3 wires and does not need a multiplexer. Hydraprobe analog reported raw voltages, generally. Using P205 instruction in CR10X/CR1000, meaningful results could be deduced. Hydraprobe II reports meaningful data directly using P105 SDI-12 instruction in CR10X/CR1000.
Usage: This "How To" is free to use and distribute with proper citation/credits and without altering this original document. If alterations need to be made, please make the updated version freely and publicly available. Add your name, date of revision, and revision history/number on the top of the original author's header before distributing the updated document. Also make available citiation of orginal document so that new users can review the updates made to this document. Any documentation derived from this document should be made available to general public at no cost to them (free)
Note: Use instructions at your own risk. The author will not be liable for any losses or damages resulting from this documentation
Keywords: Campbell Scientific, CR10X, CR-10X, CR1000, CR-1000, Stevens Water, hydraprobe, hydraprobe II, SDI-12, datalogger, soil temperature, soil moisture

Instruments and materials:

  1. CR10X datalogger [ Purchased from Campbell Scientific ]
  2. PS-100 12v/7Ahr battery [ Purchased from Campbell Scientific ]
  3. SC-12 cable [ Purchased from Campbell Scientific ]
  4. Hydraprobe II (SDI-12) [Purchased from Stevens Water Monitoring System]
  5. Loggernet or PC208 or PC200W [PC200W can be downloaded from Campbell's site for free]
  6. SCWin software [Download from Campbell's site for free]

Preliminary reading:

  1. CR10X manual, CR10X overview or CR1000 manual
  2. Hydraprobe manual
  3. Hydraprobe and CR10X connection document

Pre-installation steps:

    Case: CR10X was used for testing in the field with several sensors including 5 hydraprobes (analog). Analog hydraprobes had 7 wires and required the use of a multiplexer in production settings. The new Hydraprobe II supports SDI-12 communication and has only 3 wires. Connecting the new hydraprobes requires fewer channels and reports meaningful data relatively easily. Below are the pre-installation steps.

  1. Read the hydraprobe and CR10 connection document to familiarize yourself with the steps
  2. CR10X, in production settings, will access each hydraprobe using a unique address. Therefore, each hydraprobe should have a unique address. By default, hydraprobe's address is zero
  3. Use SCWin to create a program for CR10X containing an SDI instruction. Ensure that the SDI-12 command is aM!. Save the program as SDI. SCWin will automatically create a file called SDI.DLD
  4. Prepare your software (Loggernet, in my case) and connect to CR10X
  5. Upload the SDI.DLD program
  6. Disconnect and power down CR10X
  7. Hydraprobe has 3 wires: Blue, black and red
  8. Connect red wire to 12v, blue to C8 and black to G
  9. Power up the datalogger and connect
  10. Visit the datalogger's terminal window
  11. Press Enter a couple times to see a * prompt
  12. Following are the commands to type along with explanation. The command to type is in bold. Hit Enter after typing the 8X command. Reply from the command is typed in blue italics.
    * 8X Entering SDI-12
    (This allows the control to be passed over to port C8, assuming that is where the blue wire is connected. If the blue wire is connected to C7, type 7X instead)
    ?! 0
    (This ?! command asks the hydraprobe for its current address. The address returned is 0, to the right of the command)
    0A5! Exiting SDI-12
    (This command translates to "Change address of the probe from 0 to 5". To change an address to, say, 1, type 0A1! instead)
    * 8X Entering SDI-12
    5M! 50029
    (The 5M! command outputs three items: 5 - address of the probe, 002 - seconds to return data, 9 - # of parameters returned. This indicates that sensor with address 5 will return 9 parameters in 2 seconds. If the address of the probe is 1, type 1M! instead. If the address of the probe is 2 and if we type 5M!, automatically SDI-12 mode will exit and return us to * prompt. Typing 8X will bring us back to SDI-12 prompt)
    (The 5XM! command outputs the parameters the probe is scheduled to report. In this case, the sensor 5 will output parameters titled H, J, F, G, O, K, M, L and N. The meaning of each parameter alphabet is included in the table below)
    5XM=FHIJ! Exiting SDI-12
    (The 5XM=<parameter-alphabets>! command will reset the parameters hydraprobe will measure. In the command above, sensor with address 5 is asked to measure F, H, I and J parameters where F is soil temperature (C), H is soil moisture (wfv), I is soil salinity (gNaCl/liter) and J is soil conductivity (S/meter). Those are the 4 parameters used in this example)
    * 8X Entering SDI-12
    ?! 5
    5M! 50024
    5XM! 5FHIJ
    ! Exiting SDI-12
    (The above set of commands test if our settings were stored correctly. First we enter the SDI-12 mode. Using ?!, we determine the address of the probe. Using 5M!, we check the number of items returned by probe 5 and the time in seconds it would take. In the example above, 4 parameters would be returned in 002 seconds from probe 5. The parameters can be known by typing 5XM!, which provides us FHIJ as the parameters that probe 5 will return. Use the table below to learn what each parameter alphabet means.)
Alphabet Description Units
A Voltage 1 Volts
B Voltage 2 Volts
C Voltage 3 Volts
D Voltage 4 Volts
E Voltage 5 Volts
F Soil temperature Celsius
G Soil temperature Fahrenheit
H Soil moisture wfv
I Soil salinity g NaCl/liter
J Soil Conductivity (temp. corrected) Siemens/meter
K Real dielectric constant  
L Real dielectric constant (temperature corrected)  
M Imaginary dielectric constant  
N Imaginary dielectric constant (temperature corrected)  
O Soil conductivity Siemens/meter
P Diode temperature Celsius
Q Soil Water Conductivity (temperature corrected) Siemens/meter
R ADC Reading 1  
S ADC Reading 2  
T ADC Reading 3  
U ADC Reading 4  
V ADC Reading 5  


    Case: CR10X and SDI-12 hydraprobes are fairly easy to wire. The blue wires of all hydraprobes go to a control port. The red wires of all hydraprobes go to 12v. To conserve power, red wires should be moved to SW12v along with creating a jumper between a control port and SW12v-CTRL. All black wires from hydraprobes should go to ground on CR10X. This way, only Ground, 2 control ports, SW12v and SW12v-CTRL are used.

  1. Ensure that the battery is good. Test the battery under load to make sure battery is not a problem source
  2. Ensure that the solar panel is wired correctly with the charging regulator/battery
  3. Hydraprobe has 3 wires. Connect as below
    Channel Wire color
    G Black
    T1 Blue
    T2 Red
    T1 is one terminal strip where all the blue wires are attached
    T2 is another terminal strip where all the red wires are attached
  4. Connect hydraprobe #2's wires
    Channel Wire color
    G Black
    T1 Blue
    T2 Red
    and so on...
  5. Jump a wire from C6 to SW12v-CTRL on CR10X
  6. Red wires from all hydraprobes will go to a terminal strip (marked as T2 in wiring tables above). Short the terminal strip to ensure that power going to the terminal strip also powers up all channels of the terminal strip.
    Terminal Strip
  7. Blue wires from all hydraprobes will go to a terminal strip (marked as T1 in wiring tables above). Short the terminal strip to ensure that all blue leads are accessible
  8. Connect terminal strip T2 and SW12v with a wire
  9. Connect terminal strip T1 and C8 with a wire
  10. Logic: At every X minutes,
    * Activate port C6 to allow power to the probes
    * Provide excitation with delay
    * Take measurements (aM!) from each sensor
    * Deactivate port C6

Here's a sample code:

; each probe has 3 important wires. red-12v, blue-c8,
; black-g
; Connect all red wires to terminal strip
; Connect all blue wires to terminal strip
; Connect a wire from blue's terminal strip to C8
; Connect a wire from red's terminal strip to SW12V
; Connect a wire from C6 to SW12V-CTRL
; Turn ON C6 every few minutes, take SDI-12 measurements
; SDI-12 hydraprobes have all been given an ID of 1 to 5
; beforehand. Each probe will also be configured to measure
; only 4 variables: Soil Temp(C), Soil Moisture (water frac
; by volume), Soil Salinity (g NaCl/liter) and Soil
; Conductivity (Siemens/meter).Access each probe and record
; the data

; every 14th minute in a 15 minute interval, access the
; soil moisture sensors
; i.e. 0:14, 0:29, 0:44, 0:59
28:  If time is (P92)
 1: 14       Minutes (Seconds --) into a
 2: 15       Interval (same units as above)
 3: 30       Then Do

; turn C6 ON and power up the sensors
     29:  Do (P86)
      1: 46       Set Port 6 High

; we are not using EX3, so just provide excitation there
; we are, technically, not even providing any excitation
; we are just delaying measurement by 5 second. power up
; the sensors and wait 5 seconds before taking measurement
     30:  Excitation with Delay (P22)
      1: 3        Ex Channel
      2: 0000     Delay W/Ex (0.01 sec units)
      3: 500      Delay After Ex (0.01 sec units)
      4: 0000     mV Excitation

; take measurements
     31:  SDI-12 Recorder (P105)
      1: 1        SDI-12 Address
      2: 0        Start Measurement (aM!)
      3: 8        Port
      4: 23       Loc [ ST1       ]
      5: 1        Multiplier
      6: 0        Offset

     32:  SDI-12 Recorder (P105)
      1: 2        SDI-12 Address
      2: 0        Start Measurement (aM!)
      3: 8        Port
      4: 27       Loc [ ST2       ]
      5: 1        Multiplier
      6: 0        Offset

     33:  SDI-12 Recorder (P105)
      1: 3        SDI-12 Address
      2: 0        Start Measurement (aM!)
      3: 8        Port
      4: 31       Loc [ ST3       ]
      5: 1        Multiplier
      6: 0        Offset

     34:  SDI-12 Recorder (P105)
      1: 4        SDI-12 Address
      2: 0        Start Measurement (aM!)
      3: 8        Port
      4: 35       Loc [ ST4       ]
      5: 1        Multiplier
      6: 0        Offset

     35:  SDI-12 Recorder (P105)
      1: 5        SDI-12 Address
      2: 0        Start Measurement (aM!)
      3: 8        Port
      4: 39       Loc [ ST5       ]
      5: 1        Multiplier
      6: 0        Offset

; turn C6 OFF and power down the sensors
     36:  Do (P86)
      1: 56       Set Port 6 Low

37:  End (P95)
Each probe supplies 4 parameters (or more if the probes are configured so). I have named the locations in the program as ST1, SM1, SS1, SC1 for soil temperature, moisture, salinity and conductivity from sensor #1. Data for sensor 1 gets stored in ST1 to SC1. ST1 will hold soil temperature in Celsius. SM1 will hold soil moisture in water fraction by volume. SS1 holds salinity in grams of NaCl per liter and SC1 holds soil conductivity in Seimens per meter.


  1. Mr. Doug from Campbell Scientific for suggesting to upload a program containing SDI-12 instruction before accessing the sensor through Loggernet terminal


The views and opinions expressed in this page are strictly those of the author. The contents of this page have not been reviewed or approved by either the State Climate Office or the University.