本发明涉及手柄应用领域,具体的说是一种可编程手柄及其控制方法。
背景技术:
手柄是一种适合人手部操纵,发出控制信号的装置,广泛应用在游戏操作、无线电操作、工业操作等领域,手柄一般包含各类按钮,开关,遥杆等部件,将它们所代表的数字开关量信息或模拟量信息进行解释传输,从而操作要进行遥控的本体。但是我们常见的市面上的手柄,一般是专机专用,只能使用既定的功能,拓展性很差,无法通过编程达到自己想要的目的。本发明通过配置丰富的硬件内容和搭建好软件架构,使得用户可以通过自己编程将手柄进行自定义配置,以适用于各类场景。
技术实现要素:
本发明所要解决的技术问题在于提出了一种可编程手柄及其控制方法,解决了市面上手柄不可自定义功能的问题。
本发明所要解决的技术问题采用以下技术方案来实现:
一种可编程手柄,包括用于用户编程的主控制器和用于采集包括数字和模拟量信息的副控制器;
所述主控制器通过gpio口连接有触摸模块、点阵显示屏、蜂鸣器模块,通过spi接口连接有tf卡模块,通过uart串口连接有串口选择电路,通过iic接口连接有陀螺仪模块;
所述串口选择电路还连接有蓝牙模块和usb串口电路,所述usb串口电路连接有充电电路和锂电池;
所述主控制器还通过iic接口连接于所述副控制器;
所述副控制器通过gpio口连接有数字量通道与模拟量通道用于采集手柄操纵产生的数字量和模拟量信号,所述副控制器的gpio口还连接有震动马达用于震感反馈;
所述副控制器通过spi接口连接有远距离数传模块用于控制远距离目标。
所述主控制器包括采用型号为mega328p的主芯片,所述主芯片的22脚连接有触摸芯片的1脚用于接收触摸信号,所述触摸芯片的3脚连接有触摸弹簧,触摸弹簧紧贴手柄外壳用于接收人手触碰的信号。
所述点阵显示屏采用5110点阵显示屏,插接在显示屏接口上,所述主芯片的23脚、24脚、25脚、15脚、17脚分别对应连接于所述显示屏接口的1脚、2脚、3脚、4脚、5脚,分别对应传输屏幕复位信号、屏幕选择信号、屏幕控制信号、屏幕数据信号、屏幕时钟信号;
所述tf卡模块包括tf卡座,所述主芯片的14脚、15脚、17脚、16脚分别对应连接于所述tf卡座的2脚、3脚、5脚、7脚,分别对应传输tf卡使能信号、tf卡输入信号、时钟信号和tf卡输出信号;
所述蜂鸣器模块包括第二十四电阻,所述第二十四电阻的一端连接于所述主控制器的1脚,另一端连接有第三三极管的基极,所述第三三极管的集电极连接有蜂鸣器的一端,所述第三三极管的射极接地,所述蜂鸣器的另一端连接电源vin,所述蜂鸣器为无源蜂鸣器;
所述tf卡模块用于保存包括子程序编译文件、图形文件、音乐文件。
所述串口选择电路包括线路选择芯片,所述usb串口电路包括用于连接电脑usb串口的usb串口芯片和usb接口,所述蓝牙模块包括用于连接蓝牙无线串口的蓝牙芯片,所述usb串口芯片的2脚连接于所述线路选择芯片的2脚,所述蓝牙芯片的1脚连接于所述线路选择芯片的2脚,所述线路选择芯片的5脚连接于所述主芯片的30脚,所述usb串口芯片的3脚与所述蓝牙芯片的2脚和所述主芯片的31脚一并相连接收来自主控芯片的串口信号。
所述usb接口的1脚连接有第七二极管,所述第七二极管的阳极连接于所述线路选择芯片的6脚,所述线路选择芯片的6脚还连接有第二十电阻的一端,所述第二十电阻的另一端接地;
所述副控制器包括采用型号为mega8a的副芯片,所述远距离数传模块包括采用型号为nrf24l01的数传芯片,所述副芯片的13脚、14脚、17脚、15脚、16脚、1脚分别对应连接于所述数传芯片的3脚、4脚、5脚、6脚、7脚、8脚;
所述副芯片的19脚、22脚、31脚、32脚、2脚、9脚、12脚用于输入数字量信息,包括按键、开关信息,所述副芯片(u7)的23脚、24脚、25脚、26脚用于输入两个遥杆在xy方向上产生的四个模拟量信息。
一种可编程手柄的控制方法,包括步骤:
s1)运行boot程序;
s2)判断上次程序结束是否停留在子程序内,若是则执行步骤s5),若否则执行步骤s3);
s3)进入主管理程序;
s4)选择目标程序后,再次返回步骤s1),进入步骤s2),判断后进入步骤s5);
s5)进入子程序,运行用户在之前选择的程序;
s6)若退出按钮按下则进入步骤s3),若长时间未被触摸或无输入信号,则进入步骤s7);
s7)休眠,机器将处于低功耗状态,直到被触摸或输入信号唤醒。
在程序运行的每一步骤中,包含一个记忆变量用于标识程序所在的步骤,即使断电后也能够在下次上电运行时判断上次所在的操作步骤。
所述boot和主管理程序是内置固定的,用户不可随意更改,所述子程序是用户自行编写的程序,用于实现特定的功能。
所述子程序内必须包含一段代码用于返回主管理程序界面。
本发明的有益效果是:
1)能够将手柄编程应用于自定义场景;
2)使用tf卡存储分立的程序文件,使用管理系统可以选择使用哪种程序,实现一机多用;
3)用户的任务编程是相互独立的,可以自由选取任务,不必建立一个大的程序循环,降低了程序复杂度;
4)系统结构紧凑,配置丰富,可以实现手柄小型化,模块化。
附图说明
下面结合附图和实施例对本发明进一步说明。
图1为本发明的硬件连接框图;
图2为本发明的主芯片连接图;
图3为本发明的屏幕tf卡和蜂鸣器接口图;
图4为本发明的串口电路硬件图;
图5为本发明的副控制器电路图;
图6为本发明的控制流程图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面对本发明进一步阐述。
如图1所示的硬件连接框图:
一种可编程手柄,包括用于用户编程的主控制器1和用于采集包括数字和模拟量信息的副控制器2,所述主控制器1通过gpio口连接有触摸模块14、点阵显示屏15、蜂鸣器模块16,通过spi接口连接有tf卡模块12,通过uart串口连接有串口选择电路13,通过iic接口连接有陀螺仪模块11。
进一步地,所述主控制器1是用于存储boot程序,主程序,所述tf卡模块12是用于存储用户子程序,由boot程序和主程序调用tf卡接口读取用户子程序并重新加载。
进一步地,所述触摸模块14配置两个触摸芯片,通过触摸弹簧贴紧手柄握持部位的内壁,用于感知是否有人使用。
进一步地,所述点阵显示屏15在操作时可用于显示菜单信息,在游戏程序内可用于显示游戏界面。
进一步地,所述串口选择电路13可在连接usb时选择使用usb串口,在拔掉usb时自动选择蓝牙串口。
进一步地,所述陀螺仪模块11可用于感知用户操作时手柄的空间方位,如旋转、加速、左右倾斜等,通过这些数据可实现体感操纵。
进一步地,所述串口选择电路13还连接有蓝牙模块18和usb串口电路19,所述usb串口电路19连接有充电电路20和锂电池21,所述usb串口电路19可以为手柄下载程序,所述充电电路20可以通过充电芯片对手柄内置的锂电池进行充电。
进一步地,所述主控制器1还通过iic接口连接于所述副控制器2,所述副控制器2通过gpio口连接有数字量通道22与模拟量通道23用于采集手柄操纵产生的数字量和模拟量信号,所述副控制器2的gpio口还连接有震动马达24用于震感反馈。
进一步地,所述副控制器2的程序代码是固定的,用于输入手柄的按键、开关等数字变量和遥杆、旋钮等模拟变量,将这些变量使用特定的协议进行打包封装,通过iic端口与主控制器1进行数据交互,可以减轻主控制器1的数据处理压力,同时副控制器2也接收主控制器1发送来的震动指令和远距通讯指令,实现手柄的震动反馈和远距遥控。
进一步地,所述副控制器2通过spi接口连接有远距离数传模块21用于控制远距离目标,在近距遥控或与手机交互遥控时,可使用所述蓝牙模块18进行配对遥控,在需要远距离遥控时,则改为使用远距离数传模块21进行遥控。
如图2所示的主芯片连接图:
所述主控制器1包括采用型号为mega328p的主芯片u2,所述主芯片u2的22脚连接有触摸芯片t1的1脚用于接收触摸信号,所述触摸芯片u1的3脚连接有触摸弹簧,触摸弹簧紧贴手柄外壳用于接收人手触碰的信号。
如图3所示的屏幕tf卡和蜂鸣器接口图:
所述点阵显示屏15采用5110点阵显示屏,插接在显示屏接口p4上,所述主芯片u2的23脚、24脚、25脚、15脚、17脚分别对应连接于所述显示屏接口p4的1脚、2脚、3脚、4脚、5脚,分别对应传输屏幕复位信号、屏幕选择信号、屏幕控制信号、屏幕数据信号、屏幕时钟信号;
进一步地,所述tf卡模块12包括tf卡座u6,所述主芯片u2的14脚、15脚、17脚、16脚分别对应连接于所述tf卡座u6的2脚、3脚、5脚、7脚,分别对应传输tf卡使能信号、tf卡输入信号、时钟信号和tf卡输出信号;
进一步地,所述蜂鸣器模块16包括第二十四电阻r24,所述第二十四电阻r24的一端连接于所述主控制器1的1脚,另一端连接有第三三极管q3的基极,所述第三三极管q3的集电极连接有蜂鸣器ls1的一端,所述第三三极管q3的射极接地,所述蜂鸣器ls1的另一端连接电源vin,所述蜂鸣器ls1为无源蜂鸣器;
进一步地,所述tf卡模块12可保存点阵游戏代码,通过手柄操作和所述点阵显示屏15的画面显示,通过所述蜂鸣器模块16播放音乐,实现手柄游戏机的功能。
如图4所示的串口电路硬件图:
所述串口选择电路13包括线路选择芯片u10,所述usb串口电路19包括用于连接电脑usb串口的usb串口芯片u4和usb接口usb,所述蓝牙模块18包括用于连接蓝牙无线串口的蓝牙芯片u1,所述usb串口芯片u4的2脚连接于所述线路选择芯片u10的2脚,所述蓝牙芯片u1的1脚连接于所述线路选择芯片u10的2脚,所述线路选择芯片u10的5脚连接于所述主芯片u2的30脚,所述usb串口芯片u4的3脚与所述蓝牙芯片u1的2脚和所述主芯片u2的31脚一并相连接收来自主控芯片的串口信号。
进一步地,所述usb接口usb的1脚连接有第七二极管d7,所述第七二极管d7的阳极连接于所述线路选择芯片u10的6脚,所述线路选择芯片u10的6脚还连接有第二十电阻r20的一端,所述第二十电阻r20的另一端接地。
进一步地,串口选择电路的作用在于自动切换串口通道,当usb线未插时,线路选择芯片u10的端口选择引脚接地,此时选择a通道即蓝牙串口信号bttxd接入主芯片的串口输入引脚rxd,当usb线插入后,产生5v的vusb电平,将线路选择芯片u10的端口选择引脚电平拉高,此时选择b通道即usb串口信号usbtxd接入主芯片的串口输入引脚rxd,而由于无论是usb串口还是蓝牙串口,它们的接收引脚都是浮空输入的,所以主芯片u2的串口信号发送端txd可以直连它们的接收端。
如图5所示的副控制器电路图:
所述副控制器2包括采用型号为mega8a的副芯片u7,所述远距离数传模块21包括采用型号为nrf24l01的数传芯片u9,所述副芯片u7的13脚、14脚、17脚、15脚、16脚、1脚分别对应连接于所述数传芯片u9的3脚、4脚、5脚、6脚、7脚、8脚。
进一步地,所述副芯片u7的19脚、22脚、31脚、32脚、2脚、9脚、12脚用于输入数字量信息,包括按键、开关信息,所述副芯片u7的23脚、24脚、25脚、26脚用于输入两个遥杆在xy方向上产生的四个模拟量信息。
如图6所示的控制流程图:
一种可编程手柄的控制方法,包括步骤:
s1)运行boot程序;
s2)判断上次程序结束是否停留在子程序内,若是则执行步骤s5),若否则执行步骤s3);
s3)进入主管理程序;
s4)选择目标程序后,再次返回步骤s1),进入步骤s2),判断后进入步骤s5);
s5)进入子程序,运行用户在之前选择的程序;
s6)若退出按钮按下则进入步骤s3),若长时间未被触摸或无输入信号,则进入步骤s7);
s7)休眠,机器将处于低功耗状态,直到被触摸或输入信号唤醒。
进一步地,在程序运行的每一步骤中,包含一个记忆变量用于标识程序所在的步骤,即使断电后也能够在下次上电运行时判断上次所在的操作步骤,否则用户将在每次上电后都要重新选择任务子程序,这是相当不便捷的。
进一步地,所述boot和主管理程序是内置固定的,用户不可随意更改,所述子程序是用户自行编写的程序,用于实现特定的功能。
进一步地,用户编写完程序后需要编译生成机器可执行的hex文件,将hex文件重命名为本程序实现的功能,保存至tf卡内,在运行至主管理程序时,将会读取tf卡内的hex文件并将它们的名称显示在显示屏上,用于通过操作按钮或遥杆选取对应的程序实现对应的功能。
进一步地,所述子程序内必须包含一段代码用于返回主管理程序界面,否则用户将无法运行到主程序菜单界面进行子程序的选择,也就无法实现一机多用的功能。
下面是本发明的一个实施例:
用户借助arduino编程平台对主板进行编程,实现使用手柄玩贪吃蛇这样一款小游戏,首先将游戏所用到的音效文件放置在tf卡内,也可通过编程直接操作蜂鸣器发出特定的声音,用户通过给定的协议可获得包括手柄的按键按下、释放、长按,遥杆的位置变量等信息,对游戏界面进行操作,通过触摸模块传输来的信号判断手柄正在被握持,从而唤醒屏幕,通过震动马达反馈游戏结束的信息,用户需要在代码内添加一段程序用于返回主管理程序界面。
将程序编写完毕后,编译生成hex文件导入到tf卡内,重新开机运行,主管理程序将能够识别读取到这个新加入的子程序文件,用户选取此程序,此时会更新记忆变量,表明在上一步操作中,用户已选择了此程序作为开机程序,随后主控制器会自动重启运行boot程序,boot程序根据记忆变量选择加载哪端程序,用户得以进入刚刚选择的子程序内运行游戏。
当用户长时间未操作手柄或未触摸手柄时,程序会进入休眠以节省电量,直到有触摸或操作信号产生会重新唤醒运行子程序。
当用户按下退出按钮时,会再次更新记忆变量,使得下次boot选择主管理程序来运行,随后主控制器重启并选择加载主管理程序。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。