Stroud has a great SDI-12 Arduino interface. it only works with Atmega 328P based Arduinos though.
mathew, just so you are aware……the SDI-12 library will work on the Mega2560 as well. I’m using it right now to pull SDI-12 data from a Sutron Rain Weight gauge. You can only use pins that are set up for digitalPinToPCMSK calls if I remember right.
pins_Arduino.h for the Mega calls the following pins for that function.
#define digitalPinToPCMSK(p) ( (((p) >= 10) && ((p) <= 13)) || (((p) >= 50) && ((p) <= 53)) ? (&PCMSK0) : \
( (((p) >= 62) && ((p) <= 69)) ? (&PCMSK2) : \
((uint8_t *)0) ) )