This English page is provided by Wicherd, crashedagain & brashley - anybody who is willing to help is welcome!
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
- 24.05.2010: Server-Update!
- You now can find all related firmwares here: Firmware für das EPI-OSD
20.11.2008: Firmware 0.8.2.5
- A Command line was added. More at EPI_Shell
- Data for the NC will no longer appear
14.09.2008: Firmware 0.8.2.3 available for download
- 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
28.08.2008: Firmware 0.8.2. The FC now beeps as usual when the RX signal is lost
- Download at: http://mk-epi.de/OSD/HW02/FW_0_8
- This version is still a little experimental. Don’t get upset if it crashes
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
- Flight time
- Climb rate.
Using the NaviCtrl board from Mikrokopter the following data can be shown:
- Number of satellites
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
- CaScAde was such a nice little program to write, see OSDCG - OSD Callsign Generator, you can tinker and generate your own Callsign for the OSD
- RC-Betrieb (RC-Operation) ON, the OSD mode is switchable by RC channel input
The EPI-Menu is also described here
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|
|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!
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/
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.
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
- -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-----
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 0.8.2.5 and later.
You can find the manual here: EPI_Shell
Switching the Modi on the OSD.
|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
- 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/