黄黑红 发表于 2019-1-3 23:30:08

X-plane11默认波音737-800自动驾驶主控面板(MCP)制作全记录

本帖最后由 黄黑红 于 2019-1-8 14:26 编辑

X-plane11默认波音737-800机模
自动驾驶主控面板(MCP)制作记录


(由于发帖格式混乱,在21楼有WORD完整文档的下载,有问题敬请指正,WORD完整文档下载链接:http://bbs.chinaflier.com/forum.php?mod=redirect&goto=findpost&ptid=49416&pid=702852&fromuid=52839)

这是个人制作过程的总结,我尽量写的详细一些,让有兴趣自己制作的朋友可以有所参考。其实还有一些问题没有解决,请有兴趣的朋友帮忙指点一二。



    如果哪位朋友知道这些问题的解决方案,请赐教:我的QQ:285811671,有兴趣的可以加我一起探讨



设计思路(MCP)——自动驾驶主控面板,是737-800驾驶最主要的控制面板,飞行过程中最常用的开关主要都集中在这个面板上。网络上很多厂家和个人制作FSX和P3D的MCP面板,X-plane却几乎没有,这与X-Plane软件本身的设计有很大的关系,我也是在探索过程中慢慢了解到这些的。


最初想要制作这个面板主要是为了在X-PLANE11的737-800飞行过程中模拟真实操作,降落时避免鼠标和键盘手忙脚乱的操作,最主要的是可以在飞机外部视角下看到各项数据并实现操控。毕竟在驾驶舱里操作是看不到全方位的美丽风景的。
   在设计制作过程中,一开始想用Arduino开发板来完成,后来发现Arduino的实现输入控制非常困难,上下位机程序很难完成,至少我是无法完成的。
   经过反复思考比对,最终这个MCP面板的制作我选用了EJOY负责输入,Arduino负责输出的双路系统,这样可以互相弥补不足。并且由于分成了两部分,所以各主板的负载都不大,USB连线就足以供电,不需要外接电源,这很省心。    输入控制选用EJOY32主板。EJOY32负责将按键、开关等输入设备信号传入电脑,可以支持摇杆、苦力键、脚舵等等,甚至可以模拟键盘做出全无冲的键盘,输入功能强大。但是这款主板处理电脑输出数据能力很是不足,所以输出控制交由Arduino处理。这个MCP所有零件我都选用的是插接件,全程免焊。



一、硬件材料


黄黑红 发表于 2019-1-3 23:31:21

二、硬件连接及软件调试

(一)输出部分:
1.主要部件:
   (1)Arduino UNO R3单片机与LY-AS001 V1.1扩展板
         
          Arduino UNO R3 主板                         扩展板
            
         Arduino与扩展版叠加直插连接

    (2)共阳,绿色字体0.56寸74HC595数码管模块5个
   
注释:(其中:3位数码管2个,4位数码管1个,5位数码管2个)
   (每位数码管均由一个74HC595芯片驱动,数码管的小数点在数字右下角
      时,数码管摆放方向正确)
   (每个模块均有两组插口,用于串接。其中左边针脚是从Arduino输入、右边的针脚是输出一一对应至下一个数码管模块左侧的输入)
   (模块针脚:VCC正极,GND负极,SDI数据,SCLK移位时钟,LOAD锁存)

2.硬件连接方法
(1)数码管与Arduino的连接
         数码管引脚                 Arduino引脚
VCC正极        5V 电源输出针脚(或3.5V)
GND负极        GND针脚
SDI数据        2号针脚
SCLK移位时钟        4号针脚
LOAD锁存        3号针脚

(2)数码管模块之间的连接
   
    使用XH2.54连接线将前一个数码管右侧的针脚与后一个数码管左侧针脚进行一一对应串联。连接顺序由左至右分别是:3位数码管------4位数码管------3位数码管------5位数码管------5位数码管。
    VCC正极接Arduino的5V输出,如果数码管亮度太高,也可以接3.3V的输出针脚,。 5根连接线分接4个XH2.54的3P插头,不用的位置就空着不接线就是,以后都如此处理。
    注意:XH2.54插头是有正反区分的,所以在组装插头和电线的时候一定要看清楚,两边插头连线一定不能接错,后面的各种XH2.54插头都是如此,需要仔细对比以后再组装。

黄黑红 发表于 2019-1-3 23:33:28




(3)单色LED灯模块的连接


   这是单色LED灯模块(支持Arduino),蓝色或者绿色均可(黄色和红色一般是用做告警)。如果用三色LED灯理论上是可以用同一个灯显示绿色(正常),黄色或红色闪烁(告警),然而太麻烦以后再说吧。之所以没有选用更便宜的LED灯珠,是因为这个模块自带电阻和XH2.54端口,省得焊电阻和电线了。模块化的组装相对更方便。其余的配件也是尽量选择带端口的模块而不是单个元件。
   
      红圈代表安装LED模块的位置,用于显示A/T模式的开启、F/D开启、最后一个就让它常亮。(前两个LED正极直接串在旁边的开关ON引脚上就可以了,这样开关打开灯就亮,关闭LED就灭,也就是说前两个LED灯实际上是接在EJOY32主板上的,只有最后一个LED灯是接在Arduino主板上)。这样其实是有些问题的,比如A/T和F/D模式开启以后,在飞行过程中有些情况会导致这两个开关自动断开,相应的指示灯也会随之熄灭。但是我这样的安装就做不到自动灭灯,主要是找不到X-plane的这两个LED灯状态数据输出位置,也无法做到开关自动跳闸。最后一个LED模块就随便连接到哪个5V输出上就可以了,反正常亮就是为了好看。

(4)按键灯模块的连接
            

    这是L16A自复位按钮开关(带绿灯6V)16mm模块。内置的灯用5V即可点亮,不需要串电阻,这里只接两根LED的“+”“-”级,其他三根开关线的连接后面再讲,灯的连接方法如下:(开关—连接插头—快速连接器—2P的XH2.54公头)。
                  
   连接6套这样的2P开关连线,2套接3P的XH2.54插头的连线。“+”分别对应接Arduino UNO R3扩展板上的相应针脚,“-”接GND针脚。
    见下图:(3P插头的最上面一个5V引脚空着,只接两根线即可)


    至此,输出部分Arduino UNO R3的硬件连接就完成了,总结一下:Arduino UNO R3接扩展板,然后接5个数码管、3个单色LED模块、8个按键带灯模块。
    左侧还有四个按键没有接,因为没找到相应的X-plane数据位置,所以先空着,等以后如果能找到了再连接。最右侧的CMD和CWS按键是副驾驶的按键,包括后面的副驾驶旋钮之类都与左侧重复,不需要做。

黄黑红 发表于 2019-1-3 23:37:20

3.输出部分的软件安装与调试:
(1)Arduino UNO R3主板驱动程序及编程软件安装

    调试:①按照“原版arduino驱动安装方法.pdf”相关教程安装主板驱动,
            确认Arduino能够正确识别、使用。
          ②打开“arduino.exe”程序,加载“xplaneuse.ino”文件,按照提示,
            点击“好”创建文件夹。
            


   
③点击上传按钮 ,将程序烧录到Arduino主板。
      按主板上面的“RESET”实体按键来重启Arduino,此时所有数码管应该      是满屏全部显示。如有部分不显示可以等待Arduino运行一会,如果还有未显示的地方,可以重新插拔USB接口。若以上都试过还是有部分不显示,应是连接线或者数码管有问题。
(2)上位机软件及源程序:

    上位机软件Xplane小工具.exe无需安装,直接运行。主要负责连接Xplane11软件接收数据,并传输给Arduino单片机。xlane-test.exe.gonfig是上位机软件调用的源程序。(Xplane小工具.exe文件必须与xlane-test.exe.gonfig文件在同一文件夹内)
       调试:①XPLANE设置菜单——网络——选择“向第三方广播数据”

   ② XPLANE设置菜单——数据输出——将索引第98、108、117、118项的“通过UDP网络”打勾;并在“网络配置”内输入IP地址:127.0.0.1,端口:49001。此端口与前图中“网络”里的UPD端口本机发送端口一致。 将“输出速率”——“UDP速率”调整小于50包/秒(20包/秒即可)。



   ③将连接好数码管、LED灯的Arduino的USB线插入电脑。
   ④打开X-plane11游戏,选默认737-800机型、机场,开始游戏,然后再切换到电脑桌面,打开“Xplane小工具.exe”软件。
      
软件打开,应显示接收端口和设备端口号        点击“连接端口”,应显示“已连接到设备”        点击“开始接收”,应显示接收到的游戏数据,并持续刷新
注释:如出现“设备端口”不显示或连接错误,应关闭“Xplane小工具.exe”软件,重新拔插Arduino的USB线,再重新打开“Xplane小工具.exe”软件,即可恢复正常。
   切换回X-plane,玩一会,试试数码管和各个LED灯是否都能够正确、迅速显示。

    以上是输出部分的硬件及软件安装调试,如果一切正常,那么就开始进行输入部分的安装与调试。

黄黑红 发表于 2019-1-3 23:39:12

(二)输入部分:
1.主要部件:
(1)EJOYEasyJoy32主板与74HC165扩展板
      
       EJOYEasyJoy32主板            74HC165扩展板
    这两块电路板是直接带连接线的,所以不必考虑它们之间的连接。

(2)旋转增量编码器模块KY-40(支持Arduino)
                  
            编码器模块KY-40      WH148旋钮
   KY-40旋转增量编码器模块应该是采用EC11编码器制作的,EC11编码器属于比较低端的,扫描速度比较低,分辨率也低,使用的时候不能旋转的太快,不然反应不过来。选用它是因为带有XH2.54插口和螺丝安装孔,安装比较方便,而且带按键功能。它所配套旋钮规格是6mm梅花柄。
                      编码器与EJOY的连接
编码器XH2.54插口                 编码器引脚                 EJOY引脚
左侧的2P插口
(按键功能)        KEY        接EJOY输入端口
        GND        接EJOY的5V引脚
右侧的4P插口
(编码器功能)        B        接EJOY输入端口
        A        接EJOY输入端口
        GND        接EJOY的5V引脚
        VCC        空
   
   这个MCP面板共需要旋转编码器5个,见下图,最后一个是垂直安装的。

    至于另一端接EJOY的哪个输入端口,接几P的插口,这些放到后面写,因为这一部分很容易进入混乱状态,还是等所有输入设备的引脚全都弄明白,再一起往EJOY上插。
    将5个编码器全都接好一个2P插口、一个4P插口(线的另一端先不接XH2.54插口,先拖着线头吧)

(3)钮子开关MTS-102(三脚两档)
      
                  钮子开关与EJOY的连接
         钮子开关引脚                 EJOY引脚
上引脚        接EJOY输入端口
中间引脚        EJOY的5V电源引脚
下引脚        接LED灯模块正极,LED负极接EJOY输入端口(串联一个LED灯)
    钮子开关的引脚不是针脚式的,所以使用2.8mm插簧连接。方法如下:
         
    XH2.54连接线套上绝缘护套,然后把XH2.54线头卡进2.8插簧,用钳子夹紧,确保接触良好,不会松动,推上绝缘护套,就OK了,这样的线需要做9根。老规矩,另一端的线头不接XH2.54插口,先拖着。MCP面板共需要3个钮子开关,开关位置见下图。


4)按键模块的连接
               
    这是L16A自复位按钮开关(带绿灯6V)16mm模块。三根开关线的连接如下:
                   按键开关与EJOY32的连接
         L16A自复位按钮开关引脚                 EJOY32引脚
C (公共脚C脚)        5V 电源输出针脚
NO(常开NO脚)        EJOY32输入针脚
NC(常闭NC脚)        空
+(LED正级引脚)        接Arduino(见输出部分连接)
-(LED负级引脚)        接Arduino(见输出部分连接)

灯的连接方法如下:(开关—连接插头—快速连接器—带有XH2.54的电线)。
                     
   总共制作12套这样的开关连线,见下图。老规矩,另一端的线头不接XH2.54插口,先拖着。



5)轻触微动自复位开关的连接
      
    轻触微动自复位开关,安装位置见下图。我只是把这三个开关安装到面板上,并没有接线,因为这个必须要焊接,我没有烙铁,焊接水平也不行,所以只是个样子货。不过这三个按键的功能已经集合到编码器上了,因为编码器自带有按键功能,所以这三个按键分别对应到旁边的编码器按键就可以了,如果想要用到这几个按键只需按压旁边编码器旋钮就能实现。

    开关引脚说明:(如果要连接这个开关,需焊接2根线,选任意一侧的两个引脚一个接5V,一个接Ejoy32的输入针脚即可)
    至此,输入部分的各个部件都已准备妥当,开始往Ejoy32主板上插了。
    不幸的是EJOY没有说明书,纸质电子版统统的没有,裸着来的。所以极其的麻烦,试了无数遍才算明白。当然,明白了以后就很简单了。

黄黑红 发表于 2019-1-3 23:47:06

本帖最后由 黄黑红 于 2019-1-8 14:27 编辑

EJOY32主板及背面标识(注意背面翻转了180度,是反方向的)
   (1) EJOY32第一个端口连接示意图:

第一个端口接两个编码器,7个针脚从左至右:



(2) EJOY32第二个端口连接示意图:

Ejoy第二个端口同样接两个编码器(编码器3,4),连接方法同上。
(3) EJOY32第三个端口连接示意图:



(4) EJOY32第四个端口连接示意图:




(5) EJOY32扩展板第一个端口连接示意图:(注意背面翻转了180度)

            EJOY32扩展板第一个端口连接



(6) EJOY32扩展板第二、第三个端口连接示意图:

    扩展板第二个端口接15,16,17,18按键,连接方法同上。扩展板第三个端口只接19按键,所以不用一进四出连接器,直连就行。

    至此,输入部分的硬件连接全部完成,进入软件安装调试。

黄黑红 发表于 2019-1-3 23:49:19

2.输入部分的软件安装与调试:
(1)Ejoy32主板软件安装、调试
   将USB线接入电脑,系统会自动安装Ejoy的驱动程序。 “设备和打印机”里出现 EasyJoy32的图标,这表示驱动程序安装成功。

注: Ejoy图标未出现或者Ejoy图标时而出现、时而消失,说明驱动程序未能成功安装。关闭正在运行的罗技输入设备的应用程序,重新插拔Ejoy的USB线,驱动程序即可成功安装。(罗技输入设备的应用程序会与Ejoy冲突导致Ejoy驱动无法安装)

调试:
①运行“EasyJoy32 Revolution.exe”程序
   



②点击“刷新列表”,左上角会出现“Easy Joy 32 Revolution”字样:

③点击“编辑模式”,可能会显示“没有连接设备”,不要理会,继续耐心等待大约10秒(也许更久),设备刷新完成:


④从X-1开始逐个输入每一个输入设备的类型和对应的针脚,全部输入结束应该如下图所示:

举例:设置第一个旋转增量编码器:点击“X-1”,外设类型选择“编码器”,然后在右侧“1”针脚的位置点击一下;再点击“X-2”,外设类型选择“空”;再点击“X-3”,外设类型选择“按钮”,在右侧“3”针脚点击一下。(由于旋转编码器左转和右转共占用两个针脚,所以编码器需要设置1编码器,2空;编码器自带的按键设置为3“按钮”。设置完成后,右侧1,2,3针脚变成红色,表示已设置。其他钮子开关和按键之类的开关均照此设置。(其实所用到的按键只有30多个,并没有到48针脚那么多。之所以要设置这么多针脚,是因为Ejoy和扩展板的硬件端口与软件针脚编号有些混乱,并不能一一对应,总之按照上图来设置就是。
    全部设置完成以后,点击“保存到硬件”,等待数据传输完成以后会显示“未发现硬件连接”字样,这时可以关闭“EasyJoy32 Revolution.exe”程序了。

⑤运行“VKB-BtnTester.exe”程序


    逐个试试编码器/按键/开关,程序对应的针脚会变成绿色,表示接通,如果某一个按键按下去没有绿色显示,表示接线有误或者Ejoy按键设置有误。
    如果所有按键开关都正常,包括两个钮子开关连接的LED灯也能够随着开关而亮灭。那么,输入部分的安装和调试都已完成了,下面进入X-Plane11按键功能设置。






X-Plane11的按键设置
   ①将Ejoy的USB线插入电脑。
   ②打开X-plane11游戏,选默认737-800机型、机场,开始游戏。然后点击“设置”——“摇杆”,此时左上角“设备”栏显示“Easy Joy 32 Revolution”字样,右侧“按钮”底下显示还未设置的按键列表。

将“Mo737-800.joy”文件粘贴到“X-Plane11”——“Resources”——“Jokstick Configs”目录里,加载“Mo737-800.joy”文件,就自动完成了按钮设置。


Ejoy的各个键位对应的功能,如下:

黄黑红 发表于 2019-1-3 23:52:29

本帖最后由 黄黑红 于 2019-1-8 14:28 编辑

Ejoy的各个键位对应的功能,如下:


整体测试:
①将Arduino和Ejoy的USB线插入电脑。
②打开X-plane11游戏,选默认737-800机型、机场,开始游戏,然后再切换到电脑桌面,运行“Xplane小工具.exe”,点“连接端口”,“开始接收”。
③切换回“X-Plane11”,试试起飞/飞行/降落。各个按键是否正常,数码管及按键灯的显示是否正常。
    (A/T和F/D指示灯只随开关变化,不一定与Xplane同步,这是我设计时候的问题,现在还无法解决;A/T钮子开关和CMD开关,首次必须用鼠标点开,之后模拟MCP面板这两个开关相应的指示灯才能与XPlane同步,不知是为何,估计是Xplane软件BUG)


黄黑红 发表于 2019-1-3 23:54:25

番外篇:外壳的设计与制作
    材料选择亚克力,图纸用CorelDraw制作,设计好的图纸可以直接用于激光切割机,比较方便。
1. 先量好各个元件的尺寸及相应电路板的尺寸,WIN7“画图”(加网格线)先大致确定最终MCP面板的尺寸。

2. 用CorelDraw制作精确的前面板矢量图(浅色线切割/深色线浅雕刻字)


3.做个外壳示意图,把各种要求写清楚,找个有激光切割机加工亚克力的店,把CDR文件发过去就齐活了。

黄黑红 发表于 2019-1-3 23:59:04

很多格式发帖都乱了,尤其是表格和图文混排的。。所以本来WORD排好版都变了,首次发帖没有经验。。这乱七八糟的。。
目前存在的问题:
1.MCP上蓝色的方按键,都没有相应的指示灯显示,原因是找不到XPlane这几个键的指示灯数据位置。哪位朋友知道请告诉我。
2.最左边的编码器在Xplane按键设置的时候,找不到对应的键位。也请大家帮帮忙。非常感谢。


287887641 发表于 2019-1-4 08:50:42

技术贴,牛X。。。。。。。。。。

medtop 发表于 2019-1-4 09:27:30

看来真的是好东西,以后销售

rlubb 发表于 2019-1-4 13:17:50

楼主,请收下我的膝盖~!

prm8011 发表于 2019-1-4 15:51:06

大牛佩服啊,厉害

两座山 发表于 2019-1-4 16:48:15

可以的 ,楼主是用了两个主控吗?一个ejoy控制按键   一个用上位机做桥接控制数码管和灯?

黄黑红 发表于 2019-1-4 16:54:35

两座山 发表于 2019-1-4 16:48
可以的 ,楼主是用了两个主控吗?一个ejoy控制按键   一个用上位机做桥接控制数码管和灯? ...

是的,我觉得这样对于像我自己这样编程水平不高的大多数人,更适合。毕竟分开控制更容易实现,安装调试也方便。

martrix 发表于 2019-1-4 20:08:53

厉害了,楼主真爱

zhangzan2008 发表于 2019-1-4 20:17:57

动手达人~!6666

quick 发表于 2019-1-4 20:18:35

Btn 0 的设置是有问题的, 738没有G1000,对应CRS 应设置成 "OBS水平状态显示下调"

黄黑红 发表于 2019-1-4 20:44:47

本帖最后由 黄黑红 于 2019-1-4 21:15 编辑

quick 发表于 2019-1-4 20:18
Btn 0 的设置是有问题的, 738没有G1000,对应CRS 应设置成 "OBS水平状态显示下调"...
:D多谢指点,我按照您指出的重新设置了这个编码器,一切正常,太好了,解决一个问题。。

Btn0:应设置成"OBS水平状态显示下调"
Btn1:应设置成"OBS水平状态显示上调"


这个旋钮现在OK了。
页: [1] 2 3 4
查看完整版本: X-plane11默认波音737-800自动驾驶主控面板(MCP)制作全记录