Wednesday, January 15, 2014

Using audio channel for air to ground telemetry

I've decided to pass my UAVs telemetry trough video transmitter audio channel.
There's different advantage on this:
  •  I'm sure I'll have the same range as my video link,  no surprise..
  • no additional antenna to fit on the UAV  &Groundstation
  • no other RF transmitter 
To achieve this, I' ve built some FSK modem based on TCM3105 chips.


PCBs are open and can be downloaded on kh4's Github.
Those modules gives a 1200/2400 bauds serial link over audio channel.
1200 bauds seems retarded in 2014, but in digital RF data transmission, lower the baudrate is, greater the range will be.

Unfortunately native communication protocols implemented in different flight controllers are usually fat babe not suited for low baudrates. They also mostly needs 2 way com ( will be hard with audio telemetry :) )

This is why I've added a lightweight protocol for this on Taulabs and Ghettostation.
I've almost finished the Baseflight implementation too ( Multiwii for STM32 fc like naze32 ).

This is a just first version of LTM ( LightTelemetry ) protocol, it will be improved later with more packet type in order to make a ground OSD too.

For now there's only one packet type sent every 200ms. Each packet has 18 bytes, giving 900bauds min.

STARTBYTE1(0x24)STARTYTE2(0x54),FRAMEID(0x54)LAT(cm,4 bytes)LON(cm,4bytes)SPEED(m/s,1bytes)ALT(cm,4bytes)SATS(6bits)FIX(2bits)CRC(xor,1byte)

There's no need of bitshifting here cause packets size are fixed. Only bytes the after FRAMEID are xored for the crc.

Using this Taulabs branch on my github, there's only need of lighttelemetry module enabled.

Here is what it gives on the audio channel when it work:



Ghettostation seems happy to receive data here:





Next step will needs to extend the LTM protocol, because I want the osd on ground now :)
But first I need to make this work on the Naze32 too.

2 comments :

  1. why not use the dac of the arm (or atmel) for a soft implementation of the modem?

    ReplyDelete
  2. because atmega doesn't have DAC, and only some stm32F3 & F4 have DAC too.Most of flightcontroller haven't broken out the dac pin or it's already used for something else.

    ReplyDelete