jecci 发表于 2022-11-10 14:11:50

自制自动驾驶主控面板(MCP)全记录


航空人生




来源:飞行者联盟,作者:黄黑红

X-plane11默认波音737-800机模

自动驾驶主控面板(MCP)制作记录



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

设计思路



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



    最初想要制作这个面板主要是为了在X-PLANE11的737-800飞行过程中模拟真实操作,降落时避免鼠标和键盘手忙脚乱的操作,最主要的是可以在飞机外部视角下看到各项数据并实现操控。毕竟在驾驶舱里操作是看不到全方位的美丽风景的。

    在设计制作过程中,一开始想用Arduino开发板来完成,后来发现Arduino的实现输入控制非常困难,上下位机程序很难完成,至少我是无法完成的。

    经过反复思考比对,最终这个MCP面板的制作我选用了EJOY负责输入,Arduino负责输出的双路系统,这样可以互相弥补不足。并且由于分成了两部分,所以各主板的负载都不大,USB连线就足以供电,不需要外接电源,这很省心。

    输入控制选用EJOY32主板。EJOY32负责将按键、开关等输入设备信号传入电脑,可以支持摇杆、苦力键、脚舵等等,甚至可以模拟键盘做出全无冲的键盘,输入功能强大。但是这款主板处理电脑输出数据能力很是不足,所以输出控制交由Arduino处理。这个MCP所有零件我都选用的是插接件,全程免焊。

一、硬件材料

所需材料统计表

序号

材料名称

图片

型号/规格

数量

功能及备注

1

Arduino开发板





UNO R3

1

用于输出数据显示

2

Arduino扩展板





LY-AS001

1

与Arduino UNO R3配套,用于端口扩展

3

EJOY 3主板






1

用于操作信号输入

4

EJOY32扩展板





74HC165

1

与EJOY32配套,用于端口扩展

5

L16A自复位按钮开关(带灯6V)





开孔:16mm,

正面尺寸:18X18mm

12

MCP面板按钮

6

旋转编码器模块





KY-040

5

MCP面板调节旋钮

(兼容Arduino)

7

编码器旋钮帽





6mm

5

与旋转编码器配套

8

钮子开关(三脚两档)





MTS-102

3

MCP面板拨动开关及自动驾驶切断开关

9

轻触微动自复位开关





6X6X6mm

3

MCP面板小按键

10

单色LED灯模块





LY-S0005

3

MCP面板小指示灯

(兼容Arduino)

11

共阳数码管模块

(0.56寸绿色字体)





74HC595芯片驱动

5

(其中:3位数码管2个,4位1个,5位2个)用于数据显示,需选用每个74HC595芯片驱动一位数码管的产品。

序号

材料名称

图片

型号/规格

数量

功能及备注

12

XH2.54插头(公头)





XH2.54

约50

用于Arduino、EJOY32与开关对接

13

红白排线(双接头已压好端子)





XH2.54端子(12根排线)

30

连线用,其中30cm、20cm、10cm各10条

14

带线连接座





16mm连接座

12

用于16mm塑料L16A开关连接

15

插簧接线端子+绝缘护套





2.8插簧

约20

用于钮子开关引脚连接

16

快速接线连接器

(2进2出)





SPL-2、SPL-3

.......

20

用于快速连接两根导线(免焊)

17

接线端子连接器

5孔(1进4出)





PCT-215

10

用于EJOY的5V电源线分配

18

螺丝、螺母、垫片、自攻丝





M2、M3各长度

50

用于固定元件

二、硬件连接及软件调试

(一)输出部分:

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的输出针脚,。

   


   


(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按键是副驾驶的按键,包括后面的副驾驶旋钮之类都与左侧重复,不需要做。

3.输出部分的软件安装与调试:

(1)Arduino UNO R3主板驱动程序及编程软件安装



    调试:1按照“原版arduino驱动安装方法.pdf”相关教程安装主板驱动,

            确认Arduino能够正确识别、使用。

          2打开“arduino.exe”程序,加载“xplaneuse.ino”文件,按照提示,

            点击“好”创建文件夹。

            




3点击上传按钮

,将程序烧录到Arduino主板。

      按主板上面的“RESET”实体按键来重启Arduino,此时所有数码管应该      是满屏全部显示。如有部分不显示可以等待Arduino运行一会,如果还有未显示的地方,可以重新插拔USB接口。若以上都试过还是有部分不显示,应是连接线或者数码管有问题。

(2)上位机软件及源程序:



    上位机软件Xplane小工具.exe无需安装,直接运行。主要负责连接Xplane11软件接收数据,并传输给Arduino单片机。xlane-test.exe.gonfig是上位机软件调用的源程序。(Xplane小工具.exe文件必须与xlane-test.exe.gonfig文件在同一文件夹内)

       调试:1XPLANE设置菜单——网络——选择“向第三方广播数据”



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



   3将连接好数码管、LED灯的Arduino的USB线插入电脑。

   4打开X-plane11游戏,选默认737-800机型、机场,开始游戏,然后再切换到电脑桌面,打开“Xplane小工具.exe”软件。








软件打开,应显示接收端口和设备端口号

点击“连接端口”,应显示“已连接到设备”

点击“开始接收”,应显示接收到的游戏数据,并持续刷新

注释:如出现“设备端口”不显示或连接错误,应关闭“Xplane小工具.exe”软件,重新拔插Arduino的USB线,再重新打开“Xplane小工具.exe”软件,即可恢复正常。

   切换回X-plane,玩一会,试试数码管和各个LED灯是否都能够正确、迅速显示。

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

(二)输入部分:

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没有说明书,纸质电子版统统的没有,裸着来的。所以极其的麻烦,试了无数遍才算明白。当然,明白了以后就很简单了。

   




      EJOY32主板及背面标识(注意背面翻转了180度,是反方向的)

   (1) EJOY32第一个端口连接示意图:



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

                      EJOY32第一个端口的连接方法(从左至右)

1插针

2插针

3插针

4插针

5插针

6插针

7插针(5V))

         接编码器1

          接编码器2

接1进4出连接器




A引脚

B引脚

KEY引脚

A引脚

B引脚

KEY引脚

          每个编码器均有2个GND,接“1进4出”连接器(5V输出针脚)

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



Ejoy第二个端口同样接两个编码器(编码器3,4),连接方法同上。

(3) EJOY32第三个端口连接示意图:




                      EJOY32第三个端口的连接方法(从左至右)

1插针

2插针

3插针

4插针

5插针

6插针

7插针(5V))

         接编码器4

接钮子开关5

接按键6

接1进4出连接器




A引脚

B引脚

KEY引脚

上引脚

下引脚

NO引脚

编码器的2个GND,接5V

中间引脚接5V

C脚接5V


         这个端口也是4个5V接口,接“1进4出”连接器(5V输出针脚)

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




                      EJOY32第四个端口的连接方法(从左至右)

1插针

2插针

3插针

4插针

5插针

6插针

7插针(5V))

    钮子开关7

    钮子开关8

按键9

按键10

接1进4出连接器




上引脚

下引脚

接LED

再接2

上引脚

下引脚

接LED

再接2

NO引脚

NO引脚

中间引脚接5V

中间引脚接5V

C脚接5V

C脚接5V


         这个端口也是4个5V接口,接“1进4出”连接器(5V输出针脚)

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



               EJOY32扩展板第一个端口连接

1插针

2插针

3插针

4插针

5插针(5V))

按键11

按键12

按键13

按键14

接1进4出连接器




NO引脚

NO引脚

NO引脚

NO引脚

总共4个C脚接5V,接“1进4出”连接器(5V输出针脚)

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



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

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

2.输入部分的软件安装与调试:

(1)Ejoy32主板软件安装、调试

   将USB线接入电脑,系统会自动安装Ejoy的驱动程序。“设备和打印机”里出现 EasyJoy32的图标,这表示驱动程序安装成功。



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

调试:

1运行“EasyJoy32 Revolution.exe”程序





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



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



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



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

    全部设置完成以后,点击“保存到硬件”,等待数据传输完成以后会显示“未发现硬件连接”字样,这时可以关闭“EasyJoy32 Revolution.exe”程序了。

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





    逐个试试编码器/按键/开关,程序对应的针脚会变成绿色,表示接通,如果某一个按键按下去没有绿色显示,表示接线有误或者Ejoy按键设置有误。

    如果所有按键开关都正常,包括两个钮子开关连接的LED灯也能够随着开关而亮灭。那么,输入部分的安装和调试都已完成了,下面进入X-Plane11按键功能设置。

X-Plane11的按键设置

   1将Ejoy的USB线插入电脑。

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



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



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




按钮

对应的按键功能选项

备注

1

Btn 0:G1000机长CRS↓

错误,找不到对应按键

2

Btn 0:G1000机长CRS↑

错误,找不到对应按键

3

Btn2:CAPT EFIS Airport

错误,找不到对应按键

4

Btn3:自动驾驶 空速降低


5

Btn4:自动驾驶 空速增加


6

Btn5:自动驾驶 空速同步


7

Btn6:自动驾驶 航向减小


8

Btn7:自动驾驶 航向增大


9

Btn8:自动驾驶 航向同步


10

Btn9:自动驾驶 降低高度


11

Btn10:自动驾驶增加高度


12

Btn11:自动驾驶高度同步


13

Btn12自动驾驶 垂直速度指示器下调


14

Btn13自动驾驶 垂直速度指示器下调

X-plane11的翻译错误,应为上调,看英文

15

Btn14:自动驾驶垂直速度,根据当前垂直速度表

其实没用,因为按键按不了

16

Btn15:什么都不做

错误,找不到对应按键

17

Btn16:断开动力装置,飞行指引仪


18

Btn17:自动驾驶高度保持 切换平滑模式开关


19

Btn18:飞行指引仪向下拨(打开/故障隔离、检测和重新配置/关闭)


20

Btn19:飞行指引仪向上拨(打开/故障隔离、检测和重新配置/关闭)


21

Btn20:Autothrottle ARM


22

Btn 21:Autothrottle ARM


23

Btn22:N1 Mode


24

Btn23:自动驾驶自动油门开关


25

Btn24:自动驾驶航向选择


26

Btn25:Approach Mode


27

Btn26:自动驾驶 高度选择或保持


28

Btn27:自动驾驶 垂直速度,根据预选垂直速度


29

Btn28:自动驾驶 地形模式跟随

错误,找不到对应按键

30

Btn29:Vertical NAV Mode


31

Btn30: VOR Localizer Mode


32

Btn31:FMS Lateral NAV Mode


33

Bth32:什么都不做

Ejoy主板针脚编号的问题,其实这几个键是空的

34

Bth33:什么都不做

35

Bth34:什么都不做

36

Bth35:什么都不做

37

Bth36:自动驾驶伺服装置(自动驾驶接管操纵面)开关


整体测试:

1将Arduino和Ejoy的USB线插入电脑。

2打开X-plane11游戏,选默认737-800机型、机场,开始游戏,然后再切换到电脑桌面,运行“Xplane小工具.exe”,点“连接端口”,“开始接收”。

3切换回“X-Plane11”,试试起飞/飞行/降落。各个按键是否正常,数码管及按键灯的显示是否正常。

    (A/T和F/D指示灯只随开关变化,不一定与Xplane同步,这是我设计时候的问题,现在还无法解决;A/T钮子开关和CMD开关,首次必须用鼠标点开,之后模拟MCP面板这两个开关相应的指示灯才能与XPlane同步,不知是为何,估计是Xplane软件BUG)

    一切顺利,MCP面板已经能够成功运行——在鞋盒子里......

这是很危险的,运行过程中,里面的元件会发热,很容易引燃鞋盒子。



    所以,还需要制作一个外壳,这是必须的。不管好不好看,至少安全。

番外篇:外壳的设计与制作

    材料选择亚克力,图纸用CorelDraw制作,设计好的图纸可以直接用于激光切割机,比较方便。

1. 先量好各个元件的尺寸及相应电路板的尺寸,WIN7“画图”(加网格线)先大致确定最终MCP面板的尺寸。



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



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





来源:飞行者联盟,作者:黄黑红

仅为科普转载及兴趣讨论,不涉及任何商业行为

此文版权归属原作者,如有侵权,联系立删

关于更多的问题大家可以留言或者私聊我

如有错误欢迎指正

航空人生——飞行梦想,从这里启航。

中国飞行者联盟旗下微信公众平台,在这里我们为您提供飞行员培训、航空趣闻、航模、空中游览、模拟机体验,航空技术等一站式服务!

手机同微信:13314398088

投稿邮箱:68478417@qq.com
页: [1]
查看完整版本: 自制自动驾驶主控面板(MCP)全记录