How I am programming and testing an SDI-12 USB adapter

In case you wonder how I managed to program and test all the adapters I sell, here is a video for that:

So I made a programming jig and put it in a box. I then have two terminal programs open, one for the programming jig’s control and the other for sending test commands to the SDI-12 adapter. I plan to write a Python script to further automate this process.

Please check USPS international service alters before shopping!

I have just noticed that USPS has suspended packages to Australia when I was searching for first-class package price to Australia at and couldn’t find that option. There were no explanation so I searched around and found some news from last week:

Check the service alerts here. I can only ship USPS:

Slightly lower shipping rates for France Germany and UK

I’ve recently started selling on my square online store. This store allows more freedom in setting up shipping rates. So I’ve set up US, Canada, and rest of world. Except that the rest of the world is subdivided into many shipping regions by the USPS. So starting today I’ve just set up a slightly lower rate for first-class shipping to France, Germany, and the UK. All have very similar rates that you can check here:

Here is the link to up to 8oz of package (up to 6 adapters) to France as an example:

The USPS has the same rate for 1-8oz and then same rate for 9-16oz.

I needed a slight overhead to cover the transaction cost and currency exchange rate so I added a few dollars to the rate listed at the bottom of the list (First-class).

If you live in a country outside of US and find a cheaper rate on USPS than my “rest of the world” rate, please post a request here to have your country added to the rates. It’s a laborious work to anticipate where the shipments might go but if you make a request, I’ll make sure I do it for you.

Sentek SDI-12 soil probe troubleshooting

A number of years ago, I had an opportunity to use a Sentek SDI-12 soil probe with 16 sensor nodes in the probe. It was quite something! Lots of data to extract and lots of measurement and data commands to issue. I think that my experience with the probe helped me better understand SDI-12 protocol and ultimately helped me develop and test my SDI-12 USB adapter’s firmware. Recently one of my customers reached out to me regarding troubleshooting tips with this sensor. I felt quite interested to help and refresh my memory on how to properly use the sensor. Here are the troubleshooting tips in case you need them.

First of all, the sensor probe has multiple sensor nodes, making it require longer delays before data can be extracted from it. According to the manual, if you have 16 sensor nodes, the complete moisture measurement M! could take up to 13 seconds (first 9 sensors in the probe), then M1! could take up to 11 seconds (next 7 sensors in the probe). Salinity takes up to 23 seconds with M2! (first 9 sensors in the probe), then M3! could take up to 18 seconds (next 7 sensors in the probe). Temperature and humidity measurements are faster so they only take up to 5 seconds for all 16 sensors.

So if you have more than 9 sensor nodes, you need all measurement commands M! (AKA M0!) thru M7!. If you have 9 sensor nodes or less, you only need M!, M2!, M4!, and M6!.

What this means to you is, you must use my logging script version 1.6.x, which allows you to enter multiple measurement commands per sensor address. For instance, you have 16 sensor nodes, you want all measurements, you can enter 01234567 when asked what measurement commands to use. The ‘0’ means the M! command, which is also known as M0!. Then ‘1’ means M1! command. If you only have 9 or less sensors and you want all data, you need to enter 0246 for all measurements. But if you only want moisture and temperature nothing else, you would use 04.

Next, you want your delay between data points to be longer than these values. If you wish to save ALL data every minute, and you have 16 sensor nodes, this may be too little delay. You can try out delay between data yourself. If you see -999.999, then you need to increase your delay.

Finally, because more sensor nodes require more time before data become available, you may have to increase the serial port timeout value from 10 to a larger value, if you’re not able to obtain data from your sensor.

ser.append(serial.Serial(port=port_device, baudrate=9600, timeout=10))

This is the line you need to change the timeout. The script only waits this long after issuing a measurement command before it times out. Increasing this value will NOT slow down your data collection. The time your sensor requires to get data determines how much time is need to get your data.