Wireless Ultrasonic Tank Level Meter?

315MHz and 433MHz wireless connections are very commonly used by consumer electronics including weather stations, home automation remote controls, power consumption meters, car alarms, and also many DIY projects.
Post Reply
Joined:Sun Jan 06, 2013 9:42 am
Wireless Ultrasonic Tank Level Meter?

Post by wgeorge76 » Sun Jan 06, 2013 10:21 am

Have been looking at the Weather Station Receiver that uses 433Mhz in the Practical Arduino book, thinking I could use that for other 433Mhz wireless devices. So got a Wireless Ultrasonic Tank Level Meter (with Temperature Sensors) from Jaycar, XC-0331 and a Freetronics ASK Recevier Shield @ 433.92Mhz, v1.1.

Had sketch problems with Arduino 1.0+ so I have worked with Arduino 0022.

Unfortunately, I am stuck. Could there be a frequency difference, one 433Mhz and the other 433.92Mhz? (The frequency for the Tank Level Meter has only printed 433Mhz). Would the Arduino sketch that gets the information from the Weather Station, work for the Tank Level Meter? If not, is it possible (just with Arduino at the moment), to get some data from it?

I appreciate any information,
Thank you.

Joined:Mon Jun 15, 2015 12:23 am

Re: Wireless Ultrasonic Tank Level Meter?

Post by Malster » Mon Jun 15, 2015 12:52 am

Late response I know, but in case someone else comes across it;

The 2 protocols are completely different. The XC-0331 uses a pulse-width method of sending 1's & 0's and all nibbles (18 of them) are bitswapped, ie; 1100 sent over the air is bitswapped to 0011.

Logic 0 = 480uS
Logic 1 = 960uS

Thus 1100 would be sent as;


Nibbles are;

Bits are set MSB first, full sentence is 18 nibbles. Values below are AFTER bitswap.

Nibble Function
0 & 1 Sync [ 0xAF ]
2 & 3 Serial# Random Serial number choses and battery connection time.
4 & 5 DeviceID [0x11] ??
6 -8 Depth_Med, depth_High, Depth_Low (Value in hex =cm, Fill with 5DC on invalid, range 0-15M)
9 Low Battery (0 = OK, any other value = Low)
10 Temp_Low
11 Transmit Interval ( Bit 7=0 180S, Bit 7 =1 30S, bit 4-6=1 5S)
12 &13 Temp_M, Temp_L (in hex *10, Max 1000, with 400 offset) If invalid read, filled with 3E8
14&15 Rain H, L (Value 0-256) not used in XC-0331
16&17 CRC (includes nibbles 2-15 only)

CRC is XOR of values from BYTES -0 to 7 ie;

Mycrc = (((((((byte0^byte1)^byte2)^byte3)^byte4)^byte5)^byte6)^byte7)
= Byte8 (bitswapped)

Hope it helps others!



User avatar
Freetronics Staff
Freetronics Staff
Joined:Sat Oct 15, 2011 11:31 am
Location:Melbourne, Australia

Re: Wireless Ultrasonic Tank Level Meter?

Post by jonoxer » Thu Mar 03, 2016 11:59 am

Hi Malster,

I just came across this post and wondered if you managed to get the decoding working. You obviously did a lot of work figuring out the protocol, so did you take it further than that?

I'd love to see an update on this project.



Joined:Sun Nov 11, 2018 10:51 pm

Re: Wireless Ultrasonic Tank Level Meter?

Post by TheoV » Sun Nov 11, 2018 10:54 pm

If sombody is still interested in the full decoding and a working implementation for an arduino or ESP32 just check out on https://github.com/theovassiliou/WTLMReceiver

Would be happy if somebody could validate the solution.

Joined:Sun Feb 24, 2019 9:47 am

Re: Wireless Ultrasonic Tank Level Meter?

Post by bjoern777 » Sun Feb 24, 2019 10:03 am

Hello theov,

i have had a look to your project. It's very cool, so i'll test it. A question, you wrote, that supported hardware is a TTGO LORA32 868/915 mhz ESP32 LoRa OLED, but the TS-FT002 provides 433MHz signals. How does it work?

Thank you for a short explanation.

Post Reply