SDI-12 USB adapter coming
August 11, 2015 1 Comment
Update:
These adapters have been extensively tested to work excellently and I have them in stock. Buy one from my square store or at inmojo market. Click here to go to the SDI-12 USB adapter’s own webpage to find manual, data logging scripts and more.
Original post:
I have had a very busy summer of 2015. Hosting a national workshop, attending conference, doing projects etc. So the only time I had for making new gadgets was on an airplane flying back from a conference. I managed to keep myself awake for enough time to make this 😀
What is it?
It is a USB adapter that can read SDI-12 sensors. All you need is a computer, with any operating system. A raspberry pi will do too. FYI, SDI-12 is a standard for sensors and data loggers. You can find the SDI-12 specification here:
http://www.sdi-12.org/specification.php
SDI-12 is very popular among agricultural research, including monitoring soil, water, sun light etc.
You can find SDI-12 sensors in a lot of companies that make and sell sensors for soil and water monitoring such as Decagon, Ponsel, AquaCheck etc. These sensors are expensive, ranging from 100 USD to several thousand USD, depending on what they measure but they are all rugged for deployment in the field for continuous monitoring.
Photo credit Decagon
I have been doing SDI-12 sensor integration in data loggers for a few years. I have designed an Arduino shield that has an adapter to directly talk with SDI-12 sensors. It is a great success. You can easily add SDI-12 sensors to your Arduino data loggers. But you still need an Arduino to communicate with an SDI-12 sensor. What if you just want to log data with a program on a computer, or you start from raspberry pi and want to add SDI-12 sensors to your existing raspberry pi project? Enter the SDI-12 USB adapter:
For those that aren’t familiar with this protocol, here is a short introduction:
An SDI-12 bus is a serial bus with one communication wire. There is a master, usually the data logger. There are multiple slaves each having a unique address from ‘0’ to ‘9’, then ‘A’ to ‘Z’ and finally ‘a’ to ‘z’. So you can have up to 62 devices all connected to one wire. There will also be a power wire of nominal 12V and a ground. The sensors that are not addressed automatically go to sleep to preserve data logger’s battery.
This protocol is different from the serial port (more specific TTL UART, the one you find on your arduino). There are additional signalling/timing that the serial port doesn’t have. There are also retries that the serial port doesn’t have. A data logger that reads SDI-12 sensors costs hundreds to thousands of USD and is usually not very open to hacks etc. that we see in the Arduino world.
I’ve designed shields (some are custom designed for clients so I’m not showing them here) and dongles that can talk with SDI-12 sensors and they are popular on inmojo market. But, I still want more simplicity for broader impacts. So while I was sitting on the airplane, I made some modification to my dongle and added USB to it. I also removed most connectors and only kept one screw terminal block for one sensor (for more you have to solder their leads together). To use it, just connect the SDI-12 sensor on the right side and plug this into the USB port of your computer. Then you can use your favorite terminal program to send it commands, change its addresses, get measurements etc. I’ve even written some macros for my favorite terminal program so simple inquiries can be done by button pushes. Here is a look at the board:
It is pretty small. About 1″ by 2″. Today I added a pull-down resistor to the board and pushed order at oshpark.com
I order my smaller boards from them because they are domestic and cheap for small boards (3 copies for $5 per sq. in.)
I will be able to get the board back and build it before the semester starts. Will post more stuff soon.
Here is a link to the adapter’s own webpage.