Page 1 of 1

Wireless Ultrasonic Tank Level Meter?

Posted: Sun Jan 06, 2013 10:21 am
by wgeorge76
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.

Re: Wireless Ultrasonic Tank Level Meter?

Posted: Mon Jun 15, 2015 12:52 am
by Malster
Hi,
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;

|------------960uS------------|------------960uS------------|------480uS------|------480uS------|


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!

Cheers,

Malster

Re: Wireless Ultrasonic Tank Level Meter?

Posted: Thu Mar 03, 2016 11:59 am
by jonoxer
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.

Cheers

Jon

Re: Wireless Ultrasonic Tank Level Meter?

Posted: Sun Nov 11, 2018 10:54 pm
by TheoV
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.

Re: Wireless Ultrasonic Tank Level Meter?

Posted: Sun Feb 24, 2019 10:03 am
by bjoern777
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.