Telemetry.md 20.3 KB
Newer Older
1
2
3
4
# Telemetry

Telemetry allows you to know what is happening on your aircraft while you are flying it.  Among other things you can receive battery voltages and GPS positions on your transmitter.

5
Telemetry can be either always on, or enabled when armed.  If a serial port for telemetry is shared with other functionality then then telemetry will only be enabled when armed on that port.
6

7
Telemetry is enabled using the 'TELEMETRY' feature.
8
9
10
11
12

```
feature TELEMETRY
```

13
14
Multiple telemetry providers are currently supported, FrSky, Graupner
HoTT V4, SmartPort (S.Port) and LightTelemetry (LTM)
15

16
All telemetry systems use serial ports, configure serial ports to use the telemetry system required.
17

18
19
## SmartPort (S.Port) telemetry

20
Smartport is a telemetry system used by newer FrSky transmitters such as the Taranis Q X7, X9D, X9D+, X9E or XJR paired with X-series receivers such as the X4R(SB), X8R, XSR, R-XSR, XSR-M or XSR-E. For older D-series receivers see FrSky telemetry below.
21
22
23

More information about the implementation can be found here: https://github.com/frank26080115/cleanflight/wiki/Using-Smart-Port

24
Smartport devices are using _inverted_ serial protocol and as such can not be directly connected to all flight controllers. Depending on flight controller CPU family:
25

26
27
28
29
30
| CPU family  | Direct connection   | Receiver _uninverted_ hack  | SoftwareSerial  | Additional hardware inverter  |
| -----       | -----               | -----                       | -----           | -----                         |
| STM32F1     | no possible (*)     | possible                    | possible        | possible                      |
| STM32F3     | possible            | not required                | possible        | not required                  |
| STM32F4     | not possible (*)    | possible                    | possible        | possible                      |
Pawel Spychalski (DzikuVx)'s avatar
Pawel Spychalski (DzikuVx) committed
31
| STM32F7     | possible            | not required                | possible        | not required                  |
32

Pawel Spychalski (DzikuVx)'s avatar
Pawel Spychalski (DzikuVx) committed
33
> * possible if flight controller has dedicated, additional, hardware inverter
34
35
36
37
38

Smartport uses _57600bps_ serial speed.

### Direct connection for F3/F7

39
Only TX serial pin has to be connected to Smartport receiver. Disable `telemetry_inverted`.
40
41

```
42
set telemetry_inverted = OFF
43
set telemetry_uart_unidir = OFF
44
45
46
47
```

### Receiver univerted hack

48
Some receivers (X4R, XSR and so on) can be hacked to get _uninverted_ Smartport signal. In this case connect uninverted signal to TX pad of chosen serial port and enable `telemetry_inverted`.
49
50

```
51
set telemetry_inverted = ON
52
set telemetry_uart_unidir = OFF
53
54
55
56
57
58
59
```

### Software Serial

Software emulated serial port allows to connect to Smartport receivers without any hacks. Only `TX` has to be connected to the receiver.

```
60
set telemetry_inverted = OFF
61
62
63
64
65
66
67
68
```

If solution above is not working, there is an alternative RX and TX lines have to be bridged using
1kOhm resistor (confirmed working with 100Ohm, 1kOhm and 10kOhm)

```
SmartPort ---> RX (CH5 pad) ---> 1kOhm resistor ---> TX (CH6 pad)
```
69
70

```
71
set telemetry_inverted = OFF
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
```

### SmartPort (S.Port) with external hardware inverter

It is possible to use DIY UART inverter to connect SmartPort receivers to F1 and F4 based flight controllers. This method does not require hardware hack of S.Port receiver.

#### SmartPort inverter using bipolar transistors
![Inverter](assets/images/smartport_inverter.png)

#### SmartPort inverter using unipolar transistors
![Inverter](assets/images/smartport_inverter_2n7000.png)

**Warning** Chosen UART has to be 5V tolerant. If not, use 3.3V power supply instead (not tested)

When external inverter is used, following configuration has to be applied:

```
89
set telemetry_uart_unidir = ON
90
set telemetry_inverted = ON
91
92
93
94
95
96
97
98
99
100
```

### Available SmartPort (S.Port) sensors

The following sensors are transmitted

* **GSpd** : current horizontal ground speed, calculated by GPS.
* **VFAS** : actual vbat value.
* **Curr** : actual current comsuption, in amps.
* **Alt** : barometer based altitude, relative to home location.
101
* **Fuel** : if `smartport_fuel_unit = PERCENT` remaining battery percentage sent, MAH drawn otherwise.
102
103
104
* **GPS** : GPS coordinates.
* **VSpd** : vertical speed, unit is cm/s.
* **Hdg** : heading, North is 0°, South is 180°.
105
* **AccX,Y,Z** : accelerometer values (not sent if `frsky_pitch_roll = ON`).
106
* **Tmp1** : flight mode, sent as 5 digits. Number is sent as **ABCDE** detailed below. The numbers are additives (for example: if digit C is 6, it means both position hold and altitude hold are active) :
107
  * **A** : 1 = flaperon mode, 2 = auto tune mode, 4 = failsafe mode
108
109
  * **B** : 1 = return to home, 2 = waypoint mode, 4 = headfree mode
  * **C** : 1 = heading hold, 2 = altitude hold, 4 = position hold
110
  * **D** : 1 = angle mode, 2 = horizon mode, 4 = passthru mode
111
  * **E** : 1 = ok to arm, 2 = arming is prevented, 4 = armed
112
113
* **Tmp2** : GPS lock status, accuracy, home reset trigger, and number of satellites. Number is sent as **ABCD** detailed below. Typical minimum GPS 3D lock value is 3906 (GPS locked and home fixed, HDOP highest accuracy, 6 satellites).
  * **A** : 1 = GPS fix, 2 = GPS home fix, 4 = home reset (numbers are additive)
114
115
116
117
118
119
120
  * **B** : GPS accuracy based on HDOP (0 = lowest to 9 = highest accuracy)
  * **C** : number of satellites locked (digit C & D are the number of locked satellites)
  * **D** : number of satellites locked (if 14 satellites are locked, C = 1 & D = 4)
* **GAlt** : GPS altitude, sea level is zero.
* **ASpd** : true air speed, from pitot sensor.
* **A4** : average cell value. Warning : unlike FLVSS and MLVSS sensors, you do not get actual lowest value of a cell, but an average : (total lipo voltage) / (number of cells)
* **0420** : distance to GPS home fix, in meters
121
122
* **0430** : if `frsky_pitch_roll = ON` set this will be pitch degrees*10
* **0440** : if `frsky_pitch_roll = ON` set this will be roll degrees*10
Stefan Naewe's avatar
Stefan Naewe committed
123
* **0450** : 'Flight Path Vector' or 'Course over ground' in degrees*10
124
125
### Compatible SmartPort/INAV telemetry flight status

126
To quickly and easily monitor these SmartPort sensors and flight modes, install [OpenTX Telemetry Widget](https://github.com/iNavFlight/OpenTX-Telemetry-Widget) to your Taranis Q X7, X9D, X9D+ or X9E transmitter.
127

128
129
## FrSky telemetry

130
FrSky telemetry is for older FrSky transmitters and D-series receivers.  For newer transmitters paired with X-series receivers see SmartPort (S.Port) telemetry above.
131

132
133
FrSky telemetry is transmit only and just requires a single connection from the TX pin of a serial port to the RX pin on an FrSky telemetry receiver.

134
FrSky telemetry signals are inverted.  To connect a INAV capable board to an FrSKy receiver you have some options.
135
136

1. A hardware inverter - Built in to some flight controllers.
137
138
2. Use software serial.
3. Use a flight controller that has software configurable hardware inversion (e.g. F3 or F7).
139
140
141

For 1, just connect your inverter to a usart or software serial port.

142
For 2 and 3 use the CLI command as follows:
143
144

```
145
set telemetry_inverted = OFF
146
147
```

148
149
### Precision setting for VFAS

150
INAV can send VFAS (FrSky Ampere Sensor Voltage) in two ways:
151
152

```
153
set frsky_vfas_precision  = 0
154
155
156
157
```
This is default setting which supports VFAS resolution of 0.2 volts and is supported on all FrSky hardware.

```
158
set frsky_vfas_precision  = 1
159
```
Paweł Spychalski's avatar
Paweł Spychalski committed
160
This is new setting which supports VFAS resolution of 0.1 volts and is supported by OpenTX and er9x/ersky9x firmware (this method uses custom ID 0x39).
161
162


163
164
### Notes

165
166
Many of the same SmartPort telemetry values listed above are also sent with FrSky D-Series telemetry.

167
RPM shows throttle output when armed.
168
RPM shows when disarmed.
169
170
RPM requires that the 'blades' setting is set to 12 on your receiver/display - tested with Taranis/OpenTX.

171
172
## HoTT telemetry

173
174
175
Only Electric Air Modules and GPS Modules are emulated.

Use the latest Graupner firmware for your transmitter and receiver.
176

177
Older HoTT transmitters required the EAM and GPS modules to be enabled in the telemetry menu of the transmitter. (e.g. on MX-20)
178

179
180
181
You can use a single connection, connect HoTT RX/TX only to serial TX, leave serial RX open and make sure the setting `telemetry_uart_unidir` is OFF.

The following information is deprecated, use only for compatibility:
182
183
Serial ports use two wires but HoTT uses a single wire so some electronics are required so that the signals don't get mixed up.  The TX and RX pins of
a serial port should be connected using a diode and a single wire to the `T` port on a HoTT receiver.
184
185

Connect as follows:
186
187
188

* HoTT TX/RX `T` -> Serial RX (connect directly)
* HoTT TX/RX `T` -> Diode `-(  |)-` > Serial TX (connect via diode)
189
190
191
192

The diode should be arranged to allow the data signals to flow the right way

```
193
-(  |)- == Diode, | indicates cathode marker.
194
195
```

196
197
1N4148 diodes have been tested and work with the GR-24.

198
199
When using the diode enable `telemetry_uart_unidir`, go to CLI and type `set telemetry_uart_unidir = ON`, don't forget a `save` afterwards.

200
201
As noticed by Skrebber the GR-12 (and probably GR-16/24, too) are based on a PIC 24FJ64GA-002, which has 5V tolerant digital pins.

202
Note: The SoftSerial ports may not be 5V tolerant on your board.  Verify if you require a 5v/3.3v level shifters.
203

204
205
206
207
208
## LightTelemetry (LTM)

LTM is a lightweight streaming telemetry protocol supported by a
number of OSDs, ground stations and antenna trackers.

209
The INAV implementation of LTM implements the following frames:
210
211
212
213
214

* G-FRAME: GPS information (lat, long, ground speed, altitude, sat
  info)
* A-FRAME: Attitude (pitch, roll, heading)
* S-FRAME: Status (voltage, current+, RSSI, airspeed+, status). Item
215
  suffixed '+' not implemented in INAV.
216
217
* O-FRAME: Origin (home position, lat, long, altitude, fix)

218
219
In addition, in  iNav:

220
221
* N-FRAME: Navigation information (GPS mode, Nav mode, Nav action,
  Waypoint number, Nav Error, Nav Flags).
222
* X-FRAME: Extra information. Currently HDOP is reported.
223

224
LTM is transmit only, and can work at any supported baud rate. It is
225
designed to operate over 2400 baud (9600 in INAV) and does not
226
benefit from higher rates. It is thus usable on soft serial.
227

228
A CLI variable `ltm_update_rate` may be used to configure the update
229
230
231
232
233
234
235
236
237
238
rate and hence band-width used by LTM, with the following enumerations:

* NORMAL: Legacy rate, currently 303 bytes/second (requires 4800 bps)
* MEDIUM: 164 bytes/second (requires 2400 bps)
* SLOW: 105 bytes/second (requires 1200 bps)

For many telemetry devices, there is direction correlation between the
air-speed of the radio link and range; thus a lower value may
facilitate longer range links.

239
More information about the fields, encoding and enumerations may be
240
241
found at https://github.com/iNavFlight/inav/wiki/Lightweight-Telemetry-(LTM).

242

243
244
## MAVLink telemetry

245
MAVLink is a very lightweight, header-only message marshalling library for micro air vehicles.
246
INAV supports MAVLink for compatibility with ground stations, OSDs and antenna trackers built
247
248
for PX4, PIXHAWK, APM and Parrot AR.Drone platforms.

249
MAVLink implementation in INAV is transmit-only and usable on low baud rates and can be used over soft serial.
250

Tommy Nyqvist's avatar
Tommy Nyqvist committed
251
252
253
254
255
256
257

## Cellular telemetry via text messages

INAV can use a SimCom SIM800 series cellular module to provide telemetry via text messages. Telemetry messages can be requested by calling the module's number or sending it a text message. The module can be set to transmit messages at regular intervals, or when an acceleration event is detected. A text message command can be used to put the flight controller into RTH mode.

The telemetry message looks like this:
```
258
12.34V 2.0A ALT:5 SPD:10/13.6 DIS:78/19833 HDG:16 SAT:21  SIG:9 ANG maps.google.com/?q=6FG22222%2B222
Tommy Nyqvist's avatar
Tommy Nyqvist committed
259
```
260
giving battery voltage, current, altitude (m), speed / average speed (m/s), distance to home / total traveled distance (m), heading (degrees), number of satellites, cellular signal strength, flight mode and GPS coordinates as a Google Maps link. `SIG` has a range of 0 -- 31, with a value of 10 or higher indicating a usable signal quality.
Tommy Nyqvist's avatar
Tommy Nyqvist committed
261
262
263
264
265
266
267
268
269
270

Transmission at regular intervals can be set by giving a string of flags in the CLI variable `sim_transmit_flags`: `T` - transmit continuously, `F` - transmit in failsafe mode, `A` - transmit when altitude is lower than `sim_low_altitude`, `G` - transmit when GPS signal quality is low. `A` only transmits in ALT HOLD, WAYPOINT, RTH, and FAILSAFE flight modes. The transmission interval is given by `sim_transmit_interval` and is 60 seconds by default.

Text messages sent to the module can be used to set the transmission flags during flight, or to issue a RTH command to the flight controller. If a message begins with `RTH` it toggles forced RTH on / off, otherwise it is taken as a value for `sim_transmit_flags`. Note that an empty message turns transmission off, setting all flags to zero.

Acceleration events are indicated at the beginning of the message as follows: `HIT!` indicates impact / high g event, `HIT` indicates landing / backwards acceleration event, `DROP` indicates freefall / low g event.

To receive acceleration event messages, set one or more of the acceleration event threshold CLI variables to a nonzero value, and use the `A` flag in `sim_transmit_flags`. `acc_event_threshold_high` is the threshold (in cm/s/s) for impact detection by high magnitude of acceleration. `acc_event_threshold_low` is the threshold for freefall detection by low magnitude of acceleration. `acc_event_threshold_neg_x` is the threshold for landing detection (for fixed wing models) by high magnitude of negative x axis acceleration.


hali9's avatar
hali9 committed
271
272
273
274
275
276
277
278
## Ibus telemetry

Ibus telemetry requires a single connection from the TX pin of a bidirectional serial port to the Ibus sens pin on an FlySky telemetry receiver. (tested with fs-iA6B receiver, iA10 should work)

It shares 1 line for both TX and RX, the rx pin cannot be used for other serial port stuff.
It runs at a fixed baud rate of 115200, so it need hardware uart (softserial is limit to 19200).
```
     _______
279
280
281
282
    /       \                                              /-------------\
    | STM32 |-->UART TX-->[Bi-directional @ 115200 baud]-->| Flysky RX   |
    |  uC   |-  UART RX--x[not connected]                  | IBUS-Sensor |
    \_______/                                              \-------------/
hali9's avatar
hali9 committed
283
284
285
286
287
```
It is possible to daisy chain multiple sensors with ibus, but telemetry sensor will be overwrite by value sensor.
In this case sensor should be connected to RX and FC to sensor.
```
     _______
288
289
290
291
    /       \                                              /---------\   /-------------\   /-------------\
    | STM32 |-->UART TX-->[Bi-directional @ 115200 baud]-->| CVT-01  |-->|others sensor|-->| Flysky RX   |
    |  uC   |-  UART RX--x[not connected]                  \---------/   \-------------/   | IBUS-Sensor |
    \_______/                                                                              \-------------/
hali9's avatar
hali9 committed
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
```

### Configuration

Ibus telemetry is default enabled in the all firmware.
IBUS telemetry is disabled on ALIENWIIF3, RMDO at build time using defines in target.h.
```
#undef TELEMETRY_IBUS
```
### Available sensors

The following sensors are transmitted :

Sensors number:

1.Internal voltage in volts (not usable).

2.Valtage sensor in volts (Voltage type).

3.If baro sensor is avaliable then return temperature from baro sensor in °C else return temperature from gyro sensor in °C (Temperatyre type).

4.Status (Rpm type).

5.Course in degree (Rpm type).

6.Current in ampers (Voltage type).

7.Altitude in meters (Voltage type).

8.Direction to home in degree (Rpm type).

9.Distance to home in meters(Rpm type).

10.GPS course in degree (Rpm type).

11.GPS altitude in meters (Rpm type).

12.Second part of Lattitude (Rpm type), for example 5678 (-12.3456789 N).

13.Second part of Longitude (Rpm type), for example 6789 (-123.4567891 E).

14.First part of Lattitude (Voltage type), for example -12.45 (-12.3456789 N).

15.First part of Longitude (Voltage type), for example -123.45 (-123.4567890 E).

16.GPS speed in km/h (Rpm type).

1.Transmitter voltage in volts (not usable).

1.Error percent in % (not usable).

Sensors from 8 to 16 are avaliable only if GPS is at built time.

STATUS (number of satelites AS #0, FIX AS 0, HDOP AS 0, Mode AS 0)

FIX: 1 is No, 2 is 2D, 3 is 3D, 6 is No+FixHome, 7 is 2D+FixHome, 8 is 3D+FixHome

HDOP: 0 is 0-9m, 8 is 80-90m, 9 is >90m

351
Mode: 0 - Passthrough, 1-Armed(rate), 2-Horizon, 3-Angle, 4-Waypoint, 5-AltHold, 6-PosHold, 7-Rth, 8-Launch, 9-Failsafe
hali9's avatar
hali9 committed
352

353
Example: 12803 is 12 satelites, Fix3D, FixHome, 0-9m HDOP, Angle Mode
hali9's avatar
hali9 committed
354
355
356

### CLI command

357
ibus_telemetry_type
hali9's avatar
hali9 committed
358

hali9's avatar
hali9 committed
359
0.Standard sensor type are used (Temp,Rpm,ExtV). Each transmitter should support this. (FS-i6, FS-i6S).
hali9's avatar
hali9 committed
360

hali9's avatar
hali9 committed
361
1.This same as 0, but GPS ground speed (sensor 16) is of type Speed in km/h. (FS-i6 10ch_MOD_i6_Programmer_V1_5.exe from https://github.com/benb0jangles/FlySky-i6-Mod-).
hali9's avatar
hali9 committed
362

hali9's avatar
hali9 committed
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
2.This same as 1, but GPS altitude (sensor 11) is of type ALT in m. (FS-i6 10ch_Timer_MOD_i6_Programmer_V1_4.exe from https://github.com/benb0jangles/FlySky-i6-Mod-).

3.This same as 2, but each sensor have its own sensor id. (FS-i6 10ch_Mavlink_MOD_i6_Programmer_V1_.exe from https://github.com/benb0jangles/FlySky-i6-Mod-):
sensor 4 is of type S85,
sensor 5 is of type ACC_Z,
sensor 6 is of type CURRENT,
sensor 7 is of type ALT,
sensor 8 is of type HEADING,
sensor 9 is of type DIST,
sensor 10 is of type COG,
sensor 10 is of type GALT,
sensor 12 is of type GPS_LON,
sensor 13 is of type GPS_LAT,
sensor 14 is of type ACC_X,
sensor 15 is of type ACC_Y, 
sensor 16 is of type SPEED.

4.This same as 3, but support 4 byte sensors. (fix_updater_03_16_21_33_1 from https://github.com/qba667/FlySkyI6/tree/master/release):
sensor 7 is 4byte ALT, 12 is PRESURE or PITOT_SPEED if avaliable, 13 is GPS_STATUS, 14 is 4byte GPS_LON, 15 is 4byte GPS_LAT.
This required a receiver with new firmware that support SNR, RSSI and long frames (For FS-IA6B since August 2016 or need upgrade to wersion 1.6 https://github.com/povlhp/FlySkyRxFirmware).

5.This same as 4, but sensor 3 is ARMED, 4 is MODE, 12 is CLIMB.

6.For hali9_updater_04_21_23_13.bin from https://www.rcgroups.com/forums/showthread.php?2486545-FlySky-FS-i6-8-channels-firmware-patch%21/page118 or https://github.com/benb0jangles/FlySky-i6-Mod-/tree/master/10ch%20qba667_hali9%20Updater sensor 4 is of type CURRENT, sensor 5 is of type HEADING, sensor 6 is of type COG, sensor 7 is of type CLIMB, sensor 8 is of type YAW, sensor 9 is of type DIST, sensor 10 is of type PRESURE or PITOT_SPEED if avaliable, sensor 11 is of type SPEED, sensor 12 is of type GPS_LAT, sensor 13 is of type GPS_LON, sensor 14 is of type GALT, sensor 15 is of type ALT, sensor 16 is of type S85.

7.This same as 6, but sensor 3 is GPS_STATUS, 10 is ARMED, 16 is MODE.

390
391
8.This same as 7, but sensor 10 (ARMED) is reversed.

hali9's avatar
hali9 committed
392
393
394
395
396
397
398
399
400
131.This same as 3, but sensor 16 (type SPEED) is in m/s.

132.This same as 4, but sensor 16 (type SPEED) is in m/s.

133.This same as 5, but sensor 16 (type SPEED) is in m/s.

134.This same as 6, but sensor 11 (type SPEED) is in m/s.

135.This same as 7, but sensor 11 (type SPEED) is in m/s.
hali9's avatar
hali9 committed
401

402
403
136.This same as 8, but sensor 11 (type SPEED) is in m/s.

hali9's avatar
hali9 committed
404
405
406
407
408
409
410
411
### RX hardware

These receivers are reported to work with i-bus telemetry:

- FlySky/Turnigy FS-iA6B 6-Channel Receiver (http://www.flysky-cn.com/products_detail/&productId=51.html)
- FlySky/Turnigy FS-iA10B 10-Channel Receiver (http://www.flysky-cn.com/products_detail/productId=52.html)

Note that the FlySky/Turnigy FS-iA4B 4-Channel Receiver (http://www.flysky-cn.com/products_detail/productId=46.html) seems to work but has a bug that might lose the binding, DO NOT FLY the FS-iA4B!
412
413
414
415
416

### Use ibus RX and ibus telemetry on only one port.

Case:

hali9's avatar
hali9 committed
417
A. For use only IBUS RX connect directly Flysky IBUS-SERVO to FC-UART-RX.
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
In configurator set RX on selected port, set receiver mode to RX_SERIAL and Receiver provider to IBUS.

B. For use only IBUS telemetry connect directly Flysky IBUS-SENS to FC-UART-TX.
In configurator set IBUS telemetry on selected port and enable telemetry feature.

C. For use RX IBUS and telemetry IBUS together connect Flysky IBUS-SERVO and IBUS-SENS to FC-UART-TX using schematic:
```
+---------+
| FS-iA6B |
|         |
| Servo   |---|<---\       +------------+
|         |        |       | FC         |
| Sensor  |---[R]--*-------| Serial TX  |
+---------+                +------------+
```
R = 10Kohm, Diode 1N4148 (connect cathode to IBUS-Servo of Flysky receiver).

In configurator set IBUS telemetry and RX on this same port, enable telemetry feature, set receiver mode to RX_SERIAL and Receiver provider to IBUS.

Warning:
Schematic above work also for connect telemetry only, but not work for connect rx only - will stop FC.