Fortunate community of this OSD owners are growing and growing , including FPV flyers but not only , even some universitys and high schools for experimental use and other projects adaptations as well as some home designers .
So lastly I have many additional questions similat to like that :
I like to use OSD in another use -
on combant plane (with graphics and sigt to aim enemy) ,
on boat ,
on U-boat ,
on RC-car ,
on real car with recording ,
on bicykle ,
on motorbike as parameter monitor ,
on my Video monitoring system cooperate with PC ,
on my personal Videos information stamp ,
on Video as frames counter (whatever it means),
on my own top secret project , so can not tell you about ,
etc. etc. and many more .
I do not need to use GPS - I do not need it , I like the analog inputs use only - like Voltages , external sensors and possibly RPM meter .
OSD is cheapper without GPS .
So that is OK - here is the firmware for beta testing for everyones want it to test - working without GPS module at all .
All other advantages are remain without change .
Button work only as Video mode changer and save (something like save home) function saving Video mode and reseting timer at any moment .
Iviting logo will gone after 5 seconds so not any save needed for proper work .
So after firmware update all information regarding GPS data are not displayed .
Other like Timer , GMT date (will be zero so made it invisible) , GMT time (will be zero so made it invisible) , Frequency meter(RPM meter) , ADC , and graphical object are displayed without changes - all can be configurable (scaling , alarms etc.) in usual way using PC configuration program . Character editor and all rest - works in usual way .
Free UART(COM) port is set to default 38400 baud rate receiving and can be used to display on OSD layout absolutely everything we want or need to display at any location using external device - if we want to connect any .
Now for those programerrs who want to display anything using that port and their device .
So we can deliver information to display at location x,y looks like that :
[leading character][text message][ending character][ending space]
ending space is displayed always after mesasage.
String to OSD shoult look like that :
must be end by enter character CR LF linefeed and carriage return .
$M - means that it is meassage to display (M must be uppercase)
XX - is a x coordinate on screen , must be hex value
YY - is a y coordinate on screen
LL - is leading character hex value from font table
EE - is ending character hex value from font table
abcd - is a "text message" to dispalay
when LL or EE is Hx00 - then will be not displayed at all
when text message is "" [empty] then also will be not displayed
So string to OSD can belike that in C aduino sample
serial.println("$M050a4a4bI like that")
so at location x=05 y=10 will be displaed this :
<I like that>
as you see LL is 4a it means [<] char and EE is 4b it means [>] char .
or can be done like this way:
serial.print("$M") //header for message
serial.print("050a") //x and y coordinates
serial.print("4a4b") // leading and ending characters(graphics)
serial.println("I like that") //message with LR CR ends string
This is exactly how is working this function in OSD now .
As advantage of this system when we define most significant bit of XX coordinate for 1 then we choose small fonts for text message display (only capital letters) - when is 0 then default big letters are displayed from characters table capital and small letters .
XX |= (1<<7) // set 7 bit for small characters
XX &= ~(1<<7) //reset 7 bit for big characters
To be possible custom screen configuration , need of understanding how it is work .
The screen is divided on net where the charcters are writen .The grid is 30x16 with PAL mode nad 30x12 in NTSC mode .
Looks like that:
Y 1 2 3 4 5 6 7 8 ... 29 30
So when we made configuration we just teel the program where on the screen we want first character(or graphic) of our information - up left corner is coordinates X,Y (1,1) , bottom right corner is X ,Y (30,16) - remembre that NTSC mode Y must be no more than 12 .
How do we know what mode are currently in use ? - we will see after OSD init logo .
I hope that this firmware will help for many peaples doing his own project and will made poor man's OSD more open to world , also be more universal to variouse usage in many other project , not only flying platform .
I foloowed of mmormota idea about add to OSD firmware ability to display any custom information delivered by RX input at the same baud rate with GPS module .
So if anyone have external device with GPS and retransmitiing GPRMC GPGGA messages , OSD can be used in usuall way - inluding autodetecting baud rate .
But also in middle of NMEA messages is possible to put custoom dispaly instruction - all described detaily in post above .
So here is the beta version of firmaware 1_60 - mostly for mmormota to test with ardupilot software .
It is working exactly as remzibi OSD (including GPS configuration commands sent at begining by TX line after baud rate detection) plus ability to display any custom oinformation delivered by UART(com port) in the middel of NMEA messages , format described in post above :
So with this solution there are a bit solved problem of insufficient space in OSD's chip . maybe will be possible also displaynig artifical horizon and pitch using characters E0 to E7 from character-font table .
Here are some pictures of possible GPS connection with external device and OSD .