ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

MiniOSD DIY完整指南:模拟图传也能低成本叠加飞行数据

MiniOSD DIY完整指南:模拟图传也能低成本叠加飞行数据 每个玩穿越机或固定翼的人迟早都会撞上一个很现实的问题飞机飞远了图传画面里只剩天空和地皮电池电压多少、还能飞多久、当前位置离返航点多远全靠地面站估心里完全没底。我手里那套模拟图传已经服役了三年换数字图传的成本实在下不去手于是把目光重新放回到一块早就被很多人嫌弃的老东西——MiniOSD。折腾了半个多月从焊板子到刷固件到上机调参数踩了不少坑也把整套流程摸透了。这篇文章就是我的MiniOSD DIY记录不谈玄学只讲能落地的操作、参数和排查思路给还在用模拟图传、又想低成本补上遥测数据的玩家做个参考。1. 为什么现在还要折腾MiniOSD这个东西1.1 手里的模拟图传还没彻底退役这是最直接的动机。很多老玩家的抽屉里可能还躺着五六套5.8G模拟图传和摄像头它们飞近距离、跑小尺寸穿越机依然够用画质虽然没法跟数字高清比但延迟低、穿透力也还行。既然图传链路不换那最划算的升级就不是换整套系统而是给现有的模拟链路插进一个OSD模块让图传画面直接叠加飞行数据。MiniOSD正好干这个事它接在摄像头和图传之间把飞控输出的遥测信息转成字符实时叠到视频信号上。成本十几到几十块原理清晰焊接量也不算大非常适合当作周末的DIY项目。1.2 MiniOSD到底是怎么把字符画进画面的要搞懂MiniOSD得先知道它内部的三个核心角色视频叠加芯片MAX7456、一片ATmega328P单片机以及负责电平转换和稳压的周边电路。摄像头送来的模拟视频信号进入MAX7456后芯片会解析出视频的行场同步信号同时单片机通过SPI告诉MAX7456在画面的哪个位置、显示哪个字符MAX7456把字符像素叠加到原始视频上再从输出脚送出去给图传。整个过程是硬件实时叠加的不经过软件缩放所以延迟基本可以忽略不计这也是它当年能在APM/Pixhawk时代普及的关键原因。很多人会把MiniOSD和飞控地面站里的HUD搞混。地面站是把数据画在电脑或手机屏幕上MiniOSD则是把数据直接烧进模拟视频流里让你戴着眼罩就能看到。它的显示能力很有限——PAL制式下大约能放20来列、十来行字符能显示的符号也主要靠MAX7456内置的字符库。好在电压、电流、高度、速度、GPS坐标、航向、距离返航点这些关键信息都能塞进去对实际飞行来说已经足够用了。1.3 都什么时代了比数字图传差在哪不吹不黑MiniOSD的体验确实跟大疆的数字OSD不在一个维度。数字图传能叠加的信息量大得多字体清晰、支持中文字库还能直接在遥控器上翻页设置。MiniOSD能做到的只是单色、固定位置、刷新率有限的老式字符界面画面在强光下还可能看不清。但它有一个数字图传现在依然比不了的优势便宜、透明、可控。一套入门数字图传的价格可以买几十个MiniOSD模块而且MiniOSD的协议、源码、字符定义都是开放的想加什么功能完全可以自己改。如果你手上正好有旧模拟设备花几十块钱得到一个带电压、高度、返航信息的图传画面这笔账怎么算都划算。它不完美但在特定场景下依然是最好的低成本补充方案。2. 硬件选型买成品板还是从头用MAX7456搭2.1 MAX7456方案的核心物料MiniOSD的灵魂是MAX7456芯片。市面上几乎所有相关产品——从早期的MinimOSD板到后来的Micro MinimOSD——都是以这颗芯片为核心。自己从头搭的话除了MAX7456还需要一个单片机通常是ATmega328P负责解析串口数据、控制视频叠加再配一个稳定的5V供电、几个电容电阻做电源滤波、一个用于连接飞控的电平转换电路。这几个物料加起来成本很低但要做好PCB转接板或者飞线焊接对新手来说不是特别友好。我的建议是第一次DIY不要直接挑战纯手工搭电路先买一块成品MiniOSD板回来跑通整套流程等理解了信号链路和配置逻辑之后再考虑自己画板、自己焊。成品板本质上就是MAX7456加单片机加稳压电路的集合体你后续刷固件、调参数、排查故障的经验可以无缝迁移到自焊方案上。想省事的可以直接找Micro MinimOSD这类小尺寸板子重量轻、体积小塞进机架不占地方。2.2 成品板、半成品板和纯搭电路怎么选方案难度成本稳定性适合人群纯MAX7456自主搭建高最低取决于焊接水平想彻底搞懂原理、有焊接基础的玩家成品MiniOSD板低中等高大多数业余玩家到手即用带电流计的PowerOSD低偏高高需要电流、电量统计不想外接传感器我这边选的是成品MiniOSD板加外接电流计的方案。原因很简单这种板子上已经预留了ISP刷写口和UART引出脚接线简单出问题也好排查。如果你以后想深入折腾完全可以在同款板子上用飞线引出MAX7456的SPI信号逻辑关系是一样的不会白学。2.3 协议决定固件选板前先想清楚飞控MiniOSD这块板子只是个壳真正的大脑在固件里。不同飞控平台走的协议不一样如果你用ArduPilot系列的APM/Pixhawk飞控对外输出的是MAVLink协议如果你用Betaflight图传叠字走的是MSP协议还有极少数设备用UAVTalk等协议。选购模块时不要太在意商家宣传的兼容一切而是要确认它能刷对应协议的固件或者至少能通过固件切换协议。我自己的配置是Pixhawk飞控加MiniOSD板所以固件方向非常明确走MAVLink。这样一来飞控通过串口把电池电压、电流、GPS坐标、姿态等MAVLink消息发出来OSD单片机解析后再交给MAX7456叠加。买板子之前我特意确认了板上的单片机是ATmega328P因为它能刷MWOSD这个主流固件支持协议多资料也好找。3. 焊接与接线先解决供电和信号链再做其他3.1 供电设计永远是第一位的MiniOSD对供电质量非常敏感。MAX7456叠加字符的时候需要参考视频信号的同步沿如果供电电压抖得厉害视频同步信号也会跟着抖画面就会出现条纹、颤抖甚至直接黑屏。所以给MiniOSD供电别直接怼动力电池的输出除非你用的是带稳压功能的成品板并且确认它的稳压电路能抗住电机的电流尖峰。更稳妥的做法是把OSD供电接到一路独立的5V稳压电源上最好再串一个LC滤波。我在OSD的电源输入端加了一段很小的π型滤波器一个10uH贴片电感和两个100uF钽电容效果立竿见影屏幕上原来细碎的花纹少了很多。这个滤波器成本几乎为零但很多教程不提属于典型的自己踩过才知道的细节。3.2 视频链路顺序摄像头→MiniOSD→图传视频信号线的接法看起来简单但顺序错了就是白折腾。务必保证视频信号从摄像头输出后先进MiniOSD的Video In引脚再从MiniOSD的Video Out引脚出来进图传。如果你想跳过OSD或者接线错乱那画面要么没任何叠加字符要么出现很多拖影错位的色块就是这个原因。接视频线的时候还要注意制式统一。摄像头、MiniOSD、图传最好都设在PAL或者都设在NTSC混用制式会让OSD字符显示不全或被切到画面外面。MiniOSD板上的视频制式通常通过固件参数设置摄像头如果要手动跳线得先翻一下说明书确认默认制式。我这次把PAL摄像头、PAL制式的MiniOSD和PAL图传配在一起字符位置和大小基本不需要额外调整。3.3 遥测链路怎么从飞控拿数据MiniOSD要显示飞行数据就得从飞控串口读遥测。以Pixhawk为例飞控有TELEM1、TELEM2这类UART口把OSD的RX接到飞控的TX把OSD的TX接到飞控的RX同时必须共地。很多玩家只接了RX和GNDOSD收不到数据就是因为飞控的TX没有接通。这里有个容易忽略的点MiniOSD的TX口不只是用来回话的MWOSD固件可以通过它做参数双向同步甚至直接在电脑上用OSD GUI调整飞行参数。日常飞行时可以不接TX但调参阶段接上会方便很多。接线完成之后用万用表确认一下OSD供电脚对地的电压是不是稳在5V左右视频信号线和地线有没有短路再上电别一上来就烧香。4. 刷固件与参数配置从一片空白到画面出现字符4.1 给MiniOSD刷入MWOSD固件的完整路径如果你的板子出厂已经刷了某个老版本固件建议还是自己动手刷一遍最新的MWOSD。老固件对ArduPilot新版本兼容性不理想默认参数也经常对不上。刷固件前先确认板子有没有bootloader。很多MiniOSD成品板出厂已经烧过Optiboot引导直接用FTDI线就能刷如果板子是二手旧板、或者你自己用ATmega328P搭的大概率需要先用USBasp或Arduino ISP给芯片烧引导程序。用Arduino作为ISP烧引导程序的连接是Arduino Uno的5V接目标板的VCCGND接GNDD10接目标板RESETD11接MOSID12接MISOD13接SCK。先在Arduino IDE里把ArduinoISP示例上传到Uno再把开发板型号选成Arduino Pro or Pro Mini (5V, 16MHz)执行烧录引导程序。这一步做完后面的固件上传就顺了。引导程序确认没问题后用FTDI转串口模块接OSD的UART口在Arduino IDE里打开MWOSD的源码选择对应板型和串口直接点上传。等几秒钟看到avrdude的进度条走完固件就进去了。这里给个提醒烧录时OSD不要跟飞控接在一起避免串口电平互相干扰最好只留FTDI和电源。4.2 MWOSD GUI调整布局比想象中简单MWOSD刷好之后默认画面通常不是你想要的样子。老版本默认把所有信息都堆在屏幕底部或者压根不显示。我在电脑上打开MWOSD GUI把OSD用FTDI串口连到电脑波特率选对软件就能读出当前的配置和字符位置。GUI左侧是一堆可显示项比如电压、电流、姿态表、GPS坐标、距离、往返速度每一项都可以拖到屏幕任意位置。调整布局时注意别把字符放在画面安全区之外。模拟图传画面四周经常有一圈被裁掉或者畸变的区域如果字符靠边太近实际戴眼罩时会看不全。我的习惯是把电压、电流放在屏幕上方两侧高度和速度放在中间偏下距离和方向放在底部这样飞行时瞄一眼就能抓到重点不会跟摄像头画面里的障碍物重叠。4.3 ArduPilot侧必须开的数据流参数这一步是很多新手刷完OSD发现没字的头号原因。OSD虽然从飞控串口收到了数据包但如果飞控没有主动往外发MAVLink数据流OSD也无米下锅。在ArduPilot里需要通过地面站把对应串口的数据流参数打开例如Pixhawk上使用TELEM2口接OSD时要设置SR2_EXTRA1、SR2_EXTRA2、SR2_EXTRA3这类参数。网上很多教程写的是SR0或SR1那是因为他们在APM 2.x或者第一组串口上操作。关键思路是你接的是哪组串口就开哪组串口对应的SR参数。数据流速率也不要开得太猛OSD只需要每秒几条数据就能正常显示给个2到5的速率完全够用开太大反而会占带宽。设完参数后重新上电OSD上应该就能看到不断刷新的数据了。4.4 电压校准不要相信默认值电压显示是OSD最核心的功能但默认参数显示出来的电压经常不准。原因在于MiniOSD板上的分压电阻有误差而飞控的电源模块也不是每个都标定得一样。校准方法很笨但很有效先用万用表量出电池或者电源模块的实际电压再对比OSD画面里显示的数值在MWOSD的电压校准页面里去调分压系数直到两者接近为止。如果用的是Pixhawk电源模块OSD显示的是飞控测量到的电压值那校准要落在飞控侧而不是OSD侧。注意区分OSD屏幕上看到的电压到底是自己用板载分压电阻测的还是通过MAVLink拿飞控发来的电池信息。我这次用的是后者调飞控的BATT_VOLT_MULT参数电压误差控制在0.1V以内。电流校准也是同样的逻辑只不过还要考虑电流计的零点偏移空载时画面显示不为0就得先把偏移清零。5. 上机实测花屏、雪花、字符错位的排查记录5.1 现象一满屏雪花和滚屏第一次上电测试我最怕的画面就是满屏雪花。那次把OSD串进视频链路后图传画面直接一片雪花偶尔还能看到非常淡的滚动条纹。初步判断不是摄像头坏因为把OSD从链路里拿掉画面立刻恢复正常问题就出在OSD这一环。排查从最基础的三项开始供电是否稳定、视频接头是否松动、摄像头和OSD的制式是否一致。结果发现是我图省事把OSD的5V直接和图传的5V连在一起图传工作时把电源拉出了很大的纹波视频同步信号被干扰得几乎没法用。给OSD单独走了一路5V并加上LC滤波后雪花和滚屏全部消失。如果供电没问题那就重点检查视频线的屏蔽层和接地点视频地线接虚了也会出现一样的症状。5.2 现象二画面有OSD但字符在颤抖、重影还有一次遇到的问题更奇怪OSD字符能显示但每个字都在轻微颤动边缘还有重影。这种通常不是供电问题而是视频信号在OSD内部叠加时同步信号提取不准。最常见的诱因是输入到OSD的视频信号电平太低或者太高摄像头输出本该是1Vp-p的标准视频信号如果异常MAX7456就无法稳定锁定同步。我在摄像头和OSD之间串了个75欧姆阻抗匹配之后重影就消失了。换一个低照度摄像头直接接上去同样没有再出现颤动。所以如果你遇到类似情况先换摄像头排除一遍再检查视频链路里是不是多了什么阻抗不匹配的转接线而不是直接怀疑OSD板坏了。另外某些图传在开启发射功率很大的时候辐射干扰会让OSD字符轻微抖动把天线远离OSD板或者给板子加个小屏蔽罩会改善。5.3 现象三电压数值和实测差得离谱OSD电压显示比万用表实测高0.8V左右这个坑我差点当成是板子坏了。实际上MiniOSD默认的电压分压系数是按特定电阻网络预设的不同版本板子电阻值有差异显示差0.5V都很常见。直接在MWOSD的电压设置里重新校准即可不需要动硬件。校准的正确步骤是接上真实电池用万用表在电池端量到准确电压然后在GUI里把校准时电压填成万用表读数同时把OSD显示值调成一致。如果OSD显示值比实际高降低分压系数反之升高。这个操作要反复两三次才能稳在0.1V内。电流计如果有偏差也是一样的思路先在地面站里看飞控的电流值是否准确再决定调飞控参数还是调OSD的缩放系数。5.4 排查顺序与工具清单折腾下来我给自己整理了一套固定的排查顺序遇到OSD问题先别乱拆。第一步看供电电压对不对、纹波大不大第二步看视频链路制式、接点、干扰第三步看遥测数据串口接线、波特率、SR参数第四步看固件配置协议类型、校准系数。这套顺序可以避免很多瞎折腾半天结果发现是电源线接触不良的尴尬。手边需要的工具也不多万用表是基本款最好带电压和通断档一个能调波特率的FTDI转串口模块如果是焊板子还需要细尖烙铁和优质焊锡有条件的话搞一台几十块钱的微型示波器看视频信号和电源纹波会非常直观。没有示波器也能玩靠万用表和逐步替换法同样能定位大部分问题。6. 进阶玩法和这半年来的最终体会6.1 自定义字符和告警值设置MiniOSD的字符库不是死的。MWOSD固件支持自定义字体你可以把自己喜欢的标识、汉字或者专属Logo烧进MAX7456的字符库里。这个功能看起来很花哨实际做起来也不算复杂用MWOSD自带的字体编辑工具按位图方式画好每个字符的像素再编译烧录就行。我给自己加了一个小的飞机符号显示在屏幕左上角飞行的时候一眼就能认出这是哪台机子。比字体更有用的是告警值设置。电压低于设定阈值时OSD会把电压数字变闪烁或者换图标这在远航时非常救急。我习惯把报警电压设成单片电芯3.7V并在GUI里把报警字符调成醒目的位置。别小看这个功能它比你自己一直盯着电压数字可靠得多眼睛本来就要看航线哪里还有精力一直盯角落的数字。6.2 从MiniOSD到黑匣子日志的联动MiniOSD不只是用来实时显示它还能配合飞控日志做飞行复盘。因为OSD显示的很多数据本来就来自飞控的遥测流飞控同时也在往SD卡里写日志所以你在画面上看到的电压、高度、姿态变化都可以在落地后从日志里找到对应时间戳的原始数据。那次我试飞时感觉某个阶段动力响应很怪回看OSD录像发现当时电流很高再从日志里拉出电机输出值很快就定位是电池内阻变大导致的压降。这个玩法对老玩家来说不算新奇但对刚开始用小体积机的朋友来说相当于把一台简陋的飞行仪表和飞行记录仪绑在了一起。MiniOSD提供了实时反馈日志则提供事后分析两者一配合很多疑难杂症都能找到证据。6.3 我对这套DIY方案的评价和后续打算将近半年的MiniOSD使用下来我觉得它最值得推荐的点不是因为先进而是因为它把成本、透明度和可玩性平衡得很好。这套方案能让你清楚地看到从飞控串口到视频叠加的每一步是怎么工作的——这是任何一台集成度很高的数字图传都给不了的。每次接好线看到画面里出现跳动的数字心里还是会有那种这层东西是我自己搭出来的的满足感。当然它也有明显的天花板字符信息量有限、调试过程需要一定的动手能力、抗干扰能力远不如数字链路。如果你对画面叠加的信息量要求很高或者手里的模拟图传已经快退役了那去升级数字系统完全合理。但如果你跟我一样手里还有好几台模拟机子又想低成本地把飞行数据看清楚MiniOSD依然是一个值得动手的项目。后续我打算把这块OSD挪到小固定翼上把高度和空速显示调好再研究一下如何用数传链路把OSD的遥测数据同步到地面站让这份DIY的乐趣再延续一段时间。
返回列表