Reading Wireless Air Transmitter using Arduino

Please register or login

Welcome to ScubaBoard, the world's largest scuba diving community. Registration is not required to read the forums, but we encourage you to join. Joining has its benefits and enables you to participate in the discussions.

Benefits of registering include

  • Ability to post and comment on topics and discussions.
  • A Free photo gallery to share your dive photos with the world.
  • You can make this box go away

Joining is quick and easy. Log in or Register now!

I doubt the transmitter sends a percentage for the battery level. More likely it sends XY from 2.XY volts. so "87" would be 2.87 volts. I base this on the numbers/info in post #105.
You can test this by using a battery at (say) 2.70 volts and seeing if the transmission shows 74 (V) or 90 (%). And the Teric should show Warning.
 
You can test this by using a battery at (say) 2.70 volts and seeing if the transmission shows 74 (V) or 90 (%). And the Teric should show Warning.
I just ran some tests:
VoltagePSIOutput
2.67524087
2.71723886
3.03424085

This implies it is a checksum, side note, at 2.675 my teric did not get any low voltage alerts,
 
I just ran some tests:
VoltagePSIOutput
2.67524087
2.71723886
3.03424085

This implies it is a checksum, side note, at 2.675 my teric did not get any low voltage alerts,
We are missing something. There is definitely a transmission re battery status, because I've received it. Wee your battery voltage measured open circuit or under load?
By the way, how are you doing that? Doesn't the battery cap have to be on for the unit to work?
 
We are missing something. There is definitely a transmission re battery status, because I've received it. Wee your battery voltage measured open circuit or under load?
By the way, how are you doing that? Doesn't the battery cap have to be on for the unit to work?
I measured the voltage when the circuit was not under load but considering my power supply barely felt the load i doubt the voltage sagged much. I took the cover off, set and measured the voltage on two probes from a variable power supply, and poked on on the bottom contact and the other on one of the two negative terminal power bars that run up the sides of the battery housing.

Edit: I just remembered reading somewhere that the teric waits till its heard a couple low voltage pings before notifying the user.
 
I measured the voltage when the circuit was not under load but considering my power supply barely felt the load i doubt the voltage sagged much. I took the cover off, set and measured the voltage on two probes from a variable power supply, and poked on on the bottom contact and the other on one of the two negative terminal power bars that run up the sides of the battery housing.

Edit: I just remembered reading somewhere that the teric waits till its heard a couple low voltage pings before notifying the user.
Makes sense. Tnx.
 
I added a wav file of the recording to the folder here: MH8A TX Decoding – Google Drive

Let me know if you can extrapolate all your desired info from that file. Your programs output looks right to me, send me a wav file that it generated and I will test it out, use a known psi, id, % combination.
Thanks, that wav file really helped to get the timing right. It's very different from NEC code timings. After much trial and effort I found some values that produce an output wav that gets very close to the one you supplied.

The data stream in your wav appears to use ID:104308 PSI:248 and CSum: 89 giving a binary sequence of 0010000001101110101101001110101110000001111100000001011001. Comparing your captured wav and my generated wav they look very close now...
Result.jpg

However, there's no information regarding the 38 kHz carrier in your wav. The 'mark' bursts are all +1 and the space periods all -1. I don't think that is a result of the low sample rate so maybe there is some other filtering occurring.

To introduce a 38 khz carrier during the 'mark' periods I increased the the wav sample rate to 384000 Hz
Carrier.jpg


The test wav file can be downloaded here

Let me know if it works!
 
Checksum solution as follows:
  • Ignore the first 2 digits (‘00’)
  • Break the rest of the message into 12 nibbles (4 bit segments), leaving the last 8 bits
  • Sum the nibbles to calculate the checksum, place the checksum into the last 8 bits
  • Maximum checksum value is 10110100 (or 180 decimal)
Checksum.jpg

Easy!
 
Very nice!

So what does that leave for possible battery encoding? Haven't all the bits been used up?
 
https://www.shearwater.com/products/perdix-ai/

Back
Top Bottom