Just made more SDI-12 miniUART modules
March 5, 2026 Leave a comment
I recently sold out all the SDI-12 miniUART modules from the last batch. I designed this module for others to easily incorporate SDI-12 into their system. With new orders coming in, I immediately made one new batch of 100 modules. Here they are:

Each panel contains 20 modules. I assembled a total of 5 panels, so 100 modules! I used a different programmer to flash the firmware onto these modules via the 3*2 header pattern. But I also needed to test these modules against an actual SDI-12 sensor. Last time I made a batch of these, I broke the modules out into single modules to test them one at a time on my regular flash-test jig. It was a bit difficult to secure. So this time I made a new tester with 6 pogo pins to connect to the 3-pin headers on the sides of the module. I don’t have to break the modules into singles and the jig was easier to use:

Because how I designed the modules, the mounting hole is on a 0.1″ pattern so I just drilled through one solder hole on the perf board and added a standoff to make alignment easier. I should have moved the pogo pins further up to possibly have space for the other mounting hole. Oh well!

At this angle, you can see the pogo pins on the right side of the board. So I just line up the standoff against the top-left mounting hole and press down to connect to the pogo pins, then let the MicroPython script running on my raspberry pi pico test SDI-12 communication.
Here is a simplified script:
from time import sleepfrom machine import UART,Pinuart0=UART(0,baudrate=9600,tx=Pin(0),rx=Pin(1))i=0while (True): sleep(0.5) uart0.read(uart0.any()) # Flush input uart0.write(b"?!") sleep(0.5) reading=uart0.read(uart0.any()) if b'\r\n' in reading: print(i,reading) i+=1
What the script does is to send ?! to the sensor so the sensor will identify itself such as 1\r\n or if the module can’t talk to the sensor, it will not print anything. In addition, a number is printed before the response such as 2 1\r\n then 3 1\r\n etc. so you can tell whether the current board is responding. Just remember the last number from the last module you tested. If the new module you’re testing works, a larger number will be printed along with the response.
You can see how easy it is to start a project with my module and MicroPython. It really won’t take more than a few lines of code.






