Epi-OSD/en: Unterschied zwischen den Versionen

Aus Das Epilepsy Wiki
Wechseln zu: Navigation, Suche
K (Änderungen von SharonHoward (Diskussion) rückgängig gemacht und letzte Version von Akku wiederhergestellt)
(kein Unterschied)

Aktuelle Version vom 3. August 2012, 13:20 Uhr


This English page is provided by Wicherd, crashedagain & brashley - anybody who is willing to help is welcome!

please visit our license-site! You have to act according to our license!


This project is started and maintained by Akku, Oschni and Wowie (Wolfgang Wierczeyko).


As it is difficult to keep 2 pages up to date, please make sure you see the German EPI-OSD-Site for the latest news

20.11.2008: Firmware

  • Changes
    • A Command line was added. More at EPI_Shell
    • Data for the NC will no longer appear

14.09.2008: Firmware available for download

  • Changes
    • The battery meter graphic was removed
    • Values for V, A, mA(h) were added
    • The Compass is now graphically displayed
    • General cleanup in the source code

OSD 0 8 2 3kl.jpg

28.08.2008: Firmware 0.8.2. The FC now beeps as usual when the RX signal is lost

21.08.2008: Firmware 0.8.1 is available for download at http://mk-epi.de/OSD/HW02/FW_0_8

  • There is now only one version. The RC-operation is switchable from the Menu
  • Extras: Will recognize the settings and then hide the non-relevant ones.
    • In case the settings are not recognized or under PC / BT operation, the last setting will be used.
  • The most important settings will be shown but only when PC/BT is switched off
  • The Variometer (rate of climb) and Altitude values are displayed further out
  • Null values are still displayed, this will be considered in the next FW



The Epi-OSD is an optional add-on for Quadrocopters. It’s use is to overlay the flight data into the camera view via OSD. This includes an indication of Climb-rate. This climb rate is both shown in the OSD and represented as an audio signal. The OSD is based on the MAXIM-Chip: MAX7456. Data gets transmitted through a SPI-port and is converted using an Atmel ATMegas 162 for the OSD-Chip.

The following data will be shown:

  • LiPo voltage (as bargraph) only in Volts - no bargraph with the latest firmware
  • Height
  • Heading
  • Flight time
  • Climb rate.

Using the NaviCtrl board from Mikrokopter the following data can be shown:

  • Number of satellites
  • Lattitude
  • Longitude

In case of interference (Tx/Rx?) the OSD flashes.

The following display modes are available:

  • OSD off
  • OSD on
  • OSD on, horizon indication on
  • OSD on, climbe rate on

These modes can be selected and set using a channel on the remote.


Menu function with the following possible settings

  • PAL/NTSC (at the moment only PAL is selectable, see http://mk-epi.de/OSD/HW02/FW_0_8/NTSC/ for NTSC firmware version)
  • PC/BT ON, the OSD will not send data to the FC (allows PC/BT to work)
  • Kennung (Callsign) ON, will show the user's given Callsign
  • RC-Betrieb (RC-Operation) ON, the OSD mode is switchable by RC channel input

The EPI-Menu is also described here

Menu Navigation Using the Buttons

By pressing S1 while the motors are stopped you can activate the Menu. The selection will show on the OSD similar to selection on the TV at home. Pressing S2 moves through the items in the Menu and then pressing S1 alows you to change the selected item. To exit move to the Exit item and press S1 to select.



  • Communicating with the Quadrocopter
    • Serial interface
    • SPI interface as Master or Slave
  • Communicating wit the PC
    • Serial interface with TTL level converter ( TTL level converter: e.g. Sercon )
  • Communicating with the NaviCtrl
    • Serial interface 2 (STK500) on the EPI-OSD and the Debug-interface on the NaviCtrl
    • Pin 8 on the OSD (Stk500)
    • Pin 9 on the NaviCtrl (Debug-port)

Communication with the FC

The EPI-OSD board communicates with the FC using the serial interface. It receives the values of the connected sensors this way. If you want to use the Altitude and Variometer (rate of clime) feature then you must have the air pressure sensor connected and working on your FC. The sensor then needs to be turned on in MK-Tools otherwise no altitude data will be transmitted to the EPI-OSD board.

If you want to use the mk3mag together with the FC (no NC) and the EPI-OSD, then you just need to make a ribbon cable with 3 clamp on connector and hook all three boards together.

The Board and "How-to-get-it"

The board is tested and you can order it via the order-site.

Picture of the Board



Depending on the amount of power your camera and transmitter consume, it may be necessary to use a different inductor at L1, L2.

If the attached gear uses more than 250mA, the you need to connect them to the +Lipo (12v) or the +5v source.

(Italic named parts are on the bottom-side)

QTY Value Device Reference Designator Mouser Part #
2 75ohm 1206 SMD Chip Resistors 1/4watt 75ohms R1, R2 71-CRCW1206-75-E3
1 470ohm (could also be 1K) 0805 SMD Chip Resistors 1/8watt 470ohms R14 71-CRCW0805470RFKEB
7 1Kohm 0805 SMD Chip Resistors 1/10WATT 1KOHMS R3, R4, R5, R11, R12, R24, R25 260-1.0K-RC
7 10Kohm 0805 Chip Resistors 1/10WATT 10KOHMS R6, R7, R8 R9, R10, R13, R15 - R7 and R8 only populate when you have problems 292-10K-RC
1 1N4004 MELF Diode - Silicon 1N4004 1A D1 583-FM4004
2 22pF 0805 SMD Monolithic Ceramic Chips 22pF C6, C7 81-GRM2165C1H220JZ
13 0.1uF 0805 SMD Ceramic Chip Capacitors 0.1uF C1, C2, C3, C4, C5, C8, C12, C13, C14, C15, C16, C18, C19 80-C0805C104M5U
3 22uF SMD Aluminum Electrolytic Capacitors 22UF 16V C10, C11, C17 598-AFC226M16C12T
1 100uF SMD Aluminum Electrolytic Capacitors 16V 100uF C9 5985-AVS16V100-F
1 16MHz SMD Microprocessor Crystals 16MHz Q2 520-CSM1600-20-X
1 27MHZ Metal Can 27MHZ Crystals Q1 815-ABL-27-B2F
2 100uH SMD Chip Inductors 100uH L1, L2 Attention! note the power of the CAM/transmitter

652-CM322522-101KL 100uH (for up to 100mA)
81-LQH32CN220K23L 22uH (for up to 250mA)

2 2x5 .100" Double row header 2x5-pol. X3, X4 649-67996-110HLF
2 6.2x6.5x3.1 SMD Tactile Switches 6.2x6.5x3.1mm 100gf S1, S2 688-SKHMQKE010
2 green LED SMD Super Bright GREEN WATER CLEAR LED1, LED3 604-APT2012SGC
2 red LED SMD Standard HI EFF RED WTR CLR LED2, LED4 604-APT2012EC
1 7805 Linear Regulators 3-Terminal 1A "SMD-Like Mount" IC3 512-KA7805ETU
1 MAX7456 MAX7456 U$1 MAX7456EUI+-ND at digikey
1 ATMEGA162-16AU Microcontrollers - RISC 16kB Flash 0.5kB EEPROM 35 I/O Pins IC1 556-ATMEGA162-16AU
2 SMC BUE-90 BU-SMC-V (Or solder cable directly) X1, X2 SMC BUE-90

For the Reichelt parts list please see the German page here.

MBChris: Reichelt Parts list (Attention WITHOUT MAX7456 and alternative Inductors!) https://secure.reichelt.de/?;ACTION=20;LA=5010;AWKID=78045;PROVID=2084

Schematic and Assembly Plan

How to build

For instructions: Soldering the OSD Board/en (there you will aslo find the assembly plans)

Programming with Ponyprog

!!! Important !!! Always power on OSD and FC at the same time when connected together - otherwise the FC will not work!

Having Troubles?

If you have problems during programming the EPI-OSD then you should try and us a shorter ribbon cable. There have been some people that have had problems with cable longer than 0.5m

Regarding this problem, Heling wrote the following in the Forum: Thanks Heling

  • Attention Pony -Programmers In case of Read-/write errors and some odd effects using wires in different length: add the parameters shown below in the Pony.INI
    • AVRByteWriteDelay=30 'Delay to complete the write of a single word AVREraseDelay=100 'Delay to complete the erase of all the memory
    • 'In case of ATmega increase also the following parameter: ATMegaPageWriteDelay=50 'Delay to complete the write of a page of flash memory

Basics regarding Flashing

The easiest is to use “Pony-Prog’ and the MK SerCom (note: the jumper needs to be in)

The 10-pin ribbon cable is connecter between ISP1 on the SerCom and X4 (ISP) on the EPI-OSD. Attention! Watch pin 1!

Please make sure that the Fuse-bits are set correctly. JTAGEN should for sure be deactivated, otherwise the buttons won’t work. It is recommended to activate EESAVE, that way after ver 0.7 you wont have to load the EEPROM every time. We also recommend to set the brown-out detection to 2.7V so the atMega will perform a Reset with lower Voltages.

The correct Fuse-bit settings are then: 0xFB, 0xD7, 0xFF. (Ext, High, Low)

Important with Pony-Prog: The program needs to be calibrated to the computer before the first programming otherwise the timings will not be correct and this usually means you will need to solder in a new ATmega…

Then load the following files at http://www.firmware.mk-epi.de/osd/Zeichensatz/

  • Logo1.hex
  • Logo2.hex
  • Logo3.hex
  • Logo4.hex
  • osdchar1.hex
  • osdchar2.hex
  • osdchar3.hex
  • osdchar4.hex
  • osdchar5.hex
  • osdchar6.hex
  • osd_char76_7a.hex
  • osd_char7b_7e.hex
  • osd_char0x00.hex

These are not firmware, we have to load some nice characters into the Max first… While loading this, hook up a monitor to the output of the OSD-board.

Now flash the Logo1.hex file into the Atmel and look closely at the monitor. After a bit you will see a similar picture emerge on the monitor, then you can move on to the flash the other 3 firmware Logo files. You then repeat the process for all the osdchar-firmware.

Important: All of this firmware should only be loaded/run once. These programs load the character set into the Max and the Max only has a few write cycles.

This process s repeated until logo/osdchar files are loaded/run. You should no longer see the Chinese character pop up on the screen.

Now choose one of the other OSD firmwares from the appropriate directory and flash it into the Atmel.

Performing Firmware-Updates

To perform a firmware-update you don't have to perform the above mentioned procedure.

  • The Fuses are still set to the right values - nothing to do here.
  • Character- and logo-files have been programmed - the MAX7456 will hold the right characters - You don't have to do this twice.

Exception: If the Version of the running firmware is < 0.8.n, You have to flash the osd_char_xxx Programms, because some new signs have been designed for the compass e.G.

It is important here to wait after flashing until the AtMega has been flashing the MAX7456 - signed by flashing the red LED.

So for upgrading the Firmware you only have to flash the new Firmware-hex (and possibly a regarding *.eep-File) into the Atmel. The Hex-File using the "Write Program Memory"-button and the .eep using the "Write Data memory"-button.

Programming with avrdude

An alternative to using PonyProg (eg for Linux) is the console tool “avrdude”. Here we also use the 10-pole Ribbon wire to connect ISP1 on the Sercon and X4 (ISP) on the EPI-OSD - Important! ensure correct connection to pin 1!

Testing the connection between PC and Microcontroller:

avrdude -p m162 -c siprog -P /dev/ttyS0  -U lfuse:r:-:i -v 

Quick explanation:

  • -p indicates the processor type
  • -c indicates the programming adapter -> in this case SerCon compatible.
  • -P indicates the connection to the PC -> in this case COM1 under Linux
  • -U conducts a saving process - Speichertyp:Lesen/Schreiben:Datenqelle/Ziel:Typ der Quelle/Ziel'
  • -v Output of more debug info

Then we will get the actual lfuse settings. Avrdue, thanks to the –v option, will report back all the set fuse bits. If you get a timeout here then something is not right with your communication and you should NOT continue with programming. You will need to make sure you start avrdude as “root” or at least “sudo” so that it has the rights to access the COM-port.

avrdude: safemode: lfuse reads as FF 
avrdude: safemode: hfuse reads as D7
avrdude: safemode: efuse reads as FF
avrdude: safemode: Fuses OK

Next we set the Fusebits for the OSD-Board:

avrdude -p m162 -c siprog -P /dev/ttyS0 -v -U lfuse:w:0xFF:m -U hfuse:w:0xd7:m

Warning – There has been a change of the Fusebits, from version 0.7, JTAGEN must be deactivated to ensure that the menu works correctly and that the buttons are recognised. The above mentioned Fusebits are already correct. Should there be problems setting the fusebits – can be recognised by "verify Error", the entire chip should be deleted. For this, Avrdude offer option -e ( erases Flash+EEPROM )

avrdude -p m162 -c siprog -P /dev/ttyS0 -v -e

Following this we feed the Microcontroller as described above, with the various signs and graphics followed ultimately with the controller software. The actual flashing progress is nicely demonstrated by avrdude with progress bars. Following the Flashing of the individual files, please always check that avrdude did not output any errors and wait briefly until the controller utomatically resets and until the attached monitor displays a type of OSD. If no monitor is available, the process can also be checked by waiting for the red led to start flashing again. However, using a monitor is simply more fun as you can actually see the progress and you get reassurance that each stage has been successful. In the following example it is assumed that hex files are in the current working order.

avrdude -p m162 -c siprog -P /dev/ttyS0 -v -U flash:w:Logo1.hex:i
avrdude -p m162 -c siprog -P /dev/ttyS0 -v -U flash:w:Logo2.hex:i
avrdude -p m162 -c siprog -P /dev/ttyS0 -v -U flash:w:Logo3.hex:i
avrdude -p m162 -c siprog -P /dev/ttyS0 -v -U flash:w:Logo4.hex:i
avrdude -p m162 -c siprog -P /dev/ttyS0 -v -U flash:w:osdchar1.hex:i
avrdude -p m162 -c siprog -P /dev/ttyS0 -v -U flash:w:osdchar2.hex:i
avrdude -p m162 -c siprog -P /dev/ttyS0 -v -U flash:w:osdchar3.hex:i
avrdude -p m162 -c siprog -P /dev/ttyS0 -v -U flash:w:osdchar4.hex:i
avrdude -p m162 -c siprog -P /dev/ttyS0 -v -U flash:w:osdchar5.hex:i
avrdude -p m162 -c siprog -P /dev/ttyS0 -v -U flash:w:osdchar6.hex:i
avrdude -p m162 -c siprog -P /dev/ttyS0 -v -U flash:w:OSDvXXXXXX.hex:i
avrdude -p m162 -c siprog -P /dev/ttyS0 -v -U eeprom:w:OSDvXXXXXX.eep:i

Goal achieved: MAX7456 provided with graphics and Atmega with OSD-Firmware.

Communication with the EPI-OSD

The EPI-OSD speaks

Meaning of the LEDs:

  • LED1 (green):
    • on continuous = everything is fine!
    • Flashing = Manual control
  • LED2 (red) : Flashing at 1Hz
  • LED3 (green): Flashing at cycle time of the OSD
  • LED4 (red) : Flashes when the data from the FC is being transferred.

The EPI-OSD Listens

The EPI-OSD listens to one of the channels from the transmitter (PPM signal). To do this we attach the relevant receiver channel or FC output onto solder pad “PPM”. Only attach the PPM-Signal – no GND and certainly No 5V! (Otherwise things will start to break!) If this channel has a 6 stage switch, it is possible (provided that the correct firmware is in use) to switch between the various modes of the EPI-OSD.

The modes are:

  • Mode 1: OSD off
  • Mode 2: Logo is displayed
  • Mode 3: OSD display without HUD
  • Mode 4: OSD display with HUD
  • Mode 5: ----free-----
  • Mode 6: ----free-----

OSD Shell

If you connect the Sercom to the ODS and use a terminal program (for example the “Terminal-and-Flash” screen from MK-Tools), then you can use the OSD shell to configure or set the Call Sign. When you turn on the ODS it will provide a short text over the serial port.

This function is for firmware and later.

You can find the manual here: EPI_Shell




Switching the Modi on the OSD.

Technical Data

dimension of the board: 50,5 x 50,5 mm²
Mounting-holes: fitting to the FC
voltage supply: 8-15V DC (It is possible to use a 4S-Lipo, but than you shoult mount the 7805 onto a heatsink!)
current needed: ca. 200mA (without camera / video-downlink)
weight: aprox. 19g (with golden connectors / without wires)

C-OSD - the open-source Software for the EPi-OSD


C-OSD is not a own project - it is more an alternative open-source firmware for the EPI-OSD.

The hardware is therefore the EPI-OSD-hardware.

Features are nearly the same, displayed will be:

  • ground speed
  • Receiver level
  • Serial Link OK
  • Compass heading
  • Variometer (sink/climb)
  • Altimeter (actual height)
  • Direction to home position
  • Distance to home position
  • Lipo-Voltage
  • Uptime (of the OSD)
  • Flight Time
  • Manual Control
  • Number of GPS-Sattelites
  • Coming Home / Position Hold active

Additionally after the flight there will be displayed some statistics


(in german): http://forum.mikrokopter.de/topic-8592.html

Homepage of the Projekt

(in english): http://www.mylifesucks.de/oss/c-osd/

SVN Source Repository