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.

Want USB AND UART/Serial both?

While it is impossible to have both USB and UART/Serial interfaces simultaneously, you CAN switch between them with the UART-version of the SDI-12 adapter and the help of an extra adapter (for USB interface).

SDI-12 USB adapters on a map

[UPDATED] I’ve been thinking about making a map of where the SDI-12 USB adapters have gone to. Now it’s finally taking shape, thanks to my son. It includes locations I shipped SDI-12 USB adapters to between 2019 and March of 2022. I’ll get more locations added to it for later this year but too bad PayPal doesn’t keep records older than 2019. I am only putting the city and country for each package, without postal code or any details of where. In case you wish something removed or corrected, please drop me a message. If you want to leave a message for others to see, you are very welcome to do so! The map may not work on some devices but I’ll migrate it to google map sometime soon.


My own online store is open!

So after some research and putting in some work, I now have my own online store! It’s powered by Square and has a fairly simple interface: A few items that I sell and shipping costs depending on your shipping address. I currently have 3 regions with different shipping costs: within USA, Canada, and rest of world. I will add more regions, I believe up to 6, each with different shipping costs and try my best to get the costs to be more accurate according to the quantity ordered. Anyway, here it is! Please let me know if there’s something I can improve on. If this goes well, I can retire the dated marketplace and the Paypal purchase links.

Reading SDI-12 sensors with your Android smartphones

So if you want to get started with your SDI-12 sensors quickly, you can use your Android smartphone as a display and install a serial port app. Then within a minute, you are reading your SDI-12 sensors already! Watch my short tutorial for Android phones. I’ll investigate how to do this on an iphone and ipad as well and post my findings.

Reading SDI-12 sensors with an Android Smartphone

By the way, those 6 customizable buttons are really useful. You can long press it to edit both its name and value to a command. Then you can just tap the buttons instead of typing. You can even type in both M command that starts the data acquisition and the D command that reads back the data. You will need some delays between the commands though. The following is how I configured my serial port app for a better experience with SDI-12 sensors:

Here is the serial terminal program:

Impact of global semiconductor shortage

As many already have noticed, there is a global semiconductor shortage. Many common integrated circuits such as the ATMEGA328P-AU processor featured on most of my SDI-12 USB adapters are simply out of stock for the foreseeable future or until later 2022.

As you can see, this is going to be a problem for many businesses big and small, including my line of SDI-12 USB adapters. Luckily I grabbed enough parts last year so I still have over 200 of them that will last for a short while before I run out.

Processors (200), USB chips (200), and 100 blank boards (boards can be reordered quickly) are photographed here. Hope this lasts for a while. If you are doing your own projects, unfortunately you won’t be able to purchase ATMEGA328P-AU or ATMEGA32U4-MU etc. until they are back in stock. Try the DIP version of 328P. They are still in stock.

As a response, I will temporarily focus on only producing the basic SDI-12 USB adapter and stop producing the SDI-12 USB + Analog adapter (red) that requires a processor. You CAN still get the hi-res analog features with a basic SDI-12 USB adapter and an analog input extension board. The combined cost is the same as the red adapter.

I can still produce the SDI-12 USB + GPS adapter although it is on low demand. If “worse comes to worse” and I run out before I can get restocked, I have over 100 ATMEGA1284P-AU processors that can be used to produce the SDI-12 USB + GPS adapter, just that I won’t attach any GPS and will sell those as basic SDI-12 adapters without extension ports. Or maybe I will redesign it to have an extension port.

SDI-12 USB+Analog adapter vs stacking basic adapter with Analog extension board

If you wonder the pros and cons of these two options, here is a video for you.

SDI-12 USB+Analog adapter:

Pro: small form factor that is easy to work with
Con: no digital inputs for digital pulse from rain gauge or flow meter, no extension

SDI-12 USB adapter stacked with Analog extension board:
Pro: extendable with up to 4 hi-res analog addons and other addons such as extra SDI-12 terminals, 4-20mA sensor addon (coming out soon), and possibly a future GPS addon via the 6-pin header.
Con: device gets taller with the extension boards

Starting a weather station at

So this summer I’m thinking about starting a weather station at, after someone contacted me about possibly doing theirs with a MEGER Group weather station. So in order to post your own weather data, you need to register and add a device. There is a relatively old (3yr) tutorial on raspberry pi. Much has changed but it may still be useful if you go through it just to see what will be involved:

Anyway, here is a more updated but short version:

  1. Go to and register an account:
  2. Under “My Profile” you will find my devices:

3. Add a new weather station. Choose device as Raspberry pi and let the system choose default values for the rest. I gave a 5ft weather station height. Probably higher is better but again I don’t have a weather station yet.

Now under your devices you will se a device ID and a key. You will be able to use this information to post your data. Here is an example of the posting address that you can put in Python or just in your web browser:
Just replace XXXX and YYYY with your own wunderground weather station information and say post your humidity data, place the whole line in your web browser and you should get a success if everything is correct. You could add more more data with the & symbol between them, such as humidity=40&tempf=70 to post both humidity and temperature (in Deg F)

Here is a recent post that has all the different weather information you could post:

So my next step is to get some outdoor temperature and moisture sensors whether they are compatible with my SDI-12 adapter or not. I can run a separate Python script to post to and to for soil data. Stay tuned!

How do you analyze soil data?

That was actually a question from one of my customers. To be honest, I’m a physicist and engineer. I wish I knew more about soil science and agriculture but I’m open to anyone who is willing to share some knowledge. My basic understanding is if you can measure dielectric permittivity with the sensor. Then you can calculate volumetric water content with formulas the sensor manufacturers provide, for a few typical types of soil. Or you make your own calibration with your own soil, such as using a different method to measure VWC (baking the soil dry?) and correlate with dielectric permittivity so you develop your own formula. More specifically the question was about METER Group Teros 12 sensor. If you use this sensor or something similar, could you share a few lines of how you get VWC and/or other data from it? Any reference materials to point to? Thank you!