a. Communication protocol is simple

There are some of firmware versions able to decode information and type them on screen .

Initially this firmware was made to easy connection OSD to early version of Ardupilot (DIYdrones.com team autopilot) .

For present versions of Ardupilot Mega 2 supporting MAVlink please look here g. 3rd party software for remzibiOSD

Those information should be delivered to RX input pin of OSD instead of normally connected GPS module .

OSD can receive Artificial Horizon data delivered as degrees pitch and roll .

If your device will use GPS module you can send to OSD all GPS data between of AH data .

All ADC for analog inputs , and T0 (frequency/RPM meter) , and timer , still works independently as in normal OSD .

So Your Device must deliver data using free hardware TX or software TX pin connected to OSD RX pin .

Data can be sent at any baud rate in range 9600 to 115600 .

When data string $I or $A will be transmitted to OSD , then OSD will automatically detect baud rate of data .

All data transmitted to OSD are buffered , however buffer is 110 chars so strings longer than 110 are not allowed , string of data is terminated by <CRLF>. Receiving buffer helps to not loose any char of command's data , even if OSD doing meanwhile any other counting thread.

It is also possible to test OSD as display using USB cable and PC software named IMU_SIM .

You can send commands described below to OSD live and look at screen response and OSD's behavior .

I hope it will help for You, when You writing Your software for Your Device .

--------------------

Artificial Horizon data should be look like that :

$I,roll,pitch,<CRLF>

ex . $I,23,-112,CRLF CRLF -are two bytes termination of line (dec 13 10) (hex 0D 0A)

Support graphical artificial horizon and pitch presentation , roll and pitch as integer type as degrees (-180,180)

Artificial Horizon's frame will automatically move one line down at PAL video system to keep it at middle of OSD screen for both NTSC and PAL cameras video system .

--------------------

GPS data :

$A,lat,lng,numSV,[dist],alt,speed,course,[azimuth],gpsDate,gpsTime,<CRLF>

Notice that comas must be after A and at end of message

[dist] and [azimuth] can be empty , I mean two empty comas ,,

Lat and lon format as float ex. -121.123456

dist - as integer

alt - as integer

course as degree - as integer , range -180 to 180

--------------------

Save Home command :

$SH<CRLF> - will made save-home in OSD (save initial position of home to counting)

--------------------

Clear screen command :

$CLS<CRLF> - this message will clean screen of OSD for a moment - so any unused info or not refreshed will be cleaned , all info refreshed will be still displayed after CLS .

Notice that in normal OSD's firmware screen was cleared once a minute to remove any possibly screen's errors or glitches , now is NOT every minute screen cleaning as in regular OSD . So if you send any custom messages to OSD you have send time to time CLS command to clean it up .

--------------------

ON and OFF OSD's layout

$L0<CRLF> - this will made OFF OSD's layout

$L1<CRLF> - this will made ON OSD's layout

--------------------

Custom messages on OSD .

Is possible to write on OSD at any moment , at any screen location your own custom text message or any graphic symbol from font table

Since firmware A1_73 custom messages looks like that :

$M,x,y,L,E,text,<CRLF>

where:

x - is char value of x coordinate (ex. 12 are ASCII two bytes 31,32 , or 5 is ASCII one byte 35)

y - is char value of y coordinate

L - is char value of Leading character (ex. 178 is ASCII bytes 31 37 38)

E - is char value of Ending character

text - is text to type as notmal ASCII chars

notice that coma "," at end of message must be as well as after M

to display graphical L(eading) and/or E(nding) char/s only without "text", type command like that:

$M,x,y,L,E,

to get small characters of text simply set MSB bit 7 of x coordinate (small fonts but only capital letters - see OSD's font table)

Too see x y coordinate and L E chars meaning look at picture here 06. Connect OSD as display to other devices

-------

In older OSD's firmwares the custom message command was looking like that:

$MxxyyLLEEtext<CRLF>

$M - means that it is meassage to display (M must be uppercase)

XX - is a x coordinate variable on screen , must be hex value as string (chars) ex."ab"

YY - is a y coordinate variable on screen , must be hex value as string (chars) ex."ba"

LL - is leading character hex value from font table as string (chars) ex. "d9"

EE - is ending character hex value from font table as string (chars) ex. "00"

text - is a "text message" to dispalay (letters from font table) as string (chars)

when LL or EE is Hx00 (zeros "00" ) - then will be not displayed at all

when text message is "" [empty] then also will be not displayed

Obsolete , because of lot of work to play with HEX strings watching for leading zeros this command is not used any more .

---------------------------------------------

Here is the movie showing live testing of OSD's firmware for work with other devices , using USB cable and IMU_SIM program :

At the end, OSD's firmwares for download , working with commands described above , IMU_SIM program are at 10. Downloads