哪位大侠知道,做直销需要交钱吗?分享一下MinimOSD-Extra 2.4固件

 ?最近在调四旋翼用到的minimosd,虽然在网上可以找到一些资料,但是资料讲解的比较范范,有些步骤还是不知道应该怎么操作。经过这两天的摸索,终于搞清了OSD的开发过程,下面就做简要的述。

    惭愧的很,其实研究飞行器pixhawk已经有近一年的时间了,也曾一直想写点什么,但总是被各种理由耽误和错过了。从这篇开始吧,养成一个写博客的好习惯,与人交流,也方便以后自己的再复习,以后再慢慢地把自己做四旋翼的过程也写下来。

 pixahwk主控板上可以挂上一个摄像头,利用图传模块就可以远远的在显示屏看到摄像头中的景象,其实这些和飞控本身并没有关系。看过大疆的成像没有,上面还叠加了很多飞控本身的信息,如高度,速度等信息,这些信息叠加在视频信息上用的就是OSD模块,Osd的全称是on-screen displayOSD核心是利用字符发生芯片在显示器的屏幕上显示需要的字符,即在屏幕视频之上叠加数据,我们这里用的字符叠加芯片是MAX 7456。学会这些就可以定制一个自己的想要的信息。这里我其实是想在屏幕上显示飞机的“血条”。

     下面让我们看看在视频之上叠加字符是个什么效果:

目前市面所有的飞控osd模块都是起源于google上的minimosd项目。该项目版本截止于12年的/diydrones/MinimOSD-Extra/wiki), 该版本在原版基础上扩展对mavlink传递信息的支持,可以显示更多的飞行数据,并且具备了简单的飞行统计功能,还改进了osd显示方案的切换方式。在此之外,也流传着一批针对国内用户的中文版osd固件,基本上都是基于minimosd-extra进行了简单改造。而杭州的playuav则大胆的对osd体系结构进行了改进,彻底改变了osd硬件架构,做出了一些很有新意的osd尝试(https://github.com/PlayUAV/),还有的就是杭州的playuav设置界面做的很是完善,对于只想简单定制飞行器信息的可以用这个,但是价格很昂贵,100多元,是minimosd的2-3倍价格。而minimosd的开发仍是以arduino为基础,其实也没必要看懂全部,知道从哪改就行了,所以改起来也不是很复杂。如果再了解一下mavlink就完美了。(估计后期我们可能还要最忌添加新的mavlink信息,后面再整理mavlink吧。)

     下面我们先说一下开发环境大搭建,和部分工具的介绍吧。这也是有不少坑,最少先搭建环境,而后才能谈开发。先让大家看看我们用到的硬件吧。

 这是整体的图,包括:1、首先的是摄像头和图传模块以及显示屏,这是一套的图传,用来显示摄像头的图像的。2、再者就是飞控和OSD模块,这一部分是用来在飞控中的mavlink信息解析出来之后叠加在视频之的。3、嗷,我们的目的是修改OSD定制我们想要的界面,那就还需要一个osd的程序下载模块,下面再贴上图。4、最后就是电源供电模块了,这里要两部分供电,pixhawk的5v供电,但是摄像头、图传、osd是12v供电的。下面贴的他们的图,自己随便看看好了。

   ?说完了硬件部分,简单介绍一下软件吧。

    ?4、ArduCAM OSD config这个软件还是很重要的,本身是配置显示界面的软件,和修改代码的效果是一致的,背后有代码在支持,两个可以配合着一起修改代码。同时刷字库也要用它,因为如果你想显示自己的一些汉字或自定义字符还是要改字符,改了之后再刷进osd。刚刚提过他也可以下载固件到osd。

    ?5、上面是说用配置工具直接改osd,但是功能是受限的,配置中没有出现的还是要从角度中去改。改就要用到arduino开发工具。我们在这里就将近浪费了一天的时间,用过很多版本,最后只能使用arduino1.0.5的版本。下面我都会提供这些工具。

     感觉说的有点乱了,说的简单点吧:arduino环境开发源码,配合配置工具一起修改,修改好后直接就可以下载到osd中使用了。但是要是想显示一些特别的字符汉字,就要自己改字库,再下载进去。

下面具体说说使用吧,不动手操作一遍,估计还是有迷糊的。

OSD_Vars.h中定义的变量储存了从mavlink协议获取的飞行数据,这些飞行数据被解析后,保存在运行时内存sram中。

OSD_Config.h则负责与eeprom打交道,定义了配置信息在eeprom中的保存位置,便于minimosd启动后,从eeprom读取用户配置信息。

OSD_Panels.ino是具体的绘制功能,每一帧视频,都有这些功能,将飞行器信息绘制到视频之上。

MavLink.ino则是用于对mavlink协议的解析,将收到的数据包按照mavlink协议解析,解析成功后将数据储存在ODS_Vars.h中定义的变量中。

minimosd通电启动后,首先调用到Setup()入口函数,实现如下流程。

1.初始化mavlink,设置了与飞控连接的串口波特率以及端口号

然后向飞控发送数据请求,osd需要如下飞行数据

3.读取eeprom设置,OSD_Config.h中记录了不同的设置信息在eeprom中的存储位置,在这里逐次读取,如:

这里要说一下minimosd中的panel结构,minimosd中设计了4组,每组8个,共32个数据槽位,每个槽位分别对应于需

要显示的一种飞行数据。针对每个槽位,可以开启或者关闭显示,亦可以设置该槽位在屏幕上的显示位置(x,y坐

标)。对于上述的32组槽位设置,minimosd支持两种方案,所以放到一个长度为2的数组中进行管理 。

下述代码是每个槽位是否显示的变量结构,每组8个槽位的1或者0正好对应于一个byte数据类型,因为有两套显示方

案,所以每组都是一个长度为2的byte数组

下述代码是槽位显示位置的变量结构,x和y坐标分别用byte来存储。同样,都可以应对两套显示方案。

4.启动loop循环,无更多细节。

通电后,minimosd完成Setup中的所有功能,便进入了一个周而复始的循环工作过程,不断的调用Loop()函数,而每

个loop循环,则执行如下函数:

1.获取mavlink数据.根据mavlink的msgid,获知数据类型,后分别调用mavlink库中的函数对数据包进行解析,存储

2.字符绘制,这是osd的核心功能,针对允许显示的飞行数据,调用绘制该数据的函数

我们以绘制电池电量panBatt_A为例,该函数代码如下:

其中,osd.setPanel()函数是7456提供的开发接口,设置当前要绘制字符的位置。

Osd.printf()函数类似于标准c++的printf,是向7456当前的位置输出字符。在上述代码中,在eeprom读出的屏幕位置,绘制了从mavlink协议获取的osd_vbat_A变量的值。

可见其实画图也就是这4步而已:

 上面已经说明了画图就是这么简单,这里是通过源码修改的,建议 配合config工具 对于已经提供的界面只要设置就行了。两个修改都有效,能配置的就配置,自定义再修改源码。

如何自定义字符,自定义汉字呢,自定义图标。

有没有看到上面两幅字库的差距,在字符中有些已经被我改变了,将改变后的字库刷进OSD,索引相同的位置显示就不同了。

如何调用呢?感觉叫字符不合适,就叫它图标吧,包括汉字。

上面一共是16*16=256个字符,每个字符都要唯一的索引,即从0x00--0xFF刚好16*16=256个。比如在上面的图上,"自"的索引就是

0x808,这是全称,因为每个索引位置都不同,故用0x80就可以调用 “自”。“稳”的索引是0x81,“悬停”的索引是“\x82\x83”,“\x82\x83”这种事arduino源码中的写法。

这种图标是显示不能再用osd.printf函数,而是用osd.printf_P( PSTR())PSTR解析字符串就是对字库的索引,如刚开始我们这个OSD显示的logo是

ArduCam OSD")); 怎么解析懂了吗? 0x20对应字库空,就是:先是4个空格,然后是“王。速度油” (修改后的,

不修改应该是“云翔速度油”)。|表示换行。换行后显示4个空格,然后索引“间电压流量”,|换行。 对于字符

选中某个位置后。利用后面的白框和黑框还有灰框就可以绘制自己的图标了,绘制好了,别忘了保存save character,

file下也有save as。画图标是时候可以按住鼠标左键,一直去画。

最后怎么更新字库呢?其实也就是OSD下载的问题了。需要下载模块arduino下载器,因为我们这个用的OSD其实还是一个arduino,从上面在arduino下开发应该也看的出来了。

3、配置如下图!由于中文字库删除了一些显示项,请安如下图配置osd选项,配置好后save current下就写进了osd的eepom!

看这这一切写的有点复杂,其实并不是只要自己需要时自己动手操作一遍遍都清晰了。这里说了这么多只是想把有些

问题说的清楚些,让后人不必再浪费这个时间了。比如我当初就是考虑这些汉字怎么显示的也应该尝试了不下几十次,最终才想出“索引”这种方法。再比如我对这些索引的格式一点也不清楚,为什么和图片中不同,“自”明明是0x808但其实用0x80就行了,既然是0x80,其实源码中是写作\x80;再比如这些字库怎么修改呢,修改后再重新烧录进去,那不就可以索引到自己定义的图标了嘛。

就说这么多吧,按照我们项目的要求或许下面要研究一下mavlink,飞机那面添加新的信息,视频显示这边解析出来

,并自定义表达。就说这么多吧,都已经2016年8月7日18:19:42,该去吃饭了

(交流qq:,注明加好友原因)

中文显示版minimosd,基于minimosd2.2版本修改,借鉴了apm+的风格及提供的资源,在此表示感谢欢迎下载使用,教程都已经打包好了在百度网盘,欢迎下载使用,目前仅供多轴使用,有很多感觉没必要的
项目都被我阉割了。在此提醒以下,osd刷机务必使用带dtr口的ftdi串口芯片,淘宝10块左右的ftdi串口刷机线
有6个针的一般都可以使用。
关于osd的问题欢迎回帖说明(技术交流请勿留联系方式版主留)

欢迎继续阅读楼主其他信息

只要手机在手,您都可以快速、方便地看贴发帖,与论坛好友收发短消息。
极致优化,畅快"悦"读
独有的论坛界面和触屏设计,手机论坛也变得赏心悦目,操作自如。
不管是风景图画,还是新闻现场,拍照发帖一气呵成,让您在论坛出尽风头。
下载客户端后,拍摄二维码快速访问本站:
或者通过以下地址访问:

模友之吧 中国唯一免费送模型网站

我要回帖

更多关于 哪位大侠 的文章

 

随机推荐