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