Basic SDI-12 commands and responses
After wiring as mentioned above, I used pyserial-miniterm
to find the sensor and connect to it (any serial terminal should work). I also added echo
to view the commands I type to send. I noticed I receive the response immediately after typing !
at the end of the command to send.
Here is what I saw on the terminal. The EXO3s Multi-parameter Sonde shows up as a USB port with description:
/dev/cu.usbserial-D30FEU73 'FT231X USB UART - FT231X USB UART'
uma@Umas-MacBook-Pro-2 ~ % pyserial-miniterm -e
— Available ports:
— 1: /dev/cu.BLTH ‘n/a’
— 2: /dev/cu.Bluetooth-Incoming-Port ‘n/a’
— 3: /dev/cu.usbserial-D30FEU73 ‘FT231X USB UART - FT231X USB UART’
— Enter port index or full name: 3
— Miniterm on /dev/cu.usbserial-D30FEU73 9600,8,N,1 —
— Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H —
␀?!0
0!0
0I!013YSIIWQSGEXOSND100
0M!00629
0
0D!0
0D0!0+0.098+22.783+5.50+6.87
0D1!0-7.13+83.10+7.16+5.95
0D2!0+1.22+12.41
0D3!0
Breaking it down -
I used this website to look up SDI-12 commands since it’s easy to read.
command | response | interpretation |
---|---|---|
?! | 0 | Address Query: 0 is the address |
0! | 0 | ACK: 0 is the address |
0I! | 013YSIIWQSGEXOSND100 | Identification: 0 sdi-12 sensor address; 13 sdi-12 version number; YSIIWQSG vendor identification; EXOSND sensor model; 100 sensor version |
0M! | 00629 | Measure command: 0 sdi-12 sensor address; 062 time is seconds until data available; 9 number of value to expect after 62 seconds (0 will be rxd to indicate measurement is done) |
0D0! | 0+0.098+22.783+5.50+6.87 | Send Data command from channel 0 : 0 sdi-12 sensor address; 0.098 value 1; 22.783 value 2; 5.50 value 3; 6.87 value 4 |
0D1! | 0-7.13+83.10+7.16+5.95 | Send Data command from channel 1: 0 sdi-12 sensor address; -7.13 value 5; 83.10 value 6; 7.16 value 7; 5.95 value 8 |
0D2! | 0+1.22+12.41 | Send Data command from channel 2: 0 sdi-12 sensor address; 1.22 value 9; 12.41 value 10? |
Next Steps
The next step is understanding this data. Some questions that came up after getting this data –
- What do the values mean?
- In what order are they being sent?
- Can I configure them and choose which reading is sent first?
- Does the position of the sensors inside the sonde matter?
After having a little back and forth with the YSI support team, I understand I would need to use their Kor Software and along with their DCP Signal Output Adapter to configure the data frames being sent from the sonde. My next post will be about my discoveries using the Kor software + DCP SOA with the EXO3s.