OSD - How to Access Telemetry Data
Flight Controller Telemetry Port Connection Alternative Telemetry Port Connection
OSD Hardware Configuration
Power Configuration RSSI (Received Signal Strength Indicator) RSSI Calibration Battery Voltage Connection Voltage and Current Sensor Connection Firmware Upload
OSD Software Configuration
Download Files OSD Firmware Upload Config Tab Options Panel 1 Configuration
An on screen display (OSD) enables data to be superimposed on a video signal to provide visual status information to an FPV pilot.
The following document provides a guide to installation and configuration of minimOSD hardware and minimOPOSD firmware to provide OSD functionality to OpenPilot flight controllers. In its stock configuration, the minimOSD hardware communicates with the flight controller using MAVLink protocol; however, OpenPilot uses the UAVTalk protocol and this is why JR63 created the MinOPOSD firmware. UAVTalk protocol is used to provide telemetry information from the CC3D/Revo to the minimOSD's Atmel 328P processor which in turn displays this information on the output video signal using the on-board MAX video chip. The data which can be displayed includes: throttle %, artificial horizon, flight mode, GPS co-ordinates, RSSI, battery voltages and more.
Here is an example:
Below is a wiring diagram showing a complete minOPOSD system which includes a 2.4GHz receiver, a CC (in this case connected to the receiver via single wire CPPM), v8 GPS, minimOSD, fpv camera and video transmitter.
Flight Controller Telemetry Port Connection
To receive information from the flight controller, connection to the main port is required with the following configuration and physical wiring.
Main Port Wiring CC3D/REVO MinimOSD Colour JST-SH Pin Voltage Serial Function Serial Function Black
1 GND Ground Ground Red 2 5V Power Power Blue 3 3.3V Tx Rx Yellow 4 3.3V (5V tolerant) Rx Tx
Alternative Telemetry Port Connection
This alternate configuration can be used when all other ports are unavailable. An example would be :
Main Port: SBUS
Flexi: OpenPilot GPS V9 Platinum
In the following configuration, the Receiver Port is set to 'Telemetry'.
Please note that the flight controller can only supply one telemetry stream at a time. If you have your controller connected via USB to GCS, the feed to the OSD will not work.
OSD Hardware Configuration
This section covers modification of the the OSD hardware to power it and connect external sensor input to supplement the data coming from the flight controller. Power Configuration
The minimOSD board provides two power inputs: 12V and 5V. The 12V side has a regulator which provides on board 5VDC to one side of the MAX video chip.The other side is powered by 5V coming from the controller on the data connection and powers the CPU and the other half of the MAX video chip. The two parts of the MAX video chip are internally optically isolated to eliminate video interference on the output video signal.
On some models of minimOSD, you have the option use either a 5V only or a hybrid 5V and 12V solution. When using 5V only, there are two solder pads on either side of the board that must be shorted so that the 5V is directed to the AT328P, MAX video chip and associated circuitry. Do not solder the pads if you will drive the video signal with 12V and the AT328P with 5V. If there are no such pads, then your model of minimOPSD does not support 5V only operation and you must connect 12V to the video side and 5V to the data side of the OSD board.
Image from minimosd wiki RSSI (Received Signal Strength Indicator)
RSSI is an indicator of radio signal strength. There are several options of receiving an RSSI feed to the MinimOSD board: Option 1: From CC3D/REVO over UAVTalk
(Procedure is thanks to Nikotine from Open Pilot)
The RSSI information is provided to the CC3D/REVO board and is fed over UAVTalk to the MinimOSD. The MinimOSD displays the information on screen. Compatible receivers that can transmit RSSI over PPM or PCM may be used, such as EzUHF, OpenLRSng. Configuration of Openpilot GCS and the correct hex file that is set up to read the RSSI as a PPM channel is required.
The 4 or 8 channel EzUHF receiver has an SPI port that's used to connect to the EzOSD, but it uses a proprietary protocol and cannot be used for this OSD. EzUHF receivers can be configured to output RSSI/Link Quality to a free channel or as part of the PPM data stream.
Below we show an EzUHF 4 channel lite receiver, but it can be done with any EzUHF receiver. The Link Quality signal is used here because it is a better indicator than RSSI; however, the RSSI can be used if you prefer. Configure the Receiver
This receiver is configured for 12 PPM channels on the first tab.
Here Link Quality is mapped to PPM 11. It wasn't possible to use PPM 12 for some reason. Under Servo Output, map PPM Muxed to CH1. Here Link Quality (PPM11) was also mapped to Servo Output CH3, but that's not necessary. Configure CC3D/REVO
In GCS under the Hardware configuration page, select PPM for the Receiver Port and Telemetry for the Main Port (to the OSD board). The board must be power cycled before these changes will take effect.
This tab will make sure that the Link Quality signal, which is received in PPM CH 11 of the PPM muxed signal, gets sent to the minOPOSD board. In this example Accessory 2 was used. The PWM values were configured to 1000 to 1800, but that's not necessary.
At this point, make sure your Flightmode switch is on channel 5. Here you will find an explanation of why this is helpful.
While you're in the GCS, also configure the following required settings:
Verify that the AttitudeState Flight Telemetry Update Period is the new default of 130ms.
To have a faster response to your RC inputs, change the ManualControlCommand Flight Telemetry Update Period to 500ms.
To have a faster OSD panel update rate for GPS position changes, you can change the GPSPositionSensor Flight Telemetry Update Period to 200ms.
To have a faster OSD panel update rate for GPS velocity changes you can change the GPSVelocitySensor Flight Telemetry Update Period to 200ms.
Enable RSSI in the MinOPOSD Code
In order to have the OSD use and display the RSSI signal, the minOPOSD code needs to be configured to use it. You can either use the pre-compiled firmware which includes RSSI support, or configure and compile it manually. Comipling the code is beyond the scope of this article, but you can find some details on the minOPOSD Wiki and OpenPilot forum's minOPOSD discussion.
•In OSD_config.h, enable (remove //)
- define ANALOG_RSSI_ON_MINIMOSD
Even though we won't be using the actual analog RSSI input pin, it has to be enabled here because it will load the necessary supporting code.
In AnalogRssi.ino, comment out this line:osd_rssi = analogRead(RSSI_PIN) / 4;
And add this one:
osd_rssi = (uint8_t)(float)((osd_chan8_raw - 950) * .3f);
In this example it has to be channel 8, not the PPM slot that EzUHF is using (11), but the number of the Function configured in the GCS input tab, not counting the disabled functions.
In this case Accessory2 is the 9th function, but Collective is disabled, so it's actually on PPM 8 in the telemetry data sent to the OSD.
osd_chan8_raw is the incoming channel in the telemetry stream to the OSD that holds the Link Quality value. As said above, it's the eighth value that gets sent from the CC3D/Revo to the minimOSD board. That value should be a value between 1000 and 1800 µs. In reality it's somewhere between 972 and 1772 µs.The osd_rssi variable however expects an 8 bit unsigned integer (0 to 255), so we need to convert osd_chan8_raw, which is more than 8 bits long. Arduino has a map() function, which maps a certain range to another range; but when that is used, minimOSD runs out of memory because that function uses all floats. So it is changed to the actual formula the map function uses: (osd_chan8_raw – (50)*(255-0)/(1800-950)+0.
Use 950 as lower limit to ensure you don't get negative values which an unsigned integer doesn't like (there are better ways to do that, but it's simple and it works). When you calculate (255-0)/(1800-950) you get 0.3 and that converts the Link Quality input to a value between 0 and 255.The rest is just like the standard minimOSD. Configure the correct range using the minimOSD config tool.
And there you have it: PPM signal from receiver to CC3D/Revo for control, and Link Quality, all through one connector!
Option 2: Receiver Provides Analogue RSSI
Some receivers are capable of delivering RSSI as an analogue stream with a voltage of 0V – 3.3V. By default, the minimOSD board requires the input voltage to be a maximum of 1.1V at 100% RSSI, so this requires an voltage divider to be made which will reduce the 3.3V to 1.1V.
Connect your receiver RSSI output to the selected port on the ATmega 328p through a voltage divider. The divider needs to be calculated to deliver 1.1V at maximum RSSI.
Example: if your RSSI signal delivered by the receiver is 0-3.3V, you can use the following divider (values from a standard E12 set):
R1 100k Ohm R2
47k Ohm C1 100nF
By default Analog RSSI support is disabled in the minOPOSD firmware. Please refer to the minOPOSD wiki's AnalogRSSI page for details on how to do this. Option 3: Receiver provides PWM RSSI
Some FrSKY receivers (D4R-II, D8R-XP) provide an RSSI output which can be used by minimOSD, however, this solution involves soldering a RC Filter to the AT328P chip so the signal can be conditioned and accurately read. Some minimOSD boards, such as the KVOSD model, incorporate this RC Filter in their design.
To get an FrSKY receiver to provide the appropriate RSSI signal to the MinimOSD, you need to modify the device so that the high frequency PWM signal being received by the OSD is in an appropriate format. To achieve this, make a Filter/ Voltage divider to ensure the voltage to the AT328P chip is at or below 1.1 Volts and that the high frequency PWM wave is reduced.
The following diagram shows a RC Filter/Voltage Divider:
Nominal values to use for this circuit to provide a voltage less than 1.1V for the RSSI signal:
Symbol Value R1 110K Ohm R2 47K Ohm C1 100nF
The values can be determined using an online voltage divider calculator. Here are the results for this configuration.
Note that many combinations of resistors will provide the correct output voltage.
By default, the output of the RSSI voltage divider should be soldered to pin 24 (A1) on the AT328P.
Calibration of the RSSI range is done through the Configuration Tool. The downloading and installation of this tool is covered later in this page under the OSD Software Configuration section.
First you need to check the 'RSSI Enable Raw' check box: http://web.archive.org/web/20150209023030im_/http://minoposd.googlecode.com/svn/wiki/images/AnalogRSSI_002.png
This will show in the OSD the raw value of the signal (0-255 range). Press Save current tab to, disconnect the OSD, run it and take note of the minimum (radio off) and the maximum (radio on) raw RSSI values. Reconnect the OSD to the computer and using the Configuration Tool, enter these values in the 'RSS Min Value' / 'RSSI Max Value' fields, uncheck the RSSI Enable Raw check box, set the RSSI Warning Level (%) as desired and press Save current tab to to save the configuration to the OSD.
You should now be able to see the RSSI as a percentage on the OSD in use. Note that this value is not linear. Battery Voltage Connection
Using a voltage divider, it is possible to connect the flight battery to one of the OSD's CPU analogue inputs to measure the battery voltage. The voltage divider converts the battery voltage to a safe voltage compatible with the CPU's AD input pins, normally 1.1V.
Example voltage divider circuit for a 4S battery:
Symbol Value R1 16.0K Ohm R2 1.1K Ohm C1 100nF
The values can be determined using an online voltage divider calculator. Here are the results for this configuration.
By default, the output of the battery input voltage divider must be soldered to pin 19 (A6) on the AT328P.
Below is a photo of a properly installed voltage divider for battery voltage in a 3S power system. The input voltage is coming from the video power connection which is connected to the flight battery, but if you have a separate 12V regulated power source for your video circuit, you will need to connect the power for the voltage divider directly to the battery instead.
Voltage and Current Sensor Connection
There are several types of voltage and current sensors that are compatible with this OSD when the proper voltage input to the OSD's CPU is considered. Use voltage dividers to reduce the voltage of each output signal on the sensor to 1.1V to be safely connected to the OSD's CPU pins as follows:
Voltage to pin 19 (A6) Current to pin 22 (A7)
Once the OSD hardware is configured, the firmware and character set need to be uploaded to it. This is accomplished by downloading the files, connecting the OSD to a Windows computer using a USB FTDI interface, running the OSD Configuration application and using it to upload the files to the OSD. Computer Connection
To upload firmware we will need to use a device which can connect to the PC and provide a serial connection to the MinimOSD. We will show the use of an FTDI (Future Technology Devices International) device. These are available as a cable or board from a variety of online places; simply search for USB FTDI.
Using the table below, connect the FTDI board's serial interface to the MinimOSD. FTDI MinimOSD v1.1 GND BLK +5V +5V TxD Rx RxD Tx DTR GRN
Plug the USB FTDI driver into your Windows machine and allow the system to install the drivers. If an error is encountered at this stage, resolve it before continuing.
OSD Software Configuration
This section covers downloading the required files and updating and configuring the OSD. Download Files
Download the appropriate minOPOSD .hex files from the OpenPilot forum post. The compiled versions of the minOPOSD code are for specific configurations. You need the one to correspond with the specific version of OpenPilot firmware, the model of minimOSD and the specific sensors used. For example for OpenPilot firmware version 14.10, download minOPOSD_14_10_files.zip.
Next, download the character set (e.g. Charset_1_3_0.mcm) and configuration tool (ConfigTool_minOPOSD.zip) from the minOPOSD wiki's download page. Extract ConfigTool_minOPOSD.zip and run OSD_Config.exe. This is a standalone application and so doesn't require further installation, but you need to run it from the extracted directory each time. The version of the configuration tool used in the following examples is ArduCAM OSD Config 126.96.36.199. OSD Firmware Upload
Select the communications port that was loaded previously for the FTDI driver. In the example below, the COM8 port is selected for the file transfer.
Confirm connectivity to the MinimOSD unit by clicking on the Read from OSD button. If it reads correctly you have connected your system up correctly. If you get a failure to communicate error, check the setup again and ensure you have wired it correctly and that you have the correct COM port selected.
Next select the Update Firmware option from the Options menu and, using the file selection dialog, choose the appropriate firmware file that you previously downloaded for your installation .
The firmware upload should start automatically and display a progress bar:
Next you need to upload the character set file to the OSD. Note that a 12V power source must be connected to the video connector of the OSD in order to power the video chip so that the character set can be uploaded. To start the upload, select Update Charset from the Options menu.
Finally, if you will be using NTSC instead of PAL, you need to select the NTSC option under the Video Mode menu. Press Save current tab to ave the setting to the OSD. Config Tab Options Battery Configuration
You should configure the Min. Battery Voltage (V) and Bat. Remain. Warn. Level (%) fields to match the battery you will be using. This assumes that you have properly configured the minimOSD hardware to measure the battery voltage.
Tip on Setting Battery Voltage Alerts
For LiPo batteries, the maximum charge voltage of a cell is ~0.5V higher than the nominal voltage and the max discharge voltage of a cell is ~0.5V lower than the nominal voltage. Most LiPo cells are 3.7V nominal (4.2V max and 3.2V min), so a 4S pack should go up to 4*4.2V = 16.8V at full charge and go down to no less than 4*3.2V = 12.8V at full discharge. It is prudent to include a buffer before the minimum voltage in order to prevent nuisance alerts, so we use 3.5V per cell, 4*3.5V = 14V
•Min Battery Voltage = 12.8 •Bat Remain Warn Level (%) = 10
This means when at 10% above 12.8 Volts (i.e. 12.8V + 1.3V = 14.1V), it will display an alert.
Panel 1 Configuration
In this example we use the following options:
Battery A Throttle Battery Percentage Flight Mode Time RSSI
Here is the example layout:
No OSD information on the screen – Check that CH8 is not ON as this can toggle the OSD panels. No OSD information – Check video IN/OUT is plugged in the correct way